{
  "version": 3,
  "sources": ["../../../../../shared/node_modules/@stripe/stripe-js/dist/pure.js", "../../../../../shared/node_modules/@stripe/stripe-js/pure/index.js", "../../../../../shared/node_modules/jquery/dist/jquery.js", "../../../../../shared/node_modules/bootbox/dist/bootbox.js", "../../../../../shared/node_modules/dropzone/dist/dropzone.js", "../../../../../shared/node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/max.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/nil.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/regex.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/validate.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/parse.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/stringify.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/rng.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/v1.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/v1ToV6.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/md5.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/v35.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/v3.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/native.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/v4.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/sha1.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/v5.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/v6.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/v6ToV1.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/v7.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/version.js", "../../../../../shared/node_modules/uuid/dist/cjs-browser/index.js", "../../../../../shared/node_modules/jquery-slimscroll/jquery.slimscroll.js", "../../../../../shared/node_modules/jquery.fancytree/dist/modules/jquery.fancytree.ui-deps.js", "../../../../../shared/node_modules/jquery.fancytree/dist/modules/jquery.fancytree.js", "../../../../../shared/node_modules/jquery.fancytree/dist/skin-win8/ui.fancytree.css", "../../../../../shared/node_modules/@rails/ujs/app/assets/javascripts/rails-ujs.js", "../../javascript/components/direct_upload.css", "../../../../../shared/node_modules/bootstrap/js/transition.js", "../../../../../shared/node_modules/bootstrap/js/alert.js", "../../../../../shared/node_modules/bootstrap/js/button.js", "../../../../../shared/node_modules/bootstrap/js/carousel.js", "../../../../../shared/node_modules/bootstrap/js/collapse.js", "../../../../../shared/node_modules/bootstrap/js/dropdown.js", "../../../../../shared/node_modules/bootstrap/js/modal.js", "../../../../../shared/node_modules/bootstrap/js/tooltip.js", "../../../../../shared/node_modules/bootstrap/js/popover.js", "../../../../../shared/node_modules/bootstrap/js/scrollspy.js", "../../../../../shared/node_modules/bootstrap/js/tab.js", "../../../../../shared/node_modules/bootstrap/js/affix.js", "../../../../../shared/node_modules/bootstrap/dist/js/npm.js", "../../../../../shared/node_modules/bootstrap/dist/css/bootstrap.css", "../../javascript/components/bootstrap/bootstrap_print.css", "../../javascript/components/bootstrap/auto-dropup.js", "../../javascript/components/bootstrap/index.js", "../../javascript/components/adminlte/adminlte.js", "../../javascript/components/adminlte/adminlte.css", "../../javascript/components/adminlte/style.scss", "../../javascript/components/adminlte/skin-blue.css", "../../javascript/components/adminlte/skin-blue-light.css", "../../javascript/components/adminlte/skin-yellow.css", "../../javascript/components/adminlte/skin-yellow-light.css", "../../javascript/components/adminlte/search.css", "../../../../../shared/node_modules/font-awesome/css/font-awesome.min.css", "../../javascript/components/adminlte/index.js", "../fonts/fonts.css", "../../javascript/components/bootstrap_confirm.js", "../../javascript/components/scrolling.js", "../../javascript/components/ajax_error_handling.js", "../../javascript/components/mouse_wait_on_ajax.js", "../../javascript/components/datepicker/custom-bs3.scss", "../../../../../shared/node_modules/select2/select2.js", "../../javascript/components/select2/select2_sortable.js", "../../../../../shared/node_modules/select2/select2_locale_de.js", "../../../../../shared/node_modules/select2/select2.css", "../../javascript/components/select2/select2-bootstrap.css", "../../javascript/components/select2/select2-kurso.scss", "../../javascript/components/select2/select2-sortable.css", "../../javascript/components/select2/index.js", "../../javascript/components/bootbox.js", "../../../../../shared/node_modules/dropzone/dist/min/dropzone.min.css", "../../../../../shared/node_modules/dropzone/dist/min/basic.min.css", "../../javascript/components/dropzone/dropzone.scss", "../../javascript/components/dropzone/index.js", "../../../../../shared/node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/stripe.controller.js", "../../javascript/helpers/index.js", "../../javascript/controllers/email-address.controller.js", "../../javascript/controllers/dropzone.controller.js", "../../javascript/controllers/select-toggle.controller.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/lib/utils.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/lib/date.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/lib/date-format.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/lib/dom.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/lib/event.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/i18n/base-locales.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/options/defaultOptions.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/options/processOptions.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/options/shortcutKeys.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/picker/templates/pickerTemplate.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/picker/templates/daysTemplate.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/picker/templates/weekNumbersTemplate.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/picker/views/View.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/picker/views/DaysView.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/picker/views/MonthsView.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/picker/views/YearsView.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/events/functions.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/events/pickerListeners.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/picker/Picker.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/events/elementListeners.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/events/otherListeners.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/Datepicker.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/i18n/locales/de.js", "../../../../../shared/node_modules/vanillajs-datepicker/js/i18n/locales/en-CA.js", "../../javascript/controllers/datepicker.controller.js", "../../javascript/controllers/removable.controller.js", "../../../../../shared/node_modules/@stimulus-components/checkbox-select-all/dist/stimulus-checkbox-select-all.mjs", "../../javascript/controllers/checkbox-select-all.controller.js", "../../javascript/controllers/merge-fields.controller.js", "../../javascript/controllers/radio-toggle.controller.js", "../../../../../shared/node_modules/sortablejs/modular/sortable.esm.js", "../../javascript/controllers/sortable.controller.js", "../../javascript/controllers/invoice-item-form.controller.js", "../../../../../shared/node_modules/@stimulus-components/rails-nested-form/dist/stimulus-rails-nested-form.mjs", "../../javascript/controllers/nested-form.controller.js", "../../../../../shared/node_modules/@stimulus-components/reveal/dist/stimulus-reveal-controller.mjs", "../../javascript/controllers/disable.controller.js", "../../javascript/vendor/jquery.js", "../../javascript/vendor/jquery-ui.js", "../../javascript/application.js", "../../javascript/controllers/copy-clipboard.controller.js", "../../javascript/controllers/dropdown-value-counter.controller.js", "../../javascript/controllers/list-search.controller.js"],
  "sourcesContent": ["'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nvar V3_URL = 'https://js.stripe.com/v3';\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\nvar findScript = function findScript() {\n  var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(V3_URL, \"\\\"]\"));\n\n  for (var i = 0; i < scripts.length; i++) {\n    var script = scripts[i];\n\n    if (!V3_URL_REGEX.test(script.src)) {\n      continue;\n    }\n\n    return script;\n  }\n\n  return null;\n};\n\nvar injectScript = function injectScript(params) {\n  var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n  var script = document.createElement('script');\n  script.src = \"\".concat(V3_URL).concat(queryString);\n  var headOrBody = document.head || document.body;\n\n  if (!headOrBody) {\n    throw new Error('Expected document.body not to be null. Stripe.js requires a <body> element.');\n  }\n\n  headOrBody.appendChild(script);\n  return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n  if (!stripe || !stripe._registerWrapper) {\n    return;\n  }\n\n  stripe._registerWrapper({\n    name: 'stripe-js',\n    version: \"4.1.0\",\n    startTime: startTime\n  });\n};\n\nvar stripePromise = null;\nvar onErrorListener = null;\nvar onLoadListener = null;\n\nvar onError = function onError(reject) {\n  return function () {\n    reject(new Error('Failed to load Stripe.js'));\n  };\n};\n\nvar onLoad = function onLoad(resolve, reject) {\n  return function () {\n    if (window.Stripe) {\n      resolve(window.Stripe);\n    } else {\n      reject(new Error('Stripe.js not available'));\n    }\n  };\n};\n\nvar loadScript = function loadScript(params) {\n  // Ensure that we only attempt to load Stripe.js at most once\n  if (stripePromise !== null) {\n    return stripePromise;\n  }\n\n  stripePromise = new Promise(function (resolve, reject) {\n    if (typeof window === 'undefined' || typeof document === 'undefined') {\n      // Resolve to null when imported server side. This makes the module\n      // safe to import in an isomorphic code base.\n      resolve(null);\n      return;\n    }\n\n    if (window.Stripe && params) {\n      console.warn(EXISTING_SCRIPT_MESSAGE);\n    }\n\n    if (window.Stripe) {\n      resolve(window.Stripe);\n      return;\n    }\n\n    try {\n      var script = findScript();\n\n      if (script && params) {\n        console.warn(EXISTING_SCRIPT_MESSAGE);\n      } else if (!script) {\n        script = injectScript(params);\n      } else if (script && onLoadListener !== null && onErrorListener !== null) {\n        var _script$parentNode;\n\n        // remove event listeners\n        script.removeEventListener('load', onLoadListener);\n        script.removeEventListener('error', onErrorListener); // if script exists, but we are reloading due to an error,\n        // reload script to trigger 'load' event\n\n        (_script$parentNode = script.parentNode) === null || _script$parentNode === void 0 ? void 0 : _script$parentNode.removeChild(script);\n        script = injectScript(params);\n      }\n\n      onLoadListener = onLoad(resolve, reject);\n      onErrorListener = onError(reject);\n      script.addEventListener('load', onLoadListener);\n      script.addEventListener('error', onErrorListener);\n    } catch (error) {\n      reject(error);\n      return;\n    }\n  }); // Resets stripePromise on error\n\n  return stripePromise[\"catch\"](function (error) {\n    stripePromise = null;\n    return Promise.reject(error);\n  });\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n  if (maybeStripe === null) {\n    return null;\n  }\n\n  var stripe = maybeStripe.apply(undefined, args);\n  registerWrapper(stripe, startTime);\n  return stripe;\n}; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\nvar validateLoadParams = function validateLoadParams(params) {\n  var errorMessage = \"invalid load parameters; expected object of shape\\n\\n    {advancedFraudSignals: boolean}\\n\\nbut received\\n\\n    \".concat(JSON.stringify(params), \"\\n\");\n\n  if (params === null || _typeof(params) !== 'object') {\n    throw new Error(errorMessage);\n  }\n\n  if (Object.keys(params).length === 1 && typeof params.advancedFraudSignals === 'boolean') {\n    return params;\n  }\n\n  throw new Error(errorMessage);\n};\n\nvar loadParams;\nvar loadStripeCalled = false;\nvar loadStripe = function loadStripe() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  loadStripeCalled = true;\n  var startTime = Date.now();\n  return loadScript(loadParams).then(function (maybeStripe) {\n    return initStripe(maybeStripe, args, startTime);\n  });\n};\n\nloadStripe.setLoadParameters = function (params) {\n  // we won't throw an error if setLoadParameters is called with the same values as before\n  if (loadStripeCalled && loadParams) {\n    var validatedParams = validateLoadParams(params);\n    var parameterKeys = Object.keys(validatedParams);\n    var sameParameters = parameterKeys.reduce(function (previousValue, currentValue) {\n      var _loadParams;\n\n      return previousValue && params[currentValue] === ((_loadParams = loadParams) === null || _loadParams === void 0 ? void 0 : _loadParams[currentValue]);\n    }, true);\n\n    if (sameParameters) {\n      return;\n    }\n  }\n\n  if (loadStripeCalled) {\n    throw new Error('You cannot change load parameters after calling loadStripe');\n  }\n\n  loadParams = validateLoadParams(params);\n};\n\nexports.loadStripe = loadStripe;\n", "module.exports = require('../dist/pure');\n", "/*!\n * jQuery JavaScript Library v2.2.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:23Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar arr = [];\n\nvar document = window.document;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\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 support = {};\n\n\n\nvar\n\tversion = \"2.2.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\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\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\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\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\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\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\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\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype || {}, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf( \"use strict\" ) === 1 ) {\n\t\t\t\tscript = document.createElement( \"script\" );\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\n\t\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t\t// and removal by using an indirect global eval\n\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\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// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\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 concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: iOS 8.2 (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 = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.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.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://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|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// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + 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)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\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// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, nidselect, 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\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\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!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\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\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\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\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\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\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = 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\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"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\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\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\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\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( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.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 programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"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\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\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 http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).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// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.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 ( !div.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 ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\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 sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( 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\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\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\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ 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\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.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};\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\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\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\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\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 ] || (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\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\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\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 || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, 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 ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( 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\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\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || 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\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\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\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\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( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"<input/>\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\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\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, 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 ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || 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.context = this[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn 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\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\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\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.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\treturn elem.contentDocument || 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 rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\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 = 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 ( jQuery.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 && jQuery.type( 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 ) {\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\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.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 === promise ? newDefer.promise() : this,\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\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE9-10 only\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\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 ( jQuery.type( 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 ( !jQuery.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\tvalue :\n\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\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\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\t/* jshint -W018 */\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\tregister: function( owner, initial ) {\n\t\tvar value = initial || {};\n\n\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t// use plain assignment\n\t\tif ( owner.nodeType ) {\n\t\t\towner[ this.expando ] = value;\n\n\t\t// Otherwise secure it in a non-enumerable, non-writable property\n\t\t// configurability must be true to allow the property to be\n\t\t// deleted with the delete operator\n\t\t} else {\n\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\tvalue: value,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t} );\n\t\t}\n\t\treturn owner[ this.expando ];\n\t},\n\tcache: function( owner ) {\n\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return an empty object.\n\t\tif ( !acceptData( owner ) ) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ 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[ 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\t\t\towner[ this.expando ] && owner[ this.expando ][ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\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\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase( 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, name, camel,\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\t\t\tthis.register( owner );\n\n\t\t} else {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ 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://code.google.com/p/chromium/issues/detail?id=378607\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 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 = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\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: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\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, camelKey;\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// with the key as-is\n\t\t\t\tdata = dataUser.get( elem, key ) ||\n\n\t\t\t\t\t// Try to find dashed key if it exists (gh-2779)\n\t\t\t\t\t// This is for 2.2.x only\n\t\t\t\t\tdataUser.get( elem, key.replace( rmultiDash, \"-$&\" ).toLowerCase() );\n\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = dataUser.get( elem, camelKey );\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, camelKey, undefined );\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\tcamelKey = jQuery.camelCase( key );\n\t\t\tthis.each( function() {\n\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = dataUser.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdataUser.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf( \"-\" ) > -1 && data !== undefined ) {\n\t\t\t\t\tdataUser.set( this, key, value );\n\t\t\t\t}\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 || jQuery.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 isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\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 = ( 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// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\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}\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE9\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\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\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE9-11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\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, contains, 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 ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\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.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, 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 ( contains ) {\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\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, Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\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+\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\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\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// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\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( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener 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( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\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( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.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, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -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 ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY offsetX offsetY pageX pageY \" +\n\t\t\t\"screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\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\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\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<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\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// 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://code.google.com/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\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\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\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\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\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, pdataCur, 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.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.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 = concat.apply( [], 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\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\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 ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\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 ) {\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 ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\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 && jQuery.contains( node.ownerDocument, 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.replace( rxhtmlTag, \"<$1></$2>\" );\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 = jQuery.contains( elem.ownerDocument, 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: http://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\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\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: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"<iframe frameborder='0' width='0' height='0'/>\" ) )\n\t\t\t\t.appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = iframe[ 0 ].contentDocument;\n\n\t\t\t// Support: IE\n\t\t\tdoc.write();\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\nvar rmargin = ( /^margin/ );\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE<=11+, Firefox<=30+ (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback, args ) {\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.apply( elem, args || [] );\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 documentElement = document.documentElement;\n\n\n\n( function() {\n\tvar pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, 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: IE9-11+\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tcontainer.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;\" +\n\t\t\"padding:0;margin-top:1px;position:absolute\";\n\tcontainer.appendChild( div );\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\t\tdiv.style.cssText =\n\n\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t// Vendor-prefix box-sizing\n\t\t\t\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;\" +\n\t\t\t\"position:relative;display:block;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"top:1%;width:50%\";\n\t\tdiv.innerHTML = \"\";\n\t\tdocumentElement.appendChild( container );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\t\treliableMarginLeftVal = divStyle.marginLeft === \"2px\";\n\t\tboxSizingReliableVal = divStyle.width === \"4px\";\n\n\t\t// Support: Android 4.0 - 4.3 only\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.marginRight = \"50%\";\n\t\tpixelMarginRightVal = divStyle.marginRight === \"4px\";\n\n\t\tdocumentElement.removeChild( container );\n\t}\n\n\tjQuery.extend( support, {\n\t\tpixelPosition: function() {\n\n\t\t\t// This test is executed only once but we still do memoizing\n\t\t\t// since we can use the boxSizingReliable pre-computing.\n\t\t\t// No need to check if the test was already performed, though.\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\tboxSizingReliable: function() {\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelMarginRight: function() {\n\n\t\t\t// Support: Android 4.0-4.3\n\t\t\t// We're checking for boxSizingReliableVal here instead of pixelMarginRightVal\n\t\t\t// since that compresses better and they're computed together anyway.\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn pixelMarginRightVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\n\t\t\t// Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\treliableMarginRight: function() {\n\n\t\t\t// Support: Android 2.3\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. (#3333)\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t// This support function is only executed once so no memoizing is needed.\n\t\t\tvar ret,\n\t\t\t\tmarginDiv = div.appendChild( document.createElement( \"div\" ) );\n\n\t\t\t// Reset CSS: box-sizing; display; margin; border; padding\n\t\t\tmarginDiv.style.cssText = div.style.cssText =\n\n\t\t\t\t// Support: Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;box-sizing:content-box;\" +\n\t\t\t\t\"display:block;margin:0;border:0;padding:0\";\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdocumentElement.appendChild( container );\n\n\t\t\tret = !parseFloat( window.getComputedStyle( marginDiv ).marginRight );\n\n\t\t\tdocumentElement.removeChild( container );\n\t\t\tdiv.removeChild( marginDiv );\n\n\t\t\treturn ret;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;\n\n\t// Support: Opera 12.1x only\n\t// Fall back to style even without computed\n\t// computed is undefined for elems on document fragments\n\tif ( ( ret === \"\" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\tret = jQuery.style( elem, name );\n\t}\n\n\t// Support: IE9\n\t// getPropertyValue is only needed for .css('filter') (#12537)\n\tif ( computed ) {\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// http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.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: IE9-11+\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\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\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\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\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 augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// At this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// At this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// At this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// Some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test( val ) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// Check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox &&\n\t\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\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\tvalues[ index ] = dataPriv.get( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = dataPriv.access(\n\t\t\t\t\telem,\n\t\t\t\t\t\"olddisplay\",\n\t\t\t\t\tdefaultDisplay( elem.nodeName )\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\thidden = isHidden( elem );\n\n\t\t\tif ( display !== \"none\" || !hidden ) {\n\t\t\t\tdataPriv.set(\n\t\t\t\t\telem,\n\t\t\t\t\t\"olddisplay\",\n\t\t\t\t\thidden ? display : jQuery.css( elem, \"display\" )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\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\"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\t\t\"float\": \"cssFloat\"\n\t},\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 = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\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\tstyle[ name ] = value;\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 = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\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\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\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\t\t\t\t\telem.offsetWidth === 0 ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, name, 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 = extra && getStyles( elem ),\n\t\t\t\tsubtract = extra && augmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\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[ name ] = value;\n\t\t\t\tvalue = jQuery.css( elem, name );\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\t) + \"px\";\n\t\t}\n\t}\n);\n\n// Support: Android 2.3\njQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\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 ( !rmargin.test( prefix ) ) {\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 ( jQuery.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\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 ( isHidden( 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} );\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\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\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: IE9\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, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = jQuery.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\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Handle queue: false promises\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// Height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE9-10 do not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t// Test default display if display is currently \"none\"\n\t\tcheckDisplay = display === \"none\" ?\n\t\t\tdataPriv.get( elem, \"olddisplay\" ) || defaultDisplay( elem.nodeName ) : display;\n\n\t\tif ( checkDisplay === \"inline\" && jQuery.css( elem, \"float\" ) === \"none\" ) {\n\t\t\tstyle.display = \"inline-block\";\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// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( 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// If there is dataShow left over from a stopped hide or show\n\t\t\t\t// and we are going to proceed with show, we should pretend to be hidden\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\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\n\t\t// Any non-fx value stops us from restoring the original display value\n\t\t} else {\n\t\t\tdisplay = undefined;\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// Store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done( function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t} );\n\t\t}\n\t\tanim.done( function() {\n\t\t\tvar prop;\n\n\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t} );\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t// If this is a noop like .hide().hide(), restore an overwritten display value\n\t} else if ( ( display === \"none\" ? defaultDisplay( elem.nodeName ) : display ) === \"inline\" ) {\n\t\tstyle.display = display;\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 = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.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\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\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\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 ( jQuery.isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tjQuery.proxy( result.stop, 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 ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\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\t// attach callbacks from options\n\treturn animation.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\njQuery.Animation = jQuery.extend( Animation, {\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 ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnotwhite );\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\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ?\n\t\topt.duration : opt.duration in jQuery.fx.speeds ?\n\t\t\tjQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\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 ( jQuery.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( isHidden ).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\t\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 && type !== false ) {\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 = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Checks the timer has not already been removed\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\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\twindow.clearInterval( timerId );\n\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: iOS<=5.1, Android<=4.2+\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE<=11+\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: Android<=2.3\n\t// Options inside disabled selects are incorrectly marked as disabled\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE<=11+\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// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\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\tjQuery.nodeName( 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, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t}\n\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};\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\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ name ];\n\t\t\tattrHandle[ name ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tname.toLowerCase() :\n\t\t\t\tnull;\n\t\t\tattrHandle[ name ] = 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// 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// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\t\trclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\t-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\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\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\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\nvar rclass = /[\\t\\r\\n\\f]/g;\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.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\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnotwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 &&\n\t\t\t\t\t( \" \" + curValue + \" \" ).replace( rclass, \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.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\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnotwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 &&\n\t\t\t\t\t( \" \" + curValue + \" \" ).replace( rclass, \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( type === \"string\" ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\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( \" \" + getClass( elem ) + \" \" ).replace( rclass, \" \" )\n\t\t\t\t\t.indexOf( className ) > -1\n\t\t\t) {\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\trspaces = /[\\x20\\t\\r\\n\\f]+/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\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\treturn typeof ret === \"string\" ?\n\n\t\t\t\t\t// Handle most common string cases\n\t\t\t\t\tret.replace( rreturn, \"\" ) :\n\n\t\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.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 ( isFunction ) {\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 ( jQuery.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: IE10-11+\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tjQuery.trim( jQuery.text( elem ) ).replace( rspaces, \" \" );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\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\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\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// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( support.optDisabled ?\n\t\t\t\t\t\t\t\t!option.disabled : option.getAttribute( \"disabled\" ) === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!jQuery.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\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\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 ( jQuery.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\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ 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 name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\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\njQuery.each( ( \"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\n// Support: Firefox\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, Safari\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://code.google.com/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\t\t\t\tvar doc = this.ownerDocument || 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,\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 = jQuery.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Support: Android 2.3\n// Workaround failure to string-cast null input\njQuery.parseJSON = function( data ) {\n\treturn JSON.parse( data + \"\" );\n};\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE9\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.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( rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t// 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\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\": jQuery.parseJSON,\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// 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// 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\t\tjQuery( callbackContext ) :\n\t\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// The jqXHR state\n\t\t\tstate = 0,\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 ( state === 2 ) {\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() ] = 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;\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 state === 2 ? 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\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || 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 ( !state ) {\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 ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\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} else {\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}\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 ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" ).replace( rhash, \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( rnotwhite ) || [ \"\" ];\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: IE8-11+\n\t\t\t// IE throws exception if url is malformed, 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: IE8-11+\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 ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + nonce++;\n\t\t\t}\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 || state === 2 ) ) {\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\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\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 ( state === 2 ) {\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\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\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// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\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// 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 ( jQuery.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\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapAll( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( this[ 0 ] ) {\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 ( jQuery.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 isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each( function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t} ).end();\n\t}\n} );\n\n\njQuery.expr.filters.hidden = function( elem ) {\n\treturn !jQuery.expr.filters.visible( elem );\n};\njQuery.expr.filters.visible = function( elem ) {\n\n\t// Support: Opera <= 12.12\n\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\t// Use OR instead of AND as the element is not visible if either is true\n\t// See tickets #10406 and #13132\n\treturn elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;\n};\n\n\n\n\nvar r20 = /%20/g,\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 ( jQuery.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 && jQuery.type( 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, value ) {\n\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.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( \"&\" ).replace( r20, \"+\" );\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} )\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} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t} ) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\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: IE9\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.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: IE9\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE9 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 = callback( \"error\" );\n\n\t\t\t\t// Support: IE9\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// 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 requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = 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\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++ ) );\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 = jQuery.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 && jQuery.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// 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 ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\tcontext = context || document;\n\n\tvar parsed = rsingleTag.exec( data ),\n\t\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// Keep a copy of the old load method\nvar _load = jQuery.fn.load;\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = jQuery.trim( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.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\n// Attach a bunch of functions for handling common AJAX events\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.expr.filters.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\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;\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 ( jQuery.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\toffset: function( options ) {\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 docElem, win,\n\t\t\telem = this[ 0 ],\n\t\t\tbox = { top: 0, left: 0 },\n\t\t\tdoc = elem && elem.ownerDocument;\n\n\t\tif ( !doc ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure it's not a disconnected DOM node\n\t\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box;\n\t\t}\n\n\t\tbox = elem.getBoundingClientRect();\n\t\twin = getWindow( doc );\n\t\treturn {\n\t\t\ttop: box.top + win.pageYOffset - docElem.clientTop,\n\t\t\tleft: box.left + win.pageXOffset - docElem.clientLeft\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n\t\t// because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\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\t\t\tvar win = getWindow( elem );\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-8+, Chrome<37-44+\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://code.google.com/p/chromium/issues/detail?id=229280\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( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( 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 ( jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.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, null );\n\t\t};\n\t} );\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\tsize: function() {\n\t\treturn this.length;\n\t}\n} );\n\njQuery.fn.andSelf = jQuery.fn.addBack;\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\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// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\nreturn jQuery;\n}));\n", "/*! @preserve\r\n * bootbox.js\r\n * version: 6.0.4\r\n * author: Nick Payne <nick@kurai.co.uk>\r\n * license: MIT\r\n * http://bootboxjs.com/\r\n */\r\n(function (root, factory) {\r\n  'use strict';\r\n  if (typeof define === 'function' && define.amd) {\r\n    // AMD\r\n    define(['jquery'], factory);\r\n  } else if (typeof exports === 'object') {\r\n    // Node, CommonJS-like\r\n    module.exports = factory(require('jquery'));\r\n  } else {\r\n    // Browser globals (root is window)\r\n    root.bootbox = factory(root.jQuery);\r\n  }\r\n}(this, function init($, undefined) {\r\n  'use strict';\r\n\r\n  let exports = {};\r\n\r\n  let VERSION = '6.0.4';\r\n  exports.VERSION = VERSION;\r\n\r\n  let locales = {\r\n    'en' : {\r\n      OK      : 'OK',\r\n      CANCEL  : 'Cancel',\r\n      CONFIRM : 'OK'\r\n    }\r\n  };\r\n\r\n  let templates = {\r\n    dialog:         '<div class=\"bootbox modal\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\"><div class=\"modal-dialog\"><div class=\"modal-content\"><div class=\"modal-body\"><div class=\"bootbox-body\"></div></div></div></div></div>',\r\n    header:         '<div class=\"modal-header\"><h5 class=\"modal-title\"></h5></div>',\r\n    footer:         '<div class=\"modal-footer\"></div>',\r\n    closeButton:    '<button type=\"button\" class=\"bootbox-close-button close btn-close\" aria-hidden=\"true\" aria-label=\"Close\"></button>',\r\n    form:           '<form class=\"bootbox-form\"></form>',\r\n    button:         '<button type=\"button\" class=\"btn\"></button>',\r\n    option:         '<option value=\"\"></option>',\r\n    promptMessage:  '<div class=\"bootbox-prompt-message\"></div>',\r\n    inputs: {\r\n      text:         '<input class=\"bootbox-input bootbox-input-text form-control\" autocomplete=\"off\" type=\"text\" />',\r\n      textarea:     '<textarea class=\"bootbox-input bootbox-input-textarea form-control\"></textarea>',\r\n      email:        '<input class=\"bootbox-input bootbox-input-email form-control\" autocomplete=\"off\" type=\"email\" />',\r\n      select:       '<select class=\"bootbox-input bootbox-input-select form-select\"></select>',\r\n      checkbox:     '<div class=\"form-check checkbox\"><label class=\"form-check-label\"><input class=\"form-check-input bootbox-input bootbox-input-checkbox\" type=\"checkbox\" /></label></div>',\r\n      radio:        '<div class=\"form-check radio\"><label class=\"form-check-label\"><input class=\"form-check-input bootbox-input bootbox-input-radio\" type=\"radio\" name=\"bootbox-radio\" /></label></div>',\r\n      date:         '<input class=\"bootbox-input bootbox-input-date form-control\" autocomplete=\"off\" type=\"date\" />',\r\n      time:         '<input class=\"bootbox-input bootbox-input-time form-control\" autocomplete=\"off\" type=\"time\" />',\r\n      number:       '<input class=\"bootbox-input bootbox-input-number form-control\" autocomplete=\"off\" type=\"number\" />',\r\n      password:     '<input class=\"bootbox-input bootbox-input-password form-control\" autocomplete=\"off\" type=\"password\" />',\r\n      range:        '<input class=\"bootbox-input bootbox-input-range form-control-range\" autocomplete=\"off\" type=\"range\" />'\r\n    }\r\n  };\r\n\r\n\r\n  let defaults = {\r\n    // Default language used when generating buttons for alert, confirm, and prompt dialogs\r\n    locale: 'en',\r\n    // Show backdrop or not. Default to static so user has to interact with dialog\r\n    backdrop: 'static',\r\n    // Animate the modal in/out\r\n    animate: true,\r\n    // Additional class string applied to the top level dialog\r\n    className: null,\r\n    // Whether or not to include a close button\r\n    closeButton: true,\r\n    // Show the dialog immediately by default\r\n    show: true,\r\n    // Dialog container\r\n    container: 'body',\r\n    // Default value (used by the prompt helper)\r\n    value: '',\r\n    // Default input type (used by the prompt helper)\r\n    inputType: 'text',\r\n    // Custom error message to report if prompt fails validation\r\n    errorMessage: null,\r\n    // Switch button order from cancel/confirm (default) to confirm/cancel\r\n    swapButtonOrder: false,\r\n    // Center modal vertically in page\r\n    centerVertical: false,\r\n    // Append \"multiple\" property to the select when using the \"prompt\" helper\r\n    multiple: false,\r\n    // Automatically scroll modal content when height exceeds viewport height\r\n    scrollable: false,\r\n    // Whether or not to destroy the modal on hide\r\n    reusable: false,\r\n    // The element which triggered the dialog\r\n    relatedTarget: null,\r\n    // The size of the modal to generate\r\n    size: null,\r\n    // A unique identifier for this modal\r\n    id: null\r\n  };\r\n\r\n\r\n  // PUBLIC FUNCTIONS\r\n  // *************************************************************************************************************\r\n\r\n  /**\r\n   * Return all currently registered locales, or a specific locale if \"name\" is defined\r\n   * @param {string} [name]\r\n   * @returns {(Object|Object[])} An array of the available locale objects, or a single locale object if {name} is not null\r\n   */\r\n  exports.locales = function (name) {\r\n    return name ? locales[name] : locales;\r\n  };\r\n\r\n\r\n  /**\r\n   * Register localized strings for the OK, CONFIRM, and CANCEL buttons\r\n   * @param {string} name - The key used to identify the new locale in the locales array\r\n   * @param {Object} values - An object containing the localized string for each of the OK, CANCEL, and CONFIRM properties of a locale\r\n   * @returns The updated bootbox object\r\n   */\r\n  exports.addLocale = function (name, values) {\r\n    $.each(['OK', 'CANCEL', 'CONFIRM'], function (_, v) {\r\n      if (!values[v]) {\r\n        throw new Error('Please supply a translation for \"' + v + '\"');\r\n      }\r\n    });\r\n\r\n    locales[name] = {\r\n      OK: values.OK,\r\n      CANCEL: values.CANCEL,\r\n      CONFIRM: values.CONFIRM\r\n    };\r\n\r\n    return exports;\r\n  };\r\n\r\n \r\n  /**\r\n   * Remove a previously-registered locale\r\n   * @param {string} name - The key identifying the locale to remove\r\n   * @returns The updated bootbox object\r\n   */\r\n  exports.removeLocale = function (name) {\r\n    if (name !== 'en') {\r\n      delete locales[name];\r\n    }\r\n    else {\r\n      throw new Error('\"en\" is used as the default and fallback locale and cannot be removed.');\r\n    }\r\n\r\n    return exports;\r\n  };\r\n\r\n\r\n  /**\r\n   * Set the default locale\r\n   * @param {string} name - The key identifying the locale to set as the default locale for all future bootbox calls \r\n   * @returns The updated bootbox object\r\n   */\r\n  exports.setLocale = function (name) {\r\n    return exports.setDefaults('locale', name);\r\n  };\r\n\r\n\r\n  /**\r\n   * Override default value(s) of Bootbox.\r\n   * @returns The updated bootbox object\r\n   */\r\n  exports.setDefaults = function () {\r\n    let values = {};\r\n\r\n    if (arguments.length === 2) {\r\n      // Allow passing of single key/value...\r\n      values[arguments[0]] = arguments[1];\r\n    } else {\r\n      // ... and as an object too\r\n      values = arguments[0];\r\n    }\r\n\r\n    $.extend(defaults, values);\r\n\r\n    return exports;\r\n  };\r\n\r\n\r\n  /**\r\n   * Hides all currently active Bootbox modals\r\n   * @returns The current bootbox object\r\n   */\r\n  exports.hideAll = function () {\r\n    $('.bootbox').modal('hide');\r\n\r\n    return exports;\r\n  };\r\n\r\n \r\n  /**\r\n   * Allows the base init() function to be overridden\r\n   * @param {function} _$ - A function to be called when the bootbox instance is created\r\n   * @returns The current bootbox object\r\n   */\r\n  exports.init = function (_$) {\r\n    return init(_$ || $);\r\n  };\r\n\r\n\r\n  // CORE HELPER FUNCTIONS\r\n  // *************************************************************************************************************\r\n\r\n  /**\r\n   * The core dialog helper function, which can be used to create any custom Bootstrap modal. \r\n   * @param {Object} options - An object used to configure the various properties which define a Bootbox dialog\r\n   * @returns A jQuery object upon which Bootstrap's modal function has been called\r\n   */\r\n  exports.dialog = function (options) {\r\n    if ($.fn.modal === undefined) {\r\n      throw new Error(\r\n        '\"$.fn.modal\" is not defined; please double check you have included the Bootstrap JavaScript library. See https://getbootstrap.com/docs/5.3/getting-started/introduction/ for more details.'\r\n      );\r\n    }\r\n\r\n    options = sanitize(options);\r\n\r\n    if ($.fn.modal.Constructor.VERSION) {\r\n      options.fullBootstrapVersion = $.fn.modal.Constructor.VERSION;\r\n      let i = options.fullBootstrapVersion.indexOf('.');\r\n      options.bootstrap = options.fullBootstrapVersion.substring(0, i);\r\n    }\r\n    else {\r\n      // Assuming version 2.3.2, as that was the last \"supported\" 2.x version\r\n      options.bootstrap = '2';\r\n      options.fullBootstrapVersion = '2.3.2';\r\n      console.warn('Bootbox will *mostly* work with Bootstrap 2, but we do not officially support it. Please upgrade, if possible.');\r\n    }\r\n\r\n    let dialog = $(templates.dialog);\r\n    let innerDialog = dialog.find('.modal-dialog');\r\n    let body = dialog.find('.modal-body');\r\n    let header = $(templates.header);\r\n    let footer = $(templates.footer);\r\n    let buttons = options.buttons;\r\n\r\n    let callbacks = {\r\n      onEscape: options.onEscape\r\n    };\r\n\r\n    body.find('.bootbox-body').html(options.message);\r\n\r\n    // Only attempt to create buttons if at least one has been defined in the options object\r\n    if (getKeyLength(options.buttons) > 0) {\r\n      each(buttons, function (key, b) {\r\n        let button = $(templates.button);\r\n        button.data('bb-handler', key);\r\n        button.addClass(b.className);\r\n\r\n        switch (key) {\r\n          case 'ok':\r\n          case 'confirm':\r\n            button.addClass('bootbox-accept');\r\n            break;\r\n\r\n          case 'cancel':\r\n            button.addClass('bootbox-cancel');\r\n            break;\r\n        }\r\n\r\n        button.html(b.label);\r\n\r\n        if (b.id) {\r\n          button.attr({ 'id': b.id });\r\n        }\r\n\r\n        if (b.disabled === true) {\r\n          button.prop({ disabled: true });\r\n        }\r\n\r\n        footer.append(button);\r\n\r\n        callbacks[key] = b.callback;\r\n      });\r\n\r\n      body.after(footer);\r\n    }\r\n\r\n    if (options.animate === true) {\r\n      dialog.addClass('fade');\r\n    }\r\n\r\n    if (options.className) {\r\n      dialog.addClass(options.className);\r\n    }\r\n\r\n    if (options.id) {\r\n      dialog.attr({ 'id': options.id });\r\n    }\r\n\r\n    if (options.size) {\r\n      // Requires Bootstrap 3.1.0 or higher\r\n      if (options.fullBootstrapVersion.substring(0, 3) < '3.1') {\r\n        console.warn('\"size\" requires Bootstrap 3.1.0 or higher. You appear to be using ' + options.fullBootstrapVersion + '. Please upgrade to use this option.');\r\n      }\r\n\r\n      switch (options.size) {\r\n        case 'small':\r\n        case 'sm':\r\n          innerDialog.addClass('modal-sm');\r\n          break;\r\n\r\n        case 'large':\r\n        case 'lg':\r\n          innerDialog.addClass('modal-lg');\r\n          break;\r\n\r\n        case 'extra-large':\r\n        case 'xl':\r\n          innerDialog.addClass('modal-xl');\r\n\r\n          // Requires Bootstrap 4.2.0 or higher\r\n          if (options.fullBootstrapVersion.substring(0, 3) < '4.2') {\r\n            console.warn('Using size \"xl\"/\"extra-large\" requires Bootstrap 4.2.0 or higher. You appear to be using ' + options.fullBootstrapVersion + '. Please upgrade to use this option.');\r\n          }\r\n          break;\r\n      }\r\n    }\r\n\r\n    if (options.scrollable) {\r\n      innerDialog.addClass('modal-dialog-scrollable');\r\n\r\n      // Requires Bootstrap 4.3.0 or higher\r\n      if (options.fullBootstrapVersion.substring(0, 3) < '4.3') {\r\n        console.warn('Using \"scrollable\" requires Bootstrap 4.3.0 or higher. You appear to be using ' + options.fullBootstrapVersion + '. Please upgrade to use this option.');\r\n      }\r\n    }\r\n\r\n    if(options.title || options.closeButton) {\r\n      if (options.title) {\r\n        header.find('.modal-title').html(options.title);\r\n      }\r\n      else {\r\n        header.addClass('border-0');\r\n      }\r\n\r\n      if (options.closeButton) {\r\n        let closeButton = $(templates.closeButton);      \r\n        if (options.bootstrap < 5) {\r\n          closeButton.html('&times;');\r\n        }\r\n\r\n        /* Note: the close button for Bootstrap 5+ does not contain content */\r\n        if(options.bootstrap < 4) {\r\n          /* Bootstrap 3 and under */\r\n          header.prepend(closeButton);\r\n        }\r\n        else {\r\n          header.append(closeButton);\r\n        }\r\n      }\r\n\r\n      body.before(header);\r\n    }\r\n\r\n    if (options.centerVertical) {\r\n      innerDialog.addClass('modal-dialog-centered');\r\n\r\n      // Requires Bootstrap 4.0.0-beta.3 or higher\r\n      if (options.fullBootstrapVersion < '4.0.0') {\r\n        console.warn('\"centerVertical\" requires Bootstrap 4.0.0-beta.3 or higher. You appear to be using ' + options.fullBootstrapVersion + '. Please upgrade to use this option.');\r\n      }\r\n    }\r\n\r\n    // Bootstrap event listeners; these handle extra setup & teardown required after the underlying modal has performed certain actions.\r\n\r\n    if(!options.reusable) {\r\n      // make sure we unbind any listeners once the dialog has definitively been dismissed\r\n      dialog.one('hide.bs.modal', { dialog: dialog }, unbindModal);\r\n      dialog.one('hidden.bs.modal', { dialog: dialog }, destroyModal);\r\n    }\r\n\r\n    if (options.onHide) {\r\n      if (typeof options.onHide === 'function') {\r\n        dialog.on('hide.bs.modal', options.onHide);\r\n      }\r\n      else {\r\n        throw new Error('Argument supplied to \"onHide\" must be a function');\r\n      }\r\n    }\r\n\r\n    if (options.onHidden) {\r\n      if (typeof options.onHidden === 'function') {\r\n        dialog.on('hidden.bs.modal', options.onHidden);\r\n      }\r\n      else {\r\n        throw new Error('Argument supplied to \"onHidden\" must be a function');\r\n      }\r\n    }\r\n\r\n    if (options.onShow) {\r\n      if (typeof options.onShow === 'function') {\r\n        dialog.on('show.bs.modal', options.onShow);\r\n      }\r\n      else {\r\n        throw new Error('Argument supplied to \"onShow\" must be a function');\r\n      }\r\n    }\r\n\r\n    dialog.one('shown.bs.modal', { dialog: dialog }, focusPrimaryButton);\r\n\r\n    if (options.onShown) {\r\n      if (typeof options.onShown === 'function') {\r\n        dialog.on('shown.bs.modal', options.onShown);\r\n      }\r\n      else {\r\n        throw new Error('Argument supplied to \"onShown\" must be a function');\r\n      }\r\n    }\r\n\r\n    // Bootbox event listeners; used to decouple some behaviours from their respective triggers\r\n\r\n    if (options.backdrop === true) {\r\n      let startedOnBody = false;\r\n\r\n      // Prevents the event from propagating to the backdrop, when something inside the dialog is clicked\r\n      dialog.on('mousedown', '.modal-content', function(e) {\r\n        e.stopPropagation();\r\n\r\n        startedOnBody = true;\r\n      });\r\n\r\n      // A boolean true/false according to the Bootstrap docs should show a dialog the user can dismiss by clicking on the background.\r\n      // We always only ever pass static/false to the actual $.modal function because with \"true\" we can't trap this event (the .modal-backdrop swallows it).\r\n      // However, we still want to sort-of respect true and invoke the escape mechanism instead\r\n      dialog.on('click.dismiss.bs.modal', function (e) {\r\n        if (startedOnBody || e.target !== e.currentTarget) {\r\n          return;\r\n        }\r\n\r\n        dialog.trigger('escape.close.bb');\r\n      });\r\n    }\r\n\r\n    dialog.on('escape.close.bb', function (e) {\r\n      // The if() statement looks redundant but it isn't; without it, if we *didn't* have an onEscape handler then processCallback would automatically dismiss the dialog\r\n      if (callbacks.onEscape) {\r\n        processCallback(e, dialog, callbacks.onEscape);\r\n      }\r\n    });\r\n\r\n    dialog.on('click', '.modal-footer button:not(.disabled)', function (e) {\r\n      let callbackKey = $(this).data('bb-handler');\r\n\r\n      if (callbackKey !== undefined) {\r\n        // Only process callbacks for buttons we recognize:\r\n        processCallback(e, dialog, callbacks[callbackKey]);\r\n      }\r\n    });\r\n\r\n    dialog.on('click', '.bootbox-close-button', function (e) {\r\n      // onEscape might be falsy, but that's fine; the fact is if the user has managed to click the close button we have to close the dialog, callback or not\r\n      processCallback(e, dialog, callbacks.onEscape);\r\n    });\r\n\r\n    dialog.on('keyup', function (e) {\r\n      if (e.which === 27) {\r\n        dialog.trigger('escape.close.bb');\r\n      }\r\n    });\r\n\r\n    /*\r\n    The remainder of this method simply deals with adding our dialog element to the DOM, augmenting it with \r\n    Bootstrap's modal functionality and then giving the resulting object back to our caller\r\n    */\r\n\r\n    $(options.container).append(dialog);\r\n\r\n    dialog.modal({\r\n      backdrop: options.backdrop,\r\n      keyboard: false,\r\n      show: false\r\n    });\r\n\r\n    if (options.show) {\r\n      dialog.modal('show', options.relatedTarget);\r\n    }\r\n\r\n    return dialog;\r\n  };\r\n\r\n\r\n  /**\r\n   * Helper function to simulate the native alert() behavior. **NOTE**: This is non-blocking, so any code that must happen after the alert is dismissed should be placed within the callback function for this alert.\r\n   * @returns  A jQuery object upon which Bootstrap's modal function has been called\r\n   */\r\n  exports.alert = function () {\r\n    let options;\r\n\r\n    options = mergeDialogOptions('alert', ['ok'], ['message', 'callback'], arguments);\r\n\r\n    // @TODO: can this move inside exports.dialog when we're iterating over each button and checking its button.callback value instead?\r\n    if (options.callback && typeof options.callback !== 'function') {\r\n      throw new Error('alert requires the \"callback\" property to be a function when provided');\r\n    }\r\n\r\n    // Override the ok and escape callback to make sure they just invoke the single user-supplied one (if provided)\r\n    options.buttons.ok.callback = options.onEscape = function () {\r\n      if (typeof options.callback  === 'function') {\r\n        return options.callback.call(this);\r\n      }\r\n\r\n      return true;\r\n    };\r\n\r\n    return exports.dialog(options);\r\n  };\r\n\r\n\r\n  /**\r\n   * Helper function to simulate the native confirm() behavior. **NOTE**: This is non-blocking, so any code that must happen after the confirm is dismissed should be placed within the callback function for this confirm.\r\n   * @returns A jQuery object upon which Bootstrap's modal function has been called\r\n   */\r\n  exports.confirm = function () {\r\n    let options;\r\n\r\n    options = mergeDialogOptions('confirm', ['cancel', 'confirm'], ['message', 'callback'], arguments);\r\n\r\n    // confirm specific validation; they don't make sense without a callback so make sure it's present\r\n    if (typeof options.callback !== 'function') {\r\n      throw new Error('confirm requires a callback');\r\n    }\r\n\r\n    // Overrides; undo anything the user tried to set they shouldn't have\r\n    options.buttons.cancel.callback = options.onEscape = function () {\r\n      return options.callback.call(this, false);\r\n    };\r\n\r\n    options.buttons.confirm.callback = function () {\r\n      return options.callback.call(this, true);\r\n    };\r\n\r\n    return exports.dialog(options);\r\n  };\r\n\r\n\r\n  /**\r\n   * Helper function to simulate the native prompt() behavior. **NOTE**: This is non-blocking, so any code that must happen after the prompt is dismissed should be placed within the callback function for this prompt.\r\n   * @returns A jQuery object upon which Bootstrap's modal function has been called\r\n   */\r\n  exports.prompt = function () {\r\n    let options;\r\n    let promptDialog;\r\n    let form;\r\n    let input;\r\n    let shouldShow;\r\n    let inputOptions;\r\n\r\n    // We have to create our form first, otherwise its value is undefined when gearing up our options.\r\n    // @TODO this could be solved by allowing message to be a function instead...\r\n    form = $(templates.form);\r\n\r\n    // prompt defaults are more complex than others in that users can override more defaults\r\n    options = mergeDialogOptions('prompt', ['cancel', 'confirm'], ['title', 'callback'], arguments);\r\n\r\n    if (!options.value) {\r\n      options.value = defaults.value;\r\n    }\r\n\r\n    if (!options.inputType) {\r\n      options.inputType = defaults.inputType;\r\n    }\r\n\r\n    // Capture the user's 'show' value; we always set this to false before spawning the dialog to give us a chance to attach some handlers to it, but we need to make sure we respect a preference not to show it\r\n    shouldShow = (options.show === undefined) ? defaults.show : options.show;\r\n\r\n    // This is required prior to calling the dialog builder below - we need to add an event handler just before the prompt is shown\r\n    options.show = false;\r\n\r\n    // Handles the 'cancel' action\r\n    options.buttons.cancel.callback = options.onEscape = function () {\r\n      return options.callback.call(this, null);\r\n    };\r\n\r\n    // Prompt submitted - extract the prompt value. This requires a bit of work, given the different input types available.\r\n    options.buttons.confirm.callback = function () {\r\n      let value;\r\n\r\n      if (options.inputType === 'checkbox') {\r\n        value = input.find('input:checked').map(function () {\r\n          return $(this).val();\r\n        }).get();\r\n        if(value.length === 0 && options.required === true) {\r\n            // prevents button callback from being called if no checkboxes have been checked\r\n            return false;\r\n        }\r\n      } else if (options.inputType === 'radio') {\r\n        value = input.find('input:checked').val();\r\n      }\r\n      else {\r\n        let el = input[0];\r\n        \r\n        if (el.checkValidity && !el.checkValidity()) {\r\n          // If a custom error message was provided, add it now\r\n          if(options.errorMessage){\r\n            el.setCustomValidity(options.errorMessage);\r\n          }\r\n          \r\n          if(el.reportValidity) { \r\n            el.reportValidity();\r\n          }\r\n\r\n          // prevents button callback from being called\r\n          return false;\r\n        } else {\r\n          if (options.inputType === 'select' && options.multiple === true) {\r\n            value = input.find('option:selected').map(function () {\r\n              return $(this).val();\r\n            }).get();\r\n          }\r\n          else {\r\n            value = input.val();\r\n          }\r\n        }\r\n      }\r\n\r\n      return options.callback.call(this, value);\r\n    };\r\n\r\n    // prompt-specific validation\r\n    if (!options.title) {\r\n      throw new Error('prompt requires a title');\r\n    }\r\n\r\n    if (typeof options.callback !== 'function') {\r\n      throw new Error('prompt requires a callback');\r\n    }\r\n\r\n    if (!templates.inputs[options.inputType]) {\r\n      throw new Error('Invalid prompt type');\r\n    }\r\n\r\n    // Create the input based on the supplied type\r\n    input = $(templates.inputs[options.inputType]);\r\n\r\n    switch (options.inputType) {\r\n      case 'text':\r\n      case 'textarea':\r\n      case 'email':\r\n      case 'password':\r\n        input.val(options.value);\r\n\r\n        if (options.placeholder) {\r\n          input.attr('placeholder', options.placeholder);\r\n        }\r\n\r\n        if (options.pattern) {\r\n          input.attr('pattern', options.pattern);\r\n        }\r\n\r\n        if (options.maxlength) {\r\n          input.attr('maxlength', options.maxlength);\r\n        }\r\n\r\n        if (options.required) {\r\n          input.prop({ 'required': true });\r\n        }\r\n\r\n        if (options.rows && !isNaN(parseInt(options.rows))) {\r\n          if (options.inputType === 'textarea') {\r\n            input.attr({ 'rows': options.rows });\r\n          }\r\n        }\r\n        break;\r\n\r\n      case 'date':\r\n      case 'time':\r\n      case 'number':\r\n      case 'range':\r\n        input.val(options.value);\r\n\r\n        if (options.placeholder) {\r\n          input.attr('placeholder', options.placeholder);\r\n        }\r\n\r\n        if (options.pattern) {\r\n          input.attr('pattern', options.pattern);\r\n        }\r\n        else {\r\n          if(options.inputType === 'date') {\r\n            // Add the ISO-8601 short date format as a fallback for browsers without native type=\"date\" support\r\n            input.attr('pattern', '\\d{4}-\\d{2}-\\d{2}');\r\n          }\r\n          else if(options.inputType === 'time') {\r\n            // Add an HH:MM pattern as a fallback for browsers without native type=\"time\" support\r\n            input.attr('pattern', '\\d{2}:\\d{2}');\r\n          }\r\n        }\r\n\r\n        if (options.required) {\r\n          input.prop({ 'required': true });\r\n        }\r\n\r\n        if (options.step) {\r\n          if (options.step === 'any' || (!isNaN(options.step) && parseFloat(options.step) > 0)) {\r\n            input.attr('step', options.step);\r\n          }\r\n          else {\r\n            throw new Error('\"step\" must be a valid positive number or the value \"any\". See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-step for more information.');\r\n          }\r\n        }\r\n\r\n        if (minAndMaxAreValid(options.inputType, options.min, options.max)) {\r\n          if (options.min !== undefined) {\r\n            input.attr('min', options.min);\r\n          }\r\n          if (options.max !== undefined) {\r\n            input.attr('max', options.max);\r\n          }\r\n        }\r\n        break;\r\n\r\n      case 'select':\r\n        let groups = {};\r\n        inputOptions = options.inputOptions || [];\r\n\r\n        if (!Array.isArray(inputOptions)) {\r\n          throw new Error('Please pass an array of input options');\r\n        }\r\n\r\n        if (!inputOptions.length) {\r\n          throw new Error('prompt with \"inputType\" set to \"select\" requires at least one option');\r\n        }\r\n\r\n        if (options.required) {\r\n          input.prop({ 'required': true });\r\n        }\r\n\r\n        if (options.multiple) {\r\n          input.prop({ 'multiple': true });\r\n        }\r\n\r\n        each(inputOptions, function (_, option) {\r\n          // Assume the element to attach to is the input...\r\n          let elem = input;\r\n\r\n          if (option.value === undefined || option.text === undefined) {\r\n            throw new Error('each option needs a \"value\" property and a \"text\" property');\r\n          }\r\n\r\n          // ... but override that element if this option sits in a group\r\n\r\n          if (option.group) {\r\n            // Initialise group if necessary\r\n            if (!groups[option.group]) {\r\n              groups[option.group] = $('<optgroup />').attr('label', option.group);\r\n            }\r\n\r\n            elem = groups[option.group];\r\n          }\r\n\r\n          let o = $(templates.option);\r\n          o.attr('value', option.value).text(option.text);\r\n          elem.append(o);\r\n        });\r\n\r\n        each(groups, function (_, group) {\r\n          input.append(group);\r\n        });\r\n\r\n        // Safe to set a select's value as per a normal input\r\n        input.val(options.value);\r\n        if (options.bootstrap < 5) {\r\n          input.removeClass('form-select').addClass('form-control');\r\n        }\r\n        break;\r\n\r\n      case 'checkbox':\r\n        let checkboxValues = Array.isArray(options.value) ? options.value : [options.value];\r\n        inputOptions = options.inputOptions || [];\r\n\r\n        if (!inputOptions.length) {\r\n          throw new Error('prompt with \"inputType\" set to \"checkbox\" requires at least one option');\r\n        }\r\n\r\n        // Checkboxes have to nest within a containing element, so they break the rules a bit and we end up re-assigning our 'input' element to this container instead\r\n        input = $('<div class=\"bootbox-checkbox-list\"></div>');\r\n\r\n        each(inputOptions, function (_, option) {\r\n          if (option.value === undefined || option.text === undefined) {\r\n            throw new Error('each option needs a \"value\" property and a \"text\" property');\r\n          }\r\n\r\n          let checkbox = $(templates.inputs[options.inputType]);\r\n\r\n          checkbox.find('input').attr('value', option.value);\r\n          checkbox.find('label').append('\\n' + option.text);\r\n\r\n          // We've ensured values is an array, so we can always iterate over it\r\n          each(checkboxValues, function (_, value) {\r\n            if (value === option.value) {\r\n              checkbox.find('input').prop('checked', true);\r\n            }\r\n          });\r\n\r\n          input.append(checkbox);\r\n        });\r\n        break;\r\n\r\n      case 'radio':\r\n        // Make sure that value is not an array (only a single radio can ever be checked)\r\n        if (options.value !== undefined && Array.isArray(options.value)) {\r\n          throw new Error('prompt with \"inputType\" set to \"radio\" requires a single, non-array value for \"value\"');\r\n        }\r\n\r\n        inputOptions = options.inputOptions || [];\r\n\r\n        if (!inputOptions.length) {\r\n          throw new Error('prompt with \"inputType\" set to \"radio\" requires at least one option');\r\n        }\r\n\r\n        // Radiobuttons have to nest within a containing element, so they break the rules a bit and we end up re-assigning our 'input' element to this container instead\r\n        input = $('<div class=\"bootbox-radiobutton-list\"></div>');\r\n\r\n        // Radiobuttons should always have an initial checked input checked in a \"group\".\r\n        // If value is undefined or doesn't match an input option, select the first radiobutton\r\n        let checkFirstRadio = true;\r\n\r\n        each(inputOptions, function (_, option) {\r\n          if (option.value === undefined || option.text === undefined) {\r\n            throw new Error('each option needs a \"value\" property and a \"text\" property');\r\n          }\r\n\r\n          let radio = $(templates.inputs[options.inputType]);\r\n\r\n          radio.find('input').attr('value', option.value);\r\n          radio.find('label').append('\\n' + option.text);\r\n\r\n          if (options.value !== undefined) {\r\n            if (option.value === options.value) {\r\n              radio.find('input').prop('checked', true);\r\n              checkFirstRadio = false;\r\n            }\r\n          }\r\n\r\n          input.append(radio);\r\n        });\r\n\r\n        if (checkFirstRadio) {\r\n          input.find('input[type=\"radio\"]').first().prop('checked', true);\r\n        }\r\n        break;\r\n    }\r\n\r\n    // Now place it in our form\r\n    form.append(input);\r\n\r\n    form.on('submit', function (e) {\r\n      e.preventDefault();\r\n      // Fix for SammyJS (or similar JS routing library) hijacking the form post.\r\n      e.stopPropagation();\r\n\r\n      // @TODO can we actually click *the* button object instead?\r\n      // e.g. buttons.confirm.click() or similar\r\n      promptDialog.find('.bootbox-accept').trigger('click');\r\n    });\r\n\r\n    if (options.message && options.message.trim() !== '') {\r\n      // Add the form to whatever content the user may have added.\r\n      let message = $(templates.promptMessage).html(options.message);\r\n      form.prepend(message);\r\n      options.message = form;\r\n    }\r\n    else {\r\n      options.message = form;\r\n    }\r\n\r\n    // Generate the dialog\r\n    promptDialog = exports.dialog(options);\r\n\r\n    // Clear the existing handler focusing the submit button...\r\n    promptDialog.off('shown.bs.modal', focusPrimaryButton);\r\n\r\n    // ...and replace it with one focusing our input, if possible\r\n    promptDialog.on('shown.bs.modal', function () {\r\n      // Need the closure here since input isn't an object otherwise\r\n      input.focus();\r\n    });\r\n\r\n    if (shouldShow === true) {\r\n      promptDialog.modal('show');\r\n    }\r\n\r\n    return promptDialog;\r\n  };\r\n\r\n\r\n  // INTERNAL FUNCTIONS\r\n  // *************************************************************************************************************\r\n\r\n  // Map a flexible set of arguments into a single returned object.\r\n  // If args.length is already one just return it, otherwise use the properties argument to map the unnamed args to object properties.\r\n  // So in the latter case:\r\n  //\r\n  //    mapArguments([\"foo\", $.noop], [\"message\", \"callback\"])\r\n  //  \r\n  //  results in\r\n  //\r\n  //    { message: \"foo\", callback: $.noop }\r\n  //\r\n  function mapArguments(args, properties) {\r\n    let argsLength = args.length;\r\n    let options = {};\r\n\r\n    if (argsLength < 1 || argsLength > 2) {\r\n      throw new Error('Invalid argument length');\r\n    }\r\n\r\n    if (argsLength === 2 || typeof args[0] === 'string') {\r\n      options[properties[0]] = args[0];\r\n      options[properties[1]] = args[1];\r\n    } else {\r\n      options = args[0];\r\n    }\r\n\r\n    return options;\r\n  }\r\n\r\n\r\n  // Merge a set of default dialog options with user supplied arguments\r\n  function mergeArguments(defaults, args, properties) {\r\n    return $.extend(\r\n      // Deep merge\r\n      true,\r\n      // Ensure the target is an empty, unreferenced object\r\n      {},\r\n      // The base options object for this type of dialog (often just buttons)\r\n      defaults,\r\n      // 'args' could be an object or array; if it's an array properties will map it to a proper options object\r\n      mapArguments(args, properties)\r\n    );\r\n  }\r\n\r\n\r\n  // This entry-level method makes heavy use of composition to take a simple range of inputs and return valid options suitable for passing to bootbox.dialog\r\n  function mergeDialogOptions(className, labels, properties, args) {\r\n    let locale;\r\n    if (args && args[0]) {\r\n      locale = args[0].locale || defaults.locale;\r\n      let swapButtons = args[0].swapButtonOrder || defaults.swapButtonOrder;\r\n\r\n      if (swapButtons) {\r\n        labels = labels.reverse();\r\n      }\r\n    }\r\n\r\n    // Build up a base set of dialog properties\r\n    let baseOptions = {\r\n      className: 'bootbox-' + className,\r\n      buttons: createLabels(labels, locale)\r\n    };\r\n\r\n    // Ensure the buttons properties generated, *after* merging with user args are still valid against the supplied labels\r\n    return validateButtons(\r\n      // Merge the generated base properties with user supplied arguments\r\n      mergeArguments(\r\n        baseOptions,\r\n        args,\r\n        // If args.length > 1, properties specify how each arg maps to an object key\r\n        properties\r\n      ),\r\n      labels\r\n    );\r\n  }\r\n\r\n\r\n  // Checks each button object to see if key is valid. \r\n  // This function will only be called by the alert, confirm, and prompt helpers. \r\n  function validateButtons(options, buttons) {\r\n    let allowedButtons = {};\r\n    each(buttons, function (key, value) {\r\n      allowedButtons[value] = true;\r\n    });\r\n\r\n    each(options.buttons, function (key) {\r\n      if (allowedButtons[key] === undefined) {\r\n        throw new Error('button key \"' + key + '\" is not allowed (options are ' + buttons.join(' ') + ')');\r\n      }\r\n    });\r\n\r\n    return options;\r\n  }\r\n\r\n\r\n  // From a given list of arguments, return a suitable object of button labels.\r\n  // All this does is normalise the given labels and translate them where possible.\r\n  // e.g. \"ok\", \"confirm\" -> { ok: \"OK\", cancel: \"Annuleren\" }\r\n  function createLabels(labels, locale) {\r\n    let buttons = {};\r\n\r\n    for (let i = 0, j = labels.length; i < j; i++) {\r\n      let argument = labels[i];\r\n      let key = argument.toLowerCase();\r\n      let value = argument.toUpperCase();\r\n\r\n      buttons[key] = {\r\n        label: getText(value, locale)\r\n      };\r\n    }\r\n\r\n    return buttons;\r\n  }\r\n\r\n\r\n  // Get localized text from a locale. Defaults to 'en' locale if no locale provided or a non-registered locale is requested\r\n  function getText(key, locale) {\r\n    let labels = locales[locale];\r\n\r\n    return labels ? labels[key] : locales.en[key];\r\n  }\r\n\r\n\r\n  // Filter and tidy up any user supplied parameters to this dialog.\r\n  // Also looks for any shorthands used and ensures that the options which are returned are all normalized properly\r\n  function sanitize(options) {\r\n    let buttons;\r\n    let total;\r\n\r\n    if (typeof options !== 'object') {\r\n      throw new Error('Please supply an object of options');\r\n    }\r\n\r\n    if (!options.message) {\r\n      throw new Error('\"message\" option must not be null or an empty string.');\r\n    }\r\n\r\n    // Make sure any supplied options take precedence over defaults\r\n    options = $.extend({}, defaults, options);\r\n\r\n    // Make sure backdrop is either true, false, or 'static'\r\n    if (!options.backdrop) {\r\n      options.backdrop = (options.backdrop === false || options.backdrop === 0) ? false : 'static';\r\n    } else {\r\n      options.backdrop = typeof options.backdrop === 'string' && options.backdrop.toLowerCase() === 'static' ? 'static' : true;\r\n    } \r\n\r\n    // No buttons is still a valid dialog but it's cleaner to always have a buttons object to iterate over, even if it's empty\r\n    if (!options.buttons) {\r\n      options.buttons = {};\r\n    }\r\n    \r\n    buttons = options.buttons;\r\n\r\n    total = getKeyLength(buttons);\r\n\r\n    each(buttons, function (key, button, index) {\r\n      if (typeof button === 'function') {\r\n        // Short form, assume value is our callback. Since button isn't an object it isn't a reference either so re-assign it\r\n        button = buttons[key] = {\r\n          callback: button\r\n        };\r\n      }\r\n\r\n      // Before any further checks, make sure button is the correct type\r\n      if (typeof button !== 'object') {\r\n        throw new Error('button with key \"' + key + '\" must be an object');\r\n      }\r\n\r\n      if (!button.label) {\r\n        // The lack of an explicit label means we'll assume the key is good enough\r\n        button.label = key;\r\n      }\r\n\r\n      if (!button.className) {\r\n        let isPrimary = false;\r\n        if (options.swapButtonOrder) {\r\n          isPrimary = index === 0;\r\n        }\r\n        else {\r\n          isPrimary = index === total - 1;\r\n        }\r\n\r\n        if (total <= 2 && isPrimary) {\r\n          // always add a primary to the main option in a one or two-button dialog\r\n          button.className = 'btn-primary';\r\n        } \r\n        else {\r\n          // adding both classes allows us to target both BS3 and BS4+ without needing to check the version\r\n          button.className = 'btn-secondary btn-default';\r\n        }\r\n      }\r\n    });\r\n\r\n    return options;\r\n  }\r\n\r\n\r\n  // Returns a count of the properties defined on the object\r\n  function getKeyLength(obj) {\r\n    return Object.keys(obj).length;\r\n  }\r\n\r\n\r\n  // Tiny wrapper function around jQuery.each; just adds index as the third parameter\r\n  function each(collection, iterator) {\r\n    let index = 0;\r\n    $.each(collection, function (key, value) {\r\n      iterator(key, value, index++);\r\n    });\r\n  }\r\n\r\n\r\n  function focusPrimaryButton(e) {\r\n    e.data.dialog.find('.bootbox-accept').first().trigger('focus');\r\n  }\r\n\r\n\r\n  function destroyModal(e) {\r\n    // Ensure we don't accidentally intercept hidden events triggered by children of the current dialog. \r\n    // We shouldn't need to handle this anymore, now that Bootstrap namespaces its events, but still worth doing.\r\n    if (e.target === e.data.dialog[0]) {\r\n      e.data.dialog.remove();\r\n    }\r\n  }\r\n\r\n\r\n  function unbindModal(e) {\r\n    if (e.target === e.data.dialog[0]) {\r\n      e.data.dialog.off('escape.close.bb');\r\n      e.data.dialog.off('click');\r\n    }\r\n  }\r\n\r\n\r\n  //  Handle the invoked dialog callback\r\n  function processCallback(e, dialog, callback) {\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n\r\n    // By default we assume a callback will get rid of the dialog, although it is given the opportunity to override this\r\n\r\n    // If the callback can be invoked and it *explicitly returns false*, then we'll set a flag to keep the dialog active...\r\n    let preserveDialog = typeof callback === 'function' && callback.call(dialog, e) === false;\r\n\r\n    // ... otherwise we'll bin it\r\n    if (!preserveDialog) {\r\n      dialog.modal('hide');\r\n    }\r\n  }\r\n\r\n  // Validate `min` and `max` values based on the current `inputType` value\r\n  function minAndMaxAreValid(type, min, max) {\r\n    let result = false;\r\n    let minValid = true;\r\n    let maxValid = true;\r\n\r\n    if (type === 'date') {\r\n      if (min !== undefined && !(minValid = dateIsValid(min))) {\r\n        console.warn('Browsers which natively support the \"date\" input type expect date values to be of the form \"YYYY-MM-DD\" (see ISO-8601 https://www.iso.org/iso-8601-date-and-time-format.html). Bootbox does not enforce this rule, but your min value may not be enforced by this browser.');\r\n      }\r\n      else if (max !== undefined && !(maxValid = dateIsValid(max))) {\r\n        console.warn('Browsers which natively support the \"date\" input type expect date values to be of the form \"YYYY-MM-DD\" (see ISO-8601 https://www.iso.org/iso-8601-date-and-time-format.html). Bootbox does not enforce this rule, but your max value may not be enforced by this browser.');\r\n      }\r\n    }\r\n    else if (type === 'time') {\r\n      if (min !== undefined && !(minValid = timeIsValid(min))) {\r\n        throw new Error('\"min\" is not a valid time. See https://www.w3.org/TR/2012/WD-html-markup-20120315/datatypes.html#form.data.time for more information.');\r\n      }\r\n      else if (max !== undefined && !(maxValid = timeIsValid(max))) {\r\n        throw new Error('\"max\" is not a valid time. See https://www.w3.org/TR/2012/WD-html-markup-20120315/datatypes.html#form.data.time for more information.');\r\n      }\r\n    }\r\n    else {\r\n      if (min !== undefined && isNaN(min)) {\r\n        minValid = false;\r\n        throw new Error('\"min\" must be a valid number. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-min for more information.');\r\n      }\r\n\r\n      if (max !== undefined && isNaN(max)) {\r\n        maxValid = false;\r\n        throw new Error('\"max\" must be a valid number. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-max for more information.');\r\n      }\r\n    }\r\n\r\n    if (minValid && maxValid) {\r\n      if (max < min) {\r\n        throw new Error('\"max\" must be greater than or equal to \"min\". See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-max for more information.');\r\n      }\r\n      else {\r\n        result = true;\r\n      }\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  function timeIsValid(value) {\r\n    return /([01][0-9]|2[0-3]):[0-5][0-9]?:[0-5][0-9]/.test(value);\r\n  }\r\n\r\n  function dateIsValid(value) {\r\n    return /(\\d{4})-(\\d{2})-(\\d{2})/.test(value);\r\n  }\r\n\r\n  //  The Bootbox object\r\n  return exports;\r\n}));\r\n", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 3099:\n/***/ (function(module) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ 6077:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ 1223:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\nvar create = __webpack_require__(30);\nvar definePropertyModule = __webpack_require__(3070);\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ 1530:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(8710).charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ 5787:\n/***/ (function(module) {\n\nmodule.exports = function (it, Constructor, name) {\n  if (!(it instanceof Constructor)) {\n    throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ 9670:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ 4019:\n/***/ (function(module) {\n\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(4019);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar global = __webpack_require__(7854);\nvar isObject = __webpack_require__(111);\nvar has = __webpack_require__(6656);\nvar classof = __webpack_require__(648);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefine = __webpack_require__(1320);\nvar defineProperty = __webpack_require__(3070).f;\nvar getPrototypeOf = __webpack_require__(9518);\nvar setPrototypeOf = __webpack_require__(7674);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar uid = __webpack_require__(9711);\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || has(TypedArrayConstructorsList, klass)\n    || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return has(TypedArrayConstructorsList, klass)\n    || has(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (setPrototypeOf) {\n    if (isPrototypeOf.call(TypedArray, C)) return C;\n  } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n      return C;\n    }\n  } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n      delete TypedArrayConstructor.prototype[KEY];\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    redefine(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n        delete TypedArrayConstructor[KEY];\n      }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      redefine(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQIRED = true;\n  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n    return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n  } });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n/***/ }),\n\n/***/ 3331:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7854);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(4019);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefineAll = __webpack_require__(2248);\nvar fails = __webpack_require__(7293);\nvar anInstance = __webpack_require__(5787);\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\nvar toIndex = __webpack_require__(7067);\nvar IEEE754 = __webpack_require__(1179);\nvar getPrototypeOf = __webpack_require__(9518);\nvar setPrototypeOf = __webpack_require__(7674);\nvar getOwnPropertyNames = __webpack_require__(8006).f;\nvar defineProperty = __webpack_require__(3070).f;\nvar arrayFill = __webpack_require__(1285);\nvar setToStringTag = __webpack_require__(8003);\nvar InternalStateModule = __webpack_require__(9909);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n  defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = bytes.slice(start, start + count);\n  return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = conversion(+value);\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      bytes: arrayFill.call(new Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) this.byteLength = byteLength;\n  };\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, $DataView, DATA_VIEW);\n    anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n    var bufferLength = getInternalState(buffer).byteLength;\n    var offset = toInteger(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength');\n    addGetter($DataView, 'buffer');\n    addGetter($DataView, 'byteLength');\n    addGetter($DataView, 'byteOffset');\n  }\n\n  redefineAll($DataView[PROTOTYPE], {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n    }\n  });\n} else {\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return NativeArrayBuffer.name != ARRAY_BUFFER;\n  })) {\n  /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, $ArrayBuffer);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n    var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf($DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var nativeSetInt8 = $DataViewPrototype.setInt8;\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n\n\n/***/ }),\n\n/***/ 1048:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(7908);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toLength = __webpack_require__(7466);\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n  var O = toObject(this);\n  var len = toLength(O.length);\n  var to = toAbsoluteIndex(target, len);\n  var from = toAbsoluteIndex(start, len);\n  var end = arguments.length > 2 ? arguments[2] : undefined;\n  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n  var inc = 1;\n  if (from < to && to < from + count) {\n    inc = -1;\n    from += count - 1;\n    to += count - 1;\n  }\n  while (count-- > 0) {\n    if (from in O) O[to] = O[from];\n    else delete O[to];\n    to += inc;\n    from += inc;\n  } return O;\n};\n\n\n/***/ }),\n\n/***/ 1285:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(7908);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toLength = __webpack_require__(7466);\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = toLength(O.length);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ 8533:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $forEach = __webpack_require__(2092).forEach;\nvar arrayMethodIsStrict = __webpack_require__(9341);\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n\n\n/***/ }),\n\n/***/ 8457:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(9974);\nvar toObject = __webpack_require__(7908);\nvar callWithSafeIterationClosing = __webpack_require__(3411);\nvar isArrayIteratorMethod = __webpack_require__(7659);\nvar toLength = __webpack_require__(7466);\nvar createProperty = __webpack_require__(6135);\nvar getIteratorMethod = __webpack_require__(1246);\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var C = typeof this == 'function' ? this : Array;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    result = new C();\n    for (;!(step = next.call(iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = toLength(O.length);\n    result = new C(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 1318:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(5656);\nvar toLength = __webpack_require__(7466);\nvar toAbsoluteIndex = __webpack_require__(1400);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 2092:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar bind = __webpack_require__(9974);\nvar IndexedObject = __webpack_require__(8361);\nvar toObject = __webpack_require__(7908);\nvar toLength = __webpack_require__(7466);\nvar arraySpeciesCreate = __webpack_require__(5417);\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_OUT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push.call(target, value); // filterOut\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterOut` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterOut: createMethod(7)\n};\n\n\n/***/ }),\n\n/***/ 6583:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(5656);\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\nvar arrayMethodIsStrict = __webpack_require__(9341);\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n  // convert -0 to +0\n  if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n  var O = toIndexedObject(this);\n  var length = toLength(O.length);\n  var index = length - 1;\n  if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n  if (index < 0) index = length + index;\n  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n  return -1;\n} : nativeLastIndexOf;\n\n\n/***/ }),\n\n/***/ 1194:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar V8_VERSION = __webpack_require__(7392);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n\n\n/***/ }),\n\n/***/ 9341:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(7293);\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n\n\n/***/ }),\n\n/***/ 3671:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(3099);\nvar toObject = __webpack_require__(7908);\nvar IndexedObject = __webpack_require__(8361);\nvar toLength = __webpack_require__(7466);\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aFunction(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = toLength(O.length);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 5417:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\nvar isArray = __webpack_require__(3157);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n\n/***/ 3411:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar iteratorClose = __webpack_require__(9212);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (error) {\n    iteratorClose(iterator);\n    throw error;\n  }\n};\n\n\n/***/ }),\n\n/***/ 7072:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ 4326:\n/***/ (function(module) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ 648:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(1694);\nvar classofRaw = __webpack_require__(4326);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ 9920:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar has = __webpack_require__(6656);\nvar ownKeys = __webpack_require__(3887);\nvar getOwnPropertyDescriptorModule = __webpack_require__(1236);\nvar definePropertyModule = __webpack_require__(3070);\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n\n\n/***/ }),\n\n/***/ 8544:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ 4994:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(3383).IteratorPrototype;\nvar create = __webpack_require__(30);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar setToStringTag = __webpack_require__(8003);\nvar Iterators = __webpack_require__(7497);\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ 8880:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar definePropertyModule = __webpack_require__(3070);\nvar createPropertyDescriptor = __webpack_require__(9114);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ 9114:\n/***/ (function(module) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ 6135:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(7593);\nvar definePropertyModule = __webpack_require__(3070);\nvar createPropertyDescriptor = __webpack_require__(9114);\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ 654:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar createIteratorConstructor = __webpack_require__(4994);\nvar getPrototypeOf = __webpack_require__(9518);\nvar setPrototypeOf = __webpack_require__(7674);\nvar setToStringTag = __webpack_require__(8003);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefine = __webpack_require__(1320);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar IS_PURE = __webpack_require__(1913);\nvar Iterators = __webpack_require__(7497);\nvar IteratorsCore = __webpack_require__(3383);\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n\n\n/***/ }),\n\n/***/ 9781:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n\n/***/ 317:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar isObject = __webpack_require__(111);\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ 8324:\n/***/ (function(module) {\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n\n\n/***/ }),\n\n/***/ 8113:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(5005);\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n\n/***/ 7392:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar userAgent = __webpack_require__(8113);\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nmodule.exports = version && +version;\n\n\n/***/ }),\n\n/***/ 748:\n/***/ (function(module) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\n\n/***/ }),\n\n/***/ 2109:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar getOwnPropertyDescriptor = __webpack_require__(1236).f;\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefine = __webpack_require__(1320);\nvar setGlobal = __webpack_require__(3505);\nvar copyConstructorProperties = __webpack_require__(9920);\nvar isForced = __webpack_require__(4705);\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n\n\n/***/ }),\n\n/***/ 7293:\n/***/ (function(module) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ 7007:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(4916);\nvar redefine = __webpack_require__(1320);\nvar fails = __webpack_require__(7293);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar regexpExec = __webpack_require__(2261);\nvar createNonEnumerableProperty = __webpack_require__(8880);\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !(\n      REPLACE_SUPPORTS_NAMED_GROUPS &&\n      REPLACE_KEEPS_$0 &&\n      !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    )) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      if (regexp.exec === regexpExec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    }, {\n      REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n      REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    });\n    var stringMethod = methods[0];\n    var regexMethod = methods[1];\n\n    redefine(String.prototype, KEY, stringMethod);\n    redefine(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return regexMethod.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return regexMethod.call(string, this); }\n    );\n  }\n\n  if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n\n\n/***/ }),\n\n/***/ 9974:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(3099);\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ 5005:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar path = __webpack_require__(857);\nvar global = __webpack_require__(7854);\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ 1246:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(648);\nvar Iterators = __webpack_require__(7497);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ 8554:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar getIteratorMethod = __webpack_require__(1246);\n\nmodule.exports = function (it) {\n  var iteratorMethod = getIteratorMethod(it);\n  if (typeof iteratorMethod != 'function') {\n    throw TypeError(String(it) + ' is not iterable');\n  } return anObject(iteratorMethod.call(it));\n};\n\n\n/***/ }),\n\n/***/ 647:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toObject = __webpack_require__(7908);\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace.call(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (ch.charAt(0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return str.slice(0, position);\n      case \"'\": return str.slice(tailPos);\n      case '<':\n        capture = namedCaptures[ch.slice(1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n\n\n/***/ }),\n\n/***/ 7854:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  /* global globalThis -- safe */\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n\n\n/***/ }),\n\n/***/ 6656:\n/***/ (function(module) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ 3501:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 490:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(5005);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ 4664:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar fails = __webpack_require__(7293);\nvar createElement = __webpack_require__(317);\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ 1179:\n/***/ (function(module) {\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = new Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number != number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number != number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    if (number * (c = pow(2, -exponent)) < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent = exponent + eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n  buffer[--index] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa = mantissa + pow(2, mantissaLength);\n    exponent = exponent - eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n\n\n/***/ }),\n\n/***/ 8361:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar classof = __webpack_require__(4326);\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ 9587:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\nvar setPrototypeOf = __webpack_require__(7674);\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    typeof (NewTarget = dummy.constructor) == 'function' &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n\n\n/***/ }),\n\n/***/ 2788:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar store = __webpack_require__(5465);\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ 9909:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(8536);\nvar global = __webpack_require__(7854);\nvar isObject = __webpack_require__(111);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar objectHas = __webpack_require__(6656);\nvar shared = __webpack_require__(5465);\nvar sharedKey = __webpack_require__(6200);\nvar hiddenKeys = __webpack_require__(3501);\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    metadata.facade = it;\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ 7659:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\nvar Iterators = __webpack_require__(7497);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ 3157:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(4326);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n  return classof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ 4705:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ 111:\n/***/ (function(module) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ 1913:\n/***/ (function(module) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 7850:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\nvar classof = __webpack_require__(4326);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ 9212:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\n\nmodule.exports = function (iterator) {\n  var returnMethod = iterator['return'];\n  if (returnMethod !== undefined) {\n    return anObject(returnMethod.call(iterator)).value;\n  }\n};\n\n\n/***/ }),\n\n/***/ 3383:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(7293);\nvar getPrototypeOf = __webpack_require__(9518);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar has = __webpack_require__(6656);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar IS_PURE = __webpack_require__(1913);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ 7497:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 133:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  /* global Symbol -- required for testing */\n  return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ 590:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar IS_PURE = __webpack_require__(1913);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n  var url = new URL('b?a=1&b=2&c=3', 'http://a');\n  var searchParams = url.searchParams;\n  var result = '';\n  url.pathname = 'c%20d';\n  searchParams.forEach(function (value, key) {\n    searchParams['delete']('b');\n    result += key + value;\n  });\n  return (IS_PURE && !url.toJSON)\n    || !searchParams.sort\n    || url.href !== 'http://a/c%20d?a=1&c=3'\n    || searchParams.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !searchParams[ITERATOR]\n    // throws in Edge\n    || new URL('https://a@b').username !== 'a'\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n    // not punycoded in Edge\n    || new URL('http://\u0442\u0435\u0441\u0442').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('http://a#\u0431').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('http://x', undefined).host !== 'x';\n});\n\n\n/***/ }),\n\n/***/ 8536:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar inspectSource = __webpack_require__(2788);\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n\n/***/ 1574:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar fails = __webpack_require__(7293);\nvar objectKeys = __webpack_require__(1956);\nvar getOwnPropertySymbolsModule = __webpack_require__(5181);\nvar propertyIsEnumerableModule = __webpack_require__(5296);\nvar toObject = __webpack_require__(7908);\nvar IndexedObject = __webpack_require__(8361);\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  /* global Symbol -- required for testing */\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : nativeAssign;\n\n\n/***/ }),\n\n/***/ 30:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar defineProperties = __webpack_require__(6048);\nvar enumBugKeys = __webpack_require__(748);\nvar hiddenKeys = __webpack_require__(3501);\nvar html = __webpack_require__(490);\nvar documentCreateElement = __webpack_require__(317);\nvar sharedKey = __webpack_require__(6200);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    /* global ActiveXObject -- old IE */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ 6048:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar definePropertyModule = __webpack_require__(3070);\nvar anObject = __webpack_require__(9670);\nvar objectKeys = __webpack_require__(1956);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n\n\n/***/ }),\n\n/***/ 3070:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar IE8_DOM_DEFINE = __webpack_require__(4664);\nvar anObject = __webpack_require__(9670);\nvar toPrimitive = __webpack_require__(7593);\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return nativeDefineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ 1236:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar propertyIsEnumerableModule = __webpack_require__(5296);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar toIndexedObject = __webpack_require__(5656);\nvar toPrimitive = __webpack_require__(7593);\nvar has = __webpack_require__(6656);\nvar IE8_DOM_DEFINE = __webpack_require__(4664);\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return nativeGetOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ 8006:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(6324);\nvar enumBugKeys = __webpack_require__(748);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 5181:\n/***/ (function(__unused_webpack_module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 9518:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar has = __webpack_require__(6656);\nvar toObject = __webpack_require__(7908);\nvar sharedKey = __webpack_require__(6200);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(8544);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ 6324:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar has = __webpack_require__(6656);\nvar toIndexedObject = __webpack_require__(5656);\nvar indexOf = __webpack_require__(1318).indexOf;\nvar hiddenKeys = __webpack_require__(3501);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 1956:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(6324);\nvar enumBugKeys = __webpack_require__(748);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 5296:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ 7674:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable no-proto -- safe */\nvar anObject = __webpack_require__(9670);\nvar aPossiblePrototype = __webpack_require__(6077);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ 288:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(1694);\nvar classof = __webpack_require__(648);\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n\n/***/ 3887:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(5005);\nvar getOwnPropertyNamesModule = __webpack_require__(8006);\nvar getOwnPropertySymbolsModule = __webpack_require__(5181);\nvar anObject = __webpack_require__(9670);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ 857:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\n\nmodule.exports = global;\n\n\n/***/ }),\n\n/***/ 2248:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar redefine = __webpack_require__(1320);\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) redefine(target, key, src[key], options);\n  return target;\n};\n\n\n/***/ }),\n\n/***/ 1320:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar has = __webpack_require__(6656);\nvar setGlobal = __webpack_require__(3505);\nvar inspectSource = __webpack_require__(2788);\nvar InternalStateModule = __webpack_require__(9909);\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  var state;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) {\n      createNonEnumerableProperty(value, 'name', key);\n    }\n    state = enforceInternalState(value);\n    if (!state.source) {\n      state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n    }\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n\n/***/ }),\n\n/***/ 7651:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(4326);\nvar regexpExec = __webpack_require__(2261);\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n\n  if (classof(R) !== 'RegExp') {\n    throw TypeError('RegExp#exec called on incompatible receiver');\n  }\n\n  return regexpExec.call(R, S);\n};\n\n\n\n/***/ }),\n\n/***/ 2261:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpFlags = __webpack_require__(7066);\nvar stickyHelpers = __webpack_require__(2999);\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = regexpFlags.call(re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = flags.replace('y', '');\n      if (flags.indexOf('g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = String(str).slice(re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = match.input.slice(charsAdded);\n        match[0] = match[0].slice(charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ 7066:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar anObject = __webpack_require__(9670);\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 2999:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar fails = __webpack_require__(7293);\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n  return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n  // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n  var re = RE('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = RE('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n\n\n/***/ }),\n\n/***/ 4488:\n/***/ (function(module) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ 3505:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar createNonEnumerableProperty = __webpack_require__(8880);\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n\n\n/***/ }),\n\n/***/ 6340:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(5005);\nvar definePropertyModule = __webpack_require__(3070);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar DESCRIPTORS = __webpack_require__(9781);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n\n\n/***/ }),\n\n/***/ 8003:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(3070).f;\nvar has = __webpack_require__(6656);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n\n\n/***/ }),\n\n/***/ 6200:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar shared = __webpack_require__(2309);\nvar uid = __webpack_require__(9711);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 5465:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar setGlobal = __webpack_require__(3505);\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n\n/***/ 2309:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(1913);\nvar store = __webpack_require__(5465);\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.9.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '\u00A9 2021 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ 6707:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar aFunction = __webpack_require__(3099);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n\n\n/***/ }),\n\n/***/ 8710:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\nvar requireObjectCoercible = __webpack_require__(4488);\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 3197:\n/***/ (function(module) {\n\n\"use strict\";\n\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n  while (counter < length) {\n    var value = string.charCodeAt(counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      // It's a high surrogate, and there is a next character.\n      var extra = string.charCodeAt(counter++);\n      if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n        output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        // It's an unmatched surrogate; only append this code unit, in case the\n        // next code unit is the high surrogate of a surrogate pair.\n        output.push(value);\n        counter--;\n      }\n    } else {\n      output.push(value);\n    }\n  }\n  return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n  //  0..25 map to ASCII a..z or A..Z\n  // 26..35 map to ASCII 0..9\n  return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n  var k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n    delta = floor(delta / baseMinusTMin);\n  }\n  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n  var output = [];\n\n  // Convert the input in UCS-2 to an array of Unicode code points.\n  input = ucs2decode(input);\n\n  // Cache the length.\n  var inputLength = input.length;\n\n  // Initialize the state.\n  var n = initialN;\n  var delta = 0;\n  var bias = initialBias;\n  var i, currentValue;\n\n  // Handle the basic code points.\n  for (i = 0; i < input.length; i++) {\n    currentValue = input[i];\n    if (currentValue < 0x80) {\n      output.push(stringFromCharCode(currentValue));\n    }\n  }\n\n  var basicLength = output.length; // number of basic code points.\n  var handledCPCount = basicLength; // number of code points that have been handled;\n\n  // Finish the basic string with a delimiter unless it's empty.\n  if (basicLength) {\n    output.push(delimiter);\n  }\n\n  // Main encoding loop:\n  while (handledCPCount < inputLength) {\n    // All non-basic code points < n have been handled already. Find the next larger one:\n    var m = maxInt;\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue >= n && currentValue < m) {\n        m = currentValue;\n      }\n    }\n\n    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n    var handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      throw RangeError(OVERFLOW_ERROR);\n    }\n\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue < n && ++delta > maxInt) {\n        throw RangeError(OVERFLOW_ERROR);\n      }\n      if (currentValue == n) {\n        // Represent delta as a generalized variable-length integer.\n        var q = delta;\n        for (var k = base; /* no condition */; k += base) {\n          var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n          if (q < t) break;\n          var qMinusT = q - t;\n          var baseMinusT = base - t;\n          output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n          q = floor(qMinusT / baseMinusT);\n        }\n\n        output.push(stringFromCharCode(digitToBasic(q)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n        delta = 0;\n        ++handledCPCount;\n      }\n    }\n\n    ++delta;\n    ++n;\n  }\n  return output.join('');\n};\n\nmodule.exports = function (input) {\n  var encoded = [];\n  var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n  var i, label;\n  for (i = 0; i < labels.length; i++) {\n    label = labels[i];\n    encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n  }\n  return encoded.join('.');\n};\n\n\n/***/ }),\n\n/***/ 6091:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar whitespaces = __webpack_require__(1361);\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n  });\n};\n\n\n/***/ }),\n\n/***/ 3111:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(4488);\nvar whitespaces = __webpack_require__(1361);\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = String(requireObjectCoercible($this));\n    if (TYPE & 1) string = string.replace(ltrim, '');\n    if (TYPE & 2) string = string.replace(rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n\n\n/***/ }),\n\n/***/ 1400:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ 7067:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toInteger(it);\n  var length = toLength(number);\n  if (number !== length) throw RangeError('Wrong length or index');\n  return length;\n};\n\n\n/***/ }),\n\n/***/ 5656:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(8361);\nvar requireObjectCoercible = __webpack_require__(4488);\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ 9958:\n/***/ (function(module) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ 7466:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 7908:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(4488);\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ 4590:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toPositiveInteger = __webpack_require__(3002);\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw RangeError('Wrong offset');\n  return offset;\n};\n\n\n/***/ }),\n\n/***/ 3002:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\n\nmodule.exports = function (it) {\n  var result = toInteger(it);\n  if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 7593:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ 1694:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ 9843:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar global = __webpack_require__(7854);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(3832);\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar ArrayBufferModule = __webpack_require__(3331);\nvar anInstance = __webpack_require__(5787);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar toLength = __webpack_require__(7466);\nvar toIndex = __webpack_require__(7067);\nvar toOffset = __webpack_require__(4590);\nvar toPrimitive = __webpack_require__(7593);\nvar has = __webpack_require__(6656);\nvar classof = __webpack_require__(648);\nvar isObject = __webpack_require__(111);\nvar create = __webpack_require__(30);\nvar setPrototypeOf = __webpack_require__(7674);\nvar getOwnPropertyNames = __webpack_require__(8006).f;\nvar typedArrayFrom = __webpack_require__(7321);\nvar forEach = __webpack_require__(2092).forEach;\nvar setSpecies = __webpack_require__(6340);\nvar definePropertyModule = __webpack_require__(3070);\nvar getOwnPropertyDescriptorModule = __webpack_require__(1236);\nvar InternalStateModule = __webpack_require__(9909);\nvar inheritIfRequired = __webpack_require__(9587);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n  var index = 0;\n  var length = list.length;\n  var result = new (aTypedArrayConstructor(C))(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\nvar addGetter = function (it, key) {\n  nativeDefineProperty(it, key, { get: function () {\n    return getInternalState(this)[key];\n  } });\n};\n\nvar isArrayBuffer = function (it) {\n  var klass;\n  return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n  return isTypedArray(target)\n    && typeof key != 'symbol'\n    && key in target\n    && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n  return isTypedArrayIndex(target, key = toPrimitive(key, true))\n    ? createPropertyDescriptor(2, target[key])\n    : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n  if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n    && isObject(descriptor)\n    && has(descriptor, 'value')\n    && !has(descriptor, 'get')\n    && !has(descriptor, 'set')\n    // TODO: add validation descriptor w/o calling accessors\n    && !descriptor.configurable\n    && (!has(descriptor, 'writable') || descriptor.writable)\n    && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n  ) {\n    target[key] = descriptor.value;\n    return target;\n  } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n  if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n    definePropertyModule.f = wrappedDefineProperty;\n    addGetter(TypedArrayPrototype, 'buffer');\n    addGetter(TypedArrayPrototype, 'byteOffset');\n    addGetter(TypedArrayPrototype, 'byteLength');\n    addGetter(TypedArrayPrototype, 'length');\n  }\n\n  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n    defineProperty: wrappedDefineProperty\n  });\n\n  module.exports = function (TYPE, wrapper, CLAMPED) {\n    var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + TYPE;\n    var SETTER = 'set' + TYPE;\n    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n    var TypedArrayConstructor = NativeTypedArrayConstructor;\n    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n    var exported = {};\n\n    var getter = function (that, index) {\n      var data = getInternalState(that);\n      return data.view[GETTER](index * BYTES + data.byteOffset, true);\n    };\n\n    var setter = function (that, index, value) {\n      var data = getInternalState(that);\n      if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n      data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n    };\n\n    var addElement = function (that, index) {\n      nativeDefineProperty(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n\n    if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n        anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n        var index = 0;\n        var byteOffset = 0;\n        var buffer, byteLength, length;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new ArrayBuffer(byteLength);\n        } else if (isArrayBuffer(data)) {\n          buffer = data;\n          byteOffset = toOffset(offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n            byteLength = $len - byteOffset;\n            if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (isTypedArray(data)) {\n          return fromList(TypedArrayConstructor, data);\n        } else {\n          return typedArrayFrom.call(TypedArrayConstructor, data);\n        }\n        setInternalState(that, {\n          buffer: buffer,\n          byteOffset: byteOffset,\n          byteLength: byteLength,\n          length: length,\n          view: new DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n        anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n        return inheritIfRequired(function () {\n          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n          if (isArrayBuffer(data)) return $length !== undefined\n            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n            : typedArrayOffset !== undefined\n              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n              : new NativeTypedArrayConstructor(data);\n          if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n          return typedArrayFrom.call(TypedArrayConstructor, data);\n        }(), dummy, TypedArrayConstructor);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n        if (!(key in TypedArrayConstructor)) {\n          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n        }\n      });\n      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n    }\n\n    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n    }\n\n    if (TYPED_ARRAY_TAG) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n    }\n\n    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n    $({\n      global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n    }, exported);\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    setSpecies(CONSTRUCTOR_NAME);\n  };\n} else module.exports = function () { /* empty */ };\n\n\n/***/ }),\n\n/***/ 3832:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable no-new -- required for testing */\nvar global = __webpack_require__(7854);\nvar fails = __webpack_require__(7293);\nvar checkCorrectnessOfIteration = __webpack_require__(7072);\nvar NATIVE_ARRAY_BUFFER_VIEWS = __webpack_require__(260).NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n  Int8Array(1);\n}) || !fails(function () {\n  new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n  new Int8Array();\n  new Int8Array(null);\n  new Int8Array(1.5);\n  new Int8Array(iterable);\n}, true) || fails(function () {\n  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n\n\n/***/ }),\n\n/***/ 3074:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar aTypedArrayConstructor = __webpack_require__(260).aTypedArrayConstructor;\nvar speciesConstructor = __webpack_require__(6707);\n\nmodule.exports = function (instance, list) {\n  var C = speciesConstructor(instance, instance.constructor);\n  var index = 0;\n  var length = list.length;\n  var result = new (aTypedArrayConstructor(C))(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 7321:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toObject = __webpack_require__(7908);\nvar toLength = __webpack_require__(7466);\nvar getIteratorMethod = __webpack_require__(1246);\nvar isArrayIteratorMethod = __webpack_require__(7659);\nvar bind = __webpack_require__(9974);\nvar aTypedArrayConstructor = __webpack_require__(260).aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n  var O = toObject(source);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var i, length, result, step, iterator, next;\n  if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    O = [];\n    while (!(step = next.call(iterator)).done) {\n      O.push(step.value);\n    }\n  }\n  if (mapping && argumentsLength > 2) {\n    mapfn = bind(mapfn, arguments[2], 2);\n  }\n  length = toLength(O.length);\n  result = new (aTypedArrayConstructor(this))(length);\n  for (i = 0; length > i; i++) {\n    result[i] = mapping ? mapfn(O[i], i) : O[i];\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 9711:\n/***/ (function(module) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n\n/***/ }),\n\n/***/ 3307:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar NATIVE_SYMBOL = __webpack_require__(133);\n\nmodule.exports = NATIVE_SYMBOL\n  /* global Symbol -- safe */\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ 5112:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar shared = __webpack_require__(2309);\nvar has = __webpack_require__(6656);\nvar uid = __webpack_require__(9711);\nvar NATIVE_SYMBOL = __webpack_require__(133);\nvar USE_SYMBOL_AS_UID = __webpack_require__(3307);\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name)) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n    else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ 1361:\n/***/ (function(module) {\n\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ }),\n\n/***/ 8264:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar global = __webpack_require__(7854);\nvar arrayBufferModule = __webpack_require__(3331);\nvar setSpecies = __webpack_require__(6340);\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n\n\n/***/ }),\n\n/***/ 2222:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar fails = __webpack_require__(7293);\nvar isArray = __webpack_require__(3157);\nvar isObject = __webpack_require__(111);\nvar toObject = __webpack_require__(7908);\nvar toLength = __webpack_require__(7466);\nvar createProperty = __webpack_require__(6135);\nvar arraySpeciesCreate = __webpack_require__(5417);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar V8_VERSION = __webpack_require__(7392);\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = toLength(E.length);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n\n\n/***/ }),\n\n/***/ 7327:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $filter = __webpack_require__(2092).filter;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ 2772:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $indexOf = __webpack_require__(1318).indexOf;\nvar arrayMethodIsStrict = __webpack_require__(9341);\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ 6992:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(5656);\nvar addToUnscopables = __webpack_require__(1223);\nvar Iterators = __webpack_require__(7497);\nvar InternalStateModule = __webpack_require__(9909);\nvar defineIterator = __webpack_require__(654);\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ 1249:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $map = __webpack_require__(2092).map;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ 7042:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar isObject = __webpack_require__(111);\nvar isArray = __webpack_require__(3157);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toLength = __webpack_require__(7466);\nvar toIndexedObject = __webpack_require__(5656);\nvar createProperty = __webpack_require__(6135);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = toLength(O.length);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return nativeSlice.call(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n\n\n/***/ }),\n\n/***/ 561:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\nvar toObject = __webpack_require__(7908);\nvar arraySpeciesCreate = __webpack_require__(5417);\nvar createProperty = __webpack_require__(6135);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = toLength(O.length);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n\n\n/***/ }),\n\n/***/ 8309:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar defineProperty = __webpack_require__(3070).f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return FunctionPrototypeToString.call(this).match(nameRE)[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n\n\n/***/ }),\n\n/***/ 489:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(2109);\nvar fails = __webpack_require__(7293);\nvar toObject = __webpack_require__(7908);\nvar nativeGetPrototypeOf = __webpack_require__(9518);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(8544);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n\n\n/***/ }),\n\n/***/ 1539:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(1694);\nvar redefine = __webpack_require__(1320);\nvar toString = __webpack_require__(288);\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 4916:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar exec = __webpack_require__(2261);\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n\n\n/***/ }),\n\n/***/ 9714:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar redefine = __webpack_require__(1320);\nvar anObject = __webpack_require__(9670);\nvar fails = __webpack_require__(7293);\nvar flags = __webpack_require__(7066);\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var p = String(R.source);\n    var rf = R.flags;\n    var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 8783:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(8710).charAt;\nvar InternalStateModule = __webpack_require__(9909);\nvar defineIterator = __webpack_require__(654);\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ 4723:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);\nvar anObject = __webpack_require__(9670);\nvar toLength = __webpack_require__(7466);\nvar requireObjectCoercible = __webpack_require__(4488);\nvar advanceStringIndex = __webpack_require__(1530);\nvar regExpExec = __webpack_require__(7651);\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : regexp[MATCH];\n      return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative(nativeMatch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n\n\n/***/ }),\n\n/***/ 5306:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);\nvar anObject = __webpack_require__(9670);\nvar toLength = __webpack_require__(7466);\nvar toInteger = __webpack_require__(9958);\nvar requireObjectCoercible = __webpack_require__(4488);\nvar advanceStringIndex = __webpack_require__(1530);\nvar getSubstitution = __webpack_require__(647);\nvar regExpExec = __webpack_require__(7651);\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n  var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n  var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return replacer !== undefined\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      if (\n        (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n        (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n      ) {\n        var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n});\n\n\n/***/ }),\n\n/***/ 3123:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);\nvar isRegExp = __webpack_require__(7850);\nvar anObject = __webpack_require__(9670);\nvar requireObjectCoercible = __webpack_require__(4488);\nvar speciesConstructor = __webpack_require__(6707);\nvar advanceStringIndex = __webpack_require__(1530);\nvar toLength = __webpack_require__(7466);\nvar callRegExpExec = __webpack_require__(7651);\nvar regexpExec = __webpack_require__(2261);\nvar fails = __webpack_require__(7293);\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    // eslint-disable-next-line regexp/no-empty-group -- required for testing\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return nativeSplit.call(string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output.length > lim ? output.slice(0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n}, !SUPPORTS_Y);\n\n\n/***/ }),\n\n/***/ 3210:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $trim = __webpack_require__(3111).trim;\nvar forcedStringTrimMethod = __webpack_require__(6091);\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n\n\n/***/ }),\n\n/***/ 2990:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $copyWithin = __webpack_require__(1048);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n  return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 8927:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $every = __webpack_require__(2092).every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3105:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $fill = __webpack_require__(1285);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n  return $fill.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 5035:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $filter = __webpack_require__(2092).filter;\nvar fromSpeciesAndList = __webpack_require__(3074);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  return fromSpeciesAndList(this, list);\n});\n\n\n/***/ }),\n\n/***/ 7174:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $findIndex = __webpack_require__(2092).findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4345:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $find = __webpack_require__(2092).find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 2846:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $forEach = __webpack_require__(2092).forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4731:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $includes = __webpack_require__(1318).includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 7209:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $indexOf = __webpack_require__(1318).indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 6319:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7854);\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar ArrayIterators = __webpack_require__(6992);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n  && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n  return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n  return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n  return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n\n\n/***/ }),\n\n/***/ 8867:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('join', function join(separator) {\n  return $join.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 7789:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $lastIndexOf = __webpack_require__(6583);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n  return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 3739:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $map = __webpack_require__(2092).map;\nvar speciesConstructor = __webpack_require__(6707);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n    return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n  });\n});\n\n\n/***/ }),\n\n/***/ 4483:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $reduceRight = __webpack_require__(3671).right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n  return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 9368:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $reduce = __webpack_require__(3671).left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n  return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 2056:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n  var that = this;\n  var length = aTypedArray(that).length;\n  var middle = floor(length / 2);\n  var index = 0;\n  var value;\n  while (index < middle) {\n    value = that[index];\n    that[index++] = that[--length];\n    that[length] = value;\n  } return that;\n});\n\n\n/***/ }),\n\n/***/ 3462:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar toLength = __webpack_require__(7466);\nvar toOffset = __webpack_require__(4590);\nvar toObject = __webpack_require__(7908);\nvar fails = __webpack_require__(7293);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  /* global Int8Array -- safe */\n  new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var length = this.length;\n  var src = toObject(arrayLike);\n  var len = toLength(src.length);\n  var index = 0;\n  if (len + offset > length) throw RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 678:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar speciesConstructor = __webpack_require__(6707);\nvar fails = __webpack_require__(7293);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n  /* global Int8Array -- safe */\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = $slice.call(aTypedArray(this), start, end);\n  var C = speciesConstructor(this, this.constructor);\n  var index = 0;\n  var length = list.length;\n  var result = new (aTypedArrayConstructor(C))(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 7462:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $some = __webpack_require__(2092).some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3824:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n  return $sort.call(aTypedArray(this), comparefn);\n});\n\n\n/***/ }),\n\n/***/ 5021:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar toLength = __webpack_require__(7466);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar speciesConstructor = __webpack_require__(6707);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n  var O = aTypedArray(this);\n  var length = O.length;\n  var beginIndex = toAbsoluteIndex(begin, length);\n  return new (speciesConstructor(O, O.constructor))(\n    O.buffer,\n    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n  );\n});\n\n\n/***/ }),\n\n/***/ 2974:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7854);\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar fails = __webpack_require__(7293);\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n  $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n  return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n  Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n  return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 5016:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar exportTypedArrayMethod = __webpack_require__(260).exportTypedArrayMethod;\nvar fails = __webpack_require__(7293);\nvar global = __webpack_require__(7854);\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n  arrayToString = function toString() {\n    return arrayJoin.call(this);\n  };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n\n\n/***/ }),\n\n/***/ 2472:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(9843);\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n\n\n/***/ }),\n\n/***/ 4747:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar DOMIterables = __webpack_require__(8324);\nvar forEach = __webpack_require__(8533);\nvar createNonEnumerableProperty = __webpack_require__(8880);\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n}\n\n\n/***/ }),\n\n/***/ 3948:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar DOMIterables = __webpack_require__(8324);\nvar ArrayIteratorMethods = __webpack_require__(6992);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n}\n\n\n/***/ }),\n\n/***/ 1637:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(6992);\nvar $ = __webpack_require__(2109);\nvar getBuiltIn = __webpack_require__(5005);\nvar USE_NATIVE_URL = __webpack_require__(590);\nvar redefine = __webpack_require__(1320);\nvar redefineAll = __webpack_require__(2248);\nvar setToStringTag = __webpack_require__(8003);\nvar createIteratorConstructor = __webpack_require__(4994);\nvar InternalStateModule = __webpack_require__(9909);\nvar anInstance = __webpack_require__(5787);\nvar hasOwn = __webpack_require__(6656);\nvar bind = __webpack_require__(9974);\nvar classof = __webpack_require__(648);\nvar anObject = __webpack_require__(9670);\nvar isObject = __webpack_require__(111);\nvar create = __webpack_require__(30);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar getIterator = __webpack_require__(8554);\nvar getIteratorMethod = __webpack_require__(1246);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n  try {\n    return decodeURIComponent(sequence);\n  } catch (error) {\n    return sequence;\n  }\n};\n\nvar deserialize = function (it) {\n  var result = it.replace(plus, ' ');\n  var bytes = 4;\n  try {\n    return decodeURIComponent(result);\n  } catch (error) {\n    while (bytes) {\n      result = result.replace(percentSequence(bytes--), percentDecode);\n    }\n    return result;\n  }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+'\n};\n\nvar replacer = function (match) {\n  return replace[match];\n};\n\nvar serialize = function (it) {\n  return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n  if (query) {\n    var attributes = query.split('&');\n    var index = 0;\n    var attribute, entry;\n    while (index < attributes.length) {\n      attribute = attributes[index++];\n      if (attribute.length) {\n        entry = attribute.split('=');\n        result.push({\n          key: deserialize(entry.shift()),\n          value: deserialize(entry.join('='))\n        });\n      }\n    }\n  }\n};\n\nvar updateSearchParams = function (query) {\n  this.entries.length = 0;\n  parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n  if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n  setInternalState(this, {\n    type: URL_SEARCH_PARAMS_ITERATOR,\n    iterator: getIterator(getInternalParamsState(params).entries),\n    kind: kind\n  });\n}, 'Iterator', function next() {\n  var state = getInternalIteratorState(this);\n  var kind = state.kind;\n  var step = state.iterator.next();\n  var entry = step.value;\n  if (!step.done) {\n    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n  } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n  anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n  var init = arguments.length > 0 ? arguments[0] : undefined;\n  var that = this;\n  var entries = [];\n  var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n  setInternalState(that, {\n    type: URL_SEARCH_PARAMS,\n    entries: entries,\n    updateURL: function () { /* empty */ },\n    updateSearchParams: updateSearchParams\n  });\n\n  if (init !== undefined) {\n    if (isObject(init)) {\n      iteratorMethod = getIteratorMethod(init);\n      if (typeof iteratorMethod === 'function') {\n        iterator = iteratorMethod.call(init);\n        next = iterator.next;\n        while (!(step = next.call(iterator)).done) {\n          entryIterator = getIterator(anObject(step.value));\n          entryNext = entryIterator.next;\n          if (\n            (first = entryNext.call(entryIterator)).done ||\n            (second = entryNext.call(entryIterator)).done ||\n            !entryNext.call(entryIterator).done\n          ) throw TypeError('Expected sequence with length 2');\n          entries.push({ key: first.value + '', value: second.value + '' });\n        }\n      } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n    } else {\n      parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n    }\n  }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.append` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    validateArgumentsLength(arguments.length, 2);\n    var state = getInternalParamsState(this);\n    state.entries.push({ key: name + '', value: value + '' });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var key = name + '';\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index].key === key) entries.splice(index, 1);\n      else index++;\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = name + '';\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) return entries[index].value;\n    }\n    return null;\n  },\n  // `URLSearchParams.prototype.getAll` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n  getAll: function getAll(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = name + '';\n    var result = [];\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) result.push(entries[index].value);\n    }\n    return result;\n  },\n  // `URLSearchParams.prototype.has` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n  has: function has(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = name + '';\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index++].key === key) return true;\n    }\n    return false;\n  },\n  // `URLSearchParams.prototype.set` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n  set: function set(name, value) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var found = false;\n    var key = name + '';\n    var val = value + '';\n    var index = 0;\n    var entry;\n    for (; index < entries.length; index++) {\n      entry = entries[index];\n      if (entry.key === key) {\n        if (found) entries.splice(index--, 1);\n        else {\n          found = true;\n          entry.value = val;\n        }\n      }\n    }\n    if (!found) entries.push({ key: key, value: val });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.sort` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n  sort: function sort() {\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    // Array#sort is not stable in some engines\n    var slice = entries.slice();\n    var entry, entriesIndex, sliceIndex;\n    entries.length = 0;\n    for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n      entry = slice[sliceIndex];\n      for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n        if (entries[entriesIndex].key > entry.key) {\n          entries.splice(entriesIndex, 0, entry);\n          break;\n        }\n      }\n      if (entriesIndex === sliceIndex) entries.push(entry);\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.forEach` method\n  forEach: function forEach(callback /* , thisArg */) {\n    var entries = getInternalParamsState(this).entries;\n    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      boundFunction(entry.value, entry.key, this);\n    }\n  },\n  // `URLSearchParams.prototype.keys` method\n  keys: function keys() {\n    return new URLSearchParamsIterator(this, 'keys');\n  },\n  // `URLSearchParams.prototype.values` method\n  values: function values() {\n    return new URLSearchParamsIterator(this, 'values');\n  },\n  // `URLSearchParams.prototype.entries` method\n  entries: function entries() {\n    return new URLSearchParamsIterator(this, 'entries');\n  }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n  var entries = getInternalParamsState(this).entries;\n  var result = [];\n  var index = 0;\n  var entry;\n  while (index < entries.length) {\n    entry = entries[index++];\n    result.push(serialize(entry.key) + '=' + serialize(entry.value));\n  } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n  URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n  $({ global: true, enumerable: true, forced: true }, {\n    fetch: function fetch(input /* , init */) {\n      var args = [input];\n      var init, body, headers;\n      if (arguments.length > 1) {\n        init = arguments[1];\n        if (isObject(init)) {\n          body = init.body;\n          if (classof(body) === URL_SEARCH_PARAMS) {\n            headers = init.headers ? new Headers(init.headers) : new Headers();\n            if (!headers.has('content-type')) {\n              headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n            }\n            init = create(init, {\n              body: createPropertyDescriptor(0, String(body)),\n              headers: createPropertyDescriptor(0, headers)\n            });\n          }\n        }\n        args.push(init);\n      } return $fetch.apply(this, args);\n    }\n  });\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(8783);\nvar $ = __webpack_require__(2109);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar USE_NATIVE_URL = __webpack_require__(590);\nvar global = __webpack_require__(7854);\nvar defineProperties = __webpack_require__(6048);\nvar redefine = __webpack_require__(1320);\nvar anInstance = __webpack_require__(5787);\nvar has = __webpack_require__(6656);\nvar assign = __webpack_require__(1574);\nvar arrayFrom = __webpack_require__(8457);\nvar codeAt = __webpack_require__(8710).codeAt;\nvar toASCII = __webpack_require__(3197);\nvar setToStringTag = __webpack_require__(8003);\nvar URLSearchParamsModule = __webpack_require__(1637);\nvar InternalStateModule = __webpack_require__(9909);\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\t\\u000A\\u000D #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\t\\u000A\\u000D #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\u000A\\u000D]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n  var result, codePoints, index;\n  if (input.charAt(0) == '[') {\n    if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n    result = parseIPv6(input.slice(1, -1));\n    if (!result) return INVALID_HOST;\n    url.host = result;\n  // opaque host\n  } else if (!isSpecial(url)) {\n    if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n    result = '';\n    codePoints = arrayFrom(input);\n    for (index = 0; index < codePoints.length; index++) {\n      result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n    }\n    url.host = result;\n  } else {\n    input = toASCII(input);\n    if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n    result = parseIPv4(input);\n    if (result === null) return INVALID_HOST;\n    url.host = result;\n  }\n};\n\nvar parseIPv4 = function (input) {\n  var parts = input.split('.');\n  var partsLength, numbers, index, part, radix, number, ipv4;\n  if (parts.length && parts[parts.length - 1] == '') {\n    parts.pop();\n  }\n  partsLength = parts.length;\n  if (partsLength > 4) return input;\n  numbers = [];\n  for (index = 0; index < partsLength; index++) {\n    part = parts[index];\n    if (part == '') return input;\n    radix = 10;\n    if (part.length > 1 && part.charAt(0) == '0') {\n      radix = HEX_START.test(part) ? 16 : 8;\n      part = part.slice(radix == 8 ? 1 : 2);\n    }\n    if (part === '') {\n      number = 0;\n    } else {\n      if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n      number = parseInt(part, radix);\n    }\n    numbers.push(number);\n  }\n  for (index = 0; index < partsLength; index++) {\n    number = numbers[index];\n    if (index == partsLength - 1) {\n      if (number >= pow(256, 5 - partsLength)) return null;\n    } else if (number > 255) return null;\n  }\n  ipv4 = numbers.pop();\n  for (index = 0; index < numbers.length; index++) {\n    ipv4 += numbers[index] * pow(256, 3 - index);\n  }\n  return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n  var address = [0, 0, 0, 0, 0, 0, 0, 0];\n  var pieceIndex = 0;\n  var compress = null;\n  var pointer = 0;\n  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n  var char = function () {\n    return input.charAt(pointer);\n  };\n\n  if (char() == ':') {\n    if (input.charAt(1) != ':') return;\n    pointer += 2;\n    pieceIndex++;\n    compress = pieceIndex;\n  }\n  while (char()) {\n    if (pieceIndex == 8) return;\n    if (char() == ':') {\n      if (compress !== null) return;\n      pointer++;\n      pieceIndex++;\n      compress = pieceIndex;\n      continue;\n    }\n    value = length = 0;\n    while (length < 4 && HEX.test(char())) {\n      value = value * 16 + parseInt(char(), 16);\n      pointer++;\n      length++;\n    }\n    if (char() == '.') {\n      if (length == 0) return;\n      pointer -= length;\n      if (pieceIndex > 6) return;\n      numbersSeen = 0;\n      while (char()) {\n        ipv4Piece = null;\n        if (numbersSeen > 0) {\n          if (char() == '.' && numbersSeen < 4) pointer++;\n          else return;\n        }\n        if (!DIGIT.test(char())) return;\n        while (DIGIT.test(char())) {\n          number = parseInt(char(), 10);\n          if (ipv4Piece === null) ipv4Piece = number;\n          else if (ipv4Piece == 0) return;\n          else ipv4Piece = ipv4Piece * 10 + number;\n          if (ipv4Piece > 255) return;\n          pointer++;\n        }\n        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n        numbersSeen++;\n        if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n      }\n      if (numbersSeen != 4) return;\n      break;\n    } else if (char() == ':') {\n      pointer++;\n      if (!char()) return;\n    } else if (char()) return;\n    address[pieceIndex++] = value;\n  }\n  if (compress !== null) {\n    swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex != 0 && swaps > 0) {\n      swap = address[pieceIndex];\n      address[pieceIndex--] = address[compress + swaps - 1];\n      address[compress + --swaps] = swap;\n    }\n  } else if (pieceIndex != 8) return;\n  return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n  var maxIndex = null;\n  var maxLength = 1;\n  var currStart = null;\n  var currLength = 0;\n  var index = 0;\n  for (; index < 8; index++) {\n    if (ipv6[index] !== 0) {\n      if (currLength > maxLength) {\n        maxIndex = currStart;\n        maxLength = currLength;\n      }\n      currStart = null;\n      currLength = 0;\n    } else {\n      if (currStart === null) currStart = index;\n      ++currLength;\n    }\n  }\n  if (currLength > maxLength) {\n    maxIndex = currStart;\n    maxLength = currLength;\n  }\n  return maxIndex;\n};\n\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\n  // ipv4\n  if (typeof host == 'number') {\n    result = [];\n    for (index = 0; index < 4; index++) {\n      result.unshift(host % 256);\n      host = floor(host / 256);\n    } return result.join('.');\n  // ipv6\n  } else if (typeof host == 'object') {\n    result = '';\n    compress = findLongestZeroSequence(host);\n    for (index = 0; index < 8; index++) {\n      if (ignore0 && host[index] === 0) continue;\n      if (ignore0) ignore0 = false;\n      if (compress === index) {\n        result += index ? ':' : '::';\n        ignore0 = true;\n      } else {\n        result += host[index].toString(16);\n        if (index < 7) result += ':';\n      }\n    }\n    return '[' + result + ']';\n  } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n  ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n  '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n  var code = codeAt(char, 0);\n  return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\nvar isSpecial = function (url) {\n  return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n  return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n  return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n  var second;\n  return string.length == 2 && ALPHA.test(string.charAt(0))\n    && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n  var third;\n  return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n    string.length == 2 ||\n    ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n  );\n};\n\nvar shortenURLsPath = function (url) {\n  var path = url.path;\n  var pathSize = path.length;\n  if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n    path.pop();\n  }\n};\n\nvar isSingleDot = function (segment) {\n  return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n  segment = segment.toLowerCase();\n  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n  var state = stateOverride || SCHEME_START;\n  var pointer = 0;\n  var buffer = '';\n  var seenAt = false;\n  var seenBracket = false;\n  var seenPasswordToken = false;\n  var codePoints, char, bufferCodePoints, failure;\n\n  if (!stateOverride) {\n    url.scheme = '';\n    url.username = '';\n    url.password = '';\n    url.host = null;\n    url.port = null;\n    url.path = [];\n    url.query = null;\n    url.fragment = null;\n    url.cannotBeABaseURL = false;\n    input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n  }\n\n  input = input.replace(TAB_AND_NEW_LINE, '');\n\n  codePoints = arrayFrom(input);\n\n  while (pointer <= codePoints.length) {\n    char = codePoints[pointer];\n    switch (state) {\n      case SCHEME_START:\n        if (char && ALPHA.test(char)) {\n          buffer += char.toLowerCase();\n          state = SCHEME;\n        } else if (!stateOverride) {\n          state = NO_SCHEME;\n          continue;\n        } else return INVALID_SCHEME;\n        break;\n\n      case SCHEME:\n        if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n          buffer += char.toLowerCase();\n        } else if (char == ':') {\n          if (stateOverride && (\n            (isSpecial(url) != has(specialSchemes, buffer)) ||\n            (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n            (url.scheme == 'file' && !url.host)\n          )) return;\n          url.scheme = buffer;\n          if (stateOverride) {\n            if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n            return;\n          }\n          buffer = '';\n          if (url.scheme == 'file') {\n            state = FILE;\n          } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n            state = SPECIAL_RELATIVE_OR_AUTHORITY;\n          } else if (isSpecial(url)) {\n            state = SPECIAL_AUTHORITY_SLASHES;\n          } else if (codePoints[pointer + 1] == '/') {\n            state = PATH_OR_AUTHORITY;\n            pointer++;\n          } else {\n            url.cannotBeABaseURL = true;\n            url.path.push('');\n            state = CANNOT_BE_A_BASE_URL_PATH;\n          }\n        } else if (!stateOverride) {\n          buffer = '';\n          state = NO_SCHEME;\n          pointer = 0;\n          continue;\n        } else return INVALID_SCHEME;\n        break;\n\n      case NO_SCHEME:\n        if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n        if (base.cannotBeABaseURL && char == '#') {\n          url.scheme = base.scheme;\n          url.path = base.path.slice();\n          url.query = base.query;\n          url.fragment = '';\n          url.cannotBeABaseURL = true;\n          state = FRAGMENT;\n          break;\n        }\n        state = base.scheme == 'file' ? FILE : RELATIVE;\n        continue;\n\n      case SPECIAL_RELATIVE_OR_AUTHORITY:\n        if (char == '/' && codePoints[pointer + 1] == '/') {\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          pointer++;\n        } else {\n          state = RELATIVE;\n          continue;\n        } break;\n\n      case PATH_OR_AUTHORITY:\n        if (char == '/') {\n          state = AUTHORITY;\n          break;\n        } else {\n          state = PATH;\n          continue;\n        }\n\n      case RELATIVE:\n        url.scheme = base.scheme;\n        if (char == EOF) {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.query = base.query;\n        } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n          state = RELATIVE_SLASH;\n        } else if (char == '?') {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.query = '';\n          state = QUERY;\n        } else if (char == '#') {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.query = base.query;\n          url.fragment = '';\n          state = FRAGMENT;\n        } else {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.path.pop();\n          state = PATH;\n          continue;\n        } break;\n\n      case RELATIVE_SLASH:\n        if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n        } else if (char == '/') {\n          state = AUTHORITY;\n        } else {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          state = PATH;\n          continue;\n        } break;\n\n      case SPECIAL_AUTHORITY_SLASHES:\n        state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n        if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n        pointer++;\n        break;\n\n      case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n        if (char != '/' && char != '\\\\') {\n          state = AUTHORITY;\n          continue;\n        } break;\n\n      case AUTHORITY:\n        if (char == '@') {\n          if (seenAt) buffer = '%40' + buffer;\n          seenAt = true;\n          bufferCodePoints = arrayFrom(buffer);\n          for (var i = 0; i < bufferCodePoints.length; i++) {\n            var codePoint = bufferCodePoints[i];\n            if (codePoint == ':' && !seenPasswordToken) {\n              seenPasswordToken = true;\n              continue;\n            }\n            var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n            if (seenPasswordToken) url.password += encodedCodePoints;\n            else url.username += encodedCodePoints;\n          }\n          buffer = '';\n        } else if (\n          char == EOF || char == '/' || char == '?' || char == '#' ||\n          (char == '\\\\' && isSpecial(url))\n        ) {\n          if (seenAt && buffer == '') return INVALID_AUTHORITY;\n          pointer -= arrayFrom(buffer).length + 1;\n          buffer = '';\n          state = HOST;\n        } else buffer += char;\n        break;\n\n      case HOST:\n      case HOSTNAME:\n        if (stateOverride && url.scheme == 'file') {\n          state = FILE_HOST;\n          continue;\n        } else if (char == ':' && !seenBracket) {\n          if (buffer == '') return INVALID_HOST;\n          failure = parseHost(url, buffer);\n          if (failure) return failure;\n          buffer = '';\n          state = PORT;\n          if (stateOverride == HOSTNAME) return;\n        } else if (\n          char == EOF || char == '/' || char == '?' || char == '#' ||\n          (char == '\\\\' && isSpecial(url))\n        ) {\n          if (isSpecial(url) && buffer == '') return INVALID_HOST;\n          if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n          failure = parseHost(url, buffer);\n          if (failure) return failure;\n          buffer = '';\n          state = PATH_START;\n          if (stateOverride) return;\n          continue;\n        } else {\n          if (char == '[') seenBracket = true;\n          else if (char == ']') seenBracket = false;\n          buffer += char;\n        } break;\n\n      case PORT:\n        if (DIGIT.test(char)) {\n          buffer += char;\n        } else if (\n          char == EOF || char == '/' || char == '?' || char == '#' ||\n          (char == '\\\\' && isSpecial(url)) ||\n          stateOverride\n        ) {\n          if (buffer != '') {\n            var port = parseInt(buffer, 10);\n            if (port > 0xFFFF) return INVALID_PORT;\n            url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n            buffer = '';\n          }\n          if (stateOverride) return;\n          state = PATH_START;\n          continue;\n        } else return INVALID_PORT;\n        break;\n\n      case FILE:\n        url.scheme = 'file';\n        if (char == '/' || char == '\\\\') state = FILE_SLASH;\n        else if (base && base.scheme == 'file') {\n          if (char == EOF) {\n            url.host = base.host;\n            url.path = base.path.slice();\n            url.query = base.query;\n          } else if (char == '?') {\n            url.host = base.host;\n            url.path = base.path.slice();\n            url.query = '';\n            state = QUERY;\n          } else if (char == '#') {\n            url.host = base.host;\n            url.path = base.path.slice();\n            url.query = base.query;\n            url.fragment = '';\n            state = FRAGMENT;\n          } else {\n            if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n              url.host = base.host;\n              url.path = base.path.slice();\n              shortenURLsPath(url);\n            }\n            state = PATH;\n            continue;\n          }\n        } else {\n          state = PATH;\n          continue;\n        } break;\n\n      case FILE_SLASH:\n        if (char == '/' || char == '\\\\') {\n          state = FILE_HOST;\n          break;\n        }\n        if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n          if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n          else url.host = base.host;\n        }\n        state = PATH;\n        continue;\n\n      case FILE_HOST:\n        if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n          if (!stateOverride && isWindowsDriveLetter(buffer)) {\n            state = PATH;\n          } else if (buffer == '') {\n            url.host = '';\n            if (stateOverride) return;\n            state = PATH_START;\n          } else {\n            failure = parseHost(url, buffer);\n            if (failure) return failure;\n            if (url.host == 'localhost') url.host = '';\n            if (stateOverride) return;\n            buffer = '';\n            state = PATH_START;\n          } continue;\n        } else buffer += char;\n        break;\n\n      case PATH_START:\n        if (isSpecial(url)) {\n          state = PATH;\n          if (char != '/' && char != '\\\\') continue;\n        } else if (!stateOverride && char == '?') {\n          url.query = '';\n          state = QUERY;\n        } else if (!stateOverride && char == '#') {\n          url.fragment = '';\n          state = FRAGMENT;\n        } else if (char != EOF) {\n          state = PATH;\n          if (char != '/') continue;\n        } break;\n\n      case PATH:\n        if (\n          char == EOF || char == '/' ||\n          (char == '\\\\' && isSpecial(url)) ||\n          (!stateOverride && (char == '?' || char == '#'))\n        ) {\n          if (isDoubleDot(buffer)) {\n            shortenURLsPath(url);\n            if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n              url.path.push('');\n            }\n          } else if (isSingleDot(buffer)) {\n            if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n              url.path.push('');\n            }\n          } else {\n            if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n              if (url.host) url.host = '';\n              buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n            }\n            url.path.push(buffer);\n          }\n          buffer = '';\n          if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n            while (url.path.length > 1 && url.path[0] === '') {\n              url.path.shift();\n            }\n          }\n          if (char == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (char == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          }\n        } else {\n          buffer += percentEncode(char, pathPercentEncodeSet);\n        } break;\n\n      case CANNOT_BE_A_BASE_URL_PATH:\n        if (char == '?') {\n          url.query = '';\n          state = QUERY;\n        } else if (char == '#') {\n          url.fragment = '';\n          state = FRAGMENT;\n        } else if (char != EOF) {\n          url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n        } break;\n\n      case QUERY:\n        if (!stateOverride && char == '#') {\n          url.fragment = '';\n          state = FRAGMENT;\n        } else if (char != EOF) {\n          if (char == \"'\" && isSpecial(url)) url.query += '%27';\n          else if (char == '#') url.query += '%23';\n          else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n        } break;\n\n      case FRAGMENT:\n        if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n        break;\n    }\n\n    pointer++;\n  }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n  var that = anInstance(this, URLConstructor, 'URL');\n  var base = arguments.length > 1 ? arguments[1] : undefined;\n  var urlString = String(url);\n  var state = setInternalState(that, { type: 'URL' });\n  var baseState, failure;\n  if (base !== undefined) {\n    if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n    else {\n      failure = parseURL(baseState = {}, String(base));\n      if (failure) throw TypeError(failure);\n    }\n  }\n  failure = parseURL(state, urlString, null, baseState);\n  if (failure) throw TypeError(failure);\n  var searchParams = state.searchParams = new URLSearchParams();\n  var searchParamsState = getInternalSearchParamsState(searchParams);\n  searchParamsState.updateSearchParams(state.query);\n  searchParamsState.updateURL = function () {\n    state.query = String(searchParams) || null;\n  };\n  if (!DESCRIPTORS) {\n    that.href = serializeURL.call(that);\n    that.origin = getOrigin.call(that);\n    that.protocol = getProtocol.call(that);\n    that.username = getUsername.call(that);\n    that.password = getPassword.call(that);\n    that.host = getHost.call(that);\n    that.hostname = getHostname.call(that);\n    that.port = getPort.call(that);\n    that.pathname = getPathname.call(that);\n    that.search = getSearch.call(that);\n    that.searchParams = getSearchParams.call(that);\n    that.hash = getHash.call(that);\n  }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n  var url = getInternalURLState(this);\n  var scheme = url.scheme;\n  var username = url.username;\n  var password = url.password;\n  var host = url.host;\n  var port = url.port;\n  var path = url.path;\n  var query = url.query;\n  var fragment = url.fragment;\n  var output = scheme + ':';\n  if (host !== null) {\n    output += '//';\n    if (includesCredentials(url)) {\n      output += username + (password ? ':' + password : '') + '@';\n    }\n    output += serializeHost(host);\n    if (port !== null) output += ':' + port;\n  } else if (scheme == 'file') output += '//';\n  output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n  if (query !== null) output += '?' + query;\n  if (fragment !== null) output += '#' + fragment;\n  return output;\n};\n\nvar getOrigin = function () {\n  var url = getInternalURLState(this);\n  var scheme = url.scheme;\n  var port = url.port;\n  if (scheme == 'blob') try {\n    return new URL(scheme.path[0]).origin;\n  } catch (error) {\n    return 'null';\n  }\n  if (scheme == 'file' || !isSpecial(url)) return 'null';\n  return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n  return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n  return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n  return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n  var url = getInternalURLState(this);\n  var host = url.host;\n  var port = url.port;\n  return host === null ? ''\n    : port === null ? serializeHost(host)\n    : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n  var host = getInternalURLState(this).host;\n  return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n  var port = getInternalURLState(this).port;\n  return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n  var url = getInternalURLState(this);\n  var path = url.path;\n  return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n  var query = getInternalURLState(this).query;\n  return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n  return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n  var fragment = getInternalURLState(this).fragment;\n  return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n  return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n  defineProperties(URLPrototype, {\n    // `URL.prototype.href` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-href\n    href: accessorDescriptor(serializeURL, function (href) {\n      var url = getInternalURLState(this);\n      var urlString = String(href);\n      var failure = parseURL(url, urlString);\n      if (failure) throw TypeError(failure);\n      getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n    }),\n    // `URL.prototype.origin` getter\n    // https://url.spec.whatwg.org/#dom-url-origin\n    origin: accessorDescriptor(getOrigin),\n    // `URL.prototype.protocol` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-protocol\n    protocol: accessorDescriptor(getProtocol, function (protocol) {\n      var url = getInternalURLState(this);\n      parseURL(url, String(protocol) + ':', SCHEME_START);\n    }),\n    // `URL.prototype.username` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-username\n    username: accessorDescriptor(getUsername, function (username) {\n      var url = getInternalURLState(this);\n      var codePoints = arrayFrom(String(username));\n      if (cannotHaveUsernamePasswordPort(url)) return;\n      url.username = '';\n      for (var i = 0; i < codePoints.length; i++) {\n        url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n      }\n    }),\n    // `URL.prototype.password` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-password\n    password: accessorDescriptor(getPassword, function (password) {\n      var url = getInternalURLState(this);\n      var codePoints = arrayFrom(String(password));\n      if (cannotHaveUsernamePasswordPort(url)) return;\n      url.password = '';\n      for (var i = 0; i < codePoints.length; i++) {\n        url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n      }\n    }),\n    // `URL.prototype.host` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-host\n    host: accessorDescriptor(getHost, function (host) {\n      var url = getInternalURLState(this);\n      if (url.cannotBeABaseURL) return;\n      parseURL(url, String(host), HOST);\n    }),\n    // `URL.prototype.hostname` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-hostname\n    hostname: accessorDescriptor(getHostname, function (hostname) {\n      var url = getInternalURLState(this);\n      if (url.cannotBeABaseURL) return;\n      parseURL(url, String(hostname), HOSTNAME);\n    }),\n    // `URL.prototype.port` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-port\n    port: accessorDescriptor(getPort, function (port) {\n      var url = getInternalURLState(this);\n      if (cannotHaveUsernamePasswordPort(url)) return;\n      port = String(port);\n      if (port == '') url.port = null;\n      else parseURL(url, port, PORT);\n    }),\n    // `URL.prototype.pathname` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-pathname\n    pathname: accessorDescriptor(getPathname, function (pathname) {\n      var url = getInternalURLState(this);\n      if (url.cannotBeABaseURL) return;\n      url.path = [];\n      parseURL(url, pathname + '', PATH_START);\n    }),\n    // `URL.prototype.search` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-search\n    search: accessorDescriptor(getSearch, function (search) {\n      var url = getInternalURLState(this);\n      search = String(search);\n      if (search == '') {\n        url.query = null;\n      } else {\n        if ('?' == search.charAt(0)) search = search.slice(1);\n        url.query = '';\n        parseURL(url, search, QUERY);\n      }\n      getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n    }),\n    // `URL.prototype.searchParams` getter\n    // https://url.spec.whatwg.org/#dom-url-searchparams\n    searchParams: accessorDescriptor(getSearchParams),\n    // `URL.prototype.hash` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-hash\n    hash: accessorDescriptor(getHash, function (hash) {\n      var url = getInternalURLState(this);\n      hash = String(hash);\n      if (hash == '') {\n        url.fragment = null;\n        return;\n      }\n      if ('#' == hash.charAt(0)) hash = hash.slice(1);\n      url.fragment = '';\n      parseURL(url, hash, FRAGMENT);\n    })\n  });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n  return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n  return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n  var nativeCreateObjectURL = NativeURL.createObjectURL;\n  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n  // `URL.createObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n    return nativeCreateObjectURL.apply(NativeURL, arguments);\n  });\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n    return nativeRevokeObjectURL.apply(NativeURL, arguments);\n  });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/global */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be in strict mode.\n!function() {\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"Dropzone\": function() { return /* reexport */ Dropzone; },\n  \"default\": function() { return /* binding */ dropzone_dist; }\n});\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __webpack_require__(2222);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __webpack_require__(7327);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.index-of.js\nvar es_array_index_of = __webpack_require__(2772);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __webpack_require__(6992);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __webpack_require__(1249);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __webpack_require__(7042);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js\nvar es_array_splice = __webpack_require__(561);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.constructor.js\nvar es_array_buffer_constructor = __webpack_require__(8264);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __webpack_require__(8309);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.get-prototype-of.js\nvar es_object_get_prototype_of = __webpack_require__(489);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __webpack_require__(1539);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(4916);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js\nvar es_regexp_to_string = __webpack_require__(9714);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __webpack_require__(8783);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __webpack_require__(4723);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __webpack_require__(5306);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __webpack_require__(3123);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim.js\nvar es_string_trim = __webpack_require__(3210);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.uint8-array.js\nvar es_typed_array_uint8_array = __webpack_require__(2472);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.copy-within.js\nvar es_typed_array_copy_within = __webpack_require__(2990);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.every.js\nvar es_typed_array_every = __webpack_require__(8927);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.fill.js\nvar es_typed_array_fill = __webpack_require__(3105);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.filter.js\nvar es_typed_array_filter = __webpack_require__(5035);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find.js\nvar es_typed_array_find = __webpack_require__(4345);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find-index.js\nvar es_typed_array_find_index = __webpack_require__(7174);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.for-each.js\nvar es_typed_array_for_each = __webpack_require__(2846);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.includes.js\nvar es_typed_array_includes = __webpack_require__(4731);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.index-of.js\nvar es_typed_array_index_of = __webpack_require__(7209);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.iterator.js\nvar es_typed_array_iterator = __webpack_require__(6319);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.join.js\nvar es_typed_array_join = __webpack_require__(8867);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.last-index-of.js\nvar es_typed_array_last_index_of = __webpack_require__(7789);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.map.js\nvar es_typed_array_map = __webpack_require__(3739);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce.js\nvar es_typed_array_reduce = __webpack_require__(9368);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce-right.js\nvar es_typed_array_reduce_right = __webpack_require__(4483);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reverse.js\nvar es_typed_array_reverse = __webpack_require__(2056);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.set.js\nvar es_typed_array_set = __webpack_require__(3462);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.slice.js\nvar es_typed_array_slice = __webpack_require__(678);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.some.js\nvar es_typed_array_some = __webpack_require__(7462);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.sort.js\nvar es_typed_array_sort = __webpack_require__(3824);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.subarray.js\nvar es_typed_array_subarray = __webpack_require__(5021);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-locale-string.js\nvar es_typed_array_to_locale_string = __webpack_require__(2974);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-string.js\nvar es_typed_array_to_string = __webpack_require__(5016);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js\nvar web_dom_collections_for_each = __webpack_require__(4747);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __webpack_require__(3948);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url.js\nvar web_url = __webpack_require__(285);\n;// CONCATENATED MODULE: ./src/emitter.js\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nvar Emitter = /*#__PURE__*/function () {\n  function Emitter() {\n    _classCallCheck(this, Emitter);\n  }\n\n  _createClass(Emitter, [{\n    key: \"on\",\n    value: // Add an event listener for given event\n    function on(event, fn) {\n      this._callbacks = this._callbacks || {}; // Create namespace for this event\n\n      if (!this._callbacks[event]) {\n        this._callbacks[event] = [];\n      }\n\n      this._callbacks[event].push(fn);\n\n      return this;\n    }\n  }, {\n    key: \"emit\",\n    value: function emit(event) {\n      this._callbacks = this._callbacks || {};\n      var callbacks = this._callbacks[event];\n\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (callbacks) {\n        var _iterator = _createForOfIteratorHelper(callbacks, true),\n            _step;\n\n        try {\n          for (_iterator.s(); !(_step = _iterator.n()).done;) {\n            var callback = _step.value;\n            callback.apply(this, args);\n          }\n        } catch (err) {\n          _iterator.e(err);\n        } finally {\n          _iterator.f();\n        }\n      } // trigger a corresponding DOM event\n\n\n      if (this.element) {\n        this.element.dispatchEvent(this.makeEvent(\"dropzone:\" + event, {\n          args: args\n        }));\n      }\n\n      return this;\n    }\n  }, {\n    key: \"makeEvent\",\n    value: function makeEvent(eventName, detail) {\n      var params = {\n        bubbles: true,\n        cancelable: true,\n        detail: detail\n      };\n\n      if (typeof window.CustomEvent === \"function\") {\n        return new CustomEvent(eventName, params);\n      } else {\n        // IE 11 support\n        // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n        var evt = document.createEvent(\"CustomEvent\");\n        evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);\n        return evt;\n      }\n    } // Remove event listener for given event. If fn is not provided, all event\n    // listeners for that event will be removed. If neither is provided, all\n    // event listeners will be removed.\n\n  }, {\n    key: \"off\",\n    value: function off(event, fn) {\n      if (!this._callbacks || arguments.length === 0) {\n        this._callbacks = {};\n        return this;\n      } // specific event\n\n\n      var callbacks = this._callbacks[event];\n\n      if (!callbacks) {\n        return this;\n      } // remove all handlers\n\n\n      if (arguments.length === 1) {\n        delete this._callbacks[event];\n        return this;\n      } // remove specific handler\n\n\n      for (var i = 0; i < callbacks.length; i++) {\n        var callback = callbacks[i];\n\n        if (callback === fn) {\n          callbacks.splice(i, 1);\n          break;\n        }\n      }\n\n      return this;\n    }\n  }]);\n\n  return Emitter;\n}();\n\n\n;// CONCATENATED MODULE: ./src/preview-template.html\n// Module\nvar code = \"<div class=\\\"dz-preview dz-file-preview\\\"> <div class=\\\"dz-image\\\"><img data-dz-thumbnail/></div> <div class=\\\"dz-details\\\"> <div class=\\\"dz-size\\\"><span data-dz-size></span></div> <div class=\\\"dz-filename\\\"><span data-dz-name></span></div> </div> <div class=\\\"dz-progress\\\"> <span class=\\\"dz-upload\\\" data-dz-uploadprogress></span> </div> <div class=\\\"dz-error-message\\\"><span data-dz-errormessage></span></div> <div class=\\\"dz-success-mark\\\"> <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"> <title>Check</title> <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"> <path d=\\\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" stroke-opacity=\\\"0.198794158\\\" stroke=\\\"#747474\\\" fill-opacity=\\\"0.816519475\\\" fill=\\\"#FFFFFF\\\"></path> </g> </svg> </div> <div class=\\\"dz-error-mark\\\"> <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"> <title>Error</title> <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"> <g stroke=\\\"#747474\\\" stroke-opacity=\\\"0.198794158\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0.816519475\\\"> <path d=\\\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\"></path> </g> </g> </svg> </div> </div> \";\n// Exports\n/* harmony default export */ var preview_template = (code);\n;// CONCATENATED MODULE: ./src/options.js\n\n\n\n\n\nfunction options_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = options_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction options_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return options_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return options_arrayLikeToArray(o, minLen); }\n\nfunction options_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\nvar defaultOptions = {\n  /**\n   * Has to be specified on elements other than form (or when the form\n   * doesn't have an `action` attribute). You can also\n   * provide a function that will be called with `files` and\n   * must return the url (since `v3.12.0`)\n   */\n  url: null,\n\n  /**\n   * Can be changed to `\"put\"` if necessary. You can also provide a function\n   * that will be called with `files` and must return the method (since `v3.12.0`).\n   */\n  method: \"post\",\n\n  /**\n   * Will be set on the XHRequest.\n   */\n  withCredentials: false,\n\n  /**\n   * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n   * If set to null or 0, no timeout is going to be set.\n   */\n  timeout: null,\n\n  /**\n   * How many file uploads to process in parallel (See the\n   * Enqueuing file uploads documentation section for more info)\n   */\n  parallelUploads: 2,\n\n  /**\n   * Whether to send multiple files in one request. If\n   * this it set to true, then the fallback file input element will\n   * have the `multiple` attribute as well. This option will\n   * also trigger additional events (like `processingmultiple`). See the events\n   * documentation section for more information.\n   */\n  uploadMultiple: false,\n\n  /**\n   * Whether you want files to be uploaded in chunks to your server. This can't be\n   * used in combination with `uploadMultiple`.\n   *\n   * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n   */\n  chunking: false,\n\n  /**\n   * If `chunking` is enabled, this defines whether **every** file should be chunked,\n   * even if the file size is below chunkSize. This means, that the additional chunk\n   * form data will be submitted and the `chunksUploaded` callback will be invoked.\n   */\n  forceChunking: false,\n\n  /**\n   * If `chunking` is `true`, then this defines the chunk size in bytes.\n   */\n  chunkSize: 2000000,\n\n  /**\n   * If `true`, the individual chunks of a file are being uploaded simultaneously.\n   */\n  parallelChunkUploads: false,\n\n  /**\n   * Whether a chunk should be retried if it fails.\n   */\n  retryChunks: false,\n\n  /**\n   * If `retryChunks` is true, how many times should it be retried.\n   */\n  retryChunksLimit: 3,\n\n  /**\n   * The maximum filesize (in bytes) that is allowed to be uploaded.\n   */\n  maxFilesize: 256,\n\n  /**\n   * The name of the file param that gets transferred.\n   * **NOTE**: If you have the option  `uploadMultiple` set to `true`, then\n   * Dropzone will append `[]` to the name.\n   */\n  paramName: \"file\",\n\n  /**\n   * Whether thumbnails for images should be generated\n   */\n  createImageThumbnails: true,\n\n  /**\n   * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n   */\n  maxThumbnailFilesize: 10,\n\n  /**\n   * If `null`, the ratio of the image will be used to calculate it.\n   */\n  thumbnailWidth: 120,\n\n  /**\n   * The same as `thumbnailWidth`. If both are null, images will not be resized.\n   */\n  thumbnailHeight: 120,\n\n  /**\n   * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n   * Can be either `contain` or `crop`.\n   */\n  thumbnailMethod: \"crop\",\n\n  /**\n   * If set, images will be resized to these dimensions before being **uploaded**.\n   * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n   * ratio of the file will be preserved.\n   *\n   * The `options.transformFile` function uses these options, so if the `transformFile` function\n   * is overridden, these options don't do anything.\n   */\n  resizeWidth: null,\n\n  /**\n   * See `resizeWidth`.\n   */\n  resizeHeight: null,\n\n  /**\n   * The mime type of the resized image (before it gets uploaded to the server).\n   * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n   * See `resizeWidth` for more information.\n   */\n  resizeMimeType: null,\n\n  /**\n   * The quality of the resized images. See `resizeWidth`.\n   */\n  resizeQuality: 0.8,\n\n  /**\n   * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n   * Can be either `contain` or `crop`.\n   */\n  resizeMethod: \"contain\",\n\n  /**\n   * The base that is used to calculate the **displayed** filesize. You can\n   * change this to 1024 if you would rather display kibibytes, mebibytes,\n   * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n   * not `1 kilobyte`. You can change this to `1024` if you don't care about\n   * validity.\n   */\n  filesizeBase: 1000,\n\n  /**\n   * If not `null` defines how many files this Dropzone handles. If it exceeds,\n   * the event `maxfilesexceeded` will be called. The dropzone element gets the\n   * class `dz-max-files-reached` accordingly so you can provide visual\n   * feedback.\n   */\n  maxFiles: null,\n\n  /**\n   * An optional object to send additional headers to the server. Eg:\n   * `{ \"My-Awesome-Header\": \"header value\" }`\n   */\n  headers: null,\n\n  /**\n   * If `true`, the dropzone element itself will be clickable, if `false`\n   * nothing will be clickable.\n   *\n   * You can also pass an HTML element, a CSS selector (for multiple elements)\n   * or an array of those. In that case, all of those elements will trigger an\n   * upload when clicked.\n   */\n  clickable: true,\n\n  /**\n   * Whether hidden files in directories should be ignored.\n   */\n  ignoreHiddenFiles: true,\n\n  /**\n   * The default implementation of `accept` checks the file's mime type or\n   * extension against this list. This is a comma separated list of mime\n   * types or file extensions.\n   *\n   * Eg.: `image/*,application/pdf,.psd`\n   *\n   * If the Dropzone is `clickable` this option will also be used as\n   * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n   * parameter on the hidden file input as well.\n   */\n  acceptedFiles: null,\n\n  /**\n   * **Deprecated!**\n   * Use acceptedFiles instead.\n   */\n  acceptedMimeTypes: null,\n\n  /**\n   * If false, files will be added to the queue but the queue will not be\n   * processed automatically.\n   * This can be useful if you need some additional user input before sending\n   * files (or if you want want all files sent at once).\n   * If you're ready to send the file simply call `myDropzone.processQueue()`.\n   *\n   * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n   * section for more information.\n   */\n  autoProcessQueue: true,\n\n  /**\n   * If false, files added to the dropzone will not be queued by default.\n   * You'll have to call `enqueueFile(file)` manually.\n   */\n  autoQueue: true,\n\n  /**\n   * If `true`, this will add a link to every file preview to remove or cancel (if\n   * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n   * and `dictRemoveFile` options are used for the wording.\n   */\n  addRemoveLinks: false,\n\n  /**\n   * Defines where to display the file previews \u2013 if `null` the\n   * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n   * selector. The element should have the `dropzone-previews` class so\n   * the previews are displayed properly.\n   */\n  previewsContainer: null,\n\n  /**\n   * Set this to `true` if you don't want previews to be shown.\n   */\n  disablePreviews: false,\n\n  /**\n   * This is the element the hidden input field (which is used when clicking on the\n   * dropzone to trigger file selection) will be appended to. This might\n   * be important in case you use frameworks to switch the content of your page.\n   *\n   * Can be a selector string, or an element directly.\n   */\n  hiddenInputContainer: \"body\",\n\n  /**\n   * If null, no capture type will be specified\n   * If camera, mobile devices will skip the file selection and choose camera\n   * If microphone, mobile devices will skip the file selection and choose the microphone\n   * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n   * On apple devices multiple must be set to false.  AcceptedFiles may need to\n   * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n   */\n  capture: null,\n\n  /**\n   * **Deprecated**. Use `renameFile` instead.\n   */\n  renameFilename: null,\n\n  /**\n   * A function that is invoked before the file is uploaded to the server and renames the file.\n   * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n   * file that gets used during the upload can be accessed through `file.upload.filename`.\n   */\n  renameFile: null,\n\n  /**\n   * If `true` the fallback will be forced. This is very useful to test your server\n   * implementations first and make sure that everything works as\n   * expected without dropzone if you experience problems, and to test\n   * how your fallbacks will look.\n   */\n  forceFallback: false,\n\n  /**\n   * The text used before any files are dropped.\n   */\n  dictDefaultMessage: \"Drop files here to upload\",\n\n  /**\n   * The text that replaces the default message text it the browser is not supported.\n   */\n  dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n\n  /**\n   * The text that will be added before the fallback form.\n   * If you provide a  fallback element yourself, or if this option is `null` this will\n   * be ignored.\n   */\n  dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n\n  /**\n   * If the filesize is too big.\n   * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n   */\n  dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n  /**\n   * If the file doesn't match the file type.\n   */\n  dictInvalidFileType: \"You can't upload files of this type.\",\n\n  /**\n   * If the server response was invalid.\n   * `{{statusCode}}` will be replaced with the servers status code.\n   */\n  dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n   */\n  dictCancelUpload: \"Cancel upload\",\n\n  /**\n   * The text that is displayed if an upload was manually canceled\n   */\n  dictUploadCanceled: \"Upload canceled.\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n   */\n  dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used to remove a file.\n   */\n  dictRemoveFile: \"Remove file\",\n\n  /**\n   * If this is not null, then the user will be prompted before removing a file.\n   */\n  dictRemoveFileConfirmation: null,\n\n  /**\n   * Displayed if `maxFiles` is st and exceeded.\n   * The string `{{maxFiles}}` will be replaced by the configuration value.\n   */\n  dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n  /**\n   * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n   * `b` for bytes.\n   */\n  dictFileSizeUnits: {\n    tb: \"TB\",\n    gb: \"GB\",\n    mb: \"MB\",\n    kb: \"KB\",\n    b: \"b\"\n  },\n\n  /**\n   * Called when dropzone initialized\n   * You can add event listeners here\n   */\n  init: function init() {},\n\n  /**\n   * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n   * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n   * of a function, this needs to return a map.\n   *\n   * The default implementation does nothing for normal uploads, but adds relevant information for\n   * chunked uploads.\n   *\n   * This is the same as adding hidden input fields in the form element.\n   */\n  params: function params(files, xhr, chunk) {\n    if (chunk) {\n      return {\n        dzuuid: chunk.file.upload.uuid,\n        dzchunkindex: chunk.index,\n        dztotalfilesize: chunk.file.size,\n        dzchunksize: this.options.chunkSize,\n        dztotalchunkcount: chunk.file.upload.totalChunkCount,\n        dzchunkbyteoffset: chunk.index * this.options.chunkSize\n      };\n    }\n  },\n\n  /**\n   * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n   * and a `done` function as parameters.\n   *\n   * If the done function is invoked without arguments, the file is \"accepted\" and will\n   * be processed. If you pass an error message, the file is rejected, and the error\n   * message will be displayed.\n   * This function will not be called if the file is too big or doesn't match the mime types.\n   */\n  accept: function accept(file, done) {\n    return done();\n  },\n\n  /**\n   * The callback that will be invoked when all chunks have been uploaded for a file.\n   * It gets the file for which the chunks have been uploaded as the first parameter,\n   * and the `done` function as second. `done()` needs to be invoked when everything\n   * needed to finish the upload process is done.\n   */\n  chunksUploaded: function chunksUploaded(file, done) {\n    done();\n  },\n\n  /**\n   * Gets called when the browser is not supported.\n   * The default implementation shows the fallback input field and adds\n   * a text.\n   */\n  fallback: function fallback() {\n    // This code should pass in IE7... :(\n    var messageElement;\n    this.element.className = \"\".concat(this.element.className, \" dz-browser-not-supported\");\n\n    var _iterator = options_createForOfIteratorHelper(this.element.getElementsByTagName(\"div\"), true),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var child = _step.value;\n\n        if (/(^| )dz-message($| )/.test(child.className)) {\n          messageElement = child;\n          child.className = \"dz-message\"; // Removes the 'dz-default' class\n\n          break;\n        }\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n\n    if (!messageElement) {\n      messageElement = Dropzone.createElement('<div class=\"dz-message\"><span></span></div>');\n      this.element.appendChild(messageElement);\n    }\n\n    var span = messageElement.getElementsByTagName(\"span\")[0];\n\n    if (span) {\n      if (span.textContent != null) {\n        span.textContent = this.options.dictFallbackMessage;\n      } else if (span.innerText != null) {\n        span.innerText = this.options.dictFallbackMessage;\n      }\n    }\n\n    return this.element.appendChild(this.getFallbackForm());\n  },\n\n  /**\n   * Gets called to calculate the thumbnail dimensions.\n   *\n   * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n   *\n   *  - `srcWidth` & `srcHeight` (required)\n   *  - `trgWidth` & `trgHeight` (required)\n   *  - `srcX` & `srcY` (optional, default `0`)\n   *  - `trgX` & `trgY` (optional, default `0`)\n   *\n   * Those values are going to be used by `ctx.drawImage()`.\n   */\n  resize: function resize(file, width, height, resizeMethod) {\n    var info = {\n      srcX: 0,\n      srcY: 0,\n      srcWidth: file.width,\n      srcHeight: file.height\n    };\n    var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified\n\n    if (width == null && height == null) {\n      width = info.srcWidth;\n      height = info.srcHeight;\n    } else if (width == null) {\n      width = height * srcRatio;\n    } else if (height == null) {\n      height = width / srcRatio;\n    } // Make sure images aren't upscaled\n\n\n    width = Math.min(width, info.srcWidth);\n    height = Math.min(height, info.srcHeight);\n    var trgRatio = width / height;\n\n    if (info.srcWidth > width || info.srcHeight > height) {\n      // Image is bigger and needs rescaling\n      if (resizeMethod === \"crop\") {\n        if (srcRatio > trgRatio) {\n          info.srcHeight = file.height;\n          info.srcWidth = info.srcHeight * trgRatio;\n        } else {\n          info.srcWidth = file.width;\n          info.srcHeight = info.srcWidth / trgRatio;\n        }\n      } else if (resizeMethod === \"contain\") {\n        // Method 'contain'\n        if (srcRatio > trgRatio) {\n          height = width / srcRatio;\n        } else {\n          width = height * srcRatio;\n        }\n      } else {\n        throw new Error(\"Unknown resizeMethod '\".concat(resizeMethod, \"'\"));\n      }\n    }\n\n    info.srcX = (file.width - info.srcWidth) / 2;\n    info.srcY = (file.height - info.srcHeight) / 2;\n    info.trgWidth = width;\n    info.trgHeight = height;\n    return info;\n  },\n\n  /**\n   * Can be used to transform the file (for example, resize an image if necessary).\n   *\n   * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n   * images according to those dimensions.\n   *\n   * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n   * to be invoked with the file when the transformation is done.\n   */\n  transformFile: function transformFile(file, done) {\n    if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {\n      return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\n    } else {\n      return done(file);\n    }\n  },\n\n  /**\n   * A string that contains the template used for each dropped\n   * file. Change it to fulfill your needs but make sure to properly\n   * provide all elements.\n   *\n   * If you want to use an actual HTML element instead of providing a String\n   * as a config option, you could create a div with the id `tpl`,\n   * put the template inside it and provide the element like this:\n   *\n   *     document\n   *       .querySelector('#tpl')\n   *       .innerHTML\n   *\n   */\n  previewTemplate: preview_template,\n\n  /*\n   Those functions register themselves to the events on init and handle all\n   the user interface specific stuff. Overwriting them won't break the upload\n   but can break the way it's displayed.\n   You can overwrite them if you don't like the default behavior. If you just\n   want to add an additional event handler, register it on the dropzone object\n   and don't overwrite those options.\n   */\n  // Those are self explanatory and simply concern the DragnDrop.\n  drop: function drop(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  dragstart: function dragstart(e) {},\n  dragend: function dragend(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  dragenter: function dragenter(e) {\n    return this.element.classList.add(\"dz-drag-hover\");\n  },\n  dragover: function dragover(e) {\n    return this.element.classList.add(\"dz-drag-hover\");\n  },\n  dragleave: function dragleave(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  paste: function paste(e) {},\n  // Called whenever there are no files left in the dropzone anymore, and the\n  // dropzone should be displayed as if in the initial state.\n  reset: function reset() {\n    return this.element.classList.remove(\"dz-started\");\n  },\n  // Called when a file is added to the queue\n  // Receives `file`\n  addedfile: function addedfile(file) {\n    var _this = this;\n\n    if (this.element === this.previewsContainer) {\n      this.element.classList.add(\"dz-started\");\n    }\n\n    if (this.previewsContainer && !this.options.disablePreviews) {\n      file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n      file.previewTemplate = file.previewElement; // Backwards compatibility\n\n      this.previewsContainer.appendChild(file.previewElement);\n\n      var _iterator2 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-name]\"), true),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var node = _step2.value;\n          node.textContent = file.name;\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n\n      var _iterator3 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-size]\"), true),\n          _step3;\n\n      try {\n        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n          node = _step3.value;\n          node.innerHTML = this.filesize(file.size);\n        }\n      } catch (err) {\n        _iterator3.e(err);\n      } finally {\n        _iterator3.f();\n      }\n\n      if (this.options.addRemoveLinks) {\n        file._removeLink = Dropzone.createElement(\"<a class=\\\"dz-remove\\\" href=\\\"javascript:undefined;\\\" data-dz-remove>\".concat(this.options.dictRemoveFile, \"</a>\"));\n        file.previewElement.appendChild(file._removeLink);\n      }\n\n      var removeFileEvent = function removeFileEvent(e) {\n        e.preventDefault();\n        e.stopPropagation();\n\n        if (file.status === Dropzone.UPLOADING) {\n          return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function () {\n            return _this.removeFile(file);\n          });\n        } else {\n          if (_this.options.dictRemoveFileConfirmation) {\n            return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function () {\n              return _this.removeFile(file);\n            });\n          } else {\n            return _this.removeFile(file);\n          }\n        }\n      };\n\n      var _iterator4 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-remove]\"), true),\n          _step4;\n\n      try {\n        for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n          var removeLink = _step4.value;\n          removeLink.addEventListener(\"click\", removeFileEvent);\n        }\n      } catch (err) {\n        _iterator4.e(err);\n      } finally {\n        _iterator4.f();\n      }\n    }\n  },\n  // Called whenever a file is removed.\n  removedfile: function removedfile(file) {\n    if (file.previewElement != null && file.previewElement.parentNode != null) {\n      file.previewElement.parentNode.removeChild(file.previewElement);\n    }\n\n    return this._updateMaxFilesReachedClass();\n  },\n  // Called when a thumbnail has been generated\n  // Receives `file` and `dataUrl`\n  thumbnail: function thumbnail(file, dataUrl) {\n    if (file.previewElement) {\n      file.previewElement.classList.remove(\"dz-file-preview\");\n\n      var _iterator5 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\"), true),\n          _step5;\n\n      try {\n        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n          var thumbnailElement = _step5.value;\n          thumbnailElement.alt = file.name;\n          thumbnailElement.src = dataUrl;\n        }\n      } catch (err) {\n        _iterator5.e(err);\n      } finally {\n        _iterator5.f();\n      }\n\n      return setTimeout(function () {\n        return file.previewElement.classList.add(\"dz-image-preview\");\n      }, 1);\n    }\n  },\n  // Called whenever an error occurs\n  // Receives `file` and `message`\n  error: function error(file, message) {\n    if (file.previewElement) {\n      file.previewElement.classList.add(\"dz-error\");\n\n      if (typeof message !== \"string\" && message.error) {\n        message = message.error;\n      }\n\n      var _iterator6 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-errormessage]\"), true),\n          _step6;\n\n      try {\n        for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n          var node = _step6.value;\n          node.textContent = message;\n        }\n      } catch (err) {\n        _iterator6.e(err);\n      } finally {\n        _iterator6.f();\n      }\n    }\n  },\n  errormultiple: function errormultiple() {},\n  // Called when a file gets processed. Since there is a cue, not all added\n  // files are processed immediately.\n  // Receives `file`\n  processing: function processing(file) {\n    if (file.previewElement) {\n      file.previewElement.classList.add(\"dz-processing\");\n\n      if (file._removeLink) {\n        return file._removeLink.innerHTML = this.options.dictCancelUpload;\n      }\n    }\n  },\n  processingmultiple: function processingmultiple() {},\n  // Called whenever the upload progress gets updated.\n  // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n  // To get the total number of bytes of the file, use `file.size`\n  uploadprogress: function uploadprogress(file, progress, bytesSent) {\n    if (file.previewElement) {\n      var _iterator7 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\"), true),\n          _step7;\n\n      try {\n        for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n          var node = _step7.value;\n          node.nodeName === \"PROGRESS\" ? node.value = progress : node.style.width = \"\".concat(progress, \"%\");\n        }\n      } catch (err) {\n        _iterator7.e(err);\n      } finally {\n        _iterator7.f();\n      }\n    }\n  },\n  // Called whenever the total upload progress gets updated.\n  // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n  totaluploadprogress: function totaluploadprogress() {},\n  // Called just before the file is sent. Gets the `xhr` object as second\n  // parameter, so you can modify it (for example to add a CSRF token) and a\n  // `formData` object to add additional information.\n  sending: function sending() {},\n  sendingmultiple: function sendingmultiple() {},\n  // When the complete upload is finished and successful\n  // Receives `file`\n  success: function success(file) {\n    if (file.previewElement) {\n      return file.previewElement.classList.add(\"dz-success\");\n    }\n  },\n  successmultiple: function successmultiple() {},\n  // When the upload is canceled.\n  canceled: function canceled(file) {\n    return this.emit(\"error\", file, this.options.dictUploadCanceled);\n  },\n  canceledmultiple: function canceledmultiple() {},\n  // When the upload is finished, either with success or an error.\n  // Receives `file`\n  complete: function complete(file) {\n    if (file._removeLink) {\n      file._removeLink.innerHTML = this.options.dictRemoveFile;\n    }\n\n    if (file.previewElement) {\n      return file.previewElement.classList.add(\"dz-complete\");\n    }\n  },\n  completemultiple: function completemultiple() {},\n  maxfilesexceeded: function maxfilesexceeded() {},\n  maxfilesreached: function maxfilesreached() {},\n  queuecomplete: function queuecomplete() {},\n  addedfiles: function addedfiles() {}\n};\n/* harmony default export */ var src_options = (defaultOptions);\n;// CONCATENATED MODULE: ./src/dropzone.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction dropzone_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = dropzone_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction dropzone_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return dropzone_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return dropzone_arrayLikeToArray(o, minLen); }\n\nfunction dropzone_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction dropzone_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction dropzone_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction dropzone_createClass(Constructor, protoProps, staticProps) { if (protoProps) dropzone_defineProperties(Constructor.prototype, protoProps); if (staticProps) dropzone_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\nvar Dropzone = /*#__PURE__*/function (_Emitter) {\n  _inherits(Dropzone, _Emitter);\n\n  var _super = _createSuper(Dropzone);\n\n  function Dropzone(el, options) {\n    var _this;\n\n    dropzone_classCallCheck(this, Dropzone);\n\n    _this = _super.call(this);\n    var fallback, left;\n    _this.element = el; // For backwards compatibility since the version was in the prototype previously\n\n    _this.version = Dropzone.version;\n    _this.clickableElements = [];\n    _this.listeners = [];\n    _this.files = []; // All files\n\n    if (typeof _this.element === \"string\") {\n      _this.element = document.querySelector(_this.element);\n    } // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n\n\n    if (!_this.element || _this.element.nodeType == null) {\n      throw new Error(\"Invalid dropzone element.\");\n    }\n\n    if (_this.element.dropzone) {\n      throw new Error(\"Dropzone already attached.\");\n    } // Now add this dropzone to the instances.\n\n\n    Dropzone.instances.push(_assertThisInitialized(_this)); // Put the dropzone inside the element itself.\n\n    _this.element.dropzone = _assertThisInitialized(_this);\n    var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {};\n    _this.options = Dropzone.extend({}, src_options, elementOptions, options != null ? options : {});\n    _this.options.previewTemplate = _this.options.previewTemplate.replace(/\\n*/g, \"\"); // If the browser failed, just call the fallback and leave\n\n    if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n      return _possibleConstructorReturn(_this, _this.options.fallback.call(_assertThisInitialized(_this)));\n    } // @options.url = @element.getAttribute \"action\" unless @options.url?\n\n\n    if (_this.options.url == null) {\n      _this.options.url = _this.element.getAttribute(\"action\");\n    }\n\n    if (!_this.options.url) {\n      throw new Error(\"No URL provided.\");\n    }\n\n    if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) {\n      throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n    }\n\n    if (_this.options.uploadMultiple && _this.options.chunking) {\n      throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n    } // Backwards compatibility\n\n\n    if (_this.options.acceptedMimeTypes) {\n      _this.options.acceptedFiles = _this.options.acceptedMimeTypes;\n      delete _this.options.acceptedMimeTypes;\n    } // Backwards compatibility\n\n\n    if (_this.options.renameFilename != null) {\n      _this.options.renameFile = function (file) {\n        return _this.options.renameFilename.call(_assertThisInitialized(_this), file.name, file);\n      };\n    }\n\n    if (typeof _this.options.method === \"string\") {\n      _this.options.method = _this.options.method.toUpperCase();\n    }\n\n    if ((fallback = _this.getExistingFallback()) && fallback.parentNode) {\n      // Remove the fallback\n      fallback.parentNode.removeChild(fallback);\n    } // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n\n\n    if (_this.options.previewsContainer !== false) {\n      if (_this.options.previewsContainer) {\n        _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, \"previewsContainer\");\n      } else {\n        _this.previewsContainer = _this.element;\n      }\n    }\n\n    if (_this.options.clickable) {\n      if (_this.options.clickable === true) {\n        _this.clickableElements = [_this.element];\n      } else {\n        _this.clickableElements = Dropzone.getElements(_this.options.clickable, \"clickable\");\n      }\n    }\n\n    _this.init();\n\n    return _this;\n  } // Returns all files that have been accepted\n\n\n  dropzone_createClass(Dropzone, [{\n    key: \"getAcceptedFiles\",\n    value: function getAcceptedFiles() {\n      return this.files.filter(function (file) {\n        return file.accepted;\n      }).map(function (file) {\n        return file;\n      });\n    } // Returns all files that have been rejected\n    // Not sure when that's going to be useful, but added for completeness.\n\n  }, {\n    key: \"getRejectedFiles\",\n    value: function getRejectedFiles() {\n      return this.files.filter(function (file) {\n        return !file.accepted;\n      }).map(function (file) {\n        return file;\n      });\n    }\n  }, {\n    key: \"getFilesWithStatus\",\n    value: function getFilesWithStatus(status) {\n      return this.files.filter(function (file) {\n        return file.status === status;\n      }).map(function (file) {\n        return file;\n      });\n    } // Returns all files that are in the queue\n\n  }, {\n    key: \"getQueuedFiles\",\n    value: function getQueuedFiles() {\n      return this.getFilesWithStatus(Dropzone.QUEUED);\n    }\n  }, {\n    key: \"getUploadingFiles\",\n    value: function getUploadingFiles() {\n      return this.getFilesWithStatus(Dropzone.UPLOADING);\n    }\n  }, {\n    key: \"getAddedFiles\",\n    value: function getAddedFiles() {\n      return this.getFilesWithStatus(Dropzone.ADDED);\n    } // Files that are either queued or uploading\n\n  }, {\n    key: \"getActiveFiles\",\n    value: function getActiveFiles() {\n      return this.files.filter(function (file) {\n        return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED;\n      }).map(function (file) {\n        return file;\n      });\n    } // The function that gets called when Dropzone is initialized. You\n    // can (and should) setup event listeners inside this function.\n\n  }, {\n    key: \"init\",\n    value: function init() {\n      var _this2 = this;\n\n      // In case it isn't set already\n      if (this.element.tagName === \"form\") {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      }\n\n      if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n        this.element.appendChild(Dropzone.createElement(\"<div class=\\\"dz-default dz-message\\\"><button class=\\\"dz-button\\\" type=\\\"button\\\">\".concat(this.options.dictDefaultMessage, \"</button></div>\")));\n      }\n\n      if (this.clickableElements.length) {\n        var setupHiddenFileInput = function setupHiddenFileInput() {\n          if (_this2.hiddenFileInput) {\n            _this2.hiddenFileInput.parentNode.removeChild(_this2.hiddenFileInput);\n          }\n\n          _this2.hiddenFileInput = document.createElement(\"input\");\n\n          _this2.hiddenFileInput.setAttribute(\"type\", \"file\");\n\n          if (_this2.options.maxFiles === null || _this2.options.maxFiles > 1) {\n            _this2.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n          }\n\n          _this2.hiddenFileInput.className = \"dz-hidden-input\";\n\n          if (_this2.options.acceptedFiles !== null) {\n            _this2.hiddenFileInput.setAttribute(\"accept\", _this2.options.acceptedFiles);\n          }\n\n          if (_this2.options.capture !== null) {\n            _this2.hiddenFileInput.setAttribute(\"capture\", _this2.options.capture);\n          } // Making sure that no one can \"tab\" into this field.\n\n\n          _this2.hiddenFileInput.setAttribute(\"tabindex\", \"-1\"); // Not setting `display=\"none\"` because some browsers don't accept clicks\n          // on elements that aren't displayed.\n\n\n          _this2.hiddenFileInput.style.visibility = \"hidden\";\n          _this2.hiddenFileInput.style.position = \"absolute\";\n          _this2.hiddenFileInput.style.top = \"0\";\n          _this2.hiddenFileInput.style.left = \"0\";\n          _this2.hiddenFileInput.style.height = \"0\";\n          _this2.hiddenFileInput.style.width = \"0\";\n          Dropzone.getElement(_this2.options.hiddenInputContainer, \"hiddenInputContainer\").appendChild(_this2.hiddenFileInput);\n\n          _this2.hiddenFileInput.addEventListener(\"change\", function () {\n            var files = _this2.hiddenFileInput.files;\n\n            if (files.length) {\n              var _iterator = dropzone_createForOfIteratorHelper(files, true),\n                  _step;\n\n              try {\n                for (_iterator.s(); !(_step = _iterator.n()).done;) {\n                  var file = _step.value;\n\n                  _this2.addFile(file);\n                }\n              } catch (err) {\n                _iterator.e(err);\n              } finally {\n                _iterator.f();\n              }\n            }\n\n            _this2.emit(\"addedfiles\", files);\n\n            setupHiddenFileInput();\n          });\n        };\n\n        setupHiddenFileInput();\n      }\n\n      this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself.\n      // They're not in @setupEventListeners() because they shouldn't be removed\n      // again when the dropzone gets disabled.\n\n      var _iterator2 = dropzone_createForOfIteratorHelper(this.events, true),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var eventName = _step2.value;\n          this.on(eventName, this.options[eventName]);\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n\n      this.on(\"uploadprogress\", function () {\n        return _this2.updateTotalUploadProgress();\n      });\n      this.on(\"removedfile\", function () {\n        return _this2.updateTotalUploadProgress();\n      });\n      this.on(\"canceled\", function (file) {\n        return _this2.emit(\"complete\", file);\n      }); // Emit a `queuecomplete` event if all files finished uploading.\n\n      this.on(\"complete\", function (file) {\n        if (_this2.getAddedFiles().length === 0 && _this2.getUploadingFiles().length === 0 && _this2.getQueuedFiles().length === 0) {\n          // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n          return setTimeout(function () {\n            return _this2.emit(\"queuecomplete\");\n          }, 0);\n        }\n      });\n\n      var containsFiles = function containsFiles(e) {\n        if (e.dataTransfer.types) {\n          // Because e.dataTransfer.types is an Object in\n          // IE, we need to iterate like this instead of\n          // using e.dataTransfer.types.some()\n          for (var i = 0; i < e.dataTransfer.types.length; i++) {\n            if (e.dataTransfer.types[i] === \"Files\") return true;\n          }\n        }\n\n        return false;\n      };\n\n      var noPropagation = function noPropagation(e) {\n        // If there are no files, we don't want to stop\n        // propagation so we don't interfere with other\n        // drag and drop behaviour.\n        if (!containsFiles(e)) return;\n        e.stopPropagation();\n\n        if (e.preventDefault) {\n          return e.preventDefault();\n        } else {\n          return e.returnValue = false;\n        }\n      }; // Create the listeners\n\n\n      this.listeners = [{\n        element: this.element,\n        events: {\n          dragstart: function dragstart(e) {\n            return _this2.emit(\"dragstart\", e);\n          },\n          dragenter: function dragenter(e) {\n            noPropagation(e);\n            return _this2.emit(\"dragenter\", e);\n          },\n          dragover: function dragover(e) {\n            // Makes it possible to drag files from chrome's download bar\n            // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n            // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n            var efct;\n\n            try {\n              efct = e.dataTransfer.effectAllowed;\n            } catch (error) {}\n\n            e.dataTransfer.dropEffect = \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n            noPropagation(e);\n            return _this2.emit(\"dragover\", e);\n          },\n          dragleave: function dragleave(e) {\n            return _this2.emit(\"dragleave\", e);\n          },\n          drop: function drop(e) {\n            noPropagation(e);\n            return _this2.drop(e);\n          },\n          dragend: function dragend(e) {\n            return _this2.emit(\"dragend\", e);\n          }\n        } // This is disabled right now, because the browsers don't implement it properly.\n        // \"paste\": (e) =>\n        //   noPropagation e\n        //   @paste e\n\n      }];\n      this.clickableElements.forEach(function (clickableElement) {\n        return _this2.listeners.push({\n          element: clickableElement,\n          events: {\n            click: function click(evt) {\n              // Only the actual dropzone or the message element should trigger file selection\n              if (clickableElement !== _this2.element || evt.target === _this2.element || Dropzone.elementInside(evt.target, _this2.element.querySelector(\".dz-message\"))) {\n                _this2.hiddenFileInput.click(); // Forward the click\n\n              }\n\n              return true;\n            }\n          }\n        });\n      });\n      this.enable();\n      return this.options.init.call(this);\n    } // Not fully tested yet\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.disable();\n      this.removeAllFiles(true);\n\n      if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n        this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n        this.hiddenFileInput = null;\n      }\n\n      delete this.element.dropzone;\n      return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n    }\n  }, {\n    key: \"updateTotalUploadProgress\",\n    value: function updateTotalUploadProgress() {\n      var totalUploadProgress;\n      var totalBytesSent = 0;\n      var totalBytes = 0;\n      var activeFiles = this.getActiveFiles();\n\n      if (activeFiles.length) {\n        var _iterator3 = dropzone_createForOfIteratorHelper(this.getActiveFiles(), true),\n            _step3;\n\n        try {\n          for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n            var file = _step3.value;\n            totalBytesSent += file.upload.bytesSent;\n            totalBytes += file.upload.total;\n          }\n        } catch (err) {\n          _iterator3.e(err);\n        } finally {\n          _iterator3.f();\n        }\n\n        totalUploadProgress = 100 * totalBytesSent / totalBytes;\n      } else {\n        totalUploadProgress = 100;\n      }\n\n      return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n    } // @options.paramName can be a function taking one parameter rather than a string.\n    // A parameter name for a file is obtained simply by calling this with an index number.\n\n  }, {\n    key: \"_getParamName\",\n    value: function _getParamName(n) {\n      if (typeof this.options.paramName === \"function\") {\n        return this.options.paramName(n);\n      } else {\n        return \"\".concat(this.options.paramName).concat(this.options.uploadMultiple ? \"[\".concat(n, \"]\") : \"\");\n      }\n    } // If @options.renameFile is a function,\n    // the function will be used to rename the file.name before appending it to the formData\n\n  }, {\n    key: \"_renameFile\",\n    value: function _renameFile(file) {\n      if (typeof this.options.renameFile !== \"function\") {\n        return file.name;\n      }\n\n      return this.options.renameFile(file);\n    } // Returns a form that can be used as fallback if the browser does not support DragnDrop\n    //\n    // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n    // This code has to pass in IE7 :(\n\n  }, {\n    key: \"getFallbackForm\",\n    value: function getFallbackForm() {\n      var existingFallback, form;\n\n      if (existingFallback = this.getExistingFallback()) {\n        return existingFallback;\n      }\n\n      var fieldsString = '<div class=\"dz-fallback\">';\n\n      if (this.options.dictFallbackText) {\n        fieldsString += \"<p>\".concat(this.options.dictFallbackText, \"</p>\");\n      }\n\n      fieldsString += \"<input type=\\\"file\\\" name=\\\"\".concat(this._getParamName(0), \"\\\" \").concat(this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined, \" /><input type=\\\"submit\\\" value=\\\"Upload!\\\"></div>\");\n      var fields = Dropzone.createElement(fieldsString);\n\n      if (this.element.tagName !== \"FORM\") {\n        form = Dropzone.createElement(\"<form action=\\\"\".concat(this.options.url, \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\").concat(this.options.method, \"\\\"></form>\"));\n        form.appendChild(fields);\n      } else {\n        // Make sure that the enctype and method attributes are set properly\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n        this.element.setAttribute(\"method\", this.options.method);\n      }\n\n      return form != null ? form : fields;\n    } // Returns the fallback elements if they exist already\n    //\n    // This code has to pass in IE7 :(\n\n  }, {\n    key: \"getExistingFallback\",\n    value: function getExistingFallback() {\n      var getFallback = function getFallback(elements) {\n        var _iterator4 = dropzone_createForOfIteratorHelper(elements, true),\n            _step4;\n\n        try {\n          for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n            var el = _step4.value;\n\n            if (/(^| )fallback($| )/.test(el.className)) {\n              return el;\n            }\n          }\n        } catch (err) {\n          _iterator4.e(err);\n        } finally {\n          _iterator4.f();\n        }\n      };\n\n      for (var _i = 0, _arr = [\"div\", \"form\"]; _i < _arr.length; _i++) {\n        var tagName = _arr[_i];\n        var fallback;\n\n        if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n          return fallback;\n        }\n      }\n    } // Activates all listeners stored in @listeners\n\n  }, {\n    key: \"setupEventListeners\",\n    value: function setupEventListeners() {\n      return this.listeners.map(function (elementListeners) {\n        return function () {\n          var result = [];\n\n          for (var event in elementListeners.events) {\n            var listener = elementListeners.events[event];\n            result.push(elementListeners.element.addEventListener(event, listener, false));\n          }\n\n          return result;\n        }();\n      });\n    } // Deactivates all listeners stored in @listeners\n\n  }, {\n    key: \"removeEventListeners\",\n    value: function removeEventListeners() {\n      return this.listeners.map(function (elementListeners) {\n        return function () {\n          var result = [];\n\n          for (var event in elementListeners.events) {\n            var listener = elementListeners.events[event];\n            result.push(elementListeners.element.removeEventListener(event, listener, false));\n          }\n\n          return result;\n        }();\n      });\n    } // Removes all event listeners and cancels all files in the queue or being processed.\n\n  }, {\n    key: \"disable\",\n    value: function disable() {\n      var _this3 = this;\n\n      this.clickableElements.forEach(function (element) {\n        return element.classList.remove(\"dz-clickable\");\n      });\n      this.removeEventListeners();\n      this.disabled = true;\n      return this.files.map(function (file) {\n        return _this3.cancelUpload(file);\n      });\n    }\n  }, {\n    key: \"enable\",\n    value: function enable() {\n      delete this.disabled;\n      this.clickableElements.forEach(function (element) {\n        return element.classList.add(\"dz-clickable\");\n      });\n      return this.setupEventListeners();\n    } // Returns a nicely formatted filesize\n\n  }, {\n    key: \"filesize\",\n    value: function filesize(size) {\n      var selectedSize = 0;\n      var selectedUnit = \"b\";\n\n      if (size > 0) {\n        var units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n        for (var i = 0; i < units.length; i++) {\n          var unit = units[i];\n          var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n          if (size >= cutoff) {\n            selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n            selectedUnit = unit;\n            break;\n          }\n        }\n\n        selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n      }\n\n      return \"<strong>\".concat(selectedSize, \"</strong> \").concat(this.options.dictFileSizeUnits[selectedUnit]);\n    } // Adds or removes the `dz-max-files-reached` class from the form.\n\n  }, {\n    key: \"_updateMaxFilesReachedClass\",\n    value: function _updateMaxFilesReachedClass() {\n      if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        if (this.getAcceptedFiles().length === this.options.maxFiles) {\n          this.emit(\"maxfilesreached\", this.files);\n        }\n\n        return this.element.classList.add(\"dz-max-files-reached\");\n      } else {\n        return this.element.classList.remove(\"dz-max-files-reached\");\n      }\n    }\n  }, {\n    key: \"drop\",\n    value: function drop(e) {\n      if (!e.dataTransfer) {\n        return;\n      }\n\n      this.emit(\"drop\", e); // Convert the FileList to an Array\n      // This is necessary for IE11\n\n      var files = [];\n\n      for (var i = 0; i < e.dataTransfer.files.length; i++) {\n        files[i] = e.dataTransfer.files[i];\n      } // Even if it's a folder, files.length will contain the folders.\n\n\n      if (files.length) {\n        var items = e.dataTransfer.items;\n\n        if (items && items.length && items[0].webkitGetAsEntry != null) {\n          // The browser supports dropping of folders, so handle items instead of files\n          this._addFilesFromItems(items);\n        } else {\n          this.handleFiles(files);\n        }\n      }\n\n      this.emit(\"addedfiles\", files);\n    }\n  }, {\n    key: \"paste\",\n    value: function paste(e) {\n      if (__guard__(e != null ? e.clipboardData : undefined, function (x) {\n        return x.items;\n      }) == null) {\n        return;\n      }\n\n      this.emit(\"paste\", e);\n      var items = e.clipboardData.items;\n\n      if (items.length) {\n        return this._addFilesFromItems(items);\n      }\n    }\n  }, {\n    key: \"handleFiles\",\n    value: function handleFiles(files) {\n      var _iterator5 = dropzone_createForOfIteratorHelper(files, true),\n          _step5;\n\n      try {\n        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n          var file = _step5.value;\n          this.addFile(file);\n        }\n      } catch (err) {\n        _iterator5.e(err);\n      } finally {\n        _iterator5.f();\n      }\n    } // When a folder is dropped (or files are pasted), items must be handled\n    // instead of files.\n\n  }, {\n    key: \"_addFilesFromItems\",\n    value: function _addFilesFromItems(items) {\n      var _this4 = this;\n\n      return function () {\n        var result = [];\n\n        var _iterator6 = dropzone_createForOfIteratorHelper(items, true),\n            _step6;\n\n        try {\n          for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n            var item = _step6.value;\n            var entry;\n\n            if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {\n              if (entry.isFile) {\n                result.push(_this4.addFile(item.getAsFile()));\n              } else if (entry.isDirectory) {\n                // Append all files from that directory to files\n                result.push(_this4._addFilesFromDirectory(entry, entry.name));\n              } else {\n                result.push(undefined);\n              }\n            } else if (item.getAsFile != null) {\n              if (item.kind == null || item.kind === \"file\") {\n                result.push(_this4.addFile(item.getAsFile()));\n              } else {\n                result.push(undefined);\n              }\n            } else {\n              result.push(undefined);\n            }\n          }\n        } catch (err) {\n          _iterator6.e(err);\n        } finally {\n          _iterator6.f();\n        }\n\n        return result;\n      }();\n    } // Goes through the directory, and adds each file it finds recursively\n\n  }, {\n    key: \"_addFilesFromDirectory\",\n    value: function _addFilesFromDirectory(directory, path) {\n      var _this5 = this;\n\n      var dirReader = directory.createReader();\n\n      var errorHandler = function errorHandler(error) {\n        return __guardMethod__(console, \"log\", function (o) {\n          return o.log(error);\n        });\n      };\n\n      var readEntries = function readEntries() {\n        return dirReader.readEntries(function (entries) {\n          if (entries.length > 0) {\n            var _iterator7 = dropzone_createForOfIteratorHelper(entries, true),\n                _step7;\n\n            try {\n              for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n                var entry = _step7.value;\n\n                if (entry.isFile) {\n                  entry.file(function (file) {\n                    if (_this5.options.ignoreHiddenFiles && file.name.substring(0, 1) === \".\") {\n                      return;\n                    }\n\n                    file.fullPath = \"\".concat(path, \"/\").concat(file.name);\n                    return _this5.addFile(file);\n                  });\n                } else if (entry.isDirectory) {\n                  _this5._addFilesFromDirectory(entry, \"\".concat(path, \"/\").concat(entry.name));\n                }\n              } // Recursively call readEntries() again, since browser only handle\n              // the first 100 entries.\n              // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n\n            } catch (err) {\n              _iterator7.e(err);\n            } finally {\n              _iterator7.f();\n            }\n\n            readEntries();\n          }\n\n          return null;\n        }, errorHandler);\n      };\n\n      return readEntries();\n    } // If `done()` is called without argument the file is accepted\n    // If you call it with an error message, the file is rejected\n    // (This allows for asynchronous validation)\n    //\n    // This function checks the filesize, and if the file.type passes the\n    // `acceptedFiles` check.\n\n  }, {\n    key: \"accept\",\n    value: function accept(file, done) {\n      if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) {\n        done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n      } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n        done(this.options.dictInvalidFileType);\n      } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n        this.emit(\"maxfilesexceeded\", file);\n      } else {\n        this.options.accept.call(this, file, done);\n      }\n    }\n  }, {\n    key: \"addFile\",\n    value: function addFile(file) {\n      var _this6 = this;\n\n      file.upload = {\n        uuid: Dropzone.uuidv4(),\n        progress: 0,\n        // Setting the total upload size to file.size for the beginning\n        // It's actual different than the size to be transmitted.\n        total: file.size,\n        bytesSent: 0,\n        filename: this._renameFile(file) // Not setting chunking information here, because the acutal data \u2014 and\n        // thus the chunks \u2014 might change if `options.transformFile` is set\n        // and does something to the data.\n\n      };\n      this.files.push(file);\n      file.status = Dropzone.ADDED;\n      this.emit(\"addedfile\", file);\n\n      this._enqueueThumbnail(file);\n\n      this.accept(file, function (error) {\n        if (error) {\n          file.accepted = false;\n\n          _this6._errorProcessing([file], error); // Will set the file.status\n\n        } else {\n          file.accepted = true;\n\n          if (_this6.options.autoQueue) {\n            _this6.enqueueFile(file);\n          } // Will set .accepted = true\n\n        }\n\n        _this6._updateMaxFilesReachedClass();\n      });\n    } // Wrapper for enqueueFile\n\n  }, {\n    key: \"enqueueFiles\",\n    value: function enqueueFiles(files) {\n      var _iterator8 = dropzone_createForOfIteratorHelper(files, true),\n          _step8;\n\n      try {\n        for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n          var file = _step8.value;\n          this.enqueueFile(file);\n        }\n      } catch (err) {\n        _iterator8.e(err);\n      } finally {\n        _iterator8.f();\n      }\n\n      return null;\n    }\n  }, {\n    key: \"enqueueFile\",\n    value: function enqueueFile(file) {\n      var _this7 = this;\n\n      if (file.status === Dropzone.ADDED && file.accepted === true) {\n        file.status = Dropzone.QUEUED;\n\n        if (this.options.autoProcessQueue) {\n          return setTimeout(function () {\n            return _this7.processQueue();\n          }, 0); // Deferring the call\n        }\n      } else {\n        throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n      }\n    }\n  }, {\n    key: \"_enqueueThumbnail\",\n    value: function _enqueueThumbnail(file) {\n      var _this8 = this;\n\n      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n        this._thumbnailQueue.push(file);\n\n        return setTimeout(function () {\n          return _this8._processThumbnailQueue();\n        }, 0); // Deferring the call\n      }\n    }\n  }, {\n    key: \"_processThumbnailQueue\",\n    value: function _processThumbnailQueue() {\n      var _this9 = this;\n\n      if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n        return;\n      }\n\n      this._processingThumbnail = true;\n\n      var file = this._thumbnailQueue.shift();\n\n      return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) {\n        _this9.emit(\"thumbnail\", file, dataUrl);\n\n        _this9._processingThumbnail = false;\n        return _this9._processThumbnailQueue();\n      });\n    } // Can be called by the user to remove a file\n\n  }, {\n    key: \"removeFile\",\n    value: function removeFile(file) {\n      if (file.status === Dropzone.UPLOADING) {\n        this.cancelUpload(file);\n      }\n\n      this.files = without(this.files, file);\n      this.emit(\"removedfile\", file);\n\n      if (this.files.length === 0) {\n        return this.emit(\"reset\");\n      }\n    } // Removes all files that aren't currently processed from the list\n\n  }, {\n    key: \"removeAllFiles\",\n    value: function removeAllFiles(cancelIfNecessary) {\n      // Create a copy of files since removeFile() changes the @files array.\n      if (cancelIfNecessary == null) {\n        cancelIfNecessary = false;\n      }\n\n      var _iterator9 = dropzone_createForOfIteratorHelper(this.files.slice(), true),\n          _step9;\n\n      try {\n        for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n          var file = _step9.value;\n\n          if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n            this.removeFile(file);\n          }\n        }\n      } catch (err) {\n        _iterator9.e(err);\n      } finally {\n        _iterator9.f();\n      }\n\n      return null;\n    } // Resizes an image before it gets sent to the server. This function is the default behavior of\n    // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n    // the resized blob.\n\n  }, {\n    key: \"resizeImage\",\n    value: function resizeImage(file, width, height, resizeMethod, callback) {\n      var _this10 = this;\n\n      return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) {\n        if (canvas == null) {\n          // The image has not been resized\n          return callback(file);\n        } else {\n          var resizeMimeType = _this10.options.resizeMimeType;\n\n          if (resizeMimeType == null) {\n            resizeMimeType = file.type;\n          }\n\n          var resizedDataURL = canvas.toDataURL(resizeMimeType, _this10.options.resizeQuality);\n\n          if (resizeMimeType === \"image/jpeg\" || resizeMimeType === \"image/jpg\") {\n            // Now add the original EXIF information\n            resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n          }\n\n          return callback(Dropzone.dataURItoBlob(resizedDataURL));\n        }\n      });\n    }\n  }, {\n    key: \"createThumbnail\",\n    value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n      var _this11 = this;\n\n      var fileReader = new FileReader();\n\n      fileReader.onload = function () {\n        file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector\n\n        if (file.type === \"image/svg+xml\") {\n          if (callback != null) {\n            callback(fileReader.result);\n          }\n\n          return;\n        }\n\n        _this11.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n      };\n\n      fileReader.readAsDataURL(file);\n    } // `mockFile` needs to have these attributes:\n    //\n    //     { name: 'name', size: 12345, imageUrl: '' }\n    //\n    // `callback` will be invoked when the image has been downloaded and displayed.\n    // `crossOrigin` will be added to the `img` tag when accessing the file.\n\n  }, {\n    key: \"displayExistingFile\",\n    value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) {\n      var _this12 = this;\n\n      var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n      this.emit(\"addedfile\", mockFile);\n      this.emit(\"complete\", mockFile);\n\n      if (!resizeThumbnail) {\n        this.emit(\"thumbnail\", mockFile, imageUrl);\n        if (callback) callback();\n      } else {\n        var onDone = function onDone(thumbnail) {\n          _this12.emit(\"thumbnail\", mockFile, thumbnail);\n\n          if (callback) callback();\n        };\n\n        mockFile.dataURL = imageUrl;\n        this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, this.options.fixOrientation, onDone, crossOrigin);\n      }\n    }\n  }, {\n    key: \"createThumbnailFromUrl\",\n    value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n      var _this13 = this;\n\n      // Not using `new Image` here because of a bug in latest Chrome versions.\n      // See https://github.com/enyo/dropzone/pull/226\n      var img = document.createElement(\"img\");\n\n      if (crossOrigin) {\n        img.crossOrigin = crossOrigin;\n      } // fixOrientation is not needed anymore with browsers handling imageOrientation\n\n\n      fixOrientation = getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\" ? false : fixOrientation;\n\n      img.onload = function () {\n        var loadExif = function loadExif(callback) {\n          return callback(1);\n        };\n\n        if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) {\n          loadExif = function loadExif(callback) {\n            return EXIF.getData(img, function () {\n              return callback(EXIF.getTag(this, \"Orientation\"));\n            });\n          };\n        }\n\n        return loadExif(function (orientation) {\n          file.width = img.width;\n          file.height = img.height;\n\n          var resizeInfo = _this13.options.resize.call(_this13, file, width, height, resizeMethod);\n\n          var canvas = document.createElement(\"canvas\");\n          var ctx = canvas.getContext(\"2d\");\n          canvas.width = resizeInfo.trgWidth;\n          canvas.height = resizeInfo.trgHeight;\n\n          if (orientation > 4) {\n            canvas.width = resizeInfo.trgHeight;\n            canvas.height = resizeInfo.trgWidth;\n          }\n\n          switch (orientation) {\n            case 2:\n              // horizontal flip\n              ctx.translate(canvas.width, 0);\n              ctx.scale(-1, 1);\n              break;\n\n            case 3:\n              // 180\u00B0 rotate left\n              ctx.translate(canvas.width, canvas.height);\n              ctx.rotate(Math.PI);\n              break;\n\n            case 4:\n              // vertical flip\n              ctx.translate(0, canvas.height);\n              ctx.scale(1, -1);\n              break;\n\n            case 5:\n              // vertical flip + 90 rotate right\n              ctx.rotate(0.5 * Math.PI);\n              ctx.scale(1, -1);\n              break;\n\n            case 6:\n              // 90\u00B0 rotate right\n              ctx.rotate(0.5 * Math.PI);\n              ctx.translate(0, -canvas.width);\n              break;\n\n            case 7:\n              // horizontal flip + 90 rotate right\n              ctx.rotate(0.5 * Math.PI);\n              ctx.translate(canvas.height, -canvas.width);\n              ctx.scale(-1, 1);\n              break;\n\n            case 8:\n              // 90\u00B0 rotate left\n              ctx.rotate(-0.5 * Math.PI);\n              ctx.translate(-canvas.height, 0);\n              break;\n          } // This is a bugfix for iOS' scaling bug.\n\n\n          drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n          var thumbnail = canvas.toDataURL(\"image/png\");\n\n          if (callback != null) {\n            return callback(thumbnail, canvas);\n          }\n        });\n      };\n\n      if (callback != null) {\n        img.onerror = callback;\n      }\n\n      return img.src = file.dataURL;\n    } // Goes through the queue and processes files if there aren't too many already.\n\n  }, {\n    key: \"processQueue\",\n    value: function processQueue() {\n      var parallelUploads = this.options.parallelUploads;\n      var processingLength = this.getUploadingFiles().length;\n      var i = processingLength; // There are already at least as many files uploading than should be\n\n      if (processingLength >= parallelUploads) {\n        return;\n      }\n\n      var queuedFiles = this.getQueuedFiles();\n\n      if (!(queuedFiles.length > 0)) {\n        return;\n      }\n\n      if (this.options.uploadMultiple) {\n        // The files should be uploaded in one request\n        return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n      } else {\n        while (i < parallelUploads) {\n          if (!queuedFiles.length) {\n            return;\n          } // Nothing left to process\n\n\n          this.processFile(queuedFiles.shift());\n          i++;\n        }\n      }\n    } // Wrapper for `processFiles`\n\n  }, {\n    key: \"processFile\",\n    value: function processFile(file) {\n      return this.processFiles([file]);\n    } // Loads the file, then calls finishedLoading()\n\n  }, {\n    key: \"processFiles\",\n    value: function processFiles(files) {\n      var _iterator10 = dropzone_createForOfIteratorHelper(files, true),\n          _step10;\n\n      try {\n        for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n          var file = _step10.value;\n          file.processing = true; // Backwards compatibility\n\n          file.status = Dropzone.UPLOADING;\n          this.emit(\"processing\", file);\n        }\n      } catch (err) {\n        _iterator10.e(err);\n      } finally {\n        _iterator10.f();\n      }\n\n      if (this.options.uploadMultiple) {\n        this.emit(\"processingmultiple\", files);\n      }\n\n      return this.uploadFiles(files);\n    }\n  }, {\n    key: \"_getFilesWithXhr\",\n    value: function _getFilesWithXhr(xhr) {\n      var files;\n      return files = this.files.filter(function (file) {\n        return file.xhr === xhr;\n      }).map(function (file) {\n        return file;\n      });\n    } // Cancels the file upload and sets the status to CANCELED\n    // **if** the file is actually being uploaded.\n    // If it's still in the queue, the file is being removed from it and the status\n    // set to CANCELED.\n\n  }, {\n    key: \"cancelUpload\",\n    value: function cancelUpload(file) {\n      if (file.status === Dropzone.UPLOADING) {\n        var groupedFiles = this._getFilesWithXhr(file.xhr);\n\n        var _iterator11 = dropzone_createForOfIteratorHelper(groupedFiles, true),\n            _step11;\n\n        try {\n          for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n            var groupedFile = _step11.value;\n            groupedFile.status = Dropzone.CANCELED;\n          }\n        } catch (err) {\n          _iterator11.e(err);\n        } finally {\n          _iterator11.f();\n        }\n\n        if (typeof file.xhr !== \"undefined\") {\n          file.xhr.abort();\n        }\n\n        var _iterator12 = dropzone_createForOfIteratorHelper(groupedFiles, true),\n            _step12;\n\n        try {\n          for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n            var _groupedFile = _step12.value;\n            this.emit(\"canceled\", _groupedFile);\n          }\n        } catch (err) {\n          _iterator12.e(err);\n        } finally {\n          _iterator12.f();\n        }\n\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", groupedFiles);\n        }\n      } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {\n        file.status = Dropzone.CANCELED;\n        this.emit(\"canceled\", file);\n\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", [file]);\n        }\n      }\n\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    }\n  }, {\n    key: \"resolveOption\",\n    value: function resolveOption(option) {\n      if (typeof option === \"function\") {\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        return option.apply(this, args);\n      }\n\n      return option;\n    }\n  }, {\n    key: \"uploadFile\",\n    value: function uploadFile(file) {\n      return this.uploadFiles([file]);\n    }\n  }, {\n    key: \"uploadFiles\",\n    value: function uploadFiles(files) {\n      var _this14 = this;\n\n      this._transformFiles(files, function (transformedFiles) {\n        if (_this14.options.chunking) {\n          // Chunking is not allowed to be used with `uploadMultiple` so we know\n          // that there is only __one__file.\n          var transformedFile = transformedFiles[0];\n          files[0].upload.chunked = _this14.options.chunking && (_this14.options.forceChunking || transformedFile.size > _this14.options.chunkSize);\n          files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this14.options.chunkSize);\n        }\n\n        if (files[0].upload.chunked) {\n          // This file should be sent in chunks!\n          // If the chunking option is set, we **know** that there can only be **one** file, since\n          // uploadMultiple is not allowed with this option.\n          var file = files[0];\n          var _transformedFile = transformedFiles[0];\n          var startedChunkCount = 0;\n          file.upload.chunks = [];\n\n          var handleNextChunk = function handleNextChunk() {\n            var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet.\n\n            while (file.upload.chunks[chunkIndex] !== undefined) {\n              chunkIndex++;\n            } // This means, that all chunks have already been started.\n\n\n            if (chunkIndex >= file.upload.totalChunkCount) return;\n            startedChunkCount++;\n            var start = chunkIndex * _this14.options.chunkSize;\n            var end = Math.min(start + _this14.options.chunkSize, _transformedFile.size);\n            var dataBlock = {\n              name: _this14._getParamName(0),\n              data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end),\n              filename: file.upload.filename,\n              chunkIndex: chunkIndex\n            };\n            file.upload.chunks[chunkIndex] = {\n              file: file,\n              index: chunkIndex,\n              dataBlock: dataBlock,\n              // In case we want to retry.\n              status: Dropzone.UPLOADING,\n              progress: 0,\n              retries: 0 // The number of times this block has been retried.\n\n            };\n\n            _this14._uploadData(files, [dataBlock]);\n          };\n\n          file.upload.finishedChunkUpload = function (chunk, response) {\n            var allFinished = true;\n            chunk.status = Dropzone.SUCCESS; // Clear the data from the chunk\n\n            chunk.dataBlock = null; // Leaving this reference to xhr intact here will cause memory leaks in some browsers\n\n            chunk.xhr = null;\n\n            for (var i = 0; i < file.upload.totalChunkCount; i++) {\n              if (file.upload.chunks[i] === undefined) {\n                return handleNextChunk();\n              }\n\n              if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n                allFinished = false;\n              }\n            }\n\n            if (allFinished) {\n              _this14.options.chunksUploaded(file, function () {\n                _this14._finished(files, response, null);\n              });\n            }\n          };\n\n          if (_this14.options.parallelChunkUploads) {\n            for (var i = 0; i < file.upload.totalChunkCount; i++) {\n              handleNextChunk();\n            }\n          } else {\n            handleNextChunk();\n          }\n        } else {\n          var dataBlocks = [];\n\n          for (var _i2 = 0; _i2 < files.length; _i2++) {\n            dataBlocks[_i2] = {\n              name: _this14._getParamName(_i2),\n              data: transformedFiles[_i2],\n              filename: files[_i2].upload.filename\n            };\n          }\n\n          _this14._uploadData(files, dataBlocks);\n        }\n      });\n    } /// Returns the right chunk for given file and xhr\n\n  }, {\n    key: \"_getChunk\",\n    value: function _getChunk(file, xhr) {\n      for (var i = 0; i < file.upload.totalChunkCount; i++) {\n        if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {\n          return file.upload.chunks[i];\n        }\n      }\n    } // This function actually uploads the file(s) to the server.\n    // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed\n    // files, or individual chunks for chunked upload).\n\n  }, {\n    key: \"_uploadData\",\n    value: function _uploadData(files, dataBlocks) {\n      var _this15 = this;\n\n      var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later.\n\n      var _iterator13 = dropzone_createForOfIteratorHelper(files, true),\n          _step13;\n\n      try {\n        for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n          var file = _step13.value;\n          file.xhr = xhr;\n        }\n      } catch (err) {\n        _iterator13.e(err);\n      } finally {\n        _iterator13.f();\n      }\n\n      if (files[0].upload.chunked) {\n        // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk\n        files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n      }\n\n      var method = this.resolveOption(this.options.method, files);\n      var url = this.resolveOption(this.options.url, files);\n      xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n\n      var timeout = this.resolveOption(this.options.timeout, files);\n      if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n\n      xhr.withCredentials = !!this.options.withCredentials;\n\n      xhr.onload = function (e) {\n        _this15._finishedUploading(files, xhr, e);\n      };\n\n      xhr.ontimeout = function () {\n        _this15._handleUploadError(files, xhr, \"Request timedout after \".concat(_this15.options.timeout / 1000, \" seconds\"));\n      };\n\n      xhr.onerror = function () {\n        _this15._handleUploadError(files, xhr);\n      }; // Some browsers do not have the .upload property\n\n\n      var progressObj = xhr.upload != null ? xhr.upload : xhr;\n\n      progressObj.onprogress = function (e) {\n        return _this15._updateFilesUploadProgress(files, xhr, e);\n      };\n\n      var headers = {\n        Accept: \"application/json\",\n        \"Cache-Control\": \"no-cache\",\n        \"X-Requested-With\": \"XMLHttpRequest\"\n      };\n\n      if (this.options.headers) {\n        Dropzone.extend(headers, this.options.headers);\n      }\n\n      for (var headerName in headers) {\n        var headerValue = headers[headerName];\n\n        if (headerValue) {\n          xhr.setRequestHeader(headerName, headerValue);\n        }\n      }\n\n      var formData = new FormData(); // Adding all @options parameters\n\n      if (this.options.params) {\n        var additionalParams = this.options.params;\n\n        if (typeof additionalParams === \"function\") {\n          additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n        }\n\n        for (var key in additionalParams) {\n          var value = additionalParams[key];\n\n          if (Array.isArray(value)) {\n            // The additional parameter contains an array,\n            // so lets iterate over it to attach each value\n            // individually.\n            for (var i = 0; i < value.length; i++) {\n              formData.append(key, value[i]);\n            }\n          } else {\n            formData.append(key, value);\n          }\n        }\n      } // Let the user add additional data if necessary\n\n\n      var _iterator14 = dropzone_createForOfIteratorHelper(files, true),\n          _step14;\n\n      try {\n        for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n          var _file = _step14.value;\n          this.emit(\"sending\", _file, xhr, formData);\n        }\n      } catch (err) {\n        _iterator14.e(err);\n      } finally {\n        _iterator14.f();\n      }\n\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr, formData);\n      }\n\n      this._addFormElementData(formData); // Finally add the files\n      // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n\n\n      for (var _i3 = 0; _i3 < dataBlocks.length; _i3++) {\n        var dataBlock = dataBlocks[_i3];\n        formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n      }\n\n      this.submitRequest(xhr, formData, files);\n    } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n\n  }, {\n    key: \"_transformFiles\",\n    value: function _transformFiles(files, done) {\n      var _this16 = this;\n\n      var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n\n      var doneCounter = 0;\n\n      var _loop = function _loop(i) {\n        _this16.options.transformFile.call(_this16, files[i], function (transformedFile) {\n          transformedFiles[i] = transformedFile;\n\n          if (++doneCounter === files.length) {\n            done(transformedFiles);\n          }\n        });\n      };\n\n      for (var i = 0; i < files.length; i++) {\n        _loop(i);\n      }\n    } // Takes care of adding other input elements of the form to the AJAX request\n\n  }, {\n    key: \"_addFormElementData\",\n    value: function _addFormElementData(formData) {\n      // Take care of other input elements\n      if (this.element.tagName === \"FORM\") {\n        var _iterator15 = dropzone_createForOfIteratorHelper(this.element.querySelectorAll(\"input, textarea, select, button\"), true),\n            _step15;\n\n        try {\n          for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n            var input = _step15.value;\n            var inputName = input.getAttribute(\"name\");\n            var inputType = input.getAttribute(\"type\");\n            if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it.\n\n            if (typeof inputName === \"undefined\" || inputName === null) continue;\n\n            if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n              // Possibly multiple values\n              var _iterator16 = dropzone_createForOfIteratorHelper(input.options, true),\n                  _step16;\n\n              try {\n                for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n                  var option = _step16.value;\n\n                  if (option.selected) {\n                    formData.append(inputName, option.value);\n                  }\n                }\n              } catch (err) {\n                _iterator16.e(err);\n              } finally {\n                _iterator16.f();\n              }\n            } else if (!inputType || inputType !== \"checkbox\" && inputType !== \"radio\" || input.checked) {\n              formData.append(inputName, input.value);\n            }\n          }\n        } catch (err) {\n          _iterator15.e(err);\n        } finally {\n          _iterator15.f();\n        }\n      }\n    } // Invoked when there is new progress information about given files.\n    // If e is not provided, it is assumed that the upload is finished.\n\n  }, {\n    key: \"_updateFilesUploadProgress\",\n    value: function _updateFilesUploadProgress(files, xhr, e) {\n      if (!files[0].upload.chunked) {\n        // Handle file uploads without chunking\n        var _iterator17 = dropzone_createForOfIteratorHelper(files, true),\n            _step17;\n\n        try {\n          for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n            var file = _step17.value;\n\n            if (file.upload.total && file.upload.bytesSent && file.upload.bytesSent == file.upload.total) {\n              // If both, the `total` and `bytesSent` have already been set, and\n              // they are equal (meaning progress is at 100%), we can skip this\n              // file, since an upload progress shouldn't go down.\n              continue;\n            }\n\n            if (e) {\n              file.upload.progress = 100 * e.loaded / e.total;\n              file.upload.total = e.total;\n              file.upload.bytesSent = e.loaded;\n            } else {\n              // No event, so we're at 100%\n              file.upload.progress = 100;\n              file.upload.bytesSent = file.upload.total;\n            }\n\n            this.emit(\"uploadprogress\", file, file.upload.progress, file.upload.bytesSent);\n          }\n        } catch (err) {\n          _iterator17.e(err);\n        } finally {\n          _iterator17.f();\n        }\n      } else {\n        // Handle chunked file uploads\n        // Chunked upload is not compatible with uploading multiple files in one\n        // request, so we know there's only one file.\n        var _file2 = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk\n        // progress.\n\n        var chunk = this._getChunk(_file2, xhr);\n\n        if (e) {\n          chunk.progress = 100 * e.loaded / e.total;\n          chunk.total = e.total;\n          chunk.bytesSent = e.loaded;\n        } else {\n          // No event, so we're at 100%\n          chunk.progress = 100;\n          chunk.bytesSent = chunk.total;\n        } // Now tally the *file* upload progress from its individual chunks\n\n\n        _file2.upload.progress = 0;\n        _file2.upload.total = 0;\n        _file2.upload.bytesSent = 0;\n\n        for (var i = 0; i < _file2.upload.totalChunkCount; i++) {\n          if (_file2.upload.chunks[i] && typeof _file2.upload.chunks[i].progress !== \"undefined\") {\n            _file2.upload.progress += _file2.upload.chunks[i].progress;\n            _file2.upload.total += _file2.upload.chunks[i].total;\n            _file2.upload.bytesSent += _file2.upload.chunks[i].bytesSent;\n          }\n        } // Since the process is a percentage, we need to divide by the amount of\n        // chunks we've used.\n\n\n        _file2.upload.progress = _file2.upload.progress / _file2.upload.totalChunkCount;\n        this.emit(\"uploadprogress\", _file2, _file2.upload.progress, _file2.upload.bytesSent);\n      }\n    }\n  }, {\n    key: \"_finishedUploading\",\n    value: function _finishedUploading(files, xhr, e) {\n      var response;\n\n      if (files[0].status === Dropzone.CANCELED) {\n        return;\n      }\n\n      if (xhr.readyState !== 4) {\n        return;\n      }\n\n      if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n        response = xhr.responseText;\n\n        if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n          try {\n            response = JSON.parse(response);\n          } catch (error) {\n            e = error;\n            response = \"Invalid JSON response from server.\";\n          }\n        }\n      }\n\n      this._updateFilesUploadProgress(files, xhr);\n\n      if (!(200 <= xhr.status && xhr.status < 300)) {\n        this._handleUploadError(files, xhr, response);\n      } else {\n        if (files[0].upload.chunked) {\n          files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr), response);\n        } else {\n          this._finished(files, response, e);\n        }\n      }\n    }\n  }, {\n    key: \"_handleUploadError\",\n    value: function _handleUploadError(files, xhr, response) {\n      if (files[0].status === Dropzone.CANCELED) {\n        return;\n      }\n\n      if (files[0].upload.chunked && this.options.retryChunks) {\n        var chunk = this._getChunk(files[0], xhr);\n\n        if (chunk.retries++ < this.options.retryChunksLimit) {\n          this._uploadData(files, [chunk.dataBlock]);\n\n          return;\n        } else {\n          console.warn(\"Retried this chunk too often. Giving up.\");\n        }\n      }\n\n      this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n    }\n  }, {\n    key: \"submitRequest\",\n    value: function submitRequest(xhr, formData, files) {\n      if (xhr.readyState != 1) {\n        console.warn(\"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\");\n        return;\n      }\n\n      xhr.send(formData);\n    } // Called internally when processing is finished.\n    // Individual callbacks have to be called in the appropriate sections.\n\n  }, {\n    key: \"_finished\",\n    value: function _finished(files, responseText, e) {\n      var _iterator18 = dropzone_createForOfIteratorHelper(files, true),\n          _step18;\n\n      try {\n        for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n          var file = _step18.value;\n          file.status = Dropzone.SUCCESS;\n          this.emit(\"success\", file, responseText, e);\n          this.emit(\"complete\", file);\n        }\n      } catch (err) {\n        _iterator18.e(err);\n      } finally {\n        _iterator18.f();\n      }\n\n      if (this.options.uploadMultiple) {\n        this.emit(\"successmultiple\", files, responseText, e);\n        this.emit(\"completemultiple\", files);\n      }\n\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    } // Called internally when processing is finished.\n    // Individual callbacks have to be called in the appropriate sections.\n\n  }, {\n    key: \"_errorProcessing\",\n    value: function _errorProcessing(files, message, xhr) {\n      var _iterator19 = dropzone_createForOfIteratorHelper(files, true),\n          _step19;\n\n      try {\n        for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n          var file = _step19.value;\n          file.status = Dropzone.ERROR;\n          this.emit(\"error\", file, message, xhr);\n          this.emit(\"complete\", file);\n        }\n      } catch (err) {\n        _iterator19.e(err);\n      } finally {\n        _iterator19.f();\n      }\n\n      if (this.options.uploadMultiple) {\n        this.emit(\"errormultiple\", files, message, xhr);\n        this.emit(\"completemultiple\", files);\n      }\n\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    }\n  }], [{\n    key: \"initClass\",\n    value: function initClass() {\n      // Exposing the emitter class, mainly for tests\n      this.prototype.Emitter = Emitter;\n      /*\n       This is a list of all available events you can register on a dropzone object.\n        You can register an event handler like this:\n        dropzone.on(\"dragEnter\", function() { });\n        */\n\n      this.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n      this.prototype._thumbnailQueue = [];\n      this.prototype._processingThumbnail = false;\n    } // global utility\n\n  }, {\n    key: \"extend\",\n    value: function extend(target) {\n      for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        objects[_key2 - 1] = arguments[_key2];\n      }\n\n      for (var _i4 = 0, _objects = objects; _i4 < _objects.length; _i4++) {\n        var object = _objects[_i4];\n\n        for (var key in object) {\n          var val = object[key];\n          target[key] = val;\n        }\n      }\n\n      return target;\n    }\n  }, {\n    key: \"uuidv4\",\n    value: function uuidv4() {\n      return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n        var r = Math.random() * 16 | 0,\n            v = c === \"x\" ? r : r & 0x3 | 0x8;\n        return v.toString(16);\n      });\n    }\n  }]);\n\n  return Dropzone;\n}(Emitter);\n\n\nDropzone.initClass();\nDropzone.version = \"5.9.3\"; // This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n//     Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// To disable autoDiscover for a specific element, you can set `false` as an option:\n//\n//     Dropzone.options.myDisabledElementId = false;\n//\n// And in html:\n//\n//     <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\n\nDropzone.options = {}; // Returns the options for an element or undefined if none available.\n\nDropzone.optionsForElement = function (element) {\n  // Get the `Dropzone.options.elementId` for this element if it exists\n  if (element.getAttribute(\"id\")) {\n    return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n  } else {\n    return undefined;\n  }\n}; // Holds a list of all dropzone instances\n\n\nDropzone.instances = []; // Returns the dropzone for given element if any\n\nDropzone.forElement = function (element) {\n  if (typeof element === \"string\") {\n    element = document.querySelector(element);\n  }\n\n  if ((element != null ? element.dropzone : undefined) == null) {\n    throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n  }\n\n  return element.dropzone;\n}; // Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.\n\n\nDropzone.autoDiscover = true; // Looks for all .dropzone elements and creates a dropzone for them\n\nDropzone.discover = function () {\n  var dropzones;\n\n  if (document.querySelectorAll) {\n    dropzones = document.querySelectorAll(\".dropzone\");\n  } else {\n    dropzones = []; // IE :(\n\n    var checkElements = function checkElements(elements) {\n      return function () {\n        var result = [];\n\n        var _iterator20 = dropzone_createForOfIteratorHelper(elements, true),\n            _step20;\n\n        try {\n          for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n            var el = _step20.value;\n\n            if (/(^| )dropzone($| )/.test(el.className)) {\n              result.push(dropzones.push(el));\n            } else {\n              result.push(undefined);\n            }\n          }\n        } catch (err) {\n          _iterator20.e(err);\n        } finally {\n          _iterator20.f();\n        }\n\n        return result;\n      }();\n    };\n\n    checkElements(document.getElementsByTagName(\"div\"));\n    checkElements(document.getElementsByTagName(\"form\"));\n  }\n\n  return function () {\n    var result = [];\n\n    var _iterator21 = dropzone_createForOfIteratorHelper(dropzones, true),\n        _step21;\n\n    try {\n      for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n        var dropzone = _step21.value;\n\n        // Create a dropzone unless auto discover has been disabled for specific element\n        if (Dropzone.optionsForElement(dropzone) !== false) {\n          result.push(new Dropzone(dropzone));\n        } else {\n          result.push(undefined);\n        }\n      }\n    } catch (err) {\n      _iterator21.e(err);\n    } finally {\n      _iterator21.f();\n    }\n\n    return result;\n  }();\n}; // Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n\n\nDropzone.blockedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n/opera.*(Macintosh|Windows Phone).*version\\/12/i]; // Checks if the browser is supported\n\nDropzone.isBrowserSupported = function () {\n  var capableBrowser = true;\n\n  if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n    if (!(\"classList\" in document.createElement(\"a\"))) {\n      capableBrowser = false;\n    } else {\n      if (Dropzone.blacklistedBrowsers !== undefined) {\n        // Since this has been renamed, this makes sure we don't break older\n        // configuration.\n        Dropzone.blockedBrowsers = Dropzone.blacklistedBrowsers;\n      } // The browser supports the API, but may be blocked.\n\n\n      var _iterator22 = dropzone_createForOfIteratorHelper(Dropzone.blockedBrowsers, true),\n          _step22;\n\n      try {\n        for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n          var regex = _step22.value;\n\n          if (regex.test(navigator.userAgent)) {\n            capableBrowser = false;\n            continue;\n          }\n        }\n      } catch (err) {\n        _iterator22.e(err);\n      } finally {\n        _iterator22.f();\n      }\n    }\n  } else {\n    capableBrowser = false;\n  }\n\n  return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n  // convert base64 to raw binary data held in a string\n  // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n  var byteString = atob(dataURI.split(\",\")[1]); // separate out the mime component\n\n  var mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0]; // write the bytes of the string to an ArrayBuffer\n\n  var ab = new ArrayBuffer(byteString.length);\n  var ia = new Uint8Array(ab);\n\n  for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n    ia[i] = byteString.charCodeAt(i);\n  } // write the ArrayBuffer to a blob\n\n\n  return new Blob([ab], {\n    type: mimeString\n  });\n}; // Returns an array without the rejected item\n\n\nvar without = function without(list, rejectedItem) {\n  return list.filter(function (item) {\n    return item !== rejectedItem;\n  }).map(function (item) {\n    return item;\n  });\n}; // abc-def_ghi -> abcDefGhi\n\n\nvar camelize = function camelize(str) {\n  return str.replace(/[\\-_](\\w)/g, function (match) {\n    return match.charAt(1).toUpperCase();\n  });\n}; // Creates an element from string\n\n\nDropzone.createElement = function (string) {\n  var div = document.createElement(\"div\");\n  div.innerHTML = string;\n  return div.childNodes[0];\n}; // Tests if given element is inside (or simply is) the container\n\n\nDropzone.elementInside = function (element, container) {\n  if (element === container) {\n    return true;\n  } // Coffeescript doesn't support do/while loops\n\n\n  while (element = element.parentNode) {\n    if (element === container) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nDropzone.getElement = function (el, name) {\n  var element;\n\n  if (typeof el === \"string\") {\n    element = document.querySelector(el);\n  } else if (el.nodeType != null) {\n    element = el;\n  }\n\n  if (element == null) {\n    throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector or a plain HTML element.\"));\n  }\n\n  return element;\n};\n\nDropzone.getElements = function (els, name) {\n  var el, elements;\n\n  if (els instanceof Array) {\n    elements = [];\n\n    try {\n      var _iterator23 = dropzone_createForOfIteratorHelper(els, true),\n          _step23;\n\n      try {\n        for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n          el = _step23.value;\n          elements.push(this.getElement(el, name));\n        }\n      } catch (err) {\n        _iterator23.e(err);\n      } finally {\n        _iterator23.f();\n      }\n    } catch (e) {\n      elements = null;\n    }\n  } else if (typeof els === \"string\") {\n    elements = [];\n\n    var _iterator24 = dropzone_createForOfIteratorHelper(document.querySelectorAll(els), true),\n        _step24;\n\n    try {\n      for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n        el = _step24.value;\n        elements.push(el);\n      }\n    } catch (err) {\n      _iterator24.e(err);\n    } finally {\n      _iterator24.f();\n    }\n  } else if (els.nodeType != null) {\n    elements = [els];\n  }\n\n  if (elements == null || !elements.length) {\n    throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\"));\n  }\n\n  return elements;\n}; // Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\n\n\nDropzone.confirm = function (question, accepted, rejected) {\n  if (window.confirm(question)) {\n    return accepted();\n  } else if (rejected != null) {\n    return rejected();\n  }\n}; // Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\n\n\nDropzone.isValidFile = function (file, acceptedFiles) {\n  if (!acceptedFiles) {\n    return true;\n  } // If there are no accepted mime types, it's OK\n\n\n  acceptedFiles = acceptedFiles.split(\",\");\n  var mimeType = file.type;\n  var baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n  var _iterator25 = dropzone_createForOfIteratorHelper(acceptedFiles, true),\n      _step25;\n\n  try {\n    for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n      var validType = _step25.value;\n      validType = validType.trim();\n\n      if (validType.charAt(0) === \".\") {\n        if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n          return true;\n        }\n      } else if (/\\/\\*$/.test(validType)) {\n        // This is something like a image/* mime type\n        if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n          return true;\n        }\n      } else {\n        if (mimeType === validType) {\n          return true;\n        }\n      }\n    }\n  } catch (err) {\n    _iterator25.e(err);\n  } finally {\n    _iterator25.f();\n  }\n\n  return false;\n}; // Augment jQuery\n\n\nif (typeof jQuery !== \"undefined\" && jQuery !== null) {\n  jQuery.fn.dropzone = function (options) {\n    return this.each(function () {\n      return new Dropzone(this, options);\n    });\n  };\n} // Dropzone file status codes\n\n\nDropzone.ADDED = \"added\";\nDropzone.QUEUED = \"queued\"; // For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\n\nDropzone.ACCEPTED = Dropzone.QUEUED;\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\n\nvar detectVerticalSquash = function detectVerticalSquash(img) {\n  var iw = img.naturalWidth;\n  var ih = img.naturalHeight;\n  var canvas = document.createElement(\"canvas\");\n  canvas.width = 1;\n  canvas.height = ih;\n  var ctx = canvas.getContext(\"2d\");\n  ctx.drawImage(img, 0, 0);\n\n  var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih),\n      data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically.\n\n\n  var sy = 0;\n  var ey = ih;\n  var py = ih;\n\n  while (py > sy) {\n    var alpha = data[(py - 1) * 4 + 3];\n\n    if (alpha === 0) {\n      ey = py;\n    } else {\n      sy = py;\n    }\n\n    py = ey + sy >> 1;\n  }\n\n  var ratio = py / ih;\n\n  if (ratio === 0) {\n    return 1;\n  } else {\n    return ratio;\n  }\n}; // A replacement for context.drawImage\n// (args are for source and destination).\n\n\nvar drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n  var vertSquashRatio = detectVerticalSquash(img);\n  return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n}; // Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\n\n\nvar ExifRestore = /*#__PURE__*/function () {\n  function ExifRestore() {\n    dropzone_classCallCheck(this, ExifRestore);\n  }\n\n  dropzone_createClass(ExifRestore, null, [{\n    key: \"initClass\",\n    value: function initClass() {\n      this.KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n    }\n  }, {\n    key: \"encode64\",\n    value: function encode64(input) {\n      var output = \"\";\n      var chr1 = undefined;\n      var chr2 = undefined;\n      var chr3 = \"\";\n      var enc1 = undefined;\n      var enc2 = undefined;\n      var enc3 = undefined;\n      var enc4 = \"\";\n      var i = 0;\n\n      while (true) {\n        chr1 = input[i++];\n        chr2 = input[i++];\n        chr3 = input[i++];\n        enc1 = chr1 >> 2;\n        enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n        enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n        enc4 = chr3 & 63;\n\n        if (isNaN(chr2)) {\n          enc3 = enc4 = 64;\n        } else if (isNaN(chr3)) {\n          enc4 = 64;\n        }\n\n        output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n        chr1 = chr2 = chr3 = \"\";\n        enc1 = enc2 = enc3 = enc4 = \"\";\n\n        if (!(i < input.length)) {\n          break;\n        }\n      }\n\n      return output;\n    }\n  }, {\n    key: \"restore\",\n    value: function restore(origFileBase64, resizedFileBase64) {\n      if (!origFileBase64.match(\"data:image/jpeg;base64,\")) {\n        return resizedFileBase64;\n      }\n\n      var rawImage = this.decode64(origFileBase64.replace(\"data:image/jpeg;base64,\", \"\"));\n      var segments = this.slice2Segments(rawImage);\n      var image = this.exifManipulation(resizedFileBase64, segments);\n      return \"data:image/jpeg;base64,\".concat(this.encode64(image));\n    }\n  }, {\n    key: \"exifManipulation\",\n    value: function exifManipulation(resizedFileBase64, segments) {\n      var exifArray = this.getExifArray(segments);\n      var newImageArray = this.insertExif(resizedFileBase64, exifArray);\n      var aBuffer = new Uint8Array(newImageArray);\n      return aBuffer;\n    }\n  }, {\n    key: \"getExifArray\",\n    value: function getExifArray(segments) {\n      var seg = undefined;\n      var x = 0;\n\n      while (x < segments.length) {\n        seg = segments[x];\n\n        if (seg[0] === 255 & seg[1] === 225) {\n          return seg;\n        }\n\n        x++;\n      }\n\n      return [];\n    }\n  }, {\n    key: \"insertExif\",\n    value: function insertExif(resizedFileBase64, exifArray) {\n      var imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n      var buf = this.decode64(imageData);\n      var separatePoint = buf.indexOf(255, 3);\n      var mae = buf.slice(0, separatePoint);\n      var ato = buf.slice(separatePoint);\n      var array = mae;\n      array = array.concat(exifArray);\n      array = array.concat(ato);\n      return array;\n    }\n  }, {\n    key: \"slice2Segments\",\n    value: function slice2Segments(rawImageArray) {\n      var head = 0;\n      var segments = [];\n\n      while (true) {\n        var length;\n\n        if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {\n          break;\n        }\n\n        if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {\n          head += 2;\n        } else {\n          length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n          var endPoint = head + length + 2;\n          var seg = rawImageArray.slice(head, endPoint);\n          segments.push(seg);\n          head = endPoint;\n        }\n\n        if (head > rawImageArray.length) {\n          break;\n        }\n      }\n\n      return segments;\n    }\n  }, {\n    key: \"decode64\",\n    value: function decode64(input) {\n      var output = \"\";\n      var chr1 = undefined;\n      var chr2 = undefined;\n      var chr3 = \"\";\n      var enc1 = undefined;\n      var enc2 = undefined;\n      var enc3 = undefined;\n      var enc4 = \"\";\n      var i = 0;\n      var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n\n      var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n\n      if (base64test.exec(input)) {\n        console.warn(\"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\");\n      }\n\n      input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n      while (true) {\n        enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n        enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n        enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n        enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n        chr1 = enc1 << 2 | enc2 >> 4;\n        chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n        chr3 = (enc3 & 3) << 6 | enc4;\n        buf.push(chr1);\n\n        if (enc3 !== 64) {\n          buf.push(chr2);\n        }\n\n        if (enc4 !== 64) {\n          buf.push(chr3);\n        }\n\n        chr1 = chr2 = chr3 = \"\";\n        enc1 = enc2 = enc3 = enc4 = \"\";\n\n        if (!(i < input.length)) {\n          break;\n        }\n      }\n\n      return buf;\n    }\n  }]);\n\n  return ExifRestore;\n}();\n\nExifRestore.initClass();\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n// @win window reference\n// @fn function reference\n\nvar contentLoaded = function contentLoaded(win, fn) {\n  var done = false;\n  var top = true;\n  var doc = win.document;\n  var root = doc.documentElement;\n  var add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n  var rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n  var pre = doc.addEventListener ? \"\" : \"on\";\n\n  var init = function init(e) {\n    if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n      return;\n    }\n\n    (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n\n    if (!done && (done = true)) {\n      return fn.call(win, e.type || e);\n    }\n  };\n\n  var poll = function poll() {\n    try {\n      root.doScroll(\"left\");\n    } catch (e) {\n      setTimeout(poll, 50);\n      return;\n    }\n\n    return init(\"poll\");\n  };\n\n  if (doc.readyState !== \"complete\") {\n    if (doc.createEventObject && root.doScroll) {\n      try {\n        top = !win.frameElement;\n      } catch (error) {}\n\n      if (top) {\n        poll();\n      }\n    }\n\n    doc[add](pre + \"DOMContentLoaded\", init, false);\n    doc[add](pre + \"readystatechange\", init, false);\n    return win[add](pre + \"load\", init, false);\n  }\n}; // As a single function to be able to write tests.\n\n\nDropzone._autoDiscoverFunction = function () {\n  if (Dropzone.autoDiscover) {\n    return Dropzone.discover();\n  }\n};\n\ncontentLoaded(window, Dropzone._autoDiscoverFunction);\n\nfunction __guard__(value, transform) {\n  return typeof value !== \"undefined\" && value !== null ? transform(value) : undefined;\n}\n\nfunction __guardMethod__(obj, methodName, transform) {\n  if (typeof obj !== \"undefined\" && obj !== null && typeof obj[methodName] === \"function\") {\n    return transform(obj, methodName);\n  } else {\n    return undefined;\n  }\n}\n\n\n;// CONCATENATED MODULE: ./tool/dropzone.dist.js\n /// Make Dropzone a global variable.\n\nwindow.Dropzone = Dropzone;\n/* harmony default export */ var dropzone_dist = (Dropzone);\n\n}();\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : (global = typeof globalThis !== \"undefined\" ? globalThis : global || self, \n  factory(global.ActiveStorage = {}));\n})(this, (function(exports) {\n  \"use strict\";\n  var sparkMd5 = {\n    exports: {}\n  };\n  (function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })((function(undefined$1) {\n      var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n      function md5cycle(x, k) {\n        var a = x[0], b = x[1], c = x[2], d = x[3];\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n      }\n      function md5blk(s) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n      }\n      function md5blk_array(a) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n      }\n      function md51(s) {\n        var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function md51_array(a) {\n        var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n        length = a.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= a[i] << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function rhex(n) {\n        var s = \"\", j;\n        for (j = 0; j < 4; j += 1) {\n          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n        }\n        return s;\n      }\n      function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n          x[i] = rhex(x[i]);\n        }\n        return x.join(\"\");\n      }\n      if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n      if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n        (function() {\n          function clamp(val, length) {\n            val = val | 0 || 0;\n            if (val < 0) {\n              return Math.max(val + length, 0);\n            }\n            return Math.min(val, length);\n          }\n          ArrayBuffer.prototype.slice = function(from, to) {\n            var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n            if (to !== undefined$1) {\n              end = clamp(to, length);\n            }\n            if (begin > end) {\n              return new ArrayBuffer(0);\n            }\n            num = end - begin;\n            target = new ArrayBuffer(num);\n            targetArray = new Uint8Array(target);\n            sourceArray = new Uint8Array(this, begin, num);\n            targetArray.set(sourceArray);\n            return target;\n          };\n        })();\n      }\n      function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n          str = unescape(encodeURIComponent(str));\n        }\n        return str;\n      }\n      function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n        for (i = 0; i < length; i += 1) {\n          arr[i] = str.charCodeAt(i);\n        }\n        return returnUInt8Array ? arr : buff;\n      }\n      function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n      }\n      function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n        return returnUInt8Array ? result : result.buffer;\n      }\n      function hexToBinaryString(hex) {\n        var bytes = [], length = hex.length, x;\n        for (x = 0; x < length - 1; x += 2) {\n          bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n        return String.fromCharCode.apply(String, bytes);\n      }\n      function SparkMD5() {\n        this.reset();\n      }\n      SparkMD5.prototype.append = function(str) {\n        this.appendBinary(toUtf8(str));\n        return this;\n      };\n      SparkMD5.prototype.appendBinary = function(contents) {\n        this._buff += contents;\n        this._length += contents.length;\n        var length = this._buff.length, i;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n        this._buff = this._buff.substring(i - 64);\n        return this;\n      };\n      SparkMD5.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.prototype.reset = function() {\n        this._buff = \"\";\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.prototype.getState = function() {\n        return {\n          buff: this._buff,\n          length: this._length,\n          hash: this._hash.slice()\n        };\n      };\n      SparkMD5.prototype.setState = function(state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n        return this;\n      };\n      SparkMD5.prototype.destroy = function() {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n      };\n      SparkMD5.prototype._finish = function(tail, length) {\n        var i = length, tmp, lo, hi;\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(this._hash, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n      };\n      SparkMD5.hash = function(str, raw) {\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n      };\n      SparkMD5.hashBinary = function(content, raw) {\n        var hash = md51(content), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      SparkMD5.ArrayBuffer = function() {\n        this.reset();\n      };\n      SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n        this._length += arr.byteLength;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff[i] << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.ArrayBuffer.prototype.reset = function() {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.getState = function() {\n        var state = SparkMD5.prototype.getState.call(this);\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n        return state;\n      };\n      SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n        return SparkMD5.prototype.setState.call(this, state);\n      };\n      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n      SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      return SparkMD5;\n    }));\n  })(sparkMd5);\n  var SparkMD5 = sparkMd5.exports;\n  const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  class FileChecksum {\n    static create(file, callback) {\n      const instance = new FileChecksum(file);\n      instance.create(callback);\n    }\n    constructor(file) {\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    create(callback) {\n      this.callback = callback;\n      this.md5Buffer = new SparkMD5.ArrayBuffer;\n      this.fileReader = new FileReader;\n      this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n      this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n      this.readNextChunk();\n    }\n    fileReaderDidLoad(event) {\n      this.md5Buffer.append(event.target.result);\n      if (!this.readNextChunk()) {\n        const binaryDigest = this.md5Buffer.end(true);\n        const base64digest = btoa(binaryDigest);\n        this.callback(null, base64digest);\n      }\n    }\n    fileReaderDidError(event) {\n      this.callback(`Error reading ${this.file.name}`);\n    }\n    readNextChunk() {\n      if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n        const start = this.chunkIndex * this.chunkSize;\n        const end = Math.min(start + this.chunkSize, this.file.size);\n        const bytes = fileSlice.call(this.file, start, end);\n        this.fileReader.readAsArrayBuffer(bytes);\n        this.chunkIndex++;\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }\n  function getMetaValue(name) {\n    const element = findElement(document.head, `meta[name=\"${name}\"]`);\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  function findElements(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    const elements = root.querySelectorAll(selector);\n    return toArray(elements);\n  }\n  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    return root.querySelector(selector);\n  }\n  function dispatchEvent(element, type, eventInit = {}) {\n    const {disabled: disabled} = element;\n    const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n    const event = document.createEvent(\"Event\");\n    event.initEvent(type, bubbles || true, cancelable || true);\n    event.detail = detail || {};\n    try {\n      element.disabled = false;\n      element.dispatchEvent(event);\n    } finally {\n      element.disabled = disabled;\n    }\n    return event;\n  }\n  function toArray(value) {\n    if (Array.isArray(value)) {\n      return value;\n    } else if (Array.from) {\n      return Array.from(value);\n    } else {\n      return [].slice.call(value);\n    }\n  }\n  class BlobRecord {\n    constructor(file, checksum, url, customHeaders = {}) {\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type || \"application/octet-stream\",\n        byte_size: file.size,\n        checksum: checksum\n      };\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open(\"POST\", url, true);\n      this.xhr.responseType = \"json\";\n      this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n      this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      Object.keys(customHeaders).forEach((headerKey => {\n        this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n      }));\n      const csrfToken = getMetaValue(\"csrf-token\");\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n      this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n      this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n    }\n    get status() {\n      return this.xhr.status;\n    }\n    get response() {\n      const {responseType: responseType, response: response} = this.xhr;\n      if (responseType == \"json\") {\n        return response;\n      } else {\n        return JSON.parse(response);\n      }\n    }\n    create(callback) {\n      this.callback = callback;\n      this.xhr.send(JSON.stringify({\n        blob: this.attributes\n      }));\n    }\n    requestDidLoad(event) {\n      if (this.status >= 200 && this.status < 300) {\n        const {response: response} = this;\n        const {direct_upload: direct_upload} = response;\n        delete response.direct_upload;\n        this.attributes = response;\n        this.directUploadData = direct_upload;\n        this.callback(null, this.toJSON());\n      } else {\n        this.requestDidError(event);\n      }\n    }\n    requestDidError(event) {\n      this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n    }\n    toJSON() {\n      const result = {};\n      for (const key in this.attributes) {\n        result[key] = this.attributes[key];\n      }\n      return result;\n    }\n  }\n  class BlobUpload {\n    constructor(blob) {\n      this.blob = blob;\n      this.file = blob.file;\n      const {url: url, headers: headers} = blob.directUploadData;\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (const key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n      this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n    }\n    create(callback) {\n      this.callback = callback;\n      this.xhr.send(this.file.slice());\n    }\n    requestDidLoad(event) {\n      const {status: status, response: response} = this.xhr;\n      if (status >= 200 && status < 300) {\n        this.callback(null, response);\n      } else {\n        this.requestDidError(event);\n      }\n    }\n    requestDidError(event) {\n      this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n    }\n  }\n  let id = 0;\n  class DirectUpload {\n    constructor(file, url, delegate, customHeaders = {}) {\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n      this.customHeaders = customHeaders;\n    }\n    create(callback) {\n      FileChecksum.create(this.file, ((error, checksum) => {\n        if (error) {\n          callback(error);\n          return;\n        }\n        const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n        notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n        blob.create((error => {\n          if (error) {\n            callback(error);\n          } else {\n            const upload = new BlobUpload(blob);\n            notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n            upload.create((error => {\n              if (error) {\n                callback(error);\n              } else {\n                callback(null, blob.toJSON());\n              }\n            }));\n          }\n        }));\n      }));\n    }\n  }\n  function notify(object, methodName, ...messages) {\n    if (object && typeof object[methodName] == \"function\") {\n      return object[methodName](...messages);\n    }\n  }\n  class DirectUploadController {\n    constructor(input, file) {\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    start(callback) {\n      const hiddenInput = document.createElement(\"input\");\n      hiddenInput.type = \"hidden\";\n      hiddenInput.name = this.input.name;\n      this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n      this.dispatch(\"start\");\n      this.directUpload.create(((error, attributes) => {\n        if (error) {\n          hiddenInput.parentNode.removeChild(hiddenInput);\n          this.dispatchError(error);\n        } else {\n          hiddenInput.value = attributes.signed_id;\n        }\n        this.dispatch(\"end\");\n        callback(error);\n      }));\n    }\n    uploadRequestDidProgress(event) {\n      const progress = event.loaded / event.total * 100;\n      if (progress) {\n        this.dispatch(\"progress\", {\n          progress: progress\n        });\n      }\n    }\n    get url() {\n      return this.input.getAttribute(\"data-direct-upload-url\");\n    }\n    dispatch(name, detail = {}) {\n      detail.file = this.file;\n      detail.id = this.directUpload.id;\n      return dispatchEvent(this.input, `direct-upload:${name}`, {\n        detail: detail\n      });\n    }\n    dispatchError(error) {\n      const event = this.dispatch(\"error\", {\n        error: error\n      });\n      if (!event.defaultPrevented) {\n        alert(error);\n      }\n    }\n    directUploadWillCreateBlobWithXHR(xhr) {\n      this.dispatch(\"before-blob-request\", {\n        xhr: xhr\n      });\n    }\n    directUploadWillStoreFileWithXHR(xhr) {\n      this.dispatch(\"before-storage-request\", {\n        xhr: xhr\n      });\n      xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n    }\n  }\n  const inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  class DirectUploadsController {\n    constructor(form) {\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n    }\n    start(callback) {\n      const controllers = this.createDirectUploadControllers();\n      const startNextController = () => {\n        const controller = controllers.shift();\n        if (controller) {\n          controller.start((error => {\n            if (error) {\n              callback(error);\n              this.dispatch(\"end\");\n            } else {\n              startNextController();\n            }\n          }));\n        } else {\n          callback();\n          this.dispatch(\"end\");\n        }\n      };\n      this.dispatch(\"start\");\n      startNextController();\n    }\n    createDirectUploadControllers() {\n      const controllers = [];\n      this.inputs.forEach((input => {\n        toArray(input.files).forEach((file => {\n          const controller = new DirectUploadController(input, file);\n          controllers.push(controller);\n        }));\n      }));\n      return controllers;\n    }\n    dispatch(name, detail = {}) {\n      return dispatchEvent(this.form, `direct-uploads:${name}`, {\n        detail: detail\n      });\n    }\n  }\n  const processingAttribute = \"data-direct-uploads-processing\";\n  const submitButtonsByForm = new WeakMap;\n  let started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm, true);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    const button = event.target.closest(\"button, input\");\n    if (button && button.type === \"submit\" && button.form) {\n      submitButtonsByForm.set(button.form, button);\n    }\n  }\n  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n  function handleFormSubmissionEvent(event) {\n    const form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    const controller = new DirectUploadsController(form);\n    const {inputs: inputs} = controller;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start((error => {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      }));\n    }\n  }\n  function submitForm(form) {\n    let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      const {disabled: disabled} = button;\n      button.disabled = false;\n      button.focus();\n      button.click();\n      button.disabled = disabled;\n    } else {\n      button = document.createElement(\"input\");\n      button.type = \"submit\";\n      button.style.display = \"none\";\n      form.appendChild(button);\n      button.click();\n      form.removeChild(button);\n    }\n    submitButtonsByForm.delete(form);\n  }\n  function disable(input) {\n    input.disabled = true;\n  }\n  function enable(input) {\n    input.disabled = false;\n  }\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n  setTimeout(autostart, 1);\n  exports.DirectUpload = DirectUpload;\n  exports.DirectUploadController = DirectUploadController;\n  exports.DirectUploadsController = DirectUploadsController;\n  exports.dispatchEvent = dispatchEvent;\n  exports.start = start;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'ffffffff-ffff-ffff-ffff-ffffffffffff';\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = '00000000-0000-0000-0000-000000000000';\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst regex_js_1 = require(\"./regex.js\");\nfunction validate(uuid) {\n    return typeof uuid === 'string' && regex_js_1.default.test(uuid);\n}\nexports.default = validate;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validate_js_1 = require(\"./validate.js\");\nfunction parse(uuid) {\n    if (!(0, validate_js_1.default)(uuid)) {\n        throw TypeError('Invalid UUID');\n    }\n    let v;\n    return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 0xff, ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff, (v / 0x100000000) & 0xff, (v >>> 24) & 0xff, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff);\n}\nexports.default = parse;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsafeStringify = void 0;\nconst validate_js_1 = require(\"./validate.js\");\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nfunction unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nexports.unsafeStringify = unsafeStringify;\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!(0, validate_js_1.default)(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexports.default = stringify;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nfunction rng() {\n    if (!getRandomValues) {\n        if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n            throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n        }\n        getRandomValues = crypto.getRandomValues.bind(crypto);\n    }\n    return getRandomValues(rnds8);\n}\nexports.default = rng;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.updateV1State = void 0;\nconst rng_js_1 = require(\"./rng.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nconst _state = {};\nfunction v1(options, buf, offset) {\n    let bytes;\n    const isV6 = options?._v6 ?? false;\n    if (options) {\n        const optionsKeys = Object.keys(options);\n        if (optionsKeys.length === 1 && optionsKeys[0] === '_v6') {\n            options = undefined;\n        }\n    }\n    if (options) {\n        bytes = v1Bytes(options.random ?? options.rng?.() ?? (0, rng_js_1.default)(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset);\n    }\n    else {\n        const now = Date.now();\n        const rnds = (0, rng_js_1.default)();\n        updateV1State(_state, now, rnds);\n        bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? undefined : _state.clockseq, isV6 ? undefined : _state.node, buf, offset);\n    }\n    return buf ?? (0, stringify_js_1.unsafeStringify)(bytes);\n}\nfunction updateV1State(state, now, rnds) {\n    state.msecs ??= -Infinity;\n    state.nsecs ??= 0;\n    if (now === state.msecs) {\n        state.nsecs++;\n        if (state.nsecs >= 10000) {\n            state.node = undefined;\n            state.nsecs = 0;\n        }\n    }\n    else if (now > state.msecs) {\n        state.nsecs = 0;\n    }\n    else if (now < state.msecs) {\n        state.node = undefined;\n    }\n    if (!state.node) {\n        state.node = rnds.slice(10, 16);\n        state.node[0] |= 0x01;\n        state.clockseq = ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n    }\n    state.msecs = now;\n    return state;\n}\nexports.updateV1State = updateV1State;\nfunction v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) {\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    if (!buf) {\n        buf = new Uint8Array(16);\n        offset = 0;\n    }\n    else {\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n    }\n    msecs ??= Date.now();\n    nsecs ??= 0;\n    clockseq ??= ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n    node ??= rnds.slice(10, 16);\n    msecs += 12219292800000;\n    const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n    buf[offset++] = (tl >>> 24) & 0xff;\n    buf[offset++] = (tl >>> 16) & 0xff;\n    buf[offset++] = (tl >>> 8) & 0xff;\n    buf[offset++] = tl & 0xff;\n    const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff;\n    buf[offset++] = (tmh >>> 8) & 0xff;\n    buf[offset++] = tmh & 0xff;\n    buf[offset++] = ((tmh >>> 24) & 0xf) | 0x10;\n    buf[offset++] = (tmh >>> 16) & 0xff;\n    buf[offset++] = (clockseq >>> 8) | 0x80;\n    buf[offset++] = clockseq & 0xff;\n    for (let n = 0; n < 6; ++n) {\n        buf[offset++] = node[n];\n    }\n    return buf;\n}\nexports.default = v1;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst parse_js_1 = require(\"./parse.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nfunction v1ToV6(uuid) {\n    const v1Bytes = typeof uuid === 'string' ? (0, parse_js_1.default)(uuid) : uuid;\n    const v6Bytes = _v1ToV6(v1Bytes);\n    return typeof uuid === 'string' ? (0, stringify_js_1.unsafeStringify)(v6Bytes) : v6Bytes;\n}\nexports.default = v1ToV6;\nfunction _v1ToV6(v1Bytes) {\n    return Uint8Array.of(((v1Bytes[6] & 0x0f) << 4) | ((v1Bytes[7] >> 4) & 0x0f), ((v1Bytes[7] & 0x0f) << 4) | ((v1Bytes[4] & 0xf0) >> 4), ((v1Bytes[4] & 0x0f) << 4) | ((v1Bytes[5] & 0xf0) >> 4), ((v1Bytes[5] & 0x0f) << 4) | ((v1Bytes[0] & 0xf0) >> 4), ((v1Bytes[0] & 0x0f) << 4) | ((v1Bytes[1] & 0xf0) >> 4), ((v1Bytes[1] & 0x0f) << 4) | ((v1Bytes[2] & 0xf0) >> 4), 0x60 | (v1Bytes[2] & 0x0f), v1Bytes[3], v1Bytes[8], v1Bytes[9], v1Bytes[10], v1Bytes[11], v1Bytes[12], v1Bytes[13], v1Bytes[14], v1Bytes[15]);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction md5(bytes) {\n    const words = uint8ToUint32(bytes);\n    const md5Bytes = wordsToMd5(words, bytes.length * 8);\n    return uint32ToUint8(md5Bytes);\n}\nfunction uint32ToUint8(input) {\n    const bytes = new Uint8Array(input.length * 4);\n    for (let i = 0; i < input.length * 4; i++) {\n        bytes[i] = (input[i >> 2] >>> ((i % 4) * 8)) & 0xff;\n    }\n    return bytes;\n}\nfunction getOutputLength(inputLength8) {\n    return (((inputLength8 + 64) >>> 9) << 4) + 14 + 1;\n}\nfunction wordsToMd5(x, len) {\n    const xpad = new Uint32Array(getOutputLength(len)).fill(0);\n    xpad.set(x);\n    xpad[len >> 5] |= 0x80 << len % 32;\n    xpad[xpad.length - 1] = len;\n    x = xpad;\n    let a = 1732584193;\n    let b = -271733879;\n    let c = -1732584194;\n    let d = 271733878;\n    for (let i = 0; i < x.length; i += 16) {\n        const olda = a;\n        const oldb = b;\n        const oldc = c;\n        const oldd = d;\n        a = md5ff(a, b, c, d, x[i], 7, -680876936);\n        d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n        c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n        b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n        a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n        d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n        c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n        b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n        a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n        d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n        c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n        b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n        a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n        d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n        c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n        b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n        a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n        d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n        c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n        b = md5gg(b, c, d, a, x[i], 20, -373897302);\n        a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n        d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n        c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n        b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n        a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n        d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n        c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n        b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n        a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n        d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n        c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n        b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n        a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n        d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n        c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n        b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n        a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n        d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n        c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n        b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n        a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n        d = md5hh(d, a, b, c, x[i], 11, -358537222);\n        c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n        b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n        a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n        d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n        c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n        b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n        a = md5ii(a, b, c, d, x[i], 6, -198630844);\n        d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n        c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n        b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n        a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n        d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n        c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n        b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n        a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n        d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n        c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n        b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n        a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n        d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n        c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n        b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n        a = safeAdd(a, olda);\n        b = safeAdd(b, oldb);\n        c = safeAdd(c, oldc);\n        d = safeAdd(d, oldd);\n    }\n    return Uint32Array.of(a, b, c, d);\n}\nfunction uint8ToUint32(input) {\n    if (input.length === 0) {\n        return new Uint32Array();\n    }\n    const output = new Uint32Array(getOutputLength(input.length * 8)).fill(0);\n    for (let i = 0; i < input.length; i++) {\n        output[i >> 2] |= (input[i] & 0xff) << ((i % 4) * 8);\n    }\n    return output;\n}\nfunction safeAdd(x, y) {\n    const lsw = (x & 0xffff) + (y & 0xffff);\n    const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n    return (msw << 16) | (lsw & 0xffff);\n}\nfunction bitRotateLeft(num, cnt) {\n    return (num << cnt) | (num >>> (32 - cnt));\n}\nfunction md5cmn(q, a, b, x, s, t) {\n    return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\nfunction md5ff(a, b, c, d, x, s, t) {\n    return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5gg(a, b, c, d, x, s, t) {\n    return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5hh(a, b, c, d, x, s, t) {\n    return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5ii(a, b, c, d, x, s, t) {\n    return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\nexports.default = md5;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.URL = exports.DNS = exports.stringToBytes = void 0;\nconst parse_js_1 = require(\"./parse.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nfunction stringToBytes(str) {\n    str = unescape(encodeURIComponent(str));\n    const bytes = new Uint8Array(str.length);\n    for (let i = 0; i < str.length; ++i) {\n        bytes[i] = str.charCodeAt(i);\n    }\n    return bytes;\n}\nexports.stringToBytes = stringToBytes;\nexports.DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nfunction v35(version, hash, value, namespace, buf, offset) {\n    const valueBytes = typeof value === 'string' ? stringToBytes(value) : value;\n    const namespaceBytes = typeof namespace === 'string' ? (0, parse_js_1.default)(namespace) : namespace;\n    if (typeof namespace === 'string') {\n        namespace = (0, parse_js_1.default)(namespace);\n    }\n    if (namespace?.length !== 16) {\n        throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n    }\n    let bytes = new Uint8Array(16 + valueBytes.length);\n    bytes.set(namespaceBytes);\n    bytes.set(valueBytes, namespaceBytes.length);\n    bytes = hash(bytes);\n    bytes[6] = (bytes[6] & 0x0f) | version;\n    bytes[8] = (bytes[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = bytes[i];\n        }\n        return buf;\n    }\n    return (0, stringify_js_1.unsafeStringify)(bytes);\n}\nexports.default = v35;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.URL = exports.DNS = void 0;\nconst md5_js_1 = require(\"./md5.js\");\nconst v35_js_1 = require(\"./v35.js\");\nvar v35_js_2 = require(\"./v35.js\");\nObject.defineProperty(exports, \"DNS\", { enumerable: true, get: function () { return v35_js_2.DNS; } });\nObject.defineProperty(exports, \"URL\", { enumerable: true, get: function () { return v35_js_2.URL; } });\nfunction v3(value, namespace, buf, offset) {\n    return (0, v35_js_1.default)(0x30, md5_js_1.default, value, namespace, buf, offset);\n}\nv3.DNS = v35_js_1.DNS;\nv3.URL = v35_js_1.URL;\nexports.default = v3;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexports.default = { randomUUID };\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst native_js_1 = require(\"./native.js\");\nconst rng_js_1 = require(\"./rng.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nfunction v4(options, buf, offset) {\n    if (native_js_1.default.randomUUID && !buf && !options) {\n        return native_js_1.default.randomUUID();\n    }\n    options = options || {};\n    const rnds = options.random ?? options.rng?.() ?? (0, rng_js_1.default)();\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return (0, stringify_js_1.unsafeStringify)(rnds);\n}\nexports.default = v4;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction f(s, x, y, z) {\n    switch (s) {\n        case 0:\n            return (x & y) ^ (~x & z);\n        case 1:\n            return x ^ y ^ z;\n        case 2:\n            return (x & y) ^ (x & z) ^ (y & z);\n        case 3:\n            return x ^ y ^ z;\n    }\n}\nfunction ROTL(x, n) {\n    return (x << n) | (x >>> (32 - n));\n}\nfunction sha1(bytes) {\n    const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n    const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n    const newBytes = new Uint8Array(bytes.length + 1);\n    newBytes.set(bytes);\n    newBytes[bytes.length] = 0x80;\n    bytes = newBytes;\n    const l = bytes.length / 4 + 2;\n    const N = Math.ceil(l / 16);\n    const M = new Array(N);\n    for (let i = 0; i < N; ++i) {\n        const arr = new Uint32Array(16);\n        for (let j = 0; j < 16; ++j) {\n            arr[j] =\n                (bytes[i * 64 + j * 4] << 24) |\n                    (bytes[i * 64 + j * 4 + 1] << 16) |\n                    (bytes[i * 64 + j * 4 + 2] << 8) |\n                    bytes[i * 64 + j * 4 + 3];\n        }\n        M[i] = arr;\n    }\n    M[N - 1][14] = ((bytes.length - 1) * 8) / Math.pow(2, 32);\n    M[N - 1][14] = Math.floor(M[N - 1][14]);\n    M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;\n    for (let i = 0; i < N; ++i) {\n        const W = new Uint32Array(80);\n        for (let t = 0; t < 16; ++t) {\n            W[t] = M[i][t];\n        }\n        for (let t = 16; t < 80; ++t) {\n            W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n        }\n        let a = H[0];\n        let b = H[1];\n        let c = H[2];\n        let d = H[3];\n        let e = H[4];\n        for (let t = 0; t < 80; ++t) {\n            const s = Math.floor(t / 20);\n            const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;\n            e = d;\n            d = c;\n            c = ROTL(b, 30) >>> 0;\n            b = a;\n            a = T;\n        }\n        H[0] = (H[0] + a) >>> 0;\n        H[1] = (H[1] + b) >>> 0;\n        H[2] = (H[2] + c) >>> 0;\n        H[3] = (H[3] + d) >>> 0;\n        H[4] = (H[4] + e) >>> 0;\n    }\n    return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);\n}\nexports.default = sha1;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.URL = exports.DNS = void 0;\nconst sha1_js_1 = require(\"./sha1.js\");\nconst v35_js_1 = require(\"./v35.js\");\nvar v35_js_2 = require(\"./v35.js\");\nObject.defineProperty(exports, \"DNS\", { enumerable: true, get: function () { return v35_js_2.DNS; } });\nObject.defineProperty(exports, \"URL\", { enumerable: true, get: function () { return v35_js_2.URL; } });\nfunction v5(value, namespace, buf, offset) {\n    return (0, v35_js_1.default)(0x50, sha1_js_1.default, value, namespace, buf, offset);\n}\nv5.DNS = v35_js_1.DNS;\nv5.URL = v35_js_1.URL;\nexports.default = v5;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stringify_js_1 = require(\"./stringify.js\");\nconst v1_js_1 = require(\"./v1.js\");\nconst v1ToV6_js_1 = require(\"./v1ToV6.js\");\nfunction v6(options, buf, offset) {\n    options ??= {};\n    offset ??= 0;\n    let bytes = (0, v1_js_1.default)({ ...options, _v6: true }, new Uint8Array(16));\n    bytes = (0, v1ToV6_js_1.default)(bytes);\n    if (buf) {\n        for (let i = 0; i < 16; i++) {\n            buf[offset + i] = bytes[i];\n        }\n        return buf;\n    }\n    return (0, stringify_js_1.unsafeStringify)(bytes);\n}\nexports.default = v6;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst parse_js_1 = require(\"./parse.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nfunction v6ToV1(uuid) {\n    const v6Bytes = typeof uuid === 'string' ? (0, parse_js_1.default)(uuid) : uuid;\n    const v1Bytes = _v6ToV1(v6Bytes);\n    return typeof uuid === 'string' ? (0, stringify_js_1.unsafeStringify)(v1Bytes) : v1Bytes;\n}\nexports.default = v6ToV1;\nfunction _v6ToV1(v6Bytes) {\n    return Uint8Array.of(((v6Bytes[3] & 0x0f) << 4) | ((v6Bytes[4] >> 4) & 0x0f), ((v6Bytes[4] & 0x0f) << 4) | ((v6Bytes[5] & 0xf0) >> 4), ((v6Bytes[5] & 0x0f) << 4) | (v6Bytes[6] & 0x0f), v6Bytes[7], ((v6Bytes[1] & 0x0f) << 4) | ((v6Bytes[2] & 0xf0) >> 4), ((v6Bytes[2] & 0x0f) << 4) | ((v6Bytes[3] & 0xf0) >> 4), 0x10 | ((v6Bytes[0] & 0xf0) >> 4), ((v6Bytes[0] & 0x0f) << 4) | ((v6Bytes[1] & 0xf0) >> 4), v6Bytes[8], v6Bytes[9], v6Bytes[10], v6Bytes[11], v6Bytes[12], v6Bytes[13], v6Bytes[14], v6Bytes[15]);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.updateV7State = void 0;\nconst rng_js_1 = require(\"./rng.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nconst _state = {};\nfunction v7(options, buf, offset) {\n    let bytes;\n    if (options) {\n        bytes = v7Bytes(options.random ?? options.rng?.() ?? (0, rng_js_1.default)(), options.msecs, options.seq, buf, offset);\n    }\n    else {\n        const now = Date.now();\n        const rnds = (0, rng_js_1.default)();\n        updateV7State(_state, now, rnds);\n        bytes = v7Bytes(rnds, _state.msecs, _state.seq, buf, offset);\n    }\n    return buf ?? (0, stringify_js_1.unsafeStringify)(bytes);\n}\nfunction updateV7State(state, now, rnds) {\n    state.msecs ??= -Infinity;\n    state.seq ??= 0;\n    if (now > state.msecs) {\n        state.seq = (rnds[6] << 23) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n        state.msecs = now;\n    }\n    else {\n        state.seq = (state.seq + 1) | 0;\n        if (state.seq === 0) {\n            state.msecs++;\n        }\n    }\n    return state;\n}\nexports.updateV7State = updateV7State;\nfunction v7Bytes(rnds, msecs, seq, buf, offset = 0) {\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    if (!buf) {\n        buf = new Uint8Array(16);\n        offset = 0;\n    }\n    else {\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n    }\n    msecs ??= Date.now();\n    seq ??= ((rnds[6] * 0x7f) << 24) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n    buf[offset++] = (msecs / 0x10000000000) & 0xff;\n    buf[offset++] = (msecs / 0x100000000) & 0xff;\n    buf[offset++] = (msecs / 0x1000000) & 0xff;\n    buf[offset++] = (msecs / 0x10000) & 0xff;\n    buf[offset++] = (msecs / 0x100) & 0xff;\n    buf[offset++] = msecs & 0xff;\n    buf[offset++] = 0x70 | ((seq >>> 28) & 0x0f);\n    buf[offset++] = (seq >>> 20) & 0xff;\n    buf[offset++] = 0x80 | ((seq >>> 14) & 0x3f);\n    buf[offset++] = (seq >>> 6) & 0xff;\n    buf[offset++] = ((seq << 2) & 0xff) | (rnds[10] & 0x03);\n    buf[offset++] = rnds[11];\n    buf[offset++] = rnds[12];\n    buf[offset++] = rnds[13];\n    buf[offset++] = rnds[14];\n    buf[offset++] = rnds[15];\n    return buf;\n}\nexports.default = v7;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validate_js_1 = require(\"./validate.js\");\nfunction version(uuid) {\n    if (!(0, validate_js_1.default)(uuid)) {\n        throw TypeError('Invalid UUID');\n    }\n    return parseInt(uuid.slice(14, 15), 16);\n}\nexports.default = version;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = exports.validate = exports.v7 = exports.v6ToV1 = exports.v6 = exports.v5 = exports.v4 = exports.v3 = exports.v1ToV6 = exports.v1 = exports.stringify = exports.parse = exports.NIL = exports.MAX = void 0;\nvar max_js_1 = require(\"./max.js\");\nObject.defineProperty(exports, \"MAX\", { enumerable: true, get: function () { return max_js_1.default; } });\nvar nil_js_1 = require(\"./nil.js\");\nObject.defineProperty(exports, \"NIL\", { enumerable: true, get: function () { return nil_js_1.default; } });\nvar parse_js_1 = require(\"./parse.js\");\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return parse_js_1.default; } });\nvar stringify_js_1 = require(\"./stringify.js\");\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return stringify_js_1.default; } });\nvar v1_js_1 = require(\"./v1.js\");\nObject.defineProperty(exports, \"v1\", { enumerable: true, get: function () { return v1_js_1.default; } });\nvar v1ToV6_js_1 = require(\"./v1ToV6.js\");\nObject.defineProperty(exports, \"v1ToV6\", { enumerable: true, get: function () { return v1ToV6_js_1.default; } });\nvar v3_js_1 = require(\"./v3.js\");\nObject.defineProperty(exports, \"v3\", { enumerable: true, get: function () { return v3_js_1.default; } });\nvar v4_js_1 = require(\"./v4.js\");\nObject.defineProperty(exports, \"v4\", { enumerable: true, get: function () { return v4_js_1.default; } });\nvar v5_js_1 = require(\"./v5.js\");\nObject.defineProperty(exports, \"v5\", { enumerable: true, get: function () { return v5_js_1.default; } });\nvar v6_js_1 = require(\"./v6.js\");\nObject.defineProperty(exports, \"v6\", { enumerable: true, get: function () { return v6_js_1.default; } });\nvar v6ToV1_js_1 = require(\"./v6ToV1.js\");\nObject.defineProperty(exports, \"v6ToV1\", { enumerable: true, get: function () { return v6ToV1_js_1.default; } });\nvar v7_js_1 = require(\"./v7.js\");\nObject.defineProperty(exports, \"v7\", { enumerable: true, get: function () { return v7_js_1.default; } });\nvar validate_js_1 = require(\"./validate.js\");\nObject.defineProperty(exports, \"validate\", { enumerable: true, get: function () { return validate_js_1.default; } });\nvar version_js_1 = require(\"./version.js\");\nObject.defineProperty(exports, \"version\", { enumerable: true, get: function () { return version_js_1.default; } });\n", "/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 1.3.8\n *\n */\n(function($) {\n\n  $.fn.extend({\n    slimScroll: function(options) {\n\n      var defaults = {\n\n        // width in pixels of the visible scroll area\n        width : 'auto',\n\n        // height in pixels of the visible scroll area\n        height : '250px',\n\n        // width in pixels of the scrollbar and rail\n        size : '7px',\n\n        // scrollbar color, accepts any hex/color value\n        color: '#000',\n\n        // scrollbar position - left/right\n        position : 'right',\n\n        // distance in pixels between the side edge and the scrollbar\n        distance : '1px',\n\n        // default scroll position on load - top / bottom / $('selector')\n        start : 'top',\n\n        // sets scrollbar opacity\n        opacity : .4,\n\n        // enables always-on mode for the scrollbar\n        alwaysVisible : false,\n\n        // check if we should hide the scrollbar when user is hovering over\n        disableFadeOut : false,\n\n        // sets visibility of the rail\n        railVisible : false,\n\n        // sets rail color\n        railColor : '#333',\n\n        // sets rail opacity\n        railOpacity : .2,\n\n        // whether  we should use jQuery UI Draggable to enable bar dragging\n        railDraggable : true,\n\n        // defautlt CSS class of the slimscroll rail\n        railClass : 'slimScrollRail',\n\n        // defautlt CSS class of the slimscroll bar\n        barClass : 'slimScrollBar',\n\n        // defautlt CSS class of the slimscroll wrapper\n        wrapperClass : 'slimScrollDiv',\n\n        // check if mousewheel should scroll the window if we reach top/bottom\n        allowPageScroll : false,\n\n        // scroll amount applied to each mouse wheel step\n        wheelStep : 20,\n\n        // scroll amount applied when user is using gestures\n        touchScrollStep : 200,\n\n        // sets border radius\n        borderRadius: '7px',\n\n        // sets border radius of the rail\n        railBorderRadius : '7px'\n      };\n\n      var o = $.extend(defaults, options);\n\n      // do it for every element that matches selector\n      this.each(function(){\n\n      var isOverPanel, isOverBar, isDragg, queueHide, touchDif,\n        barHeight, percentScroll, lastScroll,\n        divS = '<div></div>',\n        minBarHeight = 30,\n        releaseScroll = false;\n\n        // used in event handlers and for better minification\n        var me = $(this);\n\n        // ensure we are not binding it again\n        if (me.parent().hasClass(o.wrapperClass))\n        {\n            // start from last bar position\n            var offset = me.scrollTop();\n\n            // find bar and rail\n            bar = me.siblings('.' + o.barClass);\n            rail = me.siblings('.' + o.railClass);\n\n            getBarHeight();\n\n            // check if we should scroll existing instance\n            if ($.isPlainObject(options))\n            {\n              // Pass height: auto to an existing slimscroll object to force a resize after contents have changed\n              if ( 'height' in options && options.height == 'auto' ) {\n                me.parent().css('height', 'auto');\n                me.css('height', 'auto');\n                var height = me.parent().parent().height();\n                me.parent().css('height', height);\n                me.css('height', height);\n              } else if ('height' in options) {\n                var h = options.height;\n                me.parent().css('height', h);\n                me.css('height', h);\n              }\n\n              if ('scrollTo' in options)\n              {\n                // jump to a static point\n                offset = parseInt(o.scrollTo);\n              }\n              else if ('scrollBy' in options)\n              {\n                // jump by value pixels\n                offset += parseInt(o.scrollBy);\n              }\n              else if ('destroy' in options)\n              {\n                // remove slimscroll elements\n                bar.remove();\n                rail.remove();\n                me.unwrap();\n                return;\n              }\n\n              // scroll content by the given offset\n              scrollContent(offset, false, true);\n            }\n\n            return;\n        }\n        else if ($.isPlainObject(options))\n        {\n            if ('destroy' in options)\n            {\n            \treturn;\n            }\n        }\n\n        // optionally set height to the parent's height\n        o.height = (o.height == 'auto') ? me.parent().height() : o.height;\n\n        // wrap content\n        var wrapper = $(divS)\n          .addClass(o.wrapperClass)\n          .css({\n            position: 'relative',\n            overflow: 'hidden',\n            width: o.width,\n            height: o.height\n          });\n\n        // update style for the div\n        me.css({\n          overflow: 'hidden',\n          width: o.width,\n          height: o.height\n        });\n\n        // create scrollbar rail\n        var rail = $(divS)\n          .addClass(o.railClass)\n          .css({\n            width: o.size,\n            height: '100%',\n            position: 'absolute',\n            top: 0,\n            display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none',\n            'border-radius': o.railBorderRadius,\n            background: o.railColor,\n            opacity: o.railOpacity,\n            zIndex: 90\n          });\n\n        // create scrollbar\n        var bar = $(divS)\n          .addClass(o.barClass)\n          .css({\n            background: o.color,\n            width: o.size,\n            position: 'absolute',\n            top: 0,\n            opacity: o.opacity,\n            display: o.alwaysVisible ? 'block' : 'none',\n            'border-radius' : o.borderRadius,\n            BorderRadius: o.borderRadius,\n            MozBorderRadius: o.borderRadius,\n            WebkitBorderRadius: o.borderRadius,\n            zIndex: 99\n          });\n\n        // set position\n        var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance };\n        rail.css(posCss);\n        bar.css(posCss);\n\n        // wrap it\n        me.wrap(wrapper);\n\n        // append to parent div\n        me.parent().append(bar);\n        me.parent().append(rail);\n\n        // make it draggable and no longer dependent on the jqueryUI\n        if (o.railDraggable){\n          bar.bind(\"mousedown\", function(e) {\n            var $doc = $(document);\n            isDragg = true;\n            t = parseFloat(bar.css('top'));\n            pageY = e.pageY;\n\n            $doc.bind(\"mousemove.slimscroll\", function(e){\n              currTop = t + e.pageY - pageY;\n              bar.css('top', currTop);\n              scrollContent(0, bar.position().top, false);// scroll content\n            });\n\n            $doc.bind(\"mouseup.slimscroll\", function(e) {\n              isDragg = false;hideBar();\n              $doc.unbind('.slimscroll');\n            });\n            return false;\n          }).bind(\"selectstart.slimscroll\", function(e){\n            e.stopPropagation();\n            e.preventDefault();\n            return false;\n          });\n        }\n\n        // on rail over\n        rail.hover(function(){\n          showBar();\n        }, function(){\n          hideBar();\n        });\n\n        // on bar over\n        bar.hover(function(){\n          isOverBar = true;\n        }, function(){\n          isOverBar = false;\n        });\n\n        // show on parent mouseover\n        me.hover(function(){\n          isOverPanel = true;\n          showBar();\n          hideBar();\n        }, function(){\n          isOverPanel = false;\n          hideBar();\n        });\n\n        // support for mobile\n        me.bind('touchstart', function(e,b){\n          if (e.originalEvent.touches.length)\n          {\n            // record where touch started\n            touchDif = e.originalEvent.touches[0].pageY;\n          }\n        });\n\n        me.bind('touchmove', function(e){\n          // prevent scrolling the page if necessary\n          if(!releaseScroll)\n          {\n  \t\t      e.originalEvent.preventDefault();\n\t\t      }\n          if (e.originalEvent.touches.length)\n          {\n            // see how far user swiped\n            var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep;\n            // scroll content\n            scrollContent(diff, true);\n            touchDif = e.originalEvent.touches[0].pageY;\n          }\n        });\n\n        // set up initial height\n        getBarHeight();\n\n        // check start position\n        if (o.start === 'bottom')\n        {\n          // scroll content to bottom\n          bar.css({ top: me.outerHeight() - bar.outerHeight() });\n          scrollContent(0, true);\n        }\n        else if (o.start !== 'top')\n        {\n          // assume jQuery selector\n          scrollContent($(o.start).position().top, null, true);\n\n          // make sure bar stays hidden\n          if (!o.alwaysVisible) { bar.hide(); }\n        }\n\n        // attach scroll events\n        attachWheel(this);\n\n        function _onWheel(e)\n        {\n          // use mouse wheel only when mouse is over\n          if (!isOverPanel) { return; }\n\n          var e = e || window.event;\n\n          var delta = 0;\n          if (e.wheelDelta) { delta = -e.wheelDelta/120; }\n          if (e.detail) { delta = e.detail / 3; }\n\n          var target = e.target || e.srcTarget || e.srcElement;\n          if ($(target).closest('.' + o.wrapperClass).is(me.parent())) {\n            // scroll content\n            scrollContent(delta, true);\n          }\n\n          // stop window scroll\n          if (e.preventDefault && !releaseScroll) { e.preventDefault(); }\n          if (!releaseScroll) { e.returnValue = false; }\n        }\n\n        function scrollContent(y, isWheel, isJump)\n        {\n          releaseScroll = false;\n          var delta = y;\n          var maxTop = me.outerHeight() - bar.outerHeight();\n\n          if (isWheel)\n          {\n            // move bar with mouse wheel\n            delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight();\n\n            // move bar, make sure it doesn't go out\n            delta = Math.min(Math.max(delta, 0), maxTop);\n\n            // if scrolling down, make sure a fractional change to the\n            // scroll position isn't rounded away when the scrollbar's CSS is set\n            // this flooring of delta would happened automatically when\n            // bar.css is set below, but we floor here for clarity\n            delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta);\n\n            // scroll the scrollbar\n            bar.css({ top: delta + 'px' });\n          }\n\n          // calculate actual scroll amount\n          percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight());\n          delta = percentScroll * (me[0].scrollHeight - me.outerHeight());\n\n          if (isJump)\n          {\n            delta = y;\n            var offsetTop = delta / me[0].scrollHeight * me.outerHeight();\n            offsetTop = Math.min(Math.max(offsetTop, 0), maxTop);\n            bar.css({ top: offsetTop + 'px' });\n          }\n\n          // scroll content\n          me.scrollTop(delta);\n\n          // fire scrolling event\n          me.trigger('slimscrolling', ~~delta);\n\n          // ensure bar is visible\n          showBar();\n\n          // trigger hide when scroll is stopped\n          hideBar();\n        }\n\n        function attachWheel(target)\n        {\n          if (window.addEventListener)\n          {\n            target.addEventListener('DOMMouseScroll', _onWheel, false );\n            target.addEventListener('mousewheel', _onWheel, false );\n          }\n          else\n          {\n            document.attachEvent(\"onmousewheel\", _onWheel)\n          }\n        }\n\n        function getBarHeight()\n        {\n          // calculate scrollbar height and make sure it is not too small\n          barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight);\n          bar.css({ height: barHeight + 'px' });\n\n          // hide scrollbar if content is not long enough\n          var display = barHeight == me.outerHeight() ? 'none' : 'block';\n          bar.css({ display: display });\n        }\n\n        function showBar()\n        {\n          // recalculate bar height\n          getBarHeight();\n          clearTimeout(queueHide);\n\n          // when bar reached top or bottom\n          if (percentScroll == ~~percentScroll)\n          {\n            //release wheel\n            releaseScroll = o.allowPageScroll;\n\n            // publish approporiate event\n            if (lastScroll != percentScroll)\n            {\n                var msg = (~~percentScroll == 0) ? 'top' : 'bottom';\n                me.trigger('slimscroll', msg);\n            }\n          }\n          else\n          {\n            releaseScroll = false;\n          }\n          lastScroll = percentScroll;\n\n          // show only when required\n          if(barHeight >= me.outerHeight()) {\n            //allow window scroll\n            releaseScroll = true;\n            return;\n          }\n          bar.stop(true,true).fadeIn('fast');\n          if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); }\n        }\n\n        function hideBar()\n        {\n          // only hide when options allow it\n          if (!o.alwaysVisible)\n          {\n            queueHide = setTimeout(function(){\n              if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg)\n              {\n                bar.fadeOut('slow');\n                rail.fadeOut('slow');\n              }\n            }, 1000);\n          }\n        }\n\n      });\n\n      // maintain chainability\n      return this;\n    }\n  });\n\n  $.fn.extend({\n    slimscroll: $.fn.slimScroll\n  });\n\n})(jQuery);\n", "/*! jQuery UI - v1.13.2 - 2022-08-16\n* http://jqueryui.com\n* Includes: widget.js, position.js, jquery-patch.js, keycode.js, scroll-parent.js, unique-id.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n( function( factory ) {\n\t\"use strict\";\n\t\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui = $.ui || {};\n\nvar version = $.ui.version = \"1.13.2\";\n\n\n/*!\n * jQuery UI Widget 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n\nvar widgetUuid = 0;\nvar widgetHasOwnProperty = Array.prototype.hasOwnProperty;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = $.cleanData || ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\n\t\t\t// Only trigger remove when necessary to save time\n\t\t\tevents = $._data( elem, \"events\" );\n\t\t\tif ( events && events.remove ) {\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = $.widget || function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( Array.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this || !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( typeof value !== \"function\" ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\n\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = $.Widget || function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction bindRemoveEvent() {\n\t\t\tvar nodesToBind = [];\n\n\t\t\toptions.element.each( function( _, element ) {\n\t\t\t\tvar isTracked = $.map( that.classesElementLookup, function( elements ) {\n\t\t\t\t\treturn elements;\n\t\t\t\t} )\n\t\t\t\t\t.some( function( elements ) {\n\t\t\t\t\t\treturn elements.is( element );\n\t\t\t\t\t} );\n\n\t\t\t\tif ( !isTracked ) {\n\t\t\t\t\tnodesToBind.push( element );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthat._on( $( nodesToBind ), {\n\t\t\t\tremove: \"_untrackClassesElement\"\n\t\t\t} );\n\t\t}\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tbindRemoveEvent();\n\t\t\t\t\tcurrent = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\n\t\tthis._off( $( event.target ) );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( typeof callback === \"function\" &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t} else if ( options === true ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nvar widget = $.widget;\n\n\n/*!\n * jQuery UI Position 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n\n//>>label: Position\n//>>group: Core\n//>>description: Positions elements relative to other elements.\n//>>docs: http://api.jqueryui.com/position/\n//>>demos: http://jqueryui.com/position/\n\n\n( function() {\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction isWindow( obj ) {\n\treturn obj != null && obj === obj.window;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[ 0 ];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = $.position || {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style=\" +\n\t\t\t\t\"'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>\" +\n\t\t\t\t\"<div style='height:300px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[ 0 ];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[ 0 ].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn ( cachedScrollbarWidth = w1 - w2 );\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[ 0 ].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[ 0 ].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisElemWindow = isWindow( withinElement[ 0 ] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,\n\t\t\thasOffset = !isElemWindow && !isDocument;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isElemWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: withinElement.outerWidth(),\n\t\t\theight: withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// Make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\n\t\t// Make sure string options are treated as CSS selectors\n\t\ttarget = typeof options.of === \"string\" ?\n\t\t\t$( document ).find( options.of ) :\n\t\t\t$( options.of ),\n\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[ 0 ].preventDefault ) {\n\n\t\t// Force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\n\t// Clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// Force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1 ) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// Calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// Reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t} );\n\n\t// Normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each( function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) +\n\t\t\t\tscrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) +\n\t\t\t\tscrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tif ( options.using ) {\n\n\t\t\t// Adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t} );\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// Element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\n\t\t\t\t// Element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\n\t\t\t\t// Element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\n\t\t\t\t// Element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\n\t\t\t// Too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// Element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\n\t\t\t\t// Element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\n\t\t\t\t// Element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\n\t\t\t\t// Element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\n\t\t\t// Too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\n\t\t\t\t\touterWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\n\t\t\t\t\tatOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\n\t\t\t\t\touterHeight - withinOffset;\n\t\t\t\tif ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\n\t\t\t\t\toffset - offsetTop;\n\t\t\t\tif ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n} )();\n\nvar position = $.ui.position;\n\n\n/*!\n * jQuery UI Support for jQuery core 1.8.x and newer 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n */\n\n//>>label: jQuery 1.8+ Support\n//>>group: Core\n//>>description: Support version 1.8.x and newer of jQuery core\n\n\n// Support: jQuery 1.9.x or older\n// $.expr[ \":\" ] is deprecated.\nif ( !$.expr.pseudos ) {\n\t$.expr.pseudos = $.expr[ \":\" ];\n}\n\n// Support: jQuery 1.11.x or older\n// $.unique has been renamed to $.uniqueSort\nif ( !$.uniqueSort ) {\n\t$.uniqueSort = $.unique;\n}\n\n// Support: jQuery 2.2.x or older.\n// This method has been defined in jQuery 3.0.0.\n// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js\nif ( !$.escapeSelector ) {\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\tvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\n\tvar fcssescape = 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 ) + \"\\\\\" + ch.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$.escapeSelector = function( sel ) {\n\t\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n\t};\n}\n\n// Support: jQuery 3.4.x or older\n// These methods have been defined in jQuery 3.5.0.\nif ( !$.fn.even || !$.fn.odd ) {\n\t$.fn.extend( {\n\t\teven: function() {\n\t\t\treturn this.filter( function( i ) {\n\t\t\t\treturn i % 2 === 0;\n\t\t\t} );\n\t\t},\n\t\todd: function() {\n\t\t\treturn this.filter( function( i ) {\n\t\t\t\treturn i % 2 === 1;\n\t\t\t} );\n\t\t}\n\t} );\n}\n\n;\n/*!\n * jQuery UI Keycode 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n\nvar keycode = $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n\n/*!\n * jQuery UI Scroll Parent 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: http://api.jqueryui.com/scrollParent/\n\n\nvar scrollParent = $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n\n/*!\n * jQuery UI Unique ID 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: uniqueId\n//>>group: Core\n//>>description: Functions to generate and remove uniqueId's\n//>>docs: http://api.jqueryui.com/uniqueId/\n\n\nvar uniqueId = $.fn.extend( {\n\tuniqueId: ( function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each( function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n\n\n\n} );", "/*!\n * jquery.fancytree.js\n * Tree view control with support for lazy loading and much more.\n * https://github.com/mar10/fancytree/\n *\n * Copyright (c) 2008-2023, Martin Wendt (https://wwWendt.de)\n * Released under the MIT license\n * https://github.com/mar10/fancytree/wiki/LicenseInfo\n *\n * @version 2.38.3\n * @date 2023-02-01T20:52:50Z\n */\n\n/** Core Fancytree module.\n */\n\n// UMD wrapper for the Fancytree core module\n(function (factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([\"jquery\", \"./jquery.fancytree.ui-deps\"], factory);\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\t// Node/CommonJS\n\t\trequire(\"./jquery.fancytree.ui-deps\");\n\t\tmodule.exports = factory(require(\"jquery\"));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n})(function ($) {\n\t\"use strict\";\n\n\t// prevent duplicate loading\n\tif ($.ui && $.ui.fancytree) {\n\t\t$.ui.fancytree.warn(\"Fancytree: ignored duplicate include\");\n\t\treturn;\n\t}\n\n\t/******************************************************************************\n\t * Private functions and variables\n\t */\n\n\tvar i,\n\t\tattr,\n\t\tFT = null, // initialized below\n\t\tTEST_IMG = new RegExp(/\\.|\\//), // strings are considered image urls if they contain '.' or '/'\n\t\tREX_HTML = /[&<>\"'/]/g, // Escape those characters\n\t\tREX_TOOLTIP = /[<>\"'/]/g, // Don't escape `&` in tooltips\n\t\tRECURSIVE_REQUEST_ERROR = \"$recursive_request\",\n\t\tINVALID_REQUEST_TARGET_ERROR = \"$request_target_invalid\",\n\t\tENTITY_MAP = {\n\t\t\t\"&\": \"&amp;\",\n\t\t\t\"<\": \"&lt;\",\n\t\t\t\">\": \"&gt;\",\n\t\t\t'\"': \"&quot;\",\n\t\t\t\"'\": \"&#39;\",\n\t\t\t\"/\": \"&#x2F;\",\n\t\t},\n\t\tIGNORE_KEYCODES = { 16: true, 17: true, 18: true },\n\t\tSPECIAL_KEYCODES = {\n\t\t\t8: \"backspace\",\n\t\t\t9: \"tab\",\n\t\t\t10: \"return\",\n\t\t\t13: \"return\",\n\t\t\t// 16: null, 17: null, 18: null,  // ignore shift, ctrl, alt\n\t\t\t19: \"pause\",\n\t\t\t20: \"capslock\",\n\t\t\t27: \"esc\",\n\t\t\t32: \"space\",\n\t\t\t33: \"pageup\",\n\t\t\t34: \"pagedown\",\n\t\t\t35: \"end\",\n\t\t\t36: \"home\",\n\t\t\t37: \"left\",\n\t\t\t38: \"up\",\n\t\t\t39: \"right\",\n\t\t\t40: \"down\",\n\t\t\t45: \"insert\",\n\t\t\t46: \"del\",\n\t\t\t59: \";\",\n\t\t\t61: \"=\",\n\t\t\t// 91: null, 93: null,  // ignore left and right meta\n\t\t\t96: \"0\",\n\t\t\t97: \"1\",\n\t\t\t98: \"2\",\n\t\t\t99: \"3\",\n\t\t\t100: \"4\",\n\t\t\t101: \"5\",\n\t\t\t102: \"6\",\n\t\t\t103: \"7\",\n\t\t\t104: \"8\",\n\t\t\t105: \"9\",\n\t\t\t106: \"*\",\n\t\t\t107: \"+\",\n\t\t\t109: \"-\",\n\t\t\t110: \".\",\n\t\t\t111: \"/\",\n\t\t\t112: \"f1\",\n\t\t\t113: \"f2\",\n\t\t\t114: \"f3\",\n\t\t\t115: \"f4\",\n\t\t\t116: \"f5\",\n\t\t\t117: \"f6\",\n\t\t\t118: \"f7\",\n\t\t\t119: \"f8\",\n\t\t\t120: \"f9\",\n\t\t\t121: \"f10\",\n\t\t\t122: \"f11\",\n\t\t\t123: \"f12\",\n\t\t\t144: \"numlock\",\n\t\t\t145: \"scroll\",\n\t\t\t173: \"-\",\n\t\t\t186: \";\",\n\t\t\t187: \"=\",\n\t\t\t188: \",\",\n\t\t\t189: \"-\",\n\t\t\t190: \".\",\n\t\t\t191: \"/\",\n\t\t\t192: \"`\",\n\t\t\t219: \"[\",\n\t\t\t220: \"\\\\\",\n\t\t\t221: \"]\",\n\t\t\t222: \"'\",\n\t\t},\n\t\tMODIFIERS = {\n\t\t\t16: \"shift\",\n\t\t\t17: \"ctrl\",\n\t\t\t18: \"alt\",\n\t\t\t91: \"meta\",\n\t\t\t93: \"meta\",\n\t\t},\n\t\tMOUSE_BUTTONS = { 0: \"\", 1: \"left\", 2: \"middle\", 3: \"right\" },\n\t\t// Boolean attributes that can be set with equivalent class names in the LI tags\n\t\t// Note: v2.23: checkbox and hideCheckbox are *not* in this list\n\t\tCLASS_ATTRS =\n\t\t\t\"active expanded focus folder lazy radiogroup selected unselectable unselectableIgnore\".split(\n\t\t\t\t\" \"\n\t\t\t),\n\t\tCLASS_ATTR_MAP = {},\n\t\t// Top-level Fancytree attributes, that can be set by dict\n\t\tTREE_ATTRS = \"columns types\".split(\" \"),\n\t\t// TREE_ATTR_MAP = {},\n\t\t// Top-level FancytreeNode attributes, that can be set by dict\n\t\tNODE_ATTRS =\n\t\t\t\"checkbox expanded extraClasses folder icon iconTooltip key lazy partsel radiogroup refKey selected statusNodeType title tooltip type unselectable unselectableIgnore unselectableStatus\".split(\n\t\t\t\t\" \"\n\t\t\t),\n\t\tNODE_ATTR_MAP = {},\n\t\t// Mapping of lowercase -> real name (because HTML5 data-... attribute only supports lowercase)\n\t\tNODE_ATTR_LOWERCASE_MAP = {},\n\t\t// Attribute names that should NOT be added to node.data\n\t\tNONE_NODE_DATA_MAP = {\n\t\t\tactive: true,\n\t\t\tchildren: true,\n\t\t\tdata: true,\n\t\t\tfocus: true,\n\t\t};\n\n\tfor (i = 0; i < CLASS_ATTRS.length; i++) {\n\t\tCLASS_ATTR_MAP[CLASS_ATTRS[i]] = true;\n\t}\n\tfor (i = 0; i < NODE_ATTRS.length; i++) {\n\t\tattr = NODE_ATTRS[i];\n\t\tNODE_ATTR_MAP[attr] = true;\n\t\tif (attr !== attr.toLowerCase()) {\n\t\t\tNODE_ATTR_LOWERCASE_MAP[attr.toLowerCase()] = attr;\n\t\t}\n\t}\n\t// for(i=0; i<TREE_ATTRS.length; i++) {\n\t// \tTREE_ATTR_MAP[TREE_ATTRS[i]] = true;\n\t// }\n\n\tfunction _assert(cond, msg) {\n\t\t// TODO: see qunit.js extractStacktrace()\n\t\tif (!cond) {\n\t\t\tmsg = msg ? \": \" + msg : \"\";\n\t\t\tmsg = \"Fancytree assertion failed\" + msg;\n\n\t\t\t// consoleApply(\"assert\", [!!cond, msg]);\n\n\t\t\t// #1041: Raised exceptions may not be visible in the browser\n\t\t\t// console if inside promise chains, so we also print directly:\n\t\t\t$.ui.fancytree.error(msg);\n\n\t\t\t// Throw exception:\n\t\t\t$.error(msg);\n\t\t}\n\t}\n\n\tfunction _hasProp(object, property) {\n\t\treturn Object.prototype.hasOwnProperty.call(object, property);\n\t}\n\n\t/* Replacement for the deprecated `jQuery.isFunction()`. */\n\tfunction _isFunction(obj) {\n\t\treturn typeof obj === \"function\";\n\t}\n\n\t/* Replacement for the deprecated `jQuery.trim()`. */\n\tfunction _trim(text) {\n\t\treturn text == null ? \"\" : text.trim();\n\t}\n\n\t/* Replacement for the deprecated `jQuery.isArray()`. */\n\tvar _isArray = Array.isArray;\n\n\t_assert($.ui, \"Fancytree requires jQuery UI (http://jqueryui.com)\");\n\n\tfunction consoleApply(method, args) {\n\t\tvar i,\n\t\t\ts,\n\t\t\tfn = window.console ? window.console[method] : null;\n\n\t\tif (fn) {\n\t\t\ttry {\n\t\t\t\tfn.apply(window.console, args);\n\t\t\t} catch (e) {\n\t\t\t\t// IE 8?\n\t\t\t\ts = \"\";\n\t\t\t\tfor (i = 0; i < args.length; i++) {\n\t\t\t\t\ts += args[i];\n\t\t\t\t}\n\t\t\t\tfn(s);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* support: IE8 Polyfil for Date.now() */\n\tif (!Date.now) {\n\t\tDate.now = function now() {\n\t\t\treturn new Date().getTime();\n\t\t};\n\t}\n\n\t/*Return true if x is a FancytreeNode.*/\n\tfunction _isNode(x) {\n\t\treturn !!(x.tree && x.statusNodeType !== undefined);\n\t}\n\n\t/** Return true if dotted version string is equal or higher than requested version.\n\t *\n\t * See http://jsfiddle.net/mar10/FjSAN/\n\t */\n\tfunction isVersionAtLeast(dottedVersion, major, minor, patch) {\n\t\tvar i,\n\t\t\tv,\n\t\t\tt,\n\t\t\tverParts = $.map(_trim(dottedVersion).split(\".\"), function (e) {\n\t\t\t\treturn parseInt(e, 10);\n\t\t\t}),\n\t\t\ttestParts = $.map(\n\t\t\t\tArray.prototype.slice.call(arguments, 1),\n\t\t\t\tfunction (e) {\n\t\t\t\t\treturn parseInt(e, 10);\n\t\t\t\t}\n\t\t\t);\n\n\t\tfor (i = 0; i < testParts.length; i++) {\n\t\t\tv = verParts[i] || 0;\n\t\t\tt = testParts[i] || 0;\n\t\t\tif (v !== t) {\n\t\t\t\treturn v > t;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Deep-merge a list of objects (but replace array-type options).\n\t *\n\t * jQuery's $.extend(true, ...) method does a deep merge, that also merges Arrays.\n\t * This variant is used to merge extension defaults with user options, and should\n\t * merge objects, but override arrays (for example the `triggerStart: [...]` option\n\t * of ext-edit). Also `null` values are copied over and not skipped.\n\t *\n\t * See issue #876\n\t *\n\t * Example:\n\t * _simpleDeepMerge({}, o1, o2);\n\t */\n\tfunction _simpleDeepMerge() {\n\t\tvar options,\n\t\t\tname,\n\t\t\tsrc,\n\t\t\tcopy,\n\t\t\tclone,\n\t\t\ttarget = arguments[0] || {},\n\t\t\ti = 1,\n\t\t\tlength = arguments.length;\n\n\t\t// Handle case when target is a string or something (possible in deep copy)\n\t\tif (typeof target !== \"object\" && !_isFunction(target)) {\n\t\t\ttarget = {};\n\t\t}\n\t\tif (i === length) {\n\t\t\tthrow Error(\"need at least two args\");\n\t\t}\n\t\tfor (; i < length; i++) {\n\t\t\t// Only deal with non-null/undefined values\n\t\t\tif ((options = arguments[i]) != null) {\n\t\t\t\t// Extend the base object\n\t\t\t\tfor (name in options) {\n\t\t\t\t\tif (_hasProp(options, name)) {\n\t\t\t\t\t\tsrc = target[name];\n\t\t\t\t\t\tcopy = options[name];\n\t\t\t\t\t\t// Prevent never-ending loop\n\t\t\t\t\t\tif (target === copy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Recurse if we're merging plain objects\n\t\t\t\t\t\t// (NOTE: unlike $.extend, we don't merge arrays, but replace them)\n\t\t\t\t\t\tif (copy && $.isPlainObject(copy)) {\n\t\t\t\t\t\t\tclone = src && $.isPlainObject(src) ? src : {};\n\t\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\t\ttarget[name] = _simpleDeepMerge(clone, copy);\n\t\t\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t\t} else if (copy !== undefined) {\n\t\t\t\t\t\t\ttarget[name] = copy;\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\t// Return the modified object\n\t\treturn target;\n\t}\n\n\t/** Return a wrapper that calls sub.methodName() and exposes\n\t *  this             : tree\n\t *  this._local      : tree.ext.EXTNAME\n\t *  this._super      : base.methodName.call()\n\t *  this._superApply : base.methodName.apply()\n\t */\n\tfunction _makeVirtualFunction(methodName, tree, base, extension, extName) {\n\t\t// $.ui.fancytree.debug(\"_makeVirtualFunction\", methodName, tree, base, extension, extName);\n\t\t// if(rexTestSuper && !rexTestSuper.test(func)){\n\t\t//     // extension.methodName() doesn't call _super(), so no wrapper required\n\t\t//     return func;\n\t\t// }\n\t\t// Use an immediate function as closure\n\t\tvar proxy = (function () {\n\t\t\tvar prevFunc = tree[methodName], // org. tree method or prev. proxy\n\t\t\t\tbaseFunc = extension[methodName], //\n\t\t\t\t_local = tree.ext[extName],\n\t\t\t\t_super = function () {\n\t\t\t\t\treturn prevFunc.apply(tree, arguments);\n\t\t\t\t},\n\t\t\t\t_superApply = function (args) {\n\t\t\t\t\treturn prevFunc.apply(tree, args);\n\t\t\t\t};\n\n\t\t\t// Return the wrapper function\n\t\t\treturn function () {\n\t\t\t\tvar prevLocal = tree._local,\n\t\t\t\t\tprevSuper = tree._super,\n\t\t\t\t\tprevSuperApply = tree._superApply;\n\n\t\t\t\ttry {\n\t\t\t\t\ttree._local = _local;\n\t\t\t\t\ttree._super = _super;\n\t\t\t\t\ttree._superApply = _superApply;\n\t\t\t\t\treturn baseFunc.apply(tree, arguments);\n\t\t\t\t} finally {\n\t\t\t\t\ttree._local = prevLocal;\n\t\t\t\t\ttree._super = prevSuper;\n\t\t\t\t\ttree._superApply = prevSuperApply;\n\t\t\t\t}\n\t\t\t};\n\t\t})(); // end of Immediate Function\n\t\treturn proxy;\n\t}\n\n\t/**\n\t * Subclass `base` by creating proxy functions\n\t */\n\tfunction _subclassObject(tree, base, extension, extName) {\n\t\t// $.ui.fancytree.debug(\"_subclassObject\", tree, base, extension, extName);\n\t\tfor (var attrName in extension) {\n\t\t\tif (typeof extension[attrName] === \"function\") {\n\t\t\t\tif (typeof tree[attrName] === \"function\") {\n\t\t\t\t\t// override existing method\n\t\t\t\t\ttree[attrName] = _makeVirtualFunction(\n\t\t\t\t\t\tattrName,\n\t\t\t\t\t\ttree,\n\t\t\t\t\t\tbase,\n\t\t\t\t\t\textension,\n\t\t\t\t\t\textName\n\t\t\t\t\t);\n\t\t\t\t} else if (attrName.charAt(0) === \"_\") {\n\t\t\t\t\t// Create private methods in tree.ext.EXTENSION namespace\n\t\t\t\t\ttree.ext[extName][attrName] = _makeVirtualFunction(\n\t\t\t\t\t\tattrName,\n\t\t\t\t\t\ttree,\n\t\t\t\t\t\tbase,\n\t\t\t\t\t\textension,\n\t\t\t\t\t\textName\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t$.error(\n\t\t\t\t\t\t\"Could not override tree.\" +\n\t\t\t\t\t\t\tattrName +\n\t\t\t\t\t\t\t\". Use prefix '_' to create tree.\" +\n\t\t\t\t\t\t\textName +\n\t\t\t\t\t\t\t\"._\" +\n\t\t\t\t\t\t\tattrName\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Create member variables in tree.ext.EXTENSION namespace\n\t\t\t\tif (attrName !== \"options\") {\n\t\t\t\t\ttree.ext[extName][attrName] = extension[attrName];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _getResolvedPromise(context, argArray) {\n\t\tif (context === undefined) {\n\t\t\treturn $.Deferred(function () {\n\t\t\t\tthis.resolve();\n\t\t\t}).promise();\n\t\t}\n\t\treturn $.Deferred(function () {\n\t\t\tthis.resolveWith(context, argArray);\n\t\t}).promise();\n\t}\n\n\tfunction _getRejectedPromise(context, argArray) {\n\t\tif (context === undefined) {\n\t\t\treturn $.Deferred(function () {\n\t\t\t\tthis.reject();\n\t\t\t}).promise();\n\t\t}\n\t\treturn $.Deferred(function () {\n\t\t\tthis.rejectWith(context, argArray);\n\t\t}).promise();\n\t}\n\n\tfunction _makeResolveFunc(deferred, context) {\n\t\treturn function () {\n\t\t\tdeferred.resolveWith(context);\n\t\t};\n\t}\n\n\tfunction _getElementDataAsDict($el) {\n\t\t// Evaluate 'data-NAME' attributes with special treatment for 'data-json'.\n\t\tvar d = $.extend({}, $el.data()),\n\t\t\tjson = d.json;\n\n\t\tdelete d.fancytree; // added to container by widget factory (old jQuery UI)\n\t\tdelete d.uiFancytree; // added to container by widget factory\n\n\t\tif (json) {\n\t\t\tdelete d.json;\n\t\t\t// <li data-json='...'> is already returned as object (http://api.jquery.com/data/#data-html5)\n\t\t\td = $.extend(d, json);\n\t\t}\n\t\treturn d;\n\t}\n\n\tfunction _escapeTooltip(s) {\n\t\treturn (\"\" + s).replace(REX_TOOLTIP, function (s) {\n\t\t\treturn ENTITY_MAP[s];\n\t\t});\n\t}\n\n\t// TODO: use currying\n\tfunction _makeNodeTitleMatcher(s) {\n\t\ts = s.toLowerCase();\n\t\treturn function (node) {\n\t\t\treturn node.title.toLowerCase().indexOf(s) >= 0;\n\t\t};\n\t}\n\n\tfunction _makeNodeTitleStartMatcher(s) {\n\t\tvar reMatch = new RegExp(\"^\" + s, \"i\");\n\t\treturn function (node) {\n\t\t\treturn reMatch.test(node.title);\n\t\t};\n\t}\n\n\t/******************************************************************************\n\t * FancytreeNode\n\t */\n\n\t/**\n\t * Creates a new FancytreeNode\n\t *\n\t * @class FancytreeNode\n\t * @classdesc A FancytreeNode represents the hierarchical data model and operations.\n\t *\n\t * @param {FancytreeNode} parent\n\t * @param {NodeData} obj\n\t *\n\t * @property {Fancytree} tree The tree instance\n\t * @property {FancytreeNode} parent The parent node\n\t * @property {string} key Node id (must be unique inside the tree)\n\t * @property {string} title Display name (may contain HTML)\n\t * @property {object} data Contains all extra data that was passed on node creation\n\t * @property {FancytreeNode[] | null | undefined} children Array of child nodes.<br>\n\t *     For lazy nodes, null or undefined means 'not yet loaded'. Use an empty array\n\t *     to define a node that has no children.\n\t * @property {boolean} expanded Use isExpanded(), setExpanded() to access this property.\n\t * @property {string} extraClasses Additional CSS classes, added to the node's `<span>`.<br>\n\t *     Note: use `node.add/remove/toggleClass()` to modify.\n\t * @property {boolean} folder Folder nodes have different default icons and click behavior.<br>\n\t *     Note: Also non-folders may have children.\n\t * @property {string} statusNodeType null for standard nodes. Otherwise type of special system node: 'error', 'loading', 'nodata', or 'paging'.\n\t * @property {boolean} lazy True if this node is loaded on demand, i.e. on first expansion.\n\t * @property {boolean} selected Use isSelected(), setSelected() to access this property.\n\t * @property {string} tooltip Alternative description used as hover popup\n\t * @property {string} iconTooltip Description used as hover popup for icon. @since 2.27\n\t * @property {string} type Node type, used with tree.types map. @since 2.27\n\t */\n\tfunction FancytreeNode(parent, obj) {\n\t\tvar i, l, name, cl;\n\n\t\tthis.parent = parent;\n\t\tthis.tree = parent.tree;\n\t\tthis.ul = null;\n\t\tthis.li = null; // <li id='key' ftnode=this> tag\n\t\tthis.statusNodeType = null; // if this is a temp. node to display the status of its parent\n\t\tthis._isLoading = false; // if this node itself is loading\n\t\tthis._error = null; // {message: '...'} if a load error occurred\n\t\tthis.data = {};\n\n\t\t// TODO: merge this code with node.toDict()\n\t\t// copy attributes from obj object\n\t\tfor (i = 0, l = NODE_ATTRS.length; i < l; i++) {\n\t\t\tname = NODE_ATTRS[i];\n\t\t\tthis[name] = obj[name];\n\t\t}\n\t\t// unselectableIgnore and unselectableStatus imply unselectable\n\t\tif (\n\t\t\tthis.unselectableIgnore != null ||\n\t\t\tthis.unselectableStatus != null\n\t\t) {\n\t\t\tthis.unselectable = true;\n\t\t}\n\t\tif (obj.hideCheckbox) {\n\t\t\t$.error(\n\t\t\t\t\"'hideCheckbox' node option was removed in v2.23.0: use 'checkbox: false'\"\n\t\t\t);\n\t\t}\n\t\t// node.data += obj.data\n\t\tif (obj.data) {\n\t\t\t$.extend(this.data, obj.data);\n\t\t}\n\t\t// Copy all other attributes to this.data.NAME\n\t\tfor (name in obj) {\n\t\t\tif (\n\t\t\t\t!NODE_ATTR_MAP[name] &&\n\t\t\t\t(this.tree.options.copyFunctionsToData ||\n\t\t\t\t\t!_isFunction(obj[name])) &&\n\t\t\t\t!NONE_NODE_DATA_MAP[name]\n\t\t\t) {\n\t\t\t\t// node.data.NAME = obj.NAME\n\t\t\t\tthis.data[name] = obj[name];\n\t\t\t}\n\t\t}\n\n\t\t// Fix missing key\n\t\tif (this.key == null) {\n\t\t\t// test for null OR undefined\n\t\t\tif (this.tree.options.defaultKey) {\n\t\t\t\tthis.key = \"\" + this.tree.options.defaultKey(this);\n\t\t\t\t_assert(this.key, \"defaultKey() must return a unique key\");\n\t\t\t} else {\n\t\t\t\tthis.key = \"_\" + FT._nextNodeKey++;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.key = \"\" + this.key; // Convert to string (#217)\n\t\t}\n\n\t\t// Fix tree.activeNode\n\t\t// TODO: not elegant: we use obj.active as marker to set tree.activeNode\n\t\t// when loading from a dictionary.\n\t\tif (obj.active) {\n\t\t\t_assert(\n\t\t\t\tthis.tree.activeNode === null,\n\t\t\t\t\"only one active node allowed\"\n\t\t\t);\n\t\t\tthis.tree.activeNode = this;\n\t\t}\n\t\tif (obj.selected) {\n\t\t\t// #186\n\t\t\tthis.tree.lastSelectedNode = this;\n\t\t}\n\t\t// TODO: handle obj.focus = true\n\n\t\t// Create child nodes\n\t\tcl = obj.children;\n\t\tif (cl) {\n\t\t\tif (cl.length) {\n\t\t\t\tthis._setChildren(cl);\n\t\t\t} else {\n\t\t\t\t// if an empty array was passed for a lazy node, keep it, in order to mark it 'loaded'\n\t\t\t\tthis.children = this.lazy ? [] : null;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.children = null;\n\t\t}\n\t\t// Add to key/ref map (except for root node)\n\t\t//\tif( parent ) {\n\t\tthis.tree._callHook(\"treeRegisterNode\", this.tree, true, this);\n\t\t//\t}\n\t}\n\n\tFancytreeNode.prototype = /** @lends FancytreeNode# */ {\n\t\t/* Return the direct child FancytreeNode with a given key, index. */\n\t\t_findDirectChild: function (ptr) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tcl = this.children;\n\n\t\t\tif (cl) {\n\t\t\t\tif (typeof ptr === \"string\") {\n\t\t\t\t\tfor (i = 0, l = cl.length; i < l; i++) {\n\t\t\t\t\t\tif (cl[i].key === ptr) {\n\t\t\t\t\t\t\treturn cl[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (typeof ptr === \"number\") {\n\t\t\t\t\treturn this.children[ptr];\n\t\t\t\t} else if (ptr.parent === this) {\n\t\t\t\t\treturn ptr;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t// TODO: activate()\n\t\t// TODO: activateSilently()\n\t\t/* Internal helper called in recursive addChildren sequence.*/\n\t\t_setChildren: function (children) {\n\t\t\t_assert(\n\t\t\t\tchildren && (!this.children || this.children.length === 0),\n\t\t\t\t\"only init supported\"\n\t\t\t);\n\t\t\tthis.children = [];\n\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\tthis.children.push(new FancytreeNode(this, children[i]));\n\t\t\t}\n\t\t\tthis.tree._callHook(\n\t\t\t\t\"treeStructureChanged\",\n\t\t\t\tthis.tree,\n\t\t\t\t\"setChildren\"\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t * Append (or insert) a list of child nodes.\n\t\t *\n\t\t * @param {NodeData[]} children array of child node definitions (also single child accepted)\n\t\t * @param {FancytreeNode | string | Integer} [insertBefore] child node (or key or index of such).\n\t\t *     If omitted, the new children are appended.\n\t\t * @returns {FancytreeNode} first child added\n\t\t *\n\t\t * @see FancytreeNode#applyPatch\n\t\t */\n\t\taddChildren: function (children, insertBefore) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tpos,\n\t\t\t\torigFirstChild = this.getFirstChild(),\n\t\t\t\torigLastChild = this.getLastChild(),\n\t\t\t\tfirstNode = null,\n\t\t\t\tnodeList = [];\n\n\t\t\tif ($.isPlainObject(children)) {\n\t\t\t\tchildren = [children];\n\t\t\t}\n\t\t\tif (!this.children) {\n\t\t\t\tthis.children = [];\n\t\t\t}\n\t\t\tfor (i = 0, l = children.length; i < l; i++) {\n\t\t\t\tnodeList.push(new FancytreeNode(this, children[i]));\n\t\t\t}\n\t\t\tfirstNode = nodeList[0];\n\t\t\tif (insertBefore == null) {\n\t\t\t\tthis.children = this.children.concat(nodeList);\n\t\t\t} else {\n\t\t\t\t// Returns null if insertBefore is not a direct child:\n\t\t\t\tinsertBefore = this._findDirectChild(insertBefore);\n\t\t\t\tpos = $.inArray(insertBefore, this.children);\n\t\t\t\t_assert(pos >= 0, \"insertBefore must be an existing child\");\n\t\t\t\t// insert nodeList after children[pos]\n\t\t\t\tthis.children.splice.apply(\n\t\t\t\t\tthis.children,\n\t\t\t\t\t[pos, 0].concat(nodeList)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (origFirstChild && !insertBefore) {\n\t\t\t\t// #708: Fast path -- don't render every child of root, just the new ones!\n\t\t\t\t// #723, #729: but only if it's appended to an existing child list\n\t\t\t\tfor (i = 0, l = nodeList.length; i < l; i++) {\n\t\t\t\t\tnodeList[i].render(); // New nodes were never rendered before\n\t\t\t\t}\n\t\t\t\t// Adjust classes where status may have changed\n\t\t\t\t// Has a first child\n\t\t\t\tif (origFirstChild !== this.getFirstChild()) {\n\t\t\t\t\t// Different first child -- recompute classes\n\t\t\t\t\torigFirstChild.renderStatus();\n\t\t\t\t}\n\t\t\t\tif (origLastChild !== this.getLastChild()) {\n\t\t\t\t\t// Different last child -- recompute classes\n\t\t\t\t\torigLastChild.renderStatus();\n\t\t\t\t}\n\t\t\t} else if (!this.parent || this.parent.ul || this.tr) {\n\t\t\t\t// render if the parent was rendered (or this is a root node)\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tif (this.tree.options.selectMode === 3) {\n\t\t\t\tthis.fixSelection3FromEndNodes();\n\t\t\t}\n\t\t\tthis.triggerModifyChild(\n\t\t\t\t\"add\",\n\t\t\t\tnodeList.length === 1 ? nodeList[0] : null\n\t\t\t);\n\t\t\treturn firstNode;\n\t\t},\n\t\t/**\n\t\t * Add class to node's span tag and to .extraClasses.\n\t\t *\n\t\t * @param {string} className class name\n\t\t *\n\t\t * @since 2.17\n\t\t */\n\t\taddClass: function (className) {\n\t\t\treturn this.toggleClass(className, true);\n\t\t},\n\t\t/**\n\t\t * Append or prepend a node, or append a child node.\n\t\t *\n\t\t * This a convenience function that calls addChildren()\n\t\t *\n\t\t * @param {NodeData} node node definition\n\t\t * @param {string} [mode=child] 'before', 'after', 'firstChild', or 'child' ('over' is a synonym for 'child')\n\t\t * @returns {FancytreeNode} new node\n\t\t */\n\t\taddNode: function (node, mode) {\n\t\t\tif (mode === undefined || mode === \"over\") {\n\t\t\t\tmode = \"child\";\n\t\t\t}\n\t\t\tswitch (mode) {\n\t\t\t\tcase \"after\":\n\t\t\t\t\treturn this.getParent().addChildren(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tthis.getNextSibling()\n\t\t\t\t\t);\n\t\t\t\tcase \"before\":\n\t\t\t\t\treturn this.getParent().addChildren(node, this);\n\t\t\t\tcase \"firstChild\":\n\t\t\t\t\t// Insert before the first child if any\n\t\t\t\t\tvar insertBefore = this.children ? this.children[0] : null;\n\t\t\t\t\treturn this.addChildren(node, insertBefore);\n\t\t\t\tcase \"child\":\n\t\t\t\tcase \"over\":\n\t\t\t\t\treturn this.addChildren(node);\n\t\t\t}\n\t\t\t_assert(false, \"Invalid mode: \" + mode);\n\t\t},\n\t\t/**Add child status nodes that indicate 'More...', etc.\n\t\t *\n\t\t * This also maintains the node's `partload` property.\n\t\t * @param {boolean|object} node optional node definition. Pass `false` to remove all paging nodes.\n\t\t * @param {string} [mode='child'] 'child'|firstChild'\n\t\t * @since 2.15\n\t\t */\n\t\taddPagingNode: function (node, mode) {\n\t\t\tvar i, n;\n\n\t\t\tmode = mode || \"child\";\n\t\t\tif (node === false) {\n\t\t\t\tfor (i = this.children.length - 1; i >= 0; i--) {\n\t\t\t\t\tn = this.children[i];\n\t\t\t\t\tif (n.statusNodeType === \"paging\") {\n\t\t\t\t\t\tthis.removeChild(n);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.partload = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnode = $.extend(\n\t\t\t\t{\n\t\t\t\t\ttitle: this.tree.options.strings.moreData,\n\t\t\t\t\tstatusNodeType: \"paging\",\n\t\t\t\t\ticon: false,\n\t\t\t\t},\n\t\t\t\tnode\n\t\t\t);\n\t\t\tthis.partload = true;\n\t\t\treturn this.addNode(node, mode);\n\t\t},\n\t\t/**\n\t\t * Append new node after this.\n\t\t *\n\t\t * This a convenience function that calls addNode(node, 'after')\n\t\t *\n\t\t * @param {NodeData} node node definition\n\t\t * @returns {FancytreeNode} new node\n\t\t */\n\t\tappendSibling: function (node) {\n\t\t\treturn this.addNode(node, \"after\");\n\t\t},\n\t\t/**\n\t\t * (experimental) Apply a modification (or navigation) operation.\n\t\t *\n\t\t * @param {string} cmd\n\t\t * @param {object} [opts]\n\t\t * @see Fancytree#applyCommand\n\t\t * @since 2.32\n\t\t */\n\t\tapplyCommand: function (cmd, opts) {\n\t\t\treturn this.tree.applyCommand(cmd, this, opts);\n\t\t},\n\t\t/**\n\t\t * Modify existing child nodes.\n\t\t *\n\t\t * @param {NodePatch} patch\n\t\t * @returns {$.Promise}\n\t\t * @see FancytreeNode#addChildren\n\t\t */\n\t\tapplyPatch: function (patch) {\n\t\t\t// patch [key, null] means 'remove'\n\t\t\tif (patch === null) {\n\t\t\t\tthis.remove();\n\t\t\t\treturn _getResolvedPromise(this);\n\t\t\t}\n\t\t\t// TODO: make sure that root node is not collapsed or modified\n\t\t\t// copy (most) attributes to node.ATTR or node.data.ATTR\n\t\t\tvar name,\n\t\t\t\tpromise,\n\t\t\t\tv,\n\t\t\t\tIGNORE_MAP = { children: true, expanded: true, parent: true }; // TODO: should be global\n\n\t\t\tfor (name in patch) {\n\t\t\t\tif (_hasProp(patch, name)) {\n\t\t\t\t\tv = patch[name];\n\t\t\t\t\tif (!IGNORE_MAP[name] && !_isFunction(v)) {\n\t\t\t\t\t\tif (NODE_ATTR_MAP[name]) {\n\t\t\t\t\t\t\tthis[name] = v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.data[name] = v;\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\t// Remove and/or create children\n\t\t\tif (_hasProp(patch, \"children\")) {\n\t\t\t\tthis.removeChildren();\n\t\t\t\tif (patch.children) {\n\t\t\t\t\t// only if not null and not empty list\n\t\t\t\t\t// TODO: addChildren instead?\n\t\t\t\t\tthis._setChildren(patch.children);\n\t\t\t\t}\n\t\t\t\t// TODO: how can we APPEND or INSERT child nodes?\n\t\t\t}\n\t\t\tif (this.isVisible()) {\n\t\t\t\tthis.renderTitle();\n\t\t\t\tthis.renderStatus();\n\t\t\t}\n\t\t\t// Expand collapse (final step, since this may be async)\n\t\t\tif (_hasProp(patch, \"expanded\")) {\n\t\t\t\tpromise = this.setExpanded(patch.expanded);\n\t\t\t} else {\n\t\t\t\tpromise = _getResolvedPromise(this);\n\t\t\t}\n\t\t\treturn promise;\n\t\t},\n\t\t/** Collapse all sibling nodes.\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tcollapseSiblings: function () {\n\t\t\treturn this.tree._callHook(\"nodeCollapseSiblings\", this);\n\t\t},\n\t\t/** Copy this node as sibling or child of `node`.\n\t\t *\n\t\t * @param {FancytreeNode} node source node\n\t\t * @param {string} [mode=child] 'before' | 'after' | 'child'\n\t\t * @param {Function} [map] callback function(NodeData, FancytreeNode) that could modify the new node\n\t\t * @returns {FancytreeNode} new\n\t\t */\n\t\tcopyTo: function (node, mode, map) {\n\t\t\treturn node.addNode(this.toDict(true, map), mode);\n\t\t},\n\t\t/** Count direct and indirect children.\n\t\t *\n\t\t * @param {boolean} [deep=true] pass 'false' to only count direct children\n\t\t * @returns {int} number of child nodes\n\t\t */\n\t\tcountChildren: function (deep) {\n\t\t\tvar cl = this.children,\n\t\t\t\ti,\n\t\t\t\tl,\n\t\t\t\tn;\n\t\t\tif (!cl) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tn = cl.length;\n\t\t\tif (deep !== false) {\n\t\t\t\tfor (i = 0, l = n; i < l; i++) {\n\t\t\t\t\tn += cl[i].countChildren();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn n;\n\t\t},\n\t\t// TODO: deactivate()\n\t\t/** Write to browser console if debugLevel >= 4 (prepending node info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\tdebug: function (msg) {\n\t\t\tif (this.tree.options.debugLevel >= 4) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"log\", arguments);\n\t\t\t}\n\t\t},\n\t\t/** Deprecated.\n\t\t * @deprecated since 2014-02-16. Use resetLazy() instead.\n\t\t */\n\t\tdiscard: function () {\n\t\t\tthis.warn(\n\t\t\t\t\"FancytreeNode.discard() is deprecated since 2014-02-16. Use .resetLazy() instead.\"\n\t\t\t);\n\t\t\treturn this.resetLazy();\n\t\t},\n\t\t/** Remove DOM elements for all descendents. May be called on .collapse event\n\t\t * to keep the DOM small.\n\t\t * @param {boolean} [includeSelf=false]\n\t\t */\n\t\tdiscardMarkup: function (includeSelf) {\n\t\t\tvar fn = includeSelf ? \"nodeRemoveMarkup\" : \"nodeRemoveChildMarkup\";\n\t\t\tthis.tree._callHook(fn, this);\n\t\t},\n\t\t/** Write error to browser console if debugLevel >= 1 (prepending tree info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\terror: function (msg) {\n\t\t\tif (this.tree.options.debugLevel >= 1) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"error\", arguments);\n\t\t\t}\n\t\t},\n\t\t/**Find all nodes that match condition (excluding self).\n\t\t *\n\t\t * @param {string | function(node)} match title string to search for, or a\n\t\t *     callback function that returns `true` if a node is matched.\n\t\t * @returns {FancytreeNode[]} array of nodes (may be empty)\n\t\t */\n\t\tfindAll: function (match) {\n\t\t\tmatch = _isFunction(match) ? match : _makeNodeTitleMatcher(match);\n\t\t\tvar res = [];\n\t\t\tthis.visit(function (n) {\n\t\t\t\tif (match(n)) {\n\t\t\t\t\tres.push(n);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn res;\n\t\t},\n\t\t/**Find first node that matches condition (excluding self).\n\t\t *\n\t\t * @param {string | function(node)} match title string to search for, or a\n\t\t *     callback function that returns `true` if a node is matched.\n\t\t * @returns {FancytreeNode} matching node or null\n\t\t * @see FancytreeNode#findAll\n\t\t */\n\t\tfindFirst: function (match) {\n\t\t\tmatch = _isFunction(match) ? match : _makeNodeTitleMatcher(match);\n\t\t\tvar res = null;\n\t\t\tthis.visit(function (n) {\n\t\t\t\tif (match(n)) {\n\t\t\t\t\tres = n;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn res;\n\t\t},\n\t\t/** Find a node relative to self.\n\t\t *\n\t\t * @param {number|string} where The keyCode that would normally trigger this move,\n\t\t *\t\tor a keyword ('down', 'first', 'last', 'left', 'parent', 'right', 'up').\n\t\t * @returns {FancytreeNode}\n\t\t * @since v2.31\n\t\t */\n\t\tfindRelatedNode: function (where, includeHidden) {\n\t\t\treturn this.tree.findRelatedNode(this, where, includeHidden);\n\t\t},\n\t\t/* Apply selection state (internal use only) */\n\t\t_changeSelectStatusAttrs: function (state) {\n\t\t\tvar changed = false,\n\t\t\t\topts = this.tree.options,\n\t\t\t\tunselectable = FT.evalOption(\n\t\t\t\t\t\"unselectable\",\n\t\t\t\t\tthis,\n\t\t\t\t\tthis,\n\t\t\t\t\topts,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\tunselectableStatus = FT.evalOption(\n\t\t\t\t\t\"unselectableStatus\",\n\t\t\t\t\tthis,\n\t\t\t\t\tthis,\n\t\t\t\t\topts,\n\t\t\t\t\tundefined\n\t\t\t\t);\n\n\t\t\tif (unselectable && unselectableStatus != null) {\n\t\t\t\tstate = unselectableStatus;\n\t\t\t}\n\t\t\tswitch (state) {\n\t\t\t\tcase false:\n\t\t\t\t\tchanged = this.selected || this.partsel;\n\t\t\t\t\tthis.selected = false;\n\t\t\t\t\tthis.partsel = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase true:\n\t\t\t\t\tchanged = !this.selected || !this.partsel;\n\t\t\t\t\tthis.selected = true;\n\t\t\t\t\tthis.partsel = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase undefined:\n\t\t\t\t\tchanged = this.selected || !this.partsel;\n\t\t\t\t\tthis.selected = false;\n\t\t\t\t\tthis.partsel = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t_assert(false, \"invalid state: \" + state);\n\t\t\t}\n\t\t\t// this.debug(\"fixSelection3AfterLoad() _changeSelectStatusAttrs()\", state, changed);\n\t\t\tif (changed) {\n\t\t\t\tthis.renderStatus();\n\t\t\t}\n\t\t\treturn changed;\n\t\t},\n\t\t/**\n\t\t * Fix selection status, after this node was (de)selected in multi-hier mode.\n\t\t * This includes (de)selecting all children.\n\t\t */\n\t\tfixSelection3AfterClick: function (callOpts) {\n\t\t\tvar flag = this.isSelected();\n\n\t\t\t// this.debug(\"fixSelection3AfterClick()\");\n\n\t\t\tthis.visit(function (node) {\n\t\t\t\tnode._changeSelectStatusAttrs(flag);\n\t\t\t\tif (node.radiogroup) {\n\t\t\t\t\t// #931: don't (de)select this branch\n\t\t\t\t\treturn \"skip\";\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.fixSelection3FromEndNodes(callOpts);\n\t\t},\n\t\t/**\n\t\t * Fix selection status for multi-hier mode.\n\t\t * Only end-nodes are considered to update the descendants branch and parents.\n\t\t * Should be called after this node has loaded new children or after\n\t\t * children have been modified using the API.\n\t\t */\n\t\tfixSelection3FromEndNodes: function (callOpts) {\n\t\t\tvar opts = this.tree.options;\n\n\t\t\t// this.debug(\"fixSelection3FromEndNodes()\");\n\t\t\t_assert(opts.selectMode === 3, \"expected selectMode 3\");\n\n\t\t\t// Visit all end nodes and adjust their parent's `selected` and `partsel`\n\t\t\t// attributes. Return selection state true, false, or undefined.\n\t\t\tfunction _walk(node) {\n\t\t\t\tvar i,\n\t\t\t\t\tl,\n\t\t\t\t\tchild,\n\t\t\t\t\ts,\n\t\t\t\t\tstate,\n\t\t\t\t\tallSelected,\n\t\t\t\t\tsomeSelected,\n\t\t\t\t\tunselIgnore,\n\t\t\t\t\tunselState,\n\t\t\t\t\tchildren = node.children;\n\n\t\t\t\tif (children && children.length) {\n\t\t\t\t\t// check all children recursively\n\t\t\t\t\tallSelected = true;\n\t\t\t\t\tsomeSelected = false;\n\n\t\t\t\t\tfor (i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\t\tchild = children[i];\n\t\t\t\t\t\t// the selection state of a node is not relevant; we need the end-nodes\n\t\t\t\t\t\ts = _walk(child);\n\t\t\t\t\t\t// if( !child.unselectableIgnore ) {\n\t\t\t\t\t\tunselIgnore = FT.evalOption(\n\t\t\t\t\t\t\t\"unselectableIgnore\",\n\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\topts,\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!unselIgnore) {\n\t\t\t\t\t\t\tif (s !== false) {\n\t\t\t\t\t\t\t\tsomeSelected = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (s !== true) {\n\t\t\t\t\t\t\t\tallSelected = false;\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\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\t\tstate = allSelected\n\t\t\t\t\t\t? true\n\t\t\t\t\t\t: someSelected\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: false;\n\t\t\t\t} else {\n\t\t\t\t\t// This is an end-node: simply report the status\n\t\t\t\t\tunselState = FT.evalOption(\n\t\t\t\t\t\t\"unselectableStatus\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\topts,\n\t\t\t\t\t\tundefined\n\t\t\t\t\t);\n\t\t\t\t\tstate = unselState == null ? !!node.selected : !!unselState;\n\t\t\t\t}\n\t\t\t\t// #939: Keep a `partsel` flag that was explicitly set on a lazy node\n\t\t\t\tif (\n\t\t\t\t\tnode.partsel &&\n\t\t\t\t\t!node.selected &&\n\t\t\t\t\tnode.lazy &&\n\t\t\t\t\tnode.children == null\n\t\t\t\t) {\n\t\t\t\t\tstate = undefined;\n\t\t\t\t}\n\t\t\t\tnode._changeSelectStatusAttrs(state);\n\t\t\t\treturn state;\n\t\t\t}\n\t\t\t_walk(this);\n\n\t\t\t// Update parent's state\n\t\t\tthis.visitParents(function (node) {\n\t\t\t\tvar i,\n\t\t\t\t\tl,\n\t\t\t\t\tchild,\n\t\t\t\t\tstate,\n\t\t\t\t\tunselIgnore,\n\t\t\t\t\tunselState,\n\t\t\t\t\tchildren = node.children,\n\t\t\t\t\tallSelected = true,\n\t\t\t\t\tsomeSelected = false;\n\n\t\t\t\tfor (i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\tchild = children[i];\n\t\t\t\t\tunselIgnore = FT.evalOption(\n\t\t\t\t\t\t\"unselectableIgnore\",\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\topts,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t\tif (!unselIgnore) {\n\t\t\t\t\t\tunselState = FT.evalOption(\n\t\t\t\t\t\t\t\"unselectableStatus\",\n\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\topts,\n\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t);\n\t\t\t\t\t\tstate =\n\t\t\t\t\t\t\tunselState == null\n\t\t\t\t\t\t\t\t? !!child.selected\n\t\t\t\t\t\t\t\t: !!unselState;\n\t\t\t\t\t\t// When fixing the parents, we trust the sibling status (i.e.\n\t\t\t\t\t\t// we don't recurse)\n\t\t\t\t\t\tif (state || child.partsel) {\n\t\t\t\t\t\t\tsomeSelected = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!state) {\n\t\t\t\t\t\t\tallSelected = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\tstate = allSelected ? true : someSelected ? undefined : false;\n\t\t\t\tnode._changeSelectStatusAttrs(state);\n\t\t\t});\n\t\t},\n\t\t// TODO: focus()\n\t\t/**\n\t\t * Update node data. If dict contains 'children', then also replace\n\t\t * the hole sub tree.\n\t\t * @param {NodeData} dict\n\t\t *\n\t\t * @see FancytreeNode#addChildren\n\t\t * @see FancytreeNode#applyPatch\n\t\t */\n\t\tfromDict: function (dict) {\n\t\t\t// copy all other attributes to this.data.xxx\n\t\t\tfor (var name in dict) {\n\t\t\t\tif (NODE_ATTR_MAP[name]) {\n\t\t\t\t\t// node.NAME = dict.NAME\n\t\t\t\t\tthis[name] = dict[name];\n\t\t\t\t} else if (name === \"data\") {\n\t\t\t\t\t// node.data += dict.data\n\t\t\t\t\t$.extend(this.data, dict.data);\n\t\t\t\t} else if (\n\t\t\t\t\t!_isFunction(dict[name]) &&\n\t\t\t\t\t!NONE_NODE_DATA_MAP[name]\n\t\t\t\t) {\n\t\t\t\t\t// node.data.NAME = dict.NAME\n\t\t\t\t\tthis.data[name] = dict[name];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (dict.children) {\n\t\t\t\t// recursively set children and render\n\t\t\t\tthis.removeChildren();\n\t\t\t\tthis.addChildren(dict.children);\n\t\t\t}\n\t\t\tthis.renderTitle();\n\t\t\t/*\n\t\t\tvar children = dict.children;\n\t\t\tif(children === undefined){\n\t\t\t\tthis.data = $.extend(this.data, dict);\n\t\t\t\tthis.render();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdict = $.extend({}, dict);\n\t\t\tdict.children = undefined;\n\t\t\tthis.data = $.extend(this.data, dict);\n\t\t\tthis.removeChildren();\n\t\t\tthis.addChild(children);\n\t\t\t*/\n\t\t},\n\t\t/** Return the list of child nodes (undefined for unexpanded lazy nodes).\n\t\t * @returns {FancytreeNode[] | undefined}\n\t\t */\n\t\tgetChildren: function () {\n\t\t\tif (this.hasChildren() === undefined) {\n\t\t\t\t// TODO: only required for lazy nodes?\n\t\t\t\treturn undefined; // Lazy node: unloaded, currently loading, or load error\n\t\t\t}\n\t\t\treturn this.children;\n\t\t},\n\t\t/** Return the first child node or null.\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetFirstChild: function () {\n\t\t\treturn this.children ? this.children[0] : null;\n\t\t},\n\t\t/** Return the 0-based child index.\n\t\t * @returns {int}\n\t\t */\n\t\tgetIndex: function () {\n\t\t\t// return this.parent.children.indexOf(this);\n\t\t\treturn $.inArray(this, this.parent.children); // indexOf doesn't work in IE7\n\t\t},\n\t\t/** Return the hierarchical child index (1-based, e.g. '3.2.4').\n\t\t * @param {string} [separator=\".\"]\n\t\t * @param {int} [digits=1]\n\t\t * @returns {string}\n\t\t */\n\t\tgetIndexHier: function (separator, digits) {\n\t\t\tseparator = separator || \".\";\n\t\t\tvar s,\n\t\t\t\tres = [];\n\t\t\t$.each(this.getParentList(false, true), function (i, o) {\n\t\t\t\ts = \"\" + (o.getIndex() + 1);\n\t\t\t\tif (digits) {\n\t\t\t\t\t// prepend leading zeroes\n\t\t\t\t\ts = (\"0000000\" + s).substr(-digits);\n\t\t\t\t}\n\t\t\t\tres.push(s);\n\t\t\t});\n\t\t\treturn res.join(separator);\n\t\t},\n\t\t/** Return the parent keys separated by options.keyPathSeparator, e.g. \"/id_1/id_17/id_32\".\n\t\t *\n\t\t * (Unlike `node.getPath()`, this method prepends a \"/\" and inverts the first argument.)\n\t\t *\n\t\t * @see FancytreeNode#getPath\n\t\t * @param {boolean} [excludeSelf=false]\n\t\t * @returns {string}\n\t\t */\n\t\tgetKeyPath: function (excludeSelf) {\n\t\t\tvar sep = this.tree.options.keyPathSeparator;\n\n\t\t\treturn sep + this.getPath(!excludeSelf, \"key\", sep);\n\t\t},\n\t\t/** Return the last child of this node or null.\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetLastChild: function () {\n\t\t\treturn this.children\n\t\t\t\t? this.children[this.children.length - 1]\n\t\t\t\t: null;\n\t\t},\n\t\t/** Return node depth. 0: System root node, 1: visible top-level node, 2: first sub-level, ... .\n\t\t * @returns {int}\n\t\t */\n\t\tgetLevel: function () {\n\t\t\tvar level = 0,\n\t\t\t\tdtn = this.parent;\n\t\t\twhile (dtn) {\n\t\t\t\tlevel++;\n\t\t\t\tdtn = dtn.parent;\n\t\t\t}\n\t\t\treturn level;\n\t\t},\n\t\t/** Return the successor node (under the same parent) or null.\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetNextSibling: function () {\n\t\t\t// TODO: use indexOf, if available: (not in IE6)\n\t\t\tif (this.parent) {\n\t\t\t\tvar i,\n\t\t\t\t\tl,\n\t\t\t\t\tac = this.parent.children;\n\n\t\t\t\tfor (i = 0, l = ac.length - 1; i < l; i++) {\n\t\t\t\t\t// up to length-2, so next(last) = null\n\t\t\t\t\tif (ac[i] === this) {\n\t\t\t\t\t\treturn ac[i + 1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t/** Return the parent node (null for the system root node).\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetParent: function () {\n\t\t\t// TODO: return null for top-level nodes?\n\t\t\treturn this.parent;\n\t\t},\n\t\t/** Return an array of all parent nodes (top-down).\n\t\t * @param {boolean} [includeRoot=false] Include the invisible system root node.\n\t\t * @param {boolean} [includeSelf=false] Include the node itself.\n\t\t * @returns {FancytreeNode[]}\n\t\t */\n\t\tgetParentList: function (includeRoot, includeSelf) {\n\t\t\tvar l = [],\n\t\t\t\tdtn = includeSelf ? this : this.parent;\n\t\t\twhile (dtn) {\n\t\t\t\tif (includeRoot || dtn.parent) {\n\t\t\t\t\tl.unshift(dtn);\n\t\t\t\t}\n\t\t\t\tdtn = dtn.parent;\n\t\t\t}\n\t\t\treturn l;\n\t\t},\n\t\t/** Return a string representing the hierachical node path, e.g. \"a/b/c\".\n\t\t * @param {boolean} [includeSelf=true]\n\t\t * @param {string | function} [part=\"title\"] node property name or callback\n\t\t * @param {string} [separator=\"/\"]\n\t\t * @returns {string}\n\t\t * @since v2.31\n\t\t */\n\t\tgetPath: function (includeSelf, part, separator) {\n\t\t\tincludeSelf = includeSelf !== false;\n\t\t\tpart = part || \"title\";\n\t\t\tseparator = separator || \"/\";\n\n\t\t\tvar val,\n\t\t\t\tpath = [],\n\t\t\t\tisFunc = _isFunction(part);\n\n\t\t\tthis.visitParents(function (n) {\n\t\t\t\tif (n.parent) {\n\t\t\t\t\tval = isFunc ? part(n) : n[part];\n\t\t\t\t\tpath.unshift(val);\n\t\t\t\t}\n\t\t\t}, includeSelf);\n\t\t\treturn path.join(separator);\n\t\t},\n\t\t/** Return the predecessor node (under the same parent) or null.\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetPrevSibling: function () {\n\t\t\tif (this.parent) {\n\t\t\t\tvar i,\n\t\t\t\t\tl,\n\t\t\t\t\tac = this.parent.children;\n\n\t\t\t\tfor (i = 1, l = ac.length; i < l; i++) {\n\t\t\t\t\t// start with 1, so prev(first) = null\n\t\t\t\t\tif (ac[i] === this) {\n\t\t\t\t\t\treturn ac[i - 1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t/**\n\t\t * Return an array of selected descendant nodes.\n\t\t * @param {boolean} [stopOnParents=false] only return the topmost selected\n\t\t *     node (useful with selectMode 3)\n\t\t * @returns {FancytreeNode[]}\n\t\t */\n\t\tgetSelectedNodes: function (stopOnParents) {\n\t\t\tvar nodeList = [];\n\t\t\tthis.visit(function (node) {\n\t\t\t\tif (node.selected) {\n\t\t\t\t\tnodeList.push(node);\n\t\t\t\t\tif (stopOnParents === true) {\n\t\t\t\t\t\treturn \"skip\"; // stop processing this branch\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn nodeList;\n\t\t},\n\t\t/** Return true if node has children. Return undefined if not sure, i.e. the node is lazy and not yet loaded).\n\t\t * @returns {boolean | undefined}\n\t\t */\n\t\thasChildren: function () {\n\t\t\tif (this.lazy) {\n\t\t\t\tif (this.children == null) {\n\t\t\t\t\t// null or undefined: Not yet loaded\n\t\t\t\t\treturn undefined;\n\t\t\t\t} else if (this.children.length === 0) {\n\t\t\t\t\t// Loaded, but response was empty\n\t\t\t\t\treturn false;\n\t\t\t\t} else if (\n\t\t\t\t\tthis.children.length === 1 &&\n\t\t\t\t\tthis.children[0].isStatusNode()\n\t\t\t\t) {\n\t\t\t\t\t// Currently loading or load error\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn !!(this.children && this.children.length);\n\t\t},\n\t\t/**\n\t\t * Return true if node has `className` defined in .extraClasses.\n\t\t *\n\t\t * @param {string} className class name (separate multiple classes by space)\n\t\t * @returns {boolean}\n\t\t *\n\t\t * @since 2.32\n\t\t */\n\t\thasClass: function (className) {\n\t\t\treturn (\n\t\t\t\t(\" \" + (this.extraClasses || \"\") + \" \").indexOf(\n\t\t\t\t\t\" \" + className + \" \"\n\t\t\t\t) >= 0\n\t\t\t);\n\t\t},\n\t\t/** Return true if node has keyboard focus.\n\t\t * @returns {boolean}\n\t\t */\n\t\thasFocus: function () {\n\t\t\treturn this.tree.hasFocus() && this.tree.focusNode === this;\n\t\t},\n\t\t/** Write to browser console if debugLevel >= 3 (prepending node info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\tinfo: function (msg) {\n\t\t\tif (this.tree.options.debugLevel >= 3) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"info\", arguments);\n\t\t\t}\n\t\t},\n\t\t/** Return true if node is active (see also FancytreeNode#isSelected).\n\t\t * @returns {boolean}\n\t\t */\n\t\tisActive: function () {\n\t\t\treturn this.tree.activeNode === this;\n\t\t},\n\t\t/** Return true if node is vertically below `otherNode`, i.e. rendered in a subsequent row.\n\t\t * @param {FancytreeNode} otherNode\n\t\t * @returns {boolean}\n\t\t * @since 2.28\n\t\t */\n\t\tisBelowOf: function (otherNode) {\n\t\t\treturn this.getIndexHier(\".\", 5) > otherNode.getIndexHier(\".\", 5);\n\t\t},\n\t\t/** Return true if node is a direct child of otherNode.\n\t\t * @param {FancytreeNode} otherNode\n\t\t * @returns {boolean}\n\t\t */\n\t\tisChildOf: function (otherNode) {\n\t\t\treturn this.parent && this.parent === otherNode;\n\t\t},\n\t\t/** Return true, if node is a direct or indirect sub node of otherNode.\n\t\t * @param {FancytreeNode} otherNode\n\t\t * @returns {boolean}\n\t\t */\n\t\tisDescendantOf: function (otherNode) {\n\t\t\tif (!otherNode || otherNode.tree !== this.tree) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar p = this.parent;\n\t\t\twhile (p) {\n\t\t\t\tif (p === otherNode) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (p === p.parent) {\n\t\t\t\t\t$.error(\"Recursive parent link: \" + p);\n\t\t\t\t}\n\t\t\t\tp = p.parent;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/** Return true if node is expanded.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisExpanded: function () {\n\t\t\treturn !!this.expanded;\n\t\t},\n\t\t/** Return true if node is the first node of its parent's children.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisFirstSibling: function () {\n\t\t\tvar p = this.parent;\n\t\t\treturn !p || p.children[0] === this;\n\t\t},\n\t\t/** Return true if node is a folder, i.e. has the node.folder attribute set.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisFolder: function () {\n\t\t\treturn !!this.folder;\n\t\t},\n\t\t/** Return true if node is the last node of its parent's children.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisLastSibling: function () {\n\t\t\tvar p = this.parent;\n\t\t\treturn !p || p.children[p.children.length - 1] === this;\n\t\t},\n\t\t/** Return true if node is lazy (even if data was already loaded)\n\t\t * @returns {boolean}\n\t\t */\n\t\tisLazy: function () {\n\t\t\treturn !!this.lazy;\n\t\t},\n\t\t/** Return true if node is lazy and loaded. For non-lazy nodes always return true.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisLoaded: function () {\n\t\t\treturn !this.lazy || this.hasChildren() !== undefined; // Also checks if the only child is a status node\n\t\t},\n\t\t/** Return true if children are currently beeing loaded, i.e. a Ajax request is pending.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisLoading: function () {\n\t\t\treturn !!this._isLoading;\n\t\t},\n\t\t/*\n\t\t * @deprecated since v2.4.0:  Use isRootNode() instead\n\t\t */\n\t\tisRoot: function () {\n\t\t\treturn this.isRootNode();\n\t\t},\n\t\t/** Return true if node is partially selected (tri-state).\n\t\t * @returns {boolean}\n\t\t * @since 2.23\n\t\t */\n\t\tisPartsel: function () {\n\t\t\treturn !this.selected && !!this.partsel;\n\t\t},\n\t\t/** (experimental) Return true if this is partially loaded.\n\t\t * @returns {boolean}\n\t\t * @since 2.15\n\t\t */\n\t\tisPartload: function () {\n\t\t\treturn !!this.partload;\n\t\t},\n\t\t/** Return true if this is the (invisible) system root node.\n\t\t * @returns {boolean}\n\t\t * @since 2.4\n\t\t */\n\t\tisRootNode: function () {\n\t\t\treturn this.tree.rootNode === this;\n\t\t},\n\t\t/** Return true if node is selected, i.e. has a checkmark set (see also FancytreeNode#isActive).\n\t\t * @returns {boolean}\n\t\t */\n\t\tisSelected: function () {\n\t\t\treturn !!this.selected;\n\t\t},\n\t\t/** Return true if this node is a temporarily generated system node like\n\t\t * 'loading', 'paging', or 'error' (node.statusNodeType contains the type).\n\t\t * @returns {boolean}\n\t\t */\n\t\tisStatusNode: function () {\n\t\t\treturn !!this.statusNodeType;\n\t\t},\n\t\t/** Return true if this node is a status node of type 'paging'.\n\t\t * @returns {boolean}\n\t\t * @since 2.15\n\t\t */\n\t\tisPagingNode: function () {\n\t\t\treturn this.statusNodeType === \"paging\";\n\t\t},\n\t\t/** Return true if this a top level node, i.e. a direct child of the (invisible) system root node.\n\t\t * @returns {boolean}\n\t\t * @since 2.4\n\t\t */\n\t\tisTopLevel: function () {\n\t\t\treturn this.tree.rootNode === this.parent;\n\t\t},\n\t\t/** Return true if node is lazy and not yet loaded. For non-lazy nodes always return false.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisUndefined: function () {\n\t\t\treturn this.hasChildren() === undefined; // also checks if the only child is a status node\n\t\t},\n\t\t/** Return true if all parent nodes are expanded. Note: this does not check\n\t\t * whether the node is scrolled into the visible part of the screen.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisVisible: function () {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tn,\n\t\t\t\thasFilter = this.tree.enableFilter,\n\t\t\t\tparents = this.getParentList(false, false);\n\n\t\t\t// TODO: check $(n.span).is(\":visible\")\n\t\t\t// i.e. return false for nodes (but not parents) that are hidden\n\t\t\t// by a filter\n\t\t\tif (hasFilter && !this.match && !this.subMatchCount) {\n\t\t\t\t// this.debug( \"isVisible: HIDDEN (\" + hasFilter + \", \" + this.match + \", \" + this.match + \")\" );\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor (i = 0, l = parents.length; i < l; i++) {\n\t\t\t\tn = parents[i];\n\n\t\t\t\tif (!n.expanded) {\n\t\t\t\t\t// this.debug(\"isVisible: HIDDEN (parent collapsed)\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// if (hasFilter && !n.match && !n.subMatchCount) {\n\t\t\t\t// \tthis.debug(\"isVisible: HIDDEN (\" + hasFilter + \", \" + this.match + \", \" + this.match + \")\");\n\t\t\t\t// \treturn false;\n\t\t\t\t// }\n\t\t\t}\n\t\t\t// this.debug(\"isVisible: VISIBLE\");\n\t\t\treturn true;\n\t\t},\n\t\t/** Deprecated.\n\t\t * @deprecated since 2014-02-16: use load() instead.\n\t\t */\n\t\tlazyLoad: function (discard) {\n\t\t\t$.error(\n\t\t\t\t\"FancytreeNode.lazyLoad() is deprecated since 2014-02-16. Use .load() instead.\"\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t * Load all children of a lazy node if neccessary. The <i>expanded</i> state is maintained.\n\t\t * @param {boolean} [forceReload=false] Pass true to discard any existing nodes before. Otherwise this method does nothing if the node was already loaded.\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tload: function (forceReload) {\n\t\t\tvar res,\n\t\t\t\tsource,\n\t\t\t\tself = this,\n\t\t\t\twasExpanded = this.isExpanded();\n\n\t\t\t_assert(this.isLazy(), \"load() requires a lazy node\");\n\t\t\t// _assert( forceReload || this.isUndefined(), \"Pass forceReload=true to re-load a lazy node\" );\n\t\t\tif (!forceReload && !this.isUndefined()) {\n\t\t\t\treturn _getResolvedPromise(this);\n\t\t\t}\n\t\t\tif (this.isLoaded()) {\n\t\t\t\tthis.resetLazy(); // also collapses\n\t\t\t}\n\t\t\t// This method is also called by setExpanded() and loadKeyPath(), so we\n\t\t\t// have to avoid recursion.\n\t\t\tsource = this.tree._triggerNodeEvent(\"lazyLoad\", this);\n\t\t\tif (source === false) {\n\t\t\t\t// #69\n\t\t\t\treturn _getResolvedPromise(this);\n\t\t\t}\n\t\t\t_assert(\n\t\t\t\ttypeof source !== \"boolean\",\n\t\t\t\t\"lazyLoad event must return source in data.result\"\n\t\t\t);\n\t\t\tres = this.tree._callHook(\"nodeLoadChildren\", this, source);\n\t\t\tif (wasExpanded) {\n\t\t\t\tthis.expanded = true;\n\t\t\t\tres.always(function () {\n\t\t\t\t\tself.render();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tres.always(function () {\n\t\t\t\t\tself.renderStatus(); // fix expander icon to 'loaded'\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t/** Expand all parents and optionally scroll into visible area as neccessary.\n\t\t * Promise is resolved, when lazy loading and animations are done.\n\t\t * @param {object} [opts] passed to `setExpanded()`.\n\t\t *     Defaults to {noAnimation: false, noEvents: false, scrollIntoView: true}\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tmakeVisible: function (opts) {\n\t\t\tvar i,\n\t\t\t\tself = this,\n\t\t\t\tdeferreds = [],\n\t\t\t\tdfd = new $.Deferred(),\n\t\t\t\tparents = this.getParentList(false, false),\n\t\t\t\tlen = parents.length,\n\t\t\t\teffects = !(opts && opts.noAnimation === true),\n\t\t\t\tscroll = !(opts && opts.scrollIntoView === false);\n\n\t\t\t// Expand bottom-up, so only the top node is animated\n\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t// self.debug(\"pushexpand\" + parents[i]);\n\t\t\t\tdeferreds.push(parents[i].setExpanded(true, opts));\n\t\t\t}\n\t\t\t$.when.apply($, deferreds).done(function () {\n\t\t\t\t// All expands have finished\n\t\t\t\t// self.debug(\"expand DONE\", scroll);\n\t\t\t\tif (scroll) {\n\t\t\t\t\tself.scrollIntoView(effects).done(function () {\n\t\t\t\t\t\t// self.debug(\"scroll DONE\");\n\t\t\t\t\t\tdfd.resolve();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tdfd.resolve();\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn dfd.promise();\n\t\t},\n\t\t/** Move this node to targetNode.\n\t\t *  @param {FancytreeNode} targetNode\n\t\t *  @param {string} mode <pre>\n\t\t *      'child': append this node as last child of targetNode.\n\t\t *               This is the default. To be compatble with the D'n'd\n\t\t *               hitMode, we also accept 'over'.\n\t\t *      'firstChild': add this node as first child of targetNode.\n\t\t *      'before': add this node as sibling before targetNode.\n\t\t *      'after': add this node as sibling after targetNode.</pre>\n\t\t *  @param {function} [map] optional callback(FancytreeNode) to allow modifcations\n\t\t */\n\t\tmoveTo: function (targetNode, mode, map) {\n\t\t\tif (mode === undefined || mode === \"over\") {\n\t\t\t\tmode = \"child\";\n\t\t\t} else if (mode === \"firstChild\") {\n\t\t\t\tif (targetNode.children && targetNode.children.length) {\n\t\t\t\t\tmode = \"before\";\n\t\t\t\t\ttargetNode = targetNode.children[0];\n\t\t\t\t} else {\n\t\t\t\t\tmode = \"child\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar pos,\n\t\t\t\ttree = this.tree,\n\t\t\t\tprevParent = this.parent,\n\t\t\t\ttargetParent =\n\t\t\t\t\tmode === \"child\" ? targetNode : targetNode.parent;\n\n\t\t\tif (this === targetNode) {\n\t\t\t\treturn;\n\t\t\t} else if (!this.parent) {\n\t\t\t\t$.error(\"Cannot move system root\");\n\t\t\t} else if (targetParent.isDescendantOf(this)) {\n\t\t\t\t$.error(\"Cannot move a node to its own descendant\");\n\t\t\t}\n\t\t\tif (targetParent !== prevParent) {\n\t\t\t\tprevParent.triggerModifyChild(\"remove\", this);\n\t\t\t}\n\t\t\t// Unlink this node from current parent\n\t\t\tif (this.parent.children.length === 1) {\n\t\t\t\tif (this.parent === targetParent) {\n\t\t\t\t\treturn; // #258\n\t\t\t\t}\n\t\t\t\tthis.parent.children = this.parent.lazy ? [] : null;\n\t\t\t\tthis.parent.expanded = false;\n\t\t\t} else {\n\t\t\t\tpos = $.inArray(this, this.parent.children);\n\t\t\t\t_assert(pos >= 0, \"invalid source parent\");\n\t\t\t\tthis.parent.children.splice(pos, 1);\n\t\t\t}\n\t\t\t// Remove from source DOM parent\n\t\t\t// if(this.parent.ul){\n\t\t\t// \tthis.parent.ul.removeChild(this.li);\n\t\t\t// }\n\n\t\t\t// Insert this node to target parent's child list\n\t\t\tthis.parent = targetParent;\n\t\t\tif (targetParent.hasChildren()) {\n\t\t\t\tswitch (mode) {\n\t\t\t\t\tcase \"child\":\n\t\t\t\t\t\t// Append to existing target children\n\t\t\t\t\t\ttargetParent.children.push(this);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"before\":\n\t\t\t\t\t\t// Insert this node before target node\n\t\t\t\t\t\tpos = $.inArray(targetNode, targetParent.children);\n\t\t\t\t\t\t_assert(pos >= 0, \"invalid target parent\");\n\t\t\t\t\t\ttargetParent.children.splice(pos, 0, this);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"after\":\n\t\t\t\t\t\t// Insert this node after target node\n\t\t\t\t\t\tpos = $.inArray(targetNode, targetParent.children);\n\t\t\t\t\t\t_assert(pos >= 0, \"invalid target parent\");\n\t\t\t\t\t\ttargetParent.children.splice(pos + 1, 0, this);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t$.error(\"Invalid mode \" + mode);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttargetParent.children = [this];\n\t\t\t}\n\t\t\t// Parent has no <ul> tag yet:\n\t\t\t// if( !targetParent.ul ) {\n\t\t\t// \t// This is the parent's first child: create UL tag\n\t\t\t// \t// (Hidden, because it will be\n\t\t\t// \ttargetParent.ul = document.createElement(\"ul\");\n\t\t\t// \ttargetParent.ul.style.display = \"none\";\n\t\t\t// \ttargetParent.li.appendChild(targetParent.ul);\n\t\t\t// }\n\t\t\t// // Issue 319: Add to target DOM parent (only if node was already rendered(expanded))\n\t\t\t// if(this.li){\n\t\t\t// \ttargetParent.ul.appendChild(this.li);\n\t\t\t// }\n\n\t\t\t// Let caller modify the nodes\n\t\t\tif (map) {\n\t\t\t\ttargetNode.visit(map, true);\n\t\t\t}\n\t\t\tif (targetParent === prevParent) {\n\t\t\t\ttargetParent.triggerModifyChild(\"move\", this);\n\t\t\t} else {\n\t\t\t\t// prevParent.triggerModifyChild(\"remove\", this);\n\t\t\t\ttargetParent.triggerModifyChild(\"add\", this);\n\t\t\t}\n\t\t\t// Handle cross-tree moves\n\t\t\tif (tree !== targetNode.tree) {\n\t\t\t\t// Fix node.tree for all source nodes\n\t\t\t\t// \t_assert(false, \"Cross-tree move is not yet implemented.\");\n\t\t\t\tthis.warn(\"Cross-tree moveTo is experimental!\");\n\t\t\t\tthis.visit(function (n) {\n\t\t\t\t\t// TODO: fix selection state and activation, ...\n\t\t\t\t\tn.tree = targetNode.tree;\n\t\t\t\t}, true);\n\t\t\t}\n\n\t\t\t// A collaposed node won't re-render children, so we have to remove it manually\n\t\t\t// if( !targetParent.expanded ){\n\t\t\t//   prevParent.ul.removeChild(this.li);\n\t\t\t// }\n\t\t\ttree._callHook(\"treeStructureChanged\", tree, \"moveTo\");\n\n\t\t\t// Update HTML markup\n\t\t\tif (!prevParent.isDescendantOf(targetParent)) {\n\t\t\t\tprevParent.render();\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!targetParent.isDescendantOf(prevParent) &&\n\t\t\t\ttargetParent !== prevParent\n\t\t\t) {\n\t\t\t\ttargetParent.render();\n\t\t\t}\n\t\t\t// TODO: fix selection state\n\t\t\t// TODO: fix active state\n\n\t\t\t/*\n\t\t\tvar tree = this.tree;\n\t\t\tvar opts = tree.options;\n\t\t\tvar pers = tree.persistence;\n\n\t\t\t// Always expand, if it's below minExpandLevel\n\t\t\t// tree.logDebug (\"%s._addChildNode(%o), l=%o\", this, ftnode, ftnode.getLevel());\n\t\t\tif ( opts.minExpandLevel >= ftnode.getLevel() ) {\n\t\t\t\t// tree.logDebug (\"Force expand for %o\", ftnode);\n\t\t\t\tthis.bExpanded = true;\n\t\t\t}\n\n\t\t\t// In multi-hier mode, update the parents selection state\n\t\t\t// DT issue #82: only if not initializing, because the children may not exist yet\n\t\t\t// if( !ftnode.data.isStatusNode() && opts.selectMode==3 && !isInitializing )\n\t\t\t// \tftnode._fixSelectionState();\n\n\t\t\t// In multi-hier mode, update the parents selection state\n\t\t\tif( ftnode.bSelected && opts.selectMode==3 ) {\n\t\t\t\tvar p = this;\n\t\t\t\twhile( p ) {\n\t\t\t\t\tif( !p.hasSubSel )\n\t\t\t\t\t\tp._setSubSel(true);\n\t\t\t\t\tp = p.parent;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// render this node and the new child\n\t\t\tif ( tree.bEnableUpdate )\n\t\t\t\tthis.render();\n\t\t\treturn ftnode;\n\t\t\t*/\n\t\t},\n\t\t/** Set focus relative to this node and optionally activate.\n\t\t *\n\t\t * 'left' collapses the node if it is expanded, or move to the parent\n\t\t * otherwise.\n\t\t * 'right' expands the node if it is collapsed, or move to the first\n\t\t * child otherwise.\n\t\t *\n\t\t * @param {string|number} where 'down', 'first', 'last', 'left', 'parent', 'right', or 'up'.\n\t\t *   (Alternatively the keyCode that would normally trigger this move,\n\t\t *   e.g. `$.ui.keyCode.LEFT` = 'left'.\n\t\t * @param {boolean} [activate=true]\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tnavigate: function (where, activate) {\n\t\t\tvar node,\n\t\t\t\tKC = $.ui.keyCode;\n\n\t\t\t// Handle optional expand/collapse action for LEFT/RIGHT\n\t\t\tswitch (where) {\n\t\t\t\tcase \"left\":\n\t\t\t\tcase KC.LEFT:\n\t\t\t\t\tif (this.expanded) {\n\t\t\t\t\t\treturn this.setExpanded(false);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\tcase KC.RIGHT:\n\t\t\t\t\tif (!this.expanded && (this.children || this.lazy)) {\n\t\t\t\t\t\treturn this.setExpanded();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Otherwise activate or focus the related node\n\t\t\tnode = this.findRelatedNode(where);\n\t\t\tif (node) {\n\t\t\t\t// setFocus/setActive will scroll later (if autoScroll is specified)\n\t\t\t\ttry {\n\t\t\t\t\tnode.makeVisible({ scrollIntoView: false });\n\t\t\t\t} catch (e) {} // #272\n\t\t\t\tif (activate === false) {\n\t\t\t\t\tnode.setFocus();\n\t\t\t\t\treturn _getResolvedPromise();\n\t\t\t\t}\n\t\t\t\treturn node.setActive();\n\t\t\t}\n\t\t\tthis.warn(\"Could not find related node '\" + where + \"'.\");\n\t\t\treturn _getResolvedPromise();\n\t\t},\n\t\t/**\n\t\t * Remove this node (not allowed for system root).\n\t\t */\n\t\tremove: function () {\n\t\t\treturn this.parent.removeChild(this);\n\t\t},\n\t\t/**\n\t\t * Remove childNode from list of direct children.\n\t\t * @param {FancytreeNode} childNode\n\t\t */\n\t\tremoveChild: function (childNode) {\n\t\t\treturn this.tree._callHook(\"nodeRemoveChild\", this, childNode);\n\t\t},\n\t\t/**\n\t\t * Remove all child nodes and descendents. This converts the node into a leaf.<br>\n\t\t * If this was a lazy node, it is still considered 'loaded'; call node.resetLazy()\n\t\t * in order to trigger lazyLoad on next expand.\n\t\t */\n\t\tremoveChildren: function () {\n\t\t\treturn this.tree._callHook(\"nodeRemoveChildren\", this);\n\t\t},\n\t\t/**\n\t\t * Remove class from node's span tag and .extraClasses.\n\t\t *\n\t\t * @param {string} className class name\n\t\t *\n\t\t * @since 2.17\n\t\t */\n\t\tremoveClass: function (className) {\n\t\t\treturn this.toggleClass(className, false);\n\t\t},\n\t\t/**\n\t\t * This method renders and updates all HTML markup that is required\n\t\t * to display this node in its current state.<br>\n\t\t * Note:\n\t\t * <ul>\n\t\t * <li>It should only be neccessary to call this method after the node object\n\t\t *     was modified by direct access to its properties, because the common\n\t\t *     API methods (node.setTitle(), moveTo(), addChildren(), remove(), ...)\n\t\t *     already handle this.\n\t\t * <li> {@link FancytreeNode#renderTitle} and {@link FancytreeNode#renderStatus}\n\t\t *     are implied. If changes are more local, calling only renderTitle() or\n\t\t *     renderStatus() may be sufficient and faster.\n\t\t * </ul>\n\t\t *\n\t\t * @param {boolean} [force=false] re-render, even if html markup was already created\n\t\t * @param {boolean} [deep=false] also render all descendants, even if parent is collapsed\n\t\t */\n\t\trender: function (force, deep) {\n\t\t\treturn this.tree._callHook(\"nodeRender\", this, force, deep);\n\t\t},\n\t\t/** Create HTML markup for the node's outer `<span>` (expander, checkbox, icon, and title).\n\t\t * Implies {@link FancytreeNode#renderStatus}.\n\t\t * @see Fancytree_Hooks#nodeRenderTitle\n\t\t */\n\t\trenderTitle: function () {\n\t\t\treturn this.tree._callHook(\"nodeRenderTitle\", this);\n\t\t},\n\t\t/** Update element's CSS classes according to node state.\n\t\t * @see Fancytree_Hooks#nodeRenderStatus\n\t\t */\n\t\trenderStatus: function () {\n\t\t\treturn this.tree._callHook(\"nodeRenderStatus\", this);\n\t\t},\n\t\t/**\n\t\t * (experimental) Replace this node with `source`.\n\t\t * (Currently only available for paging nodes.)\n\t\t * @param {NodeData[]} source List of child node definitions\n\t\t * @since 2.15\n\t\t */\n\t\treplaceWith: function (source) {\n\t\t\tvar res,\n\t\t\t\tparent = this.parent,\n\t\t\t\tpos = $.inArray(this, parent.children),\n\t\t\t\tself = this;\n\n\t\t\t_assert(\n\t\t\t\tthis.isPagingNode(),\n\t\t\t\t\"replaceWith() currently requires a paging status node\"\n\t\t\t);\n\n\t\t\tres = this.tree._callHook(\"nodeLoadChildren\", this, source);\n\t\t\tres.done(function (data) {\n\t\t\t\t// New nodes are currently children of `this`.\n\t\t\t\tvar children = self.children;\n\t\t\t\t// Prepend newly loaded child nodes to `this`\n\t\t\t\t// Move new children after self\n\t\t\t\tfor (i = 0; i < children.length; i++) {\n\t\t\t\t\tchildren[i].parent = parent;\n\t\t\t\t}\n\t\t\t\tparent.children.splice.apply(\n\t\t\t\t\tparent.children,\n\t\t\t\t\t[pos + 1, 0].concat(children)\n\t\t\t\t);\n\n\t\t\t\t// Remove self\n\t\t\t\tself.children = null;\n\t\t\t\tself.remove();\n\t\t\t\t// Redraw new nodes\n\t\t\t\tparent.render();\n\t\t\t\t// TODO: set node.partload = false if this was tha last paging node?\n\t\t\t\t// parent.addPagingNode(false);\n\t\t\t}).fail(function () {\n\t\t\t\tself.setExpanded();\n\t\t\t});\n\t\t\treturn res;\n\t\t\t// $.error(\"Not implemented: replaceWith()\");\n\t\t},\n\t\t/**\n\t\t * Remove all children, collapse, and set the lazy-flag, so that the lazyLoad\n\t\t * event is triggered on next expand.\n\t\t */\n\t\tresetLazy: function () {\n\t\t\tthis.removeChildren();\n\t\t\tthis.expanded = false;\n\t\t\tthis.lazy = true;\n\t\t\tthis.children = undefined;\n\t\t\tthis.renderStatus();\n\t\t},\n\t\t/** Schedule activity for delayed execution (cancel any pending request).\n\t\t *  scheduleAction('cancel') will only cancel a pending request (if any).\n\t\t * @param {string} mode\n\t\t * @param {number} ms\n\t\t */\n\t\tscheduleAction: function (mode, ms) {\n\t\t\tif (this.tree.timer) {\n\t\t\t\tclearTimeout(this.tree.timer);\n\t\t\t\tthis.tree.debug(\"clearTimeout(%o)\", this.tree.timer);\n\t\t\t}\n\t\t\tthis.tree.timer = null;\n\t\t\tvar self = this; // required for closures\n\t\t\tswitch (mode) {\n\t\t\t\tcase \"cancel\":\n\t\t\t\t\t// Simply made sure that timer was cleared\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"expand\":\n\t\t\t\t\tthis.tree.timer = setTimeout(function () {\n\t\t\t\t\t\tself.tree.debug(\"setTimeout: trigger expand\");\n\t\t\t\t\t\tself.setExpanded(true);\n\t\t\t\t\t}, ms);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"activate\":\n\t\t\t\t\tthis.tree.timer = setTimeout(function () {\n\t\t\t\t\t\tself.tree.debug(\"setTimeout: trigger activate\");\n\t\t\t\t\t\tself.setActive(true);\n\t\t\t\t\t}, ms);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t$.error(\"Invalid mode \" + mode);\n\t\t\t}\n\t\t\t// this.tree.debug(\"setTimeout(%s, %s): %s\", mode, ms, this.tree.timer);\n\t\t},\n\t\t/**\n\t\t *\n\t\t * @param {boolean | PlainObject} [effects=false] animation options.\n\t\t * @param {object} [options=null] {topNode: null, effects: ..., parent: ...} this node will remain visible in\n\t\t *     any case, even if `this` is outside the scroll pane.\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tscrollIntoView: function (effects, options) {\n\t\t\tif (options !== undefined && _isNode(options)) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t\"scrollIntoView() with 'topNode' option is deprecated since 2014-05-08. Use 'options.topNode' instead.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\t// The scroll parent is typically the plain tree's <UL> container.\n\t\t\t// For ext-table, we choose the nearest parent that has `position: relative`\n\t\t\t// and `overflow` set.\n\t\t\t// (This default can be overridden by the local or global `scrollParent` option.)\n\t\t\tvar opts = $.extend(\n\t\t\t\t\t{\n\t\t\t\t\t\teffects:\n\t\t\t\t\t\t\teffects === true\n\t\t\t\t\t\t\t\t? { duration: 200, queue: false }\n\t\t\t\t\t\t\t\t: effects,\n\t\t\t\t\t\tscrollOfs: this.tree.options.scrollOfs,\n\t\t\t\t\t\tscrollParent: this.tree.options.scrollParent,\n\t\t\t\t\t\ttopNode: null,\n\t\t\t\t\t},\n\t\t\t\t\toptions\n\t\t\t\t),\n\t\t\t\t$scrollParent = opts.scrollParent,\n\t\t\t\t$container = this.tree.$container,\n\t\t\t\toverflowY = $container.css(\"overflow-y\");\n\n\t\t\tif (!$scrollParent) {\n\t\t\t\tif (this.tree.tbody) {\n\t\t\t\t\t$scrollParent = $container.scrollParent();\n\t\t\t\t} else if (overflowY === \"scroll\" || overflowY === \"auto\") {\n\t\t\t\t\t$scrollParent = $container;\n\t\t\t\t} else {\n\t\t\t\t\t// #922 plain tree in a non-fixed-sized UL scrolls inside its parent\n\t\t\t\t\t$scrollParent = $container.scrollParent();\n\t\t\t\t}\n\t\t\t} else if (!$scrollParent.jquery) {\n\t\t\t\t// Make sure we have a jQuery object\n\t\t\t\t$scrollParent = $($scrollParent);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t$scrollParent[0] === document ||\n\t\t\t\t$scrollParent[0] === document.body\n\t\t\t) {\n\t\t\t\t// `document` may be returned by $().scrollParent(), if nothing is found,\n\t\t\t\t// but would not work: (see #894)\n\t\t\t\tthis.debug(\n\t\t\t\t\t\"scrollIntoView(): normalizing scrollParent to 'window':\",\n\t\t\t\t\t$scrollParent[0]\n\t\t\t\t);\n\t\t\t\t$scrollParent = $(window);\n\t\t\t}\n\t\t\t// eslint-disable-next-line one-var\n\t\t\tvar topNodeY,\n\t\t\t\tnodeY,\n\t\t\t\thorzScrollbarHeight,\n\t\t\t\tcontainerOffsetTop,\n\t\t\t\tdfd = new $.Deferred(),\n\t\t\t\tself = this,\n\t\t\t\tnodeHeight = $(this.span).height(),\n\t\t\t\ttopOfs = opts.scrollOfs.top || 0,\n\t\t\t\tbottomOfs = opts.scrollOfs.bottom || 0,\n\t\t\t\tcontainerHeight = $scrollParent.height(),\n\t\t\t\tscrollTop = $scrollParent.scrollTop(),\n\t\t\t\t$animateTarget = $scrollParent,\n\t\t\t\tisParentWindow = $scrollParent[0] === window,\n\t\t\t\ttopNode = opts.topNode || null,\n\t\t\t\tnewScrollTop = null;\n\n\t\t\t// this.debug(\"scrollIntoView(), scrollTop=\" + scrollTop, opts.scrollOfs);\n\t\t\t// _assert($(this.span).is(\":visible\"), \"scrollIntoView node is invisible\"); // otherwise we cannot calc offsets\n\t\t\tif (this.isRootNode() || !this.isVisible()) {\n\t\t\t\t// We cannot calc offsets for hidden elements\n\t\t\t\tthis.info(\"scrollIntoView(): node is invisible.\");\n\t\t\t\treturn _getResolvedPromise();\n\t\t\t}\n\t\t\tif (isParentWindow) {\n\t\t\t\tnodeY = $(this.span).offset().top;\n\t\t\t\ttopNodeY =\n\t\t\t\t\ttopNode && topNode.span ? $(topNode.span).offset().top : 0;\n\t\t\t\t$animateTarget = $(\"html,body\");\n\t\t\t} else {\n\t\t\t\t_assert(\n\t\t\t\t\t$scrollParent[0] !== document &&\n\t\t\t\t\t\t$scrollParent[0] !== document.body,\n\t\t\t\t\t\"scrollParent should be a simple element or `window`, not document or body.\"\n\t\t\t\t);\n\n\t\t\t\tcontainerOffsetTop = $scrollParent.offset().top;\n\t\t\t\tnodeY =\n\t\t\t\t\t$(this.span).offset().top - containerOffsetTop + scrollTop; // relative to scroll parent\n\t\t\t\ttopNodeY = topNode\n\t\t\t\t\t? $(topNode.span).offset().top -\n\t\t\t\t\t  containerOffsetTop +\n\t\t\t\t\t  scrollTop\n\t\t\t\t\t: 0;\n\t\t\t\thorzScrollbarHeight = Math.max(\n\t\t\t\t\t0,\n\t\t\t\t\t$scrollParent.innerHeight() - $scrollParent[0].clientHeight\n\t\t\t\t);\n\t\t\t\tcontainerHeight -= horzScrollbarHeight;\n\t\t\t}\n\n\t\t\t// this.debug(\"    scrollIntoView(), nodeY=\" + nodeY + \", containerHeight=\" + containerHeight);\n\t\t\tif (nodeY < scrollTop + topOfs) {\n\t\t\t\t// Node is above visible container area\n\t\t\t\tnewScrollTop = nodeY - topOfs;\n\t\t\t\t// this.debug(\"    scrollIntoView(), UPPER newScrollTop=\" + newScrollTop);\n\t\t\t} else if (\n\t\t\t\tnodeY + nodeHeight >\n\t\t\t\tscrollTop + containerHeight - bottomOfs\n\t\t\t) {\n\t\t\t\tnewScrollTop = nodeY + nodeHeight - containerHeight + bottomOfs;\n\t\t\t\t// this.debug(\"    scrollIntoView(), LOWER newScrollTop=\" + newScrollTop);\n\t\t\t\t// If a topNode was passed, make sure that it is never scrolled\n\t\t\t\t// outside the upper border\n\t\t\t\tif (topNode) {\n\t\t\t\t\t_assert(\n\t\t\t\t\t\ttopNode.isRootNode() || topNode.isVisible(),\n\t\t\t\t\t\t\"topNode must be visible\"\n\t\t\t\t\t);\n\t\t\t\t\tif (topNodeY < newScrollTop) {\n\t\t\t\t\t\tnewScrollTop = topNodeY - topOfs;\n\t\t\t\t\t\t// this.debug(\"    scrollIntoView(), TOP newScrollTop=\" + newScrollTop);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newScrollTop === null) {\n\t\t\t\tdfd.resolveWith(this);\n\t\t\t} else {\n\t\t\t\t// this.debug(\"    scrollIntoView(), SET newScrollTop=\" + newScrollTop);\n\t\t\t\tif (opts.effects) {\n\t\t\t\t\topts.effects.complete = function () {\n\t\t\t\t\t\tdfd.resolveWith(self);\n\t\t\t\t\t};\n\t\t\t\t\t$animateTarget.stop(true).animate(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tscrollTop: newScrollTop,\n\t\t\t\t\t\t},\n\t\t\t\t\t\topts.effects\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t$animateTarget[0].scrollTop = newScrollTop;\n\t\t\t\t\tdfd.resolveWith(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dfd.promise();\n\t\t},\n\n\t\t/**Activate this node.\n\t\t *\n\t\t * The `cell` option requires the ext-table and ext-ariagrid extensions.\n\t\t *\n\t\t * @param {boolean} [flag=true] pass false to deactivate\n\t\t * @param {object} [opts] additional options. Defaults to {noEvents: false, noFocus: false, cell: null}\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tsetActive: function (flag, opts) {\n\t\t\treturn this.tree._callHook(\"nodeSetActive\", this, flag, opts);\n\t\t},\n\t\t/**Expand or collapse this node. Promise is resolved, when lazy loading and animations are done.\n\t\t * @param {boolean} [flag=true] pass false to collapse\n\t\t * @param {object} [opts] additional options. Defaults to {noAnimation: false, noEvents: false}\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tsetExpanded: function (flag, opts) {\n\t\t\treturn this.tree._callHook(\"nodeSetExpanded\", this, flag, opts);\n\t\t},\n\t\t/**Set keyboard focus to this node.\n\t\t * @param {boolean} [flag=true] pass false to blur\n\t\t * @see Fancytree#setFocus\n\t\t */\n\t\tsetFocus: function (flag) {\n\t\t\treturn this.tree._callHook(\"nodeSetFocus\", this, flag);\n\t\t},\n\t\t/**Select this node, i.e. check the checkbox.\n\t\t * @param {boolean} [flag=true] pass false to deselect\n\t\t * @param {object} [opts] additional options. Defaults to {noEvents: false, p\n\t\t *     propagateDown: null, propagateUp: null, callback: null }\n\t\t */\n\t\tsetSelected: function (flag, opts) {\n\t\t\treturn this.tree._callHook(\"nodeSetSelected\", this, flag, opts);\n\t\t},\n\t\t/**Mark a lazy node as 'error', 'loading', 'nodata', or 'ok'.\n\t\t * @param {string} status 'error'|'loading'|'nodata'|'ok'\n\t\t * @param {string} [message]\n\t\t * @param {string} [details]\n\t\t */\n\t\tsetStatus: function (status, message, details) {\n\t\t\treturn this.tree._callHook(\n\t\t\t\t\"nodeSetStatus\",\n\t\t\t\tthis,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t\tdetails\n\t\t\t);\n\t\t},\n\t\t/**Rename this node.\n\t\t * @param {string} title\n\t\t */\n\t\tsetTitle: function (title) {\n\t\t\tthis.title = title;\n\t\t\tthis.renderTitle();\n\t\t\tthis.triggerModify(\"rename\");\n\t\t},\n\t\t/**Sort child list by title.\n\t\t * @param {function} [cmp] custom compare function(a, b) that returns -1, 0, or 1 (defaults to sort by title).\n\t\t * @param {boolean} [deep=false] pass true to sort all descendant nodes\n\t\t */\n\t\tsortChildren: function (cmp, deep) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tcl = this.children;\n\n\t\t\tif (!cl) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcmp =\n\t\t\t\tcmp ||\n\t\t\t\tfunction (a, b) {\n\t\t\t\t\tvar x = a.title.toLowerCase(),\n\t\t\t\t\t\ty = b.title.toLowerCase();\n\n\t\t\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\t\treturn x === y ? 0 : x > y ? 1 : -1;\n\t\t\t\t};\n\t\t\tcl.sort(cmp);\n\t\t\tif (deep) {\n\t\t\t\tfor (i = 0, l = cl.length; i < l; i++) {\n\t\t\t\t\tif (cl[i].children) {\n\t\t\t\t\t\tcl[i].sortChildren(cmp, \"$norender$\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (deep !== \"$norender$\") {\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tthis.triggerModifyChild(\"sort\");\n\t\t},\n\t\t/** Convert node (or whole branch) into a plain object.\n\t\t *\n\t\t * The result is compatible with node.addChildren().\n\t\t *\n\t\t * @param {boolean} [recursive=false] include child nodes\n\t\t * @param {function} [callback] callback(dict, node) is called for every node, in order to allow modifications.\n\t\t *     Return `false` to ignore this node or `\"skip\"` to include this node without its children.\n\t\t * @returns {NodeData}\n\t\t */\n\t\ttoDict: function (recursive, callback) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tnode,\n\t\t\t\tres,\n\t\t\t\tdict = {},\n\t\t\t\tself = this;\n\n\t\t\t$.each(NODE_ATTRS, function (i, a) {\n\t\t\t\tif (self[a] || self[a] === false) {\n\t\t\t\t\tdict[a] = self[a];\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!$.isEmptyObject(this.data)) {\n\t\t\t\tdict.data = $.extend({}, this.data);\n\t\t\t\tif ($.isEmptyObject(dict.data)) {\n\t\t\t\t\tdelete dict.data;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (callback) {\n\t\t\t\tres = callback(dict, self);\n\t\t\t\tif (res === false) {\n\t\t\t\t\treturn false; // Don't include this node nor its children\n\t\t\t\t}\n\t\t\t\tif (res === \"skip\") {\n\t\t\t\t\trecursive = false; // Include this node, but not the children\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (recursive) {\n\t\t\t\tif (_isArray(this.children)) {\n\t\t\t\t\tdict.children = [];\n\t\t\t\t\tfor (i = 0, l = this.children.length; i < l; i++) {\n\t\t\t\t\t\tnode = this.children[i];\n\t\t\t\t\t\tif (!node.isStatusNode()) {\n\t\t\t\t\t\t\tres = node.toDict(true, callback);\n\t\t\t\t\t\t\tif (res !== false) {\n\t\t\t\t\t\t\t\tdict.children.push(res);\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 dict;\n\t\t},\n\t\t/**\n\t\t * Set, clear, or toggle class of node's span tag and .extraClasses.\n\t\t *\n\t\t * @param {string} className class name (separate multiple classes by space)\n\t\t * @param {boolean} [flag] true/false to add/remove class. If omitted, class is toggled.\n\t\t * @returns {boolean} true if a class was added\n\t\t *\n\t\t * @since 2.17\n\t\t */\n\t\ttoggleClass: function (value, flag) {\n\t\t\tvar className,\n\t\t\t\thasClass,\n\t\t\t\trnotwhite = /\\S+/g,\n\t\t\t\tclassNames = value.match(rnotwhite) || [],\n\t\t\t\ti = 0,\n\t\t\t\twasAdded = false,\n\t\t\t\tstatusElem = this[this.tree.statusClassPropName],\n\t\t\t\tcurClasses = \" \" + (this.extraClasses || \"\") + \" \";\n\n\t\t\t// this.info(\"toggleClass('\" + value + \"', \" + flag + \")\", curClasses);\n\t\t\t// Modify DOM element directly if it already exists\n\t\t\tif (statusElem) {\n\t\t\t\t$(statusElem).toggleClass(value, flag);\n\t\t\t}\n\t\t\t// Modify node.extraClasses to make this change persistent\n\t\t\t// Toggle if flag was not passed\n\t\t\twhile ((className = classNames[i++])) {\n\t\t\t\thasClass = curClasses.indexOf(\" \" + className + \" \") >= 0;\n\t\t\t\tflag = flag === undefined ? !hasClass : !!flag;\n\t\t\t\tif (flag) {\n\t\t\t\t\tif (!hasClass) {\n\t\t\t\t\t\tcurClasses += className + \" \";\n\t\t\t\t\t\twasAdded = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\twhile (curClasses.indexOf(\" \" + className + \" \") > -1) {\n\t\t\t\t\t\tcurClasses = curClasses.replace(\n\t\t\t\t\t\t\t\" \" + className + \" \",\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\tthis.extraClasses = _trim(curClasses);\n\t\t\t// this.info(\"-> toggleClass('\" + value + \"', \" + flag + \"): '\" + this.extraClasses + \"'\");\n\t\t\treturn wasAdded;\n\t\t},\n\t\t/** Flip expanded status. */\n\t\ttoggleExpanded: function () {\n\t\t\treturn this.tree._callHook(\"nodeToggleExpanded\", this);\n\t\t},\n\t\t/** Flip selection status. */\n\t\ttoggleSelected: function () {\n\t\t\treturn this.tree._callHook(\"nodeToggleSelected\", this);\n\t\t},\n\t\ttoString: function () {\n\t\t\treturn \"FancytreeNode@\" + this.key + \"[title='\" + this.title + \"']\";\n\t\t\t// return \"<FancytreeNode(#\" + this.key + \", '\" + this.title + \"')>\";\n\t\t},\n\t\t/**\n\t\t * Trigger `modifyChild` event on a parent to signal that a child was modified.\n\t\t * @param {string} operation Type of change: 'add', 'remove', 'rename', 'move', 'data', ...\n\t\t * @param {FancytreeNode} [childNode]\n\t\t * @param {object} [extra]\n\t\t */\n\t\ttriggerModifyChild: function (operation, childNode, extra) {\n\t\t\tvar data,\n\t\t\t\tmodifyChild = this.tree.options.modifyChild;\n\n\t\t\tif (modifyChild) {\n\t\t\t\tif (childNode && childNode.parent !== this) {\n\t\t\t\t\t$.error(\n\t\t\t\t\t\t\"childNode \" + childNode + \" is not a child of \" + this\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdata = {\n\t\t\t\t\tnode: this,\n\t\t\t\t\ttree: this.tree,\n\t\t\t\t\toperation: operation,\n\t\t\t\t\tchildNode: childNode || null,\n\t\t\t\t};\n\t\t\t\tif (extra) {\n\t\t\t\t\t$.extend(data, extra);\n\t\t\t\t}\n\t\t\t\tmodifyChild({ type: \"modifyChild\" }, data);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Trigger `modifyChild` event on node.parent(!).\n\t\t * @param {string} operation Type of change: 'add', 'remove', 'rename', 'move', 'data', ...\n\t\t * @param {object} [extra]\n\t\t */\n\t\ttriggerModify: function (operation, extra) {\n\t\t\tthis.parent.triggerModifyChild(operation, this, extra);\n\t\t},\n\t\t/** Call fn(node) for all child nodes in hierarchical order (depth-first).<br>\n\t\t * Stop iteration, if fn() returns false. Skip current branch, if fn() returns \"skip\".<br>\n\t\t * Return false if iteration was stopped.\n\t\t *\n\t\t * @param {function} fn the callback function.\n\t\t *     Return false to stop iteration, return \"skip\" to skip this node and\n\t\t *     its children only.\n\t\t * @param {boolean} [includeSelf=false]\n\t\t * @returns {boolean}\n\t\t */\n\t\tvisit: function (fn, includeSelf) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tres = true,\n\t\t\t\tchildren = this.children;\n\n\t\t\tif (includeSelf === true) {\n\t\t\t\tres = fn(this);\n\t\t\t\tif (res === false || res === \"skip\") {\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (children) {\n\t\t\t\tfor (i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\tres = children[i].visit(fn, true);\n\t\t\t\t\tif (res === false) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t/** Call fn(node) for all child nodes and recursively load lazy children.<br>\n\t\t * <b>Note:</b> If you need this method, you probably should consider to review\n\t\t * your architecture! Recursivley loading nodes is a perfect way for lazy\n\t\t * programmers to flood the server with requests ;-)\n\t\t *\n\t\t * @param {function} [fn] optional callback function.\n\t\t *     Return false to stop iteration, return \"skip\" to skip this node and\n\t\t *     its children only.\n\t\t * @param {boolean} [includeSelf=false]\n\t\t * @returns {$.Promise}\n\t\t * @since 2.4\n\t\t */\n\t\tvisitAndLoad: function (fn, includeSelf, _recursion) {\n\t\t\tvar dfd,\n\t\t\t\tres,\n\t\t\t\tloaders,\n\t\t\t\tnode = this;\n\n\t\t\t// node.debug(\"visitAndLoad\");\n\t\t\tif (fn && includeSelf === true) {\n\t\t\t\tres = fn(node);\n\t\t\t\tif (res === false || res === \"skip\") {\n\t\t\t\t\treturn _recursion ? res : _getResolvedPromise();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!node.children && !node.lazy) {\n\t\t\t\treturn _getResolvedPromise();\n\t\t\t}\n\t\t\tdfd = new $.Deferred();\n\t\t\tloaders = [];\n\t\t\t// node.debug(\"load()...\");\n\t\t\tnode.load().done(function () {\n\t\t\t\t// node.debug(\"load()... done.\");\n\t\t\t\tfor (var i = 0, l = node.children.length; i < l; i++) {\n\t\t\t\t\tres = node.children[i].visitAndLoad(fn, true, true);\n\t\t\t\t\tif (res === false) {\n\t\t\t\t\t\tdfd.reject();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (res !== \"skip\") {\n\t\t\t\t\t\tloaders.push(res); // Add promise to the list\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$.when.apply(this, loaders).then(function () {\n\t\t\t\t\tdfd.resolve();\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn dfd.promise();\n\t\t},\n\t\t/** Call fn(node) for all parent nodes, bottom-up, including invisible system root.<br>\n\t\t * Stop iteration, if fn() returns false.<br>\n\t\t * Return false if iteration was stopped.\n\t\t *\n\t\t * @param {function} fn the callback function.\n\t\t *     Return false to stop iteration, return \"skip\" to skip this node and children only.\n\t\t * @param {boolean} [includeSelf=false]\n\t\t * @returns {boolean}\n\t\t */\n\t\tvisitParents: function (fn, includeSelf) {\n\t\t\t// Visit parent nodes (bottom up)\n\t\t\tif (includeSelf && fn(this) === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar p = this.parent;\n\t\t\twhile (p) {\n\t\t\t\tif (fn(p) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tp = p.parent;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/** Call fn(node) for all sibling nodes.<br>\n\t\t * Stop iteration, if fn() returns false.<br>\n\t\t * Return false if iteration was stopped.\n\t\t *\n\t\t * @param {function} fn the callback function.\n\t\t *     Return false to stop iteration.\n\t\t * @param {boolean} [includeSelf=false]\n\t\t * @returns {boolean}\n\t\t */\n\t\tvisitSiblings: function (fn, includeSelf) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tn,\n\t\t\t\tac = this.parent.children;\n\n\t\t\tfor (i = 0, l = ac.length; i < l; i++) {\n\t\t\t\tn = ac[i];\n\t\t\t\tif (includeSelf || n !== this) {\n\t\t\t\t\tif (fn(n) === false) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/** Write warning to browser console if debugLevel >= 2 (prepending node info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\twarn: function (msg) {\n\t\t\tif (this.tree.options.debugLevel >= 2) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"warn\", arguments);\n\t\t\t}\n\t\t},\n\t};\n\n\t/******************************************************************************\n\t * Fancytree\n\t */\n\t/**\n\t * Construct a new tree object.\n\t *\n\t * @class Fancytree\n\t * @classdesc The controller behind a fancytree.\n\t * This class also contains 'hook methods': see {@link Fancytree_Hooks}.\n\t *\n\t * @param {Widget} widget\n\t *\n\t * @property {string} _id Automatically generated unique tree instance ID, e.g. \"1\".\n\t * @property {string} _ns Automatically generated unique tree namespace, e.g. \".fancytree-1\".\n\t * @property {FancytreeNode} activeNode Currently active node or null.\n\t * @property {string} ariaPropName Property name of FancytreeNode that contains the element which will receive the aria attributes.\n\t *     Typically \"li\", but \"tr\" for table extension.\n\t * @property {jQueryObject} $container Outer `<ul>` element (or `<table>` element for ext-table).\n\t * @property {jQueryObject} $div A jQuery object containing the element used to instantiate the tree widget (`widget.element`)\n\t * @property {object|array} columns Recommended place to store shared column meta data. @since 2.27\n\t * @property {object} data Metadata, i.e. properties that may be passed to `source` in addition to a children array.\n\t * @property {object} ext Hash of all active plugin instances.\n\t * @property {FancytreeNode} focusNode Currently focused node or null.\n\t * @property {FancytreeNode} lastSelectedNode Used to implement selectMode 1 (single select)\n\t * @property {string} nodeContainerAttrName Property name of FancytreeNode that contains the outer element of single nodes.\n\t *     Typically \"li\", but \"tr\" for table extension.\n\t * @property {FancytreeOptions} options Current options, i.e. default options + options passed to constructor.\n\t * @property {FancytreeNode} rootNode Invisible system root node.\n\t * @property {string} statusClassPropName Property name of FancytreeNode that contains the element which will receive the status classes.\n\t *     Typically \"span\", but \"tr\" for table extension.\n\t * @property {object} types Map for shared type specific meta data, used with node.type attribute. @since 2.27\n\t * @property {object} viewport See ext-vieport. @since v2.31\n\t * @property {object} widget Base widget instance.\n\t */\n\tfunction Fancytree(widget) {\n\t\tthis.widget = widget;\n\t\tthis.$div = widget.element;\n\t\tthis.options = widget.options;\n\t\tif (this.options) {\n\t\t\tif (this.options.lazyload !== undefined) {\n\t\t\t\t$.error(\n\t\t\t\t\t\"The 'lazyload' event is deprecated since 2014-02-25. Use 'lazyLoad' (with uppercase L) instead.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (this.options.loaderror !== undefined) {\n\t\t\t\t$.error(\n\t\t\t\t\t\"The 'loaderror' event was renamed since 2014-07-03. Use 'loadError' (with uppercase E) instead.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (this.options.fx !== undefined) {\n\t\t\t\t$.error(\n\t\t\t\t\t\"The 'fx' option was replaced by 'toggleEffect' since 2014-11-30.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (this.options.removeNode !== undefined) {\n\t\t\t\t$.error(\n\t\t\t\t\t\"The 'removeNode' event was replaced by 'modifyChild' since 2.20 (2016-09-10).\"\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tthis.ext = {}; // Active extension instances\n\t\tthis.types = {};\n\t\tthis.columns = {};\n\t\t// allow to init tree.data.foo from <div data-foo=''>\n\t\tthis.data = _getElementDataAsDict(this.$div);\n\t\t// TODO: use widget.uuid instead?\n\t\tthis._id = \"\" + (this.options.treeId || $.ui.fancytree._nextId++);\n\t\t// TODO: use widget.eventNamespace instead?\n\t\tthis._ns = \".fancytree-\" + this._id; // append for namespaced events\n\t\tthis.activeNode = null;\n\t\tthis.focusNode = null;\n\t\tthis._hasFocus = null;\n\t\tthis._tempCache = {};\n\t\tthis._lastMousedownNode = null;\n\t\tthis._enableUpdate = true;\n\t\tthis.lastSelectedNode = null;\n\t\tthis.systemFocusElement = null;\n\t\tthis.lastQuicksearchTerm = \"\";\n\t\tthis.lastQuicksearchTime = 0;\n\t\tthis.viewport = null; // ext-grid\n\n\t\tthis.statusClassPropName = \"span\";\n\t\tthis.ariaPropName = \"li\";\n\t\tthis.nodeContainerAttrName = \"li\";\n\n\t\t// Remove previous markup if any\n\t\tthis.$div.find(\">ul.fancytree-container\").remove();\n\n\t\t// Create a node without parent.\n\t\tvar fakeParent = { tree: this },\n\t\t\t$ul;\n\t\tthis.rootNode = new FancytreeNode(fakeParent, {\n\t\t\ttitle: \"root\",\n\t\t\tkey: \"root_\" + this._id,\n\t\t\tchildren: null,\n\t\t\texpanded: true,\n\t\t});\n\t\tthis.rootNode.parent = null;\n\n\t\t// Create root markup\n\t\t$ul = $(\"<ul>\", {\n\t\t\tid: \"ft-id-\" + this._id,\n\t\t\tclass: \"ui-fancytree fancytree-container fancytree-plain\",\n\t\t}).appendTo(this.$div);\n\t\tthis.$container = $ul;\n\t\tthis.rootNode.ul = $ul[0];\n\n\t\tif (this.options.debugLevel == null) {\n\t\t\tthis.options.debugLevel = FT.debugLevel;\n\t\t}\n\t\t// // Add container to the TAB chain\n\t\t// // See http://www.w3.org/TR/wai-aria-practices/#focus_activedescendant\n\t\t// // #577: Allow to set tabindex to \"0\", \"-1\" and \"\"\n\t\t// this.$container.attr(\"tabindex\", this.options.tabindex);\n\n\t\t// if( this.options.rtl ) {\n\t\t// \tthis.$container.attr(\"DIR\", \"RTL\").addClass(\"fancytree-rtl\");\n\t\t// // }else{\n\t\t// //\tthis.$container.attr(\"DIR\", null).removeClass(\"fancytree-rtl\");\n\t\t// }\n\t\t// if(this.options.aria){\n\t\t// \tthis.$container.attr(\"role\", \"tree\");\n\t\t// \tif( this.options.selectMode !== 1 ) {\n\t\t// \t\tthis.$container.attr(\"aria-multiselectable\", true);\n\t\t// \t}\n\t\t// }\n\t}\n\n\tFancytree.prototype = /** @lends Fancytree# */ {\n\t\t/* Return a context object that can be re-used for _callHook().\n\t\t * @param {Fancytree | FancytreeNode | EventData} obj\n\t\t * @param {Event} originalEvent\n\t\t * @param {Object} extra\n\t\t * @returns {EventData}\n\t\t */\n\t\t_makeHookContext: function (obj, originalEvent, extra) {\n\t\t\tvar ctx, tree;\n\t\t\tif (obj.node !== undefined) {\n\t\t\t\t// obj is already a context object\n\t\t\t\tif (originalEvent && obj.originalEvent !== originalEvent) {\n\t\t\t\t\t$.error(\"invalid args\");\n\t\t\t\t}\n\t\t\t\tctx = obj;\n\t\t\t} else if (obj.tree) {\n\t\t\t\t// obj is a FancytreeNode\n\t\t\t\ttree = obj.tree;\n\t\t\t\tctx = {\n\t\t\t\t\tnode: obj,\n\t\t\t\t\ttree: tree,\n\t\t\t\t\twidget: tree.widget,\n\t\t\t\t\toptions: tree.widget.options,\n\t\t\t\t\toriginalEvent: originalEvent,\n\t\t\t\t\ttypeInfo: tree.types[obj.type] || {},\n\t\t\t\t};\n\t\t\t} else if (obj.widget) {\n\t\t\t\t// obj is a Fancytree\n\t\t\t\tctx = {\n\t\t\t\t\tnode: null,\n\t\t\t\t\ttree: obj,\n\t\t\t\t\twidget: obj.widget,\n\t\t\t\t\toptions: obj.widget.options,\n\t\t\t\t\toriginalEvent: originalEvent,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\t$.error(\"invalid args\");\n\t\t\t}\n\t\t\tif (extra) {\n\t\t\t\t$.extend(ctx, extra);\n\t\t\t}\n\t\t\treturn ctx;\n\t\t},\n\t\t/* Trigger a hook function: funcName(ctx, [...]).\n\t\t *\n\t\t * @param {string} funcName\n\t\t * @param {Fancytree|FancytreeNode|EventData} contextObject\n\t\t * @param {any}  [_extraArgs] optional additional arguments\n\t\t * @returns {any}\n\t\t */\n\t\t_callHook: function (funcName, contextObject, _extraArgs) {\n\t\t\tvar ctx = this._makeHookContext(contextObject),\n\t\t\t\tfn = this[funcName],\n\t\t\t\targs = Array.prototype.slice.call(arguments, 2);\n\t\t\tif (!_isFunction(fn)) {\n\t\t\t\t$.error(\"_callHook('\" + funcName + \"') is not a function\");\n\t\t\t}\n\t\t\targs.unshift(ctx);\n\t\t\t// this.debug(\"_hook\", funcName, ctx.node && ctx.node.toString() || ctx.tree.toString(), args);\n\t\t\treturn fn.apply(this, args);\n\t\t},\n\t\t_setExpiringValue: function (key, value, ms) {\n\t\t\tthis._tempCache[key] = {\n\t\t\t\tvalue: value,\n\t\t\t\texpire: Date.now() + (+ms || 50),\n\t\t\t};\n\t\t},\n\t\t_getExpiringValue: function (key) {\n\t\t\tvar entry = this._tempCache[key];\n\t\t\tif (entry && entry.expire > Date.now()) {\n\t\t\t\treturn entry.value;\n\t\t\t}\n\t\t\tdelete this._tempCache[key];\n\t\t\treturn null;\n\t\t},\n\t\t/* Check if this tree has extension `name` enabled.\n\t\t *\n\t\t * @param {string} name name of the required extension\n\t\t */\n\t\t_usesExtension: function (name) {\n\t\t\treturn $.inArray(name, this.options.extensions) >= 0;\n\t\t},\n\t\t/* Check if current extensions dependencies are met and throw an error if not.\n\t\t *\n\t\t * This method may be called inside the `treeInit` hook for custom extensions.\n\t\t *\n\t\t * @param {string} name name of the required extension\n\t\t * @param {boolean} [required=true] pass `false` if the extension is optional, but we want to check for order if it is present\n\t\t * @param {boolean} [before] `true` if `name` must be included before this, `false` otherwise (use `null` if order doesn't matter)\n\t\t * @param {string} [message] optional error message (defaults to a descriptve error message)\n\t\t */\n\t\t_requireExtension: function (name, required, before, message) {\n\t\t\tif (before != null) {\n\t\t\t\tbefore = !!before;\n\t\t\t}\n\t\t\tvar thisName = this._local.name,\n\t\t\t\textList = this.options.extensions,\n\t\t\t\tisBefore =\n\t\t\t\t\t$.inArray(name, extList) < $.inArray(thisName, extList),\n\t\t\t\tisMissing = required && this.ext[name] == null,\n\t\t\t\tbadOrder = !isMissing && before != null && before !== isBefore;\n\n\t\t\t_assert(\n\t\t\t\tthisName && thisName !== name,\n\t\t\t\t\"invalid or same name '\" + thisName + \"' (require yourself?)\"\n\t\t\t);\n\n\t\t\tif (isMissing || badOrder) {\n\t\t\t\tif (!message) {\n\t\t\t\t\tif (isMissing || required) {\n\t\t\t\t\t\tmessage =\n\t\t\t\t\t\t\t\"'\" +\n\t\t\t\t\t\t\tthisName +\n\t\t\t\t\t\t\t\"' extension requires '\" +\n\t\t\t\t\t\t\tname +\n\t\t\t\t\t\t\t\"'\";\n\t\t\t\t\t\tif (badOrder) {\n\t\t\t\t\t\t\tmessage +=\n\t\t\t\t\t\t\t\t\" to be registered \" +\n\t\t\t\t\t\t\t\t(before ? \"before\" : \"after\") +\n\t\t\t\t\t\t\t\t\" itself\";\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmessage =\n\t\t\t\t\t\t\t\"If used together, `\" +\n\t\t\t\t\t\t\tname +\n\t\t\t\t\t\t\t\"` must be registered \" +\n\t\t\t\t\t\t\t(before ? \"before\" : \"after\") +\n\t\t\t\t\t\t\t\" `\" +\n\t\t\t\t\t\t\tthisName +\n\t\t\t\t\t\t\t\"`\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$.error(message);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/** Activate node with a given key and fire focus and activate events.\n\t\t *\n\t\t * A previously activated node will be deactivated.\n\t\t * If activeVisible option is set, all parents will be expanded as necessary.\n\t\t * Pass key = false, to deactivate the current node only.\n\t\t * @param {string} key\n\t\t * @param {object} [opts] additional options. Defaults to {noEvents: false, noFocus: false}\n\t\t * @returns {FancytreeNode} activated node (null, if not found)\n\t\t */\n\t\tactivateKey: function (key, opts) {\n\t\t\tvar node = this.getNodeByKey(key);\n\t\t\tif (node) {\n\t\t\t\tnode.setActive(true, opts);\n\t\t\t} else if (this.activeNode) {\n\t\t\t\tthis.activeNode.setActive(false, opts);\n\t\t\t}\n\t\t\treturn node;\n\t\t},\n\t\t/** (experimental) Add child status nodes that indicate 'More...', ....\n\t\t * @param {boolean|object} node optional node definition. Pass `false` to remove all paging nodes.\n\t\t * @param {string} [mode='append'] 'child'|firstChild'\n\t\t * @since 2.15\n\t\t */\n\t\taddPagingNode: function (node, mode) {\n\t\t\treturn this.rootNode.addPagingNode(node, mode);\n\t\t},\n\t\t/**\n\t\t * (experimental) Apply a modification (or navigation) operation.\n\t\t *\n\t\t * Valid commands:\n\t\t *   - 'moveUp', 'moveDown'\n\t\t *   - 'indent', 'outdent'\n\t\t *   - 'remove'\n\t\t *   - 'edit', 'addChild', 'addSibling': (reqires ext-edit extension)\n\t\t *   - 'cut', 'copy', 'paste': (use an internal singleton 'clipboard')\n\t\t *   - 'down', 'first', 'last', 'left', 'parent', 'right', 'up': navigate\n\t\t *\n\t\t * @param {string} cmd\n\t\t * @param {FancytreeNode} [node=active_node]\n\t\t * @param {object} [opts] Currently unused\n\t\t *\n\t\t * @since 2.32\n\t\t */\n\t\tapplyCommand: function (cmd, node, opts_) {\n\t\t\tvar // clipboard,\n\t\t\t\trefNode;\n\t\t\t// opts = $.extend(\n\t\t\t// \t{ setActive: true, clipboard: CLIPBOARD },\n\t\t\t// \topts_\n\t\t\t// );\n\n\t\t\tnode = node || this.getActiveNode();\n\t\t\t// clipboard = opts.clipboard;\n\n\t\t\tswitch (cmd) {\n\t\t\t\t// Sorting and indentation:\n\t\t\t\tcase \"moveUp\":\n\t\t\t\t\trefNode = node.getPrevSibling();\n\t\t\t\t\tif (refNode) {\n\t\t\t\t\t\tnode.moveTo(refNode, \"before\");\n\t\t\t\t\t\tnode.setActive();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"moveDown\":\n\t\t\t\t\trefNode = node.getNextSibling();\n\t\t\t\t\tif (refNode) {\n\t\t\t\t\t\tnode.moveTo(refNode, \"after\");\n\t\t\t\t\t\tnode.setActive();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"indent\":\n\t\t\t\t\trefNode = node.getPrevSibling();\n\t\t\t\t\tif (refNode) {\n\t\t\t\t\t\tnode.moveTo(refNode, \"child\");\n\t\t\t\t\t\trefNode.setExpanded();\n\t\t\t\t\t\tnode.setActive();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"outdent\":\n\t\t\t\t\tif (!node.isTopLevel()) {\n\t\t\t\t\t\tnode.moveTo(node.getParent(), \"after\");\n\t\t\t\t\t\tnode.setActive();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t// Remove:\n\t\t\t\tcase \"remove\":\n\t\t\t\t\trefNode = node.getPrevSibling() || node.getParent();\n\t\t\t\t\tnode.remove();\n\t\t\t\t\tif (refNode) {\n\t\t\t\t\t\trefNode.setActive();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t// Add, edit (requires ext-edit):\n\t\t\t\tcase \"addChild\":\n\t\t\t\t\tnode.editCreateNode(\"child\", \"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"addSibling\":\n\t\t\t\t\tnode.editCreateNode(\"after\", \"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"rename\":\n\t\t\t\t\tnode.editStart();\n\t\t\t\t\tbreak;\n\t\t\t\t// Simple clipboard simulation:\n\t\t\t\t// case \"cut\":\n\t\t\t\t// \tclipboard = { mode: cmd, data: node };\n\t\t\t\t// \tbreak;\n\t\t\t\t// case \"copy\":\n\t\t\t\t// \tclipboard = {\n\t\t\t\t// \t\tmode: cmd,\n\t\t\t\t// \t\tdata: node.toDict(function(d, n) {\n\t\t\t\t// \t\t\tdelete d.key;\n\t\t\t\t// \t\t}),\n\t\t\t\t// \t};\n\t\t\t\t// \tbreak;\n\t\t\t\t// case \"clear\":\n\t\t\t\t// \tclipboard = null;\n\t\t\t\t// \tbreak;\n\t\t\t\t// case \"paste\":\n\t\t\t\t// \tif (clipboard.mode === \"cut\") {\n\t\t\t\t// \t\t// refNode = node.getPrevSibling();\n\t\t\t\t// \t\tclipboard.data.moveTo(node, \"child\");\n\t\t\t\t// \t\tclipboard.data.setActive();\n\t\t\t\t// \t} else if (clipboard.mode === \"copy\") {\n\t\t\t\t// \t\tnode.addChildren(clipboard.data).setActive();\n\t\t\t\t// \t}\n\t\t\t\t// \tbreak;\n\t\t\t\t// Navigation commands:\n\t\t\t\tcase \"down\":\n\t\t\t\tcase \"first\":\n\t\t\t\tcase \"last\":\n\t\t\t\tcase \"left\":\n\t\t\t\tcase \"parent\":\n\t\t\t\tcase \"right\":\n\t\t\t\tcase \"up\":\n\t\t\t\t\treturn node.navigate(cmd);\n\t\t\t\tdefault:\n\t\t\t\t\t$.error(\"Unhandled command: '\" + cmd + \"'\");\n\t\t\t}\n\t\t},\n\t\t/** (experimental) Modify existing data model.\n\t\t *\n\t\t * @param {Array} patchList array of [key, NodePatch] arrays\n\t\t * @returns {$.Promise} resolved, when all patches have been applied\n\t\t * @see TreePatch\n\t\t */\n\t\tapplyPatch: function (patchList) {\n\t\t\tvar dfd,\n\t\t\t\ti,\n\t\t\t\tp2,\n\t\t\t\tkey,\n\t\t\t\tpatch,\n\t\t\t\tnode,\n\t\t\t\tpatchCount = patchList.length,\n\t\t\t\tdeferredList = [];\n\n\t\t\tfor (i = 0; i < patchCount; i++) {\n\t\t\t\tp2 = patchList[i];\n\t\t\t\t_assert(\n\t\t\t\t\tp2.length === 2,\n\t\t\t\t\t\"patchList must be an array of length-2-arrays\"\n\t\t\t\t);\n\t\t\t\tkey = p2[0];\n\t\t\t\tpatch = p2[1];\n\t\t\t\tnode = key === null ? this.rootNode : this.getNodeByKey(key);\n\t\t\t\tif (node) {\n\t\t\t\t\tdfd = new $.Deferred();\n\t\t\t\t\tdeferredList.push(dfd);\n\t\t\t\t\tnode.applyPatch(patch).always(_makeResolveFunc(dfd, node));\n\t\t\t\t} else {\n\t\t\t\t\tthis.warn(\"could not find node with key '\" + key + \"'\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Return a promise that is resolved, when ALL patches were applied\n\t\t\treturn $.when.apply($, deferredList).promise();\n\t\t},\n\t\t/* TODO: implement in dnd extension\n\t\tcancelDrag: function() {\n\t\t\t\tvar dd = $.ui.ddmanager.current;\n\t\t\t\tif(dd){\n\t\t\t\t\tdd.cancel();\n\t\t\t\t}\n\t\t\t},\n\t\t*/\n\t\t/** Remove all nodes.\n\t\t * @since 2.14\n\t\t */\n\t\tclear: function (source) {\n\t\t\tthis._callHook(\"treeClear\", this);\n\t\t},\n\t\t/** Return the number of nodes.\n\t\t * @returns {integer}\n\t\t */\n\t\tcount: function () {\n\t\t\treturn this.rootNode.countChildren();\n\t\t},\n\t\t/** Write to browser console if debugLevel >= 4 (prepending tree name)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\tdebug: function (msg) {\n\t\t\tif (this.options.debugLevel >= 4) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"log\", arguments);\n\t\t\t}\n\t\t},\n\t\t/** Destroy this widget, restore previous markup and cleanup resources.\n\t\t *\n\t\t * @since 2.34\n\t\t */\n\t\tdestroy: function () {\n\t\t\tthis.widget.destroy();\n\t\t},\n\t\t/** Enable (or disable) the tree control.\n\t\t *\n\t\t * @param {boolean} [flag=true] pass false to disable\n\t\t * @since 2.30\n\t\t */\n\t\tenable: function (flag) {\n\t\t\tif (flag === false) {\n\t\t\t\tthis.widget.disable();\n\t\t\t} else {\n\t\t\t\tthis.widget.enable();\n\t\t\t}\n\t\t},\n\t\t/** Temporarily suppress rendering to improve performance on bulk-updates.\n\t\t *\n\t\t * @param {boolean} flag\n\t\t * @returns {boolean} previous status\n\t\t * @since 2.19\n\t\t */\n\t\tenableUpdate: function (flag) {\n\t\t\tflag = flag !== false;\n\t\t\tif (!!this._enableUpdate === !!flag) {\n\t\t\t\treturn flag;\n\t\t\t}\n\t\t\tthis._enableUpdate = flag;\n\t\t\tif (flag) {\n\t\t\t\tthis.debug(\"enableUpdate(true): redraw \"); //, this._dirtyRoots);\n\t\t\t\tthis._callHook(\"treeStructureChanged\", this, \"enableUpdate\");\n\t\t\t\tthis.render();\n\t\t\t} else {\n\t\t\t\t// \tthis._dirtyRoots = null;\n\t\t\t\tthis.debug(\"enableUpdate(false)...\");\n\t\t\t}\n\t\t\treturn !flag; // return previous value\n\t\t},\n\t\t/** Write error to browser console if debugLevel >= 1 (prepending tree info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\terror: function (msg) {\n\t\t\tif (this.options.debugLevel >= 1) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"error\", arguments);\n\t\t\t}\n\t\t},\n\t\t/** Expand (or collapse) all parent nodes.\n\t\t *\n\t\t * This convenience method uses `tree.visit()` and `tree.setExpanded()`\n\t\t * internally.\n\t\t *\n\t\t * @param {boolean} [flag=true] pass false to collapse\n\t\t * @param {object} [opts] passed to setExpanded()\n\t\t * @since 2.30\n\t\t */\n\t\texpandAll: function (flag, opts) {\n\t\t\tvar prev = this.enableUpdate(false);\n\n\t\t\tflag = flag !== false;\n\t\t\tthis.visit(function (node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.hasChildren() !== false &&\n\t\t\t\t\tnode.isExpanded() !== flag\n\t\t\t\t) {\n\t\t\t\t\tnode.setExpanded(flag, opts);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.enableUpdate(prev);\n\t\t},\n\t\t/**Find all nodes that matches condition.\n\t\t *\n\t\t * @param {string | function(node)} match title string to search for, or a\n\t\t *     callback function that returns `true` if a node is matched.\n\t\t * @returns {FancytreeNode[]} array of nodes (may be empty)\n\t\t * @see FancytreeNode#findAll\n\t\t * @since 2.12\n\t\t */\n\t\tfindAll: function (match) {\n\t\t\treturn this.rootNode.findAll(match);\n\t\t},\n\t\t/**Find first node that matches condition.\n\t\t *\n\t\t * @param {string | function(node)} match title string to search for, or a\n\t\t *     callback function that returns `true` if a node is matched.\n\t\t * @returns {FancytreeNode} matching node or null\n\t\t * @see FancytreeNode#findFirst\n\t\t * @since 2.12\n\t\t */\n\t\tfindFirst: function (match) {\n\t\t\treturn this.rootNode.findFirst(match);\n\t\t},\n\t\t/** Find the next visible node that starts with `match`, starting at `startNode`\n\t\t * and wrap-around at the end.\n\t\t *\n\t\t * @param {string|function} match\n\t\t * @param {FancytreeNode} [startNode] defaults to first node\n\t\t * @returns {FancytreeNode} matching node or null\n\t\t */\n\t\tfindNextNode: function (match, startNode) {\n\t\t\t//, visibleOnly) {\n\t\t\tvar res = null,\n\t\t\t\tfirstNode = this.getFirstChild();\n\n\t\t\tmatch =\n\t\t\t\ttypeof match === \"string\"\n\t\t\t\t\t? _makeNodeTitleStartMatcher(match)\n\t\t\t\t\t: match;\n\t\t\tstartNode = startNode || firstNode;\n\n\t\t\tfunction _checkNode(n) {\n\t\t\t\t// console.log(\"_check \" + n)\n\t\t\t\tif (match(n)) {\n\t\t\t\t\tres = n;\n\t\t\t\t}\n\t\t\t\tif (res || n === startNode) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.visitRows(_checkNode, {\n\t\t\t\tstart: startNode,\n\t\t\t\tincludeSelf: false,\n\t\t\t});\n\t\t\t// Wrap around search\n\t\t\tif (!res && startNode !== firstNode) {\n\t\t\t\tthis.visitRows(_checkNode, {\n\t\t\t\t\tstart: firstNode,\n\t\t\t\t\tincludeSelf: true,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t/** Find a node relative to another node.\n\t\t *\n\t\t * @param {FancytreeNode} node\n\t\t * @param {string|number} where 'down', 'first', 'last', 'left', 'parent', 'right', or 'up'.\n\t\t *   (Alternatively the keyCode that would normally trigger this move,\n\t\t *   e.g. `$.ui.keyCode.LEFT` = 'left'.\n\t\t * @param {boolean} [includeHidden=false] Not yet implemented\n\t\t * @returns {FancytreeNode|null}\n\t\t * @since v2.31\n\t\t */\n\t\tfindRelatedNode: function (node, where, includeHidden) {\n\t\t\tvar res = null,\n\t\t\t\tKC = $.ui.keyCode;\n\n\t\t\tswitch (where) {\n\t\t\t\tcase \"parent\":\n\t\t\t\tcase KC.BACKSPACE:\n\t\t\t\t\tif (node.parent && node.parent.parent) {\n\t\t\t\t\t\tres = node.parent;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"first\":\n\t\t\t\tcase KC.HOME:\n\t\t\t\t\t// First visible node\n\t\t\t\t\tthis.visit(function (n) {\n\t\t\t\t\t\tif (n.isVisible()) {\n\t\t\t\t\t\t\tres = n;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\tcase KC.END:\n\t\t\t\t\tthis.visit(function (n) {\n\t\t\t\t\t\t// last visible node\n\t\t\t\t\t\tif (n.isVisible()) {\n\t\t\t\t\t\t\tres = n;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"left\":\n\t\t\t\tcase KC.LEFT:\n\t\t\t\t\tif (node.expanded) {\n\t\t\t\t\t\tnode.setExpanded(false);\n\t\t\t\t\t} else if (node.parent && node.parent.parent) {\n\t\t\t\t\t\tres = node.parent;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\tcase KC.RIGHT:\n\t\t\t\t\tif (!node.expanded && (node.children || node.lazy)) {\n\t\t\t\t\t\tnode.setExpanded();\n\t\t\t\t\t\tres = node;\n\t\t\t\t\t} else if (node.children && node.children.length) {\n\t\t\t\t\t\tres = node.children[0];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\tcase KC.UP:\n\t\t\t\t\tthis.visitRows(\n\t\t\t\t\t\tfunction (n) {\n\t\t\t\t\t\t\tres = n;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ start: node, reverse: true, includeSelf: false }\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\tcase KC.DOWN:\n\t\t\t\t\tthis.visitRows(\n\t\t\t\t\t\tfunction (n) {\n\t\t\t\t\t\t\tres = n;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ start: node, includeSelf: false }\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.tree.warn(\"Unknown relation '\" + where + \"'.\");\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t// TODO: fromDict\n\t\t/**\n\t\t * Generate INPUT elements that can be submitted with html forms.\n\t\t *\n\t\t * In selectMode 3 only the topmost selected nodes are considered, unless\n\t\t * `opts.stopOnParents: false` is passed.\n\t\t *\n\t\t * @example\n\t\t * // Generate input elements for active and selected nodes\n\t\t * tree.generateFormElements();\n\t\t * // Generate input elements selected nodes, using a custom `name` attribute\n\t\t * tree.generateFormElements(\"cust_sel\", false);\n\t\t * // Generate input elements using a custom filter\n\t\t * tree.generateFormElements(true, true, { filter: function(node) {\n\t\t *     return node.isSelected() && node.data.yes;\n\t\t * }});\n\t\t *\n\t\t * @param {boolean | string} [selected=true] Pass false to disable, pass a string to override the field name (default: 'ft_ID[]')\n\t\t * @param {boolean | string} [active=true] Pass false to disable, pass a string to override the field name (default: 'ft_ID_active')\n\t\t * @param {object} [opts] default { filter: null, stopOnParents: true }\n\t\t */\n\t\tgenerateFormElements: function (selected, active, opts) {\n\t\t\topts = opts || {};\n\n\t\t\tvar nodeList,\n\t\t\t\tselectedName =\n\t\t\t\t\ttypeof selected === \"string\"\n\t\t\t\t\t\t? selected\n\t\t\t\t\t\t: \"ft_\" + this._id + \"[]\",\n\t\t\t\tactiveName =\n\t\t\t\t\ttypeof active === \"string\"\n\t\t\t\t\t\t? active\n\t\t\t\t\t\t: \"ft_\" + this._id + \"_active\",\n\t\t\t\tid = \"fancytree_result_\" + this._id,\n\t\t\t\t$result = $(\"#\" + id),\n\t\t\t\tstopOnParents =\n\t\t\t\t\tthis.options.selectMode === 3 &&\n\t\t\t\t\topts.stopOnParents !== false;\n\n\t\t\tif ($result.length) {\n\t\t\t\t$result.empty();\n\t\t\t} else {\n\t\t\t\t$result = $(\"<div>\", {\n\t\t\t\t\tid: id,\n\t\t\t\t})\n\t\t\t\t\t.hide()\n\t\t\t\t\t.insertAfter(this.$container);\n\t\t\t}\n\t\t\tif (active !== false && this.activeNode) {\n\t\t\t\t$result.append(\n\t\t\t\t\t$(\"<input>\", {\n\t\t\t\t\t\ttype: \"radio\",\n\t\t\t\t\t\tname: activeName,\n\t\t\t\t\t\tvalue: this.activeNode.key,\n\t\t\t\t\t\tchecked: true,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\tfunction _appender(node) {\n\t\t\t\t$result.append(\n\t\t\t\t\t$(\"<input>\", {\n\t\t\t\t\t\ttype: \"checkbox\",\n\t\t\t\t\t\tname: selectedName,\n\t\t\t\t\t\tvalue: node.key,\n\t\t\t\t\t\tchecked: true,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (opts.filter) {\n\t\t\t\tthis.visit(function (node) {\n\t\t\t\t\tvar res = opts.filter(node);\n\t\t\t\t\tif (res === \"skip\") {\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t}\n\t\t\t\t\tif (res !== false) {\n\t\t\t\t\t\t_appender(node);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (selected !== false) {\n\t\t\t\tnodeList = this.getSelectedNodes(stopOnParents);\n\t\t\t\t$.each(nodeList, function (idx, node) {\n\t\t\t\t\t_appender(node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Return the currently active node or null.\n\t\t * @returns {FancytreeNode}\n\t\t */\n\t\tgetActiveNode: function () {\n\t\t\treturn this.activeNode;\n\t\t},\n\t\t/** Return the first top level node if any (not the invisible root node).\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetFirstChild: function () {\n\t\t\treturn this.rootNode.getFirstChild();\n\t\t},\n\t\t/**\n\t\t * Return node that has keyboard focus or null.\n\t\t * @returns {FancytreeNode}\n\t\t */\n\t\tgetFocusNode: function () {\n\t\t\treturn this.focusNode;\n\t\t},\n\t\t/**\n\t\t * Return current option value.\n\t\t * (Note: this is the preferred variant of `$().fancytree(\"option\", \"KEY\")`)\n\t\t *\n\t\t * @param {string} name option name (may contain '.')\n\t\t * @returns {any}\n\t\t */\n\t\tgetOption: function (optionName) {\n\t\t\treturn this.widget.option(optionName);\n\t\t},\n\t\t/**\n\t\t * Return node with a given key or null if not found.\n\t\t *\n\t\t * @param {string} key\n\t\t * @param {FancytreeNode} [searchRoot] only search below this node\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetNodeByKey: function (key, searchRoot) {\n\t\t\t// Search the DOM by element ID (assuming this is faster than traversing all nodes).\n\t\t\tvar el, match;\n\t\t\t// TODO: use tree.keyMap if available\n\t\t\t// TODO: check opts.generateIds === true\n\t\t\tif (!searchRoot) {\n\t\t\t\tel = document.getElementById(this.options.idPrefix + key);\n\t\t\t\tif (el) {\n\t\t\t\t\treturn el.ftnode ? el.ftnode : null;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Not found in the DOM, but still may be in an unrendered part of tree\n\t\t\tsearchRoot = searchRoot || this.rootNode;\n\t\t\tmatch = null;\n\t\t\tkey = \"\" + key; // Convert to string (#1005)\n\t\t\tsearchRoot.visit(function (node) {\n\t\t\t\tif (node.key === key) {\n\t\t\t\t\tmatch = node;\n\t\t\t\t\treturn false; // Stop iteration\n\t\t\t\t}\n\t\t\t}, true);\n\t\t\treturn match;\n\t\t},\n\t\t/** Return the invisible system root node.\n\t\t * @returns {FancytreeNode}\n\t\t */\n\t\tgetRootNode: function () {\n\t\t\treturn this.rootNode;\n\t\t},\n\t\t/**\n\t\t * Return an array of selected nodes.\n\t\t *\n\t\t * Note: you cannot send this result via Ajax directly. Instead the\n\t\t * node object need to be converted to plain objects, for example\n\t\t * by using `$.map()` and `node.toDict()`.\n\t\t * @param {boolean} [stopOnParents=false] only return the topmost selected\n\t\t *     node (useful with selectMode 3)\n\t\t * @returns {FancytreeNode[]}\n\t\t */\n\t\tgetSelectedNodes: function (stopOnParents) {\n\t\t\treturn this.rootNode.getSelectedNodes(stopOnParents);\n\t\t},\n\t\t/** Return true if the tree control has keyboard focus\n\t\t * @returns {boolean}\n\t\t */\n\t\thasFocus: function () {\n\t\t\t// var ae = document.activeElement,\n\t\t\t// \thasFocus = !!(\n\t\t\t// \t\tae && $(ae).closest(\".fancytree-container\").length\n\t\t\t// \t);\n\n\t\t\t// if (hasFocus !== !!this._hasFocus) {\n\t\t\t// \tthis.warn(\n\t\t\t// \t\t\"hasFocus(): fix inconsistent container state, now: \" +\n\t\t\t// \t\t\thasFocus\n\t\t\t// \t);\n\t\t\t// \tthis._hasFocus = hasFocus;\n\t\t\t// \tthis.$container.toggleClass(\"fancytree-treefocus\", hasFocus);\n\t\t\t// }\n\t\t\t// return hasFocus;\n\t\t\treturn !!this._hasFocus;\n\t\t},\n\t\t/** Write to browser console if debugLevel >= 3 (prepending tree name)\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\tinfo: function (msg) {\n\t\t\tif (this.options.debugLevel >= 3) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"info\", arguments);\n\t\t\t}\n\t\t},\n\t\t/** Return true if any node is currently beeing loaded, i.e. a Ajax request is pending.\n\t\t * @returns {boolean}\n\t\t * @since 2.32\n\t\t */\n\t\tisLoading: function () {\n\t\t\tvar res = false;\n\n\t\t\tthis.rootNode.visit(function (n) {\n\t\t\t\t// also visit rootNode\n\t\t\t\tif (n._isLoading || n._requestId) {\n\t\t\t\t\tres = true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t\treturn res;\n\t\t},\n\t\t/*\n\t\tTODO: isInitializing: function() {\n\t\t\treturn ( this.phase==\"init\" || this.phase==\"postInit\" );\n\t\t},\n\t\tTODO: isReloading: function() {\n\t\t\treturn ( this.phase==\"init\" || this.phase==\"postInit\" ) && this.options.persist && this.persistence.cookiesFound;\n\t\t},\n\t\tTODO: isUserEvent: function() {\n\t\t\treturn ( this.phase==\"userEvent\" );\n\t\t},\n\t\t*/\n\n\t\t/**\n\t\t * Make sure that a node with a given ID is loaded, by traversing - and\n\t\t * loading - its parents. This method is meant for lazy hierarchies.\n\t\t * A callback is executed for every node as we go.\n\t\t * @example\n\t\t * // Resolve using node.key:\n\t\t * tree.loadKeyPath(\"/_3/_23/_26/_27\", function(node, status){\n\t\t *   if(status === \"loaded\") {\n\t\t *     console.log(\"loaded intermediate node \" + node);\n\t\t *   }else if(status === \"ok\") {\n\t\t *     node.activate();\n\t\t *   }\n\t\t * });\n\t\t * // Use deferred promise:\n\t\t * tree.loadKeyPath(\"/_3/_23/_26/_27\").progress(function(data){\n\t\t *   if(data.status === \"loaded\") {\n\t\t *     console.log(\"loaded intermediate node \" + data.node);\n\t\t *   }else if(data.status === \"ok\") {\n\t\t *     node.activate();\n\t\t *   }\n\t\t * }).done(function(){\n\t\t *    ...\n\t\t * });\n\t\t * // Custom path segment resolver:\n\t\t * tree.loadKeyPath(\"/321/431/21/2\", {\n\t\t *   matchKey: function(node, key){\n\t\t *     return node.data.refKey === key;\n\t\t *   },\n\t\t *   callback: function(node, status){\n\t\t *     if(status === \"loaded\") {\n\t\t *       console.log(\"loaded intermediate node \" + node);\n\t\t *     }else if(status === \"ok\") {\n\t\t *       node.activate();\n\t\t *     }\n\t\t *   }\n\t\t * });\n\t\t * @param {string | string[]} keyPathList one or more key paths (e.g. '/3/2_1/7')\n\t\t * @param {function | object} optsOrCallback callback(node, status) is called for every visited node ('loading', 'loaded', 'ok', 'error').\n\t\t *     Pass an object to define custom key matchers for the path segments: {callback: function, matchKey: function}.\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tloadKeyPath: function (keyPathList, optsOrCallback) {\n\t\t\tvar callback,\n\t\t\t\ti,\n\t\t\t\tpath,\n\t\t\t\tself = this,\n\t\t\t\tdfd = new $.Deferred(),\n\t\t\t\tparent = this.getRootNode(),\n\t\t\t\tsep = this.options.keyPathSeparator,\n\t\t\t\tpathSegList = [],\n\t\t\t\topts = $.extend({}, optsOrCallback);\n\n\t\t\t// Prepare options\n\t\t\tif (typeof optsOrCallback === \"function\") {\n\t\t\t\tcallback = optsOrCallback;\n\t\t\t} else if (optsOrCallback && optsOrCallback.callback) {\n\t\t\t\tcallback = optsOrCallback.callback;\n\t\t\t}\n\t\t\topts.callback = function (ctx, node, status) {\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback.call(ctx, node, status);\n\t\t\t\t}\n\t\t\t\tdfd.notifyWith(ctx, [{ node: node, status: status }]);\n\t\t\t};\n\t\t\tif (opts.matchKey == null) {\n\t\t\t\topts.matchKey = function (node, key) {\n\t\t\t\t\treturn node.key === key;\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Convert array of path strings to array of segment arrays\n\t\t\tif (!_isArray(keyPathList)) {\n\t\t\t\tkeyPathList = [keyPathList];\n\t\t\t}\n\t\t\tfor (i = 0; i < keyPathList.length; i++) {\n\t\t\t\tpath = keyPathList[i];\n\t\t\t\t// strip leading slash\n\t\t\t\tif (path.charAt(0) === sep) {\n\t\t\t\t\tpath = path.substr(1);\n\t\t\t\t}\n\t\t\t\t// segListMap[path] = { parent: parent, segList: path.split(sep) };\n\t\t\t\tpathSegList.push(path.split(sep));\n\t\t\t\t// targetList.push({ parent: parent, segList: path.split(sep)/* , path: path*/});\n\t\t\t}\n\t\t\t// The timeout forces async behavior always (even if nodes are all loaded)\n\t\t\t// This way a potential progress() event will fire.\n\t\t\tsetTimeout(function () {\n\t\t\t\tself._loadKeyPathImpl(dfd, opts, parent, pathSegList).done(\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tdfd.resolve();\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}, 0);\n\t\t\treturn dfd.promise();\n\t\t},\n\t\t/*\n\t\t * Resolve a list of paths, relative to one parent node.\n\t\t */\n\t\t_loadKeyPathImpl: function (dfd, opts, parent, pathSegList) {\n\t\t\tvar deferredList,\n\t\t\t\ti,\n\t\t\t\tkey,\n\t\t\t\tnode,\n\t\t\t\tnodeKey,\n\t\t\t\tremain,\n\t\t\t\tremainMap,\n\t\t\t\ttmpParent,\n\t\t\t\tsegList,\n\t\t\t\tsubDfd,\n\t\t\t\tself = this;\n\n\t\t\tfunction __findChild(parent, key) {\n\t\t\t\t// console.log(\"__findChild\", key, parent);\n\t\t\t\tvar i,\n\t\t\t\t\tl,\n\t\t\t\t\tcl = parent.children;\n\n\t\t\t\tif (cl) {\n\t\t\t\t\tfor (i = 0, l = cl.length; i < l; i++) {\n\t\t\t\t\t\tif (opts.matchKey(cl[i], key)) {\n\t\t\t\t\t\t\treturn cl[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// console.log(\"_loadKeyPathImpl, parent=\", parent, \", pathSegList=\", pathSegList);\n\n\t\t\t// Pass 1:\n\t\t\t// Handle all path segments for nodes that are already loaded.\n\t\t\t// Collect distinct top-most lazy nodes in a map.\n\t\t\t// Note that we can use node.key to de-dupe entries, even if a custom matcher would\n\t\t\t// look for other node attributes.\n\t\t\t// map[node.key] => {node: node, pathList: [list of remaining rest-paths]}\n\t\t\tremainMap = {};\n\n\t\t\tfor (i = 0; i < pathSegList.length; i++) {\n\t\t\t\tsegList = pathSegList[i];\n\t\t\t\t// target = targetList[i];\n\n\t\t\t\t// Traverse and pop path segments (i.e. keys), until we hit a lazy, unloaded node\n\t\t\t\ttmpParent = parent;\n\t\t\t\twhile (segList.length) {\n\t\t\t\t\tkey = segList.shift();\n\t\t\t\t\tnode = __findChild(tmpParent, key);\n\t\t\t\t\tif (!node) {\n\t\t\t\t\t\tthis.warn(\n\t\t\t\t\t\t\t\"loadKeyPath: key not found: \" +\n\t\t\t\t\t\t\t\tkey +\n\t\t\t\t\t\t\t\t\" (parent: \" +\n\t\t\t\t\t\t\t\ttmpParent +\n\t\t\t\t\t\t\t\t\")\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\topts.callback(this, key, \"error\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (segList.length === 0) {\n\t\t\t\t\t\topts.callback(this, node, \"ok\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (!node.lazy || node.hasChildren() !== undefined) {\n\t\t\t\t\t\topts.callback(this, node, \"loaded\");\n\t\t\t\t\t\ttmpParent = node;\n\t\t\t\t\t} else {\n\t\t\t\t\t\topts.callback(this, node, \"loaded\");\n\t\t\t\t\t\tkey = node.key; //target.segList.join(sep);\n\t\t\t\t\t\tif (remainMap[key]) {\n\t\t\t\t\t\t\tremainMap[key].pathSegList.push(segList);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tremainMap[key] = {\n\t\t\t\t\t\t\t\tparent: node,\n\t\t\t\t\t\t\t\tpathSegList: [segList],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\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\t// console.log(\"_loadKeyPathImpl AFTER pass 1, remainMap=\", remainMap);\n\n\t\t\t// Now load all lazy nodes and continue iteration for remaining paths\n\t\t\tdeferredList = [];\n\n\t\t\t// Avoid jshint warning 'Don't make functions within a loop.':\n\t\t\tfunction __lazyload(dfd, parent, pathSegList) {\n\t\t\t\t// console.log(\"__lazyload\", parent, \"pathSegList=\", pathSegList);\n\t\t\t\topts.callback(self, parent, \"loading\");\n\t\t\t\tparent\n\t\t\t\t\t.load()\n\t\t\t\t\t.done(function () {\n\t\t\t\t\t\tself._loadKeyPathImpl\n\t\t\t\t\t\t\t.call(self, dfd, opts, parent, pathSegList)\n\t\t\t\t\t\t\t.always(_makeResolveFunc(dfd, self));\n\t\t\t\t\t})\n\t\t\t\t\t.fail(function (errMsg) {\n\t\t\t\t\t\tself.warn(\"loadKeyPath: error loading lazy \" + parent);\n\t\t\t\t\t\topts.callback(self, node, \"error\");\n\t\t\t\t\t\tdfd.rejectWith(self);\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t// remainMap contains parent nodes, each with a list of relative sub-paths.\n\t\t\t// We start loading all of them now, and pass the the list to each loader.\n\t\t\tfor (nodeKey in remainMap) {\n\t\t\t\tif (_hasProp(remainMap, nodeKey)) {\n\t\t\t\t\tremain = remainMap[nodeKey];\n\t\t\t\t\t// console.log(\"for(): remain=\", remain, \"remainMap=\", remainMap);\n\t\t\t\t\t// key = remain.segList.shift();\n\t\t\t\t\t// node = __findChild(remain.parent, key);\n\t\t\t\t\t// if (node == null) {  // #576\n\t\t\t\t\t// \t// Issue #576, refactored for v2.27:\n\t\t\t\t\t// \t// The root cause was, that sometimes the wrong parent was used here\n\t\t\t\t\t// \t// to find the next segment.\n\t\t\t\t\t// \t// Falling back to getNodeByKey() was a hack that no longer works if a custom\n\t\t\t\t\t// \t// matcher is used, because we cannot assume that a single segment-key is unique\n\t\t\t\t\t// \t// throughout the tree.\n\t\t\t\t\t// \tself.error(\"loadKeyPath: error loading child by key '\" + key + \"' (parent: \" + target.parent + \")\", target);\n\t\t\t\t\t// \t// \tnode = self.getNodeByKey(key);\n\t\t\t\t\t// \tcontinue;\n\t\t\t\t\t// }\n\t\t\t\t\tsubDfd = new $.Deferred();\n\t\t\t\t\tdeferredList.push(subDfd);\n\t\t\t\t\t__lazyload(subDfd, remain.parent, remain.pathSegList);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Return a promise that is resolved, when ALL paths were loaded\n\t\t\treturn $.when.apply($, deferredList).promise();\n\t\t},\n\t\t/** Re-fire beforeActivate, activate, and (optional) focus events.\n\t\t * Calling this method in the `init` event, will activate the node that\n\t\t * was marked 'active' in the source data, and optionally set the keyboard\n\t\t * focus.\n\t\t * @param [setFocus=false]\n\t\t */\n\t\treactivate: function (setFocus) {\n\t\t\tvar res,\n\t\t\t\tnode = this.activeNode;\n\n\t\t\tif (!node) {\n\t\t\t\treturn _getResolvedPromise();\n\t\t\t}\n\t\t\tthis.activeNode = null; // Force re-activating\n\t\t\tres = node.setActive(true, { noFocus: true });\n\t\t\tif (setFocus) {\n\t\t\t\tnode.setFocus();\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t/** Reload tree from source and return a promise.\n\t\t * @param [source] optional new source (defaults to initial source data)\n\t\t * @returns {$.Promise}\n\t\t */\n\t\treload: function (source) {\n\t\t\tthis._callHook(\"treeClear\", this);\n\t\t\treturn this._callHook(\"treeLoad\", this, source);\n\t\t},\n\t\t/**Render tree (i.e. create DOM elements for all top-level nodes).\n\t\t * @param {boolean} [force=false] create DOM elemnts, even if parent is collapsed\n\t\t * @param {boolean} [deep=false]\n\t\t */\n\t\trender: function (force, deep) {\n\t\t\treturn this.rootNode.render(force, deep);\n\t\t},\n\t\t/**(De)select all nodes.\n\t\t * @param {boolean} [flag=true]\n\t\t * @since 2.28\n\t\t */\n\t\tselectAll: function (flag) {\n\t\t\tthis.visit(function (node) {\n\t\t\t\tnode.setSelected(flag);\n\t\t\t});\n\t\t},\n\t\t// TODO: selectKey: function(key, select)\n\t\t// TODO: serializeArray: function(stopOnParents)\n\t\t/**\n\t\t * @param {boolean} [flag=true]\n\t\t */\n\t\tsetFocus: function (flag) {\n\t\t\treturn this._callHook(\"treeSetFocus\", this, flag);\n\t\t},\n\t\t/**\n\t\t * Set current option value.\n\t\t * (Note: this is the preferred variant of `$().fancytree(\"option\", \"KEY\", VALUE)`)\n\t\t * @param {string} name option name (may contain '.')\n\t\t * @param {any} new value\n\t\t */\n\t\tsetOption: function (optionName, value) {\n\t\t\treturn this.widget.option(optionName, value);\n\t\t},\n\t\t/**\n\t\t * Call console.time() when in debug mode (verbose >= 4).\n\t\t *\n\t\t * @param {string} label\n\t\t */\n\t\tdebugTime: function (label) {\n\t\t\tif (this.options.debugLevel >= 4) {\n\t\t\t\twindow.console.time(this + \" - \" + label);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Call console.timeEnd() when in debug mode (verbose >= 4).\n\t\t *\n\t\t * @param {string} label\n\t\t */\n\t\tdebugTimeEnd: function (label) {\n\t\t\tif (this.options.debugLevel >= 4) {\n\t\t\t\twindow.console.timeEnd(this + \" - \" + label);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Return all nodes as nested list of {@link NodeData}.\n\t\t *\n\t\t * @param {boolean} [includeRoot=false] Returns the hidden system root node (and its children)\n\t\t * @param {function} [callback] callback(dict, node) is called for every node, in order to allow modifications.\n\t\t *     Return `false` to ignore this node or \"skip\" to include this node without its children.\n\t\t * @returns {Array | object}\n\t\t * @see FancytreeNode#toDict\n\t\t */\n\t\ttoDict: function (includeRoot, callback) {\n\t\t\tvar res = this.rootNode.toDict(true, callback);\n\t\t\treturn includeRoot ? res : res.children;\n\t\t},\n\t\t/* Implicitly called for string conversions.\n\t\t * @returns {string}\n\t\t */\n\t\ttoString: function () {\n\t\t\treturn \"Fancytree@\" + this._id;\n\t\t\t// return \"<Fancytree(#\" + this._id + \")>\";\n\t\t},\n\t\t/* _trigger a widget event with additional node ctx.\n\t\t * @see EventData\n\t\t */\n\t\t_triggerNodeEvent: function (type, node, originalEvent, extra) {\n\t\t\t// this.debug(\"_trigger(\" + type + \"): '\" + ctx.node.title + \"'\", ctx);\n\t\t\tvar ctx = this._makeHookContext(node, originalEvent, extra),\n\t\t\t\tres = this.widget._trigger(type, originalEvent, ctx);\n\t\t\tif (res !== false && ctx.result !== undefined) {\n\t\t\t\treturn ctx.result;\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t/* _trigger a widget event with additional tree data. */\n\t\t_triggerTreeEvent: function (type, originalEvent, extra) {\n\t\t\t// this.debug(\"_trigger(\" + type + \")\", ctx);\n\t\t\tvar ctx = this._makeHookContext(this, originalEvent, extra),\n\t\t\t\tres = this.widget._trigger(type, originalEvent, ctx);\n\n\t\t\tif (res !== false && ctx.result !== undefined) {\n\t\t\t\treturn ctx.result;\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t/** Call fn(node) for all nodes in hierarchical order (depth-first).\n\t\t *\n\t\t * @param {function} fn the callback function.\n\t\t *     Return false to stop iteration, return \"skip\" to skip this node and children only.\n\t\t * @returns {boolean} false, if the iterator was stopped.\n\t\t */\n\t\tvisit: function (fn) {\n\t\t\treturn this.rootNode.visit(fn, false);\n\t\t},\n\t\t/** Call fn(node) for all nodes in vertical order, top down (or bottom up).<br>\n\t\t * Stop iteration, if fn() returns false.<br>\n\t\t * Return false if iteration was stopped.\n\t\t *\n\t\t * @param {function} fn the callback function.\n\t\t *     Return false to stop iteration, return \"skip\" to skip this node and children only.\n\t\t * @param {object} [options]\n\t\t *     Defaults:\n\t\t *     {start: First top node, reverse: false, includeSelf: true, includeHidden: false}\n\t\t * @returns {boolean} false if iteration was cancelled\n\t\t * @since 2.28\n\t\t */\n\t\tvisitRows: function (fn, opts) {\n\t\t\tif (!this.rootNode.hasChildren()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (opts && opts.reverse) {\n\t\t\t\tdelete opts.reverse;\n\t\t\t\treturn this._visitRowsUp(fn, opts);\n\t\t\t}\n\t\t\topts = opts || {};\n\n\t\t\tvar i,\n\t\t\t\tnextIdx,\n\t\t\t\tparent,\n\t\t\t\tres,\n\t\t\t\tsiblings,\n\t\t\t\tsiblingOfs = 0,\n\t\t\t\tskipFirstNode = opts.includeSelf === false,\n\t\t\t\tincludeHidden = !!opts.includeHidden,\n\t\t\t\tcheckFilter = !includeHidden && this.enableFilter,\n\t\t\t\tnode = opts.start || this.rootNode.children[0];\n\n\t\t\tparent = node.parent;\n\t\t\twhile (parent) {\n\t\t\t\t// visit siblings\n\t\t\t\tsiblings = parent.children;\n\t\t\t\tnextIdx = siblings.indexOf(node) + siblingOfs;\n\t\t\t\t_assert(\n\t\t\t\t\tnextIdx >= 0,\n\t\t\t\t\t\"Could not find \" +\n\t\t\t\t\t\tnode +\n\t\t\t\t\t\t\" in parent's children: \" +\n\t\t\t\t\t\tparent\n\t\t\t\t);\n\n\t\t\t\tfor (i = nextIdx; i < siblings.length; i++) {\n\t\t\t\t\tnode = siblings[i];\n\t\t\t\t\tif (checkFilter && !node.match && !node.subMatchCount) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (!skipFirstNode && fn(node) === false) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tskipFirstNode = false;\n\t\t\t\t\t// Dive into node's child nodes\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.children &&\n\t\t\t\t\t\tnode.children.length &&\n\t\t\t\t\t\t(includeHidden || node.expanded)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Disable warning: Functions declared within loops referencing an outer\n\t\t\t\t\t\t// scoped variable may lead to confusing semantics:\n\t\t\t\t\t\t/*jshint -W083 */\n\t\t\t\t\t\tres = node.visit(function (n) {\n\t\t\t\t\t\t\tif (checkFilter && !n.match && !n.subMatchCount) {\n\t\t\t\t\t\t\t\treturn \"skip\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (fn(n) === false) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!includeHidden && n.children && !n.expanded) {\n\t\t\t\t\t\t\t\treturn \"skip\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, false);\n\t\t\t\t\t\t/*jshint +W083 */\n\t\t\t\t\t\tif (res === false) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Visit parent nodes (bottom up)\n\t\t\t\tnode = parent;\n\t\t\t\tparent = parent.parent;\n\t\t\t\tsiblingOfs = 1; //\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/* Call fn(node) for all nodes in vertical order, bottom up.\n\t\t */\n\t\t_visitRowsUp: function (fn, opts) {\n\t\t\tvar children,\n\t\t\t\tidx,\n\t\t\t\tparent,\n\t\t\t\tincludeHidden = !!opts.includeHidden,\n\t\t\t\tnode = opts.start || this.rootNode.children[0];\n\n\t\t\twhile (true) {\n\t\t\t\tparent = node.parent;\n\t\t\t\tchildren = parent.children;\n\n\t\t\t\tif (children[0] === node) {\n\t\t\t\t\t// If this is already the first sibling, goto parent\n\t\t\t\t\tnode = parent;\n\t\t\t\t\tif (!node.parent) {\n\t\t\t\t\t\tbreak; // first node of the tree\n\t\t\t\t\t}\n\t\t\t\t\tchildren = parent.children;\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, goto prev. sibling\n\t\t\t\t\tidx = children.indexOf(node);\n\t\t\t\t\tnode = children[idx - 1];\n\t\t\t\t\t// If the prev. sibling has children, follow down to last descendant\n\t\t\t\t\twhile (\n\t\t\t\t\t\t// See: https://github.com/eslint/eslint/issues/11302\n\t\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\t\t(includeHidden || node.expanded) &&\n\t\t\t\t\t\tnode.children &&\n\t\t\t\t\t\tnode.children.length\n\t\t\t\t\t) {\n\t\t\t\t\t\tchildren = node.children;\n\t\t\t\t\t\tparent = node;\n\t\t\t\t\t\tnode = children[children.length - 1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Skip invisible\n\t\t\t\tif (!includeHidden && !node.isVisible()) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (fn(node) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/** Write warning to browser console if debugLevel >= 2 (prepending tree info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\twarn: function (msg) {\n\t\t\tif (this.options.debugLevel >= 2) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"warn\", arguments);\n\t\t\t}\n\t\t},\n\t};\n\n\t/**\n\t * These additional methods of the {@link Fancytree} class are 'hook functions'\n\t * that can be used and overloaded by extensions.\n\t *\n\t * @see [writing extensions](https://github.com/mar10/fancytree/wiki/TutorialExtensions)\n\t * @mixin Fancytree_Hooks\n\t */\n\t$.extend(\n\t\tFancytree.prototype,\n\t\t/** @lends Fancytree_Hooks# */\n\t\t{\n\t\t\t/** Default handling for mouse click events.\n\t\t\t *\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\tnodeClick: function (ctx) {\n\t\t\t\tvar activate,\n\t\t\t\t\texpand,\n\t\t\t\t\t// event = ctx.originalEvent,\n\t\t\t\t\ttargetType = ctx.targetType,\n\t\t\t\t\tnode = ctx.node;\n\n\t\t\t\t// this.debug(\"ftnode.onClick(\" + event.type + \"): ftnode:\" + this + \", button:\" + event.button + \", which: \" + event.which, ctx);\n\t\t\t\t// TODO: use switch\n\t\t\t\t// TODO: make sure clicks on embedded <input> doesn't steal focus (see table sample)\n\t\t\t\tif (targetType === \"expander\") {\n\t\t\t\t\tif (node.isLoading()) {\n\t\t\t\t\t\t// #495: we probably got a click event while a lazy load is pending.\n\t\t\t\t\t\t// The 'expanded' state is not yet set, so 'toggle' would expand\n\t\t\t\t\t\t// and trigger lazyLoad again.\n\t\t\t\t\t\t// It would be better to allow to collapse/expand the status node\n\t\t\t\t\t\t// while loading (instead of ignoring), but that would require some\n\t\t\t\t\t\t// more work.\n\t\t\t\t\t\tnode.debug(\"Got 2nd click while loading: ignored\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// Clicking the expander icon always expands/collapses\n\t\t\t\t\tthis._callHook(\"nodeToggleExpanded\", ctx);\n\t\t\t\t} else if (targetType === \"checkbox\") {\n\t\t\t\t\t// Clicking the checkbox always (de)selects\n\t\t\t\t\tthis._callHook(\"nodeToggleSelected\", ctx);\n\t\t\t\t\tif (ctx.options.focusOnSelect) {\n\t\t\t\t\t\t// #358\n\t\t\t\t\t\tthis._callHook(\"nodeSetFocus\", ctx, true);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Honor `clickFolderMode` for\n\t\t\t\t\texpand = false;\n\t\t\t\t\tactivate = true;\n\t\t\t\t\tif (node.folder) {\n\t\t\t\t\t\tswitch (ctx.options.clickFolderMode) {\n\t\t\t\t\t\t\tcase 2: // expand only\n\t\t\t\t\t\t\t\texpand = true;\n\t\t\t\t\t\t\t\tactivate = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3: // expand and activate\n\t\t\t\t\t\t\t\tactivate = true;\n\t\t\t\t\t\t\t\texpand = true; //!node.isExpanded();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// else 1 or 4: just activate\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (activate) {\n\t\t\t\t\t\tthis.nodeSetFocus(ctx);\n\t\t\t\t\t\tthis._callHook(\"nodeSetActive\", ctx, true);\n\t\t\t\t\t}\n\t\t\t\t\tif (expand) {\n\t\t\t\t\t\tif (!activate) {\n\t\t\t\t\t\t\t// this._callHook(\"nodeSetFocus\", ctx);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// this._callHook(\"nodeSetExpanded\", ctx, true);\n\t\t\t\t\t\tthis._callHook(\"nodeToggleExpanded\", ctx);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Make sure that clicks stop, otherwise <a href='#'> jumps to the top\n\t\t\t\t// if(event.target.localName === \"a\" && event.target.className === \"fancytree-title\"){\n\t\t\t\t// \tevent.preventDefault();\n\t\t\t\t// }\n\t\t\t\t// TODO: return promise?\n\t\t\t},\n\t\t\t/** Collapse all other  children of same parent.\n\t\t\t *\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {object} callOpts\n\t\t\t */\n\t\t\tnodeCollapseSiblings: function (ctx, callOpts) {\n\t\t\t\t// TODO: return promise?\n\t\t\t\tvar ac,\n\t\t\t\t\ti,\n\t\t\t\t\tl,\n\t\t\t\t\tnode = ctx.node;\n\n\t\t\t\tif (node.parent) {\n\t\t\t\t\tac = node.parent.children;\n\t\t\t\t\tfor (i = 0, l = ac.length; i < l; i++) {\n\t\t\t\t\t\tif (ac[i] !== node && ac[i].expanded) {\n\t\t\t\t\t\t\tthis._callHook(\n\t\t\t\t\t\t\t\t\"nodeSetExpanded\",\n\t\t\t\t\t\t\t\tac[i],\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\tcallOpts\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\t/** Default handling for mouse douleclick events.\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\tnodeDblclick: function (ctx) {\n\t\t\t\t// TODO: return promise?\n\t\t\t\tif (\n\t\t\t\t\tctx.targetType === \"title\" &&\n\t\t\t\t\tctx.options.clickFolderMode === 4\n\t\t\t\t) {\n\t\t\t\t\t// this.nodeSetFocus(ctx);\n\t\t\t\t\t// this._callHook(\"nodeSetActive\", ctx, true);\n\t\t\t\t\tthis._callHook(\"nodeToggleExpanded\", ctx);\n\t\t\t\t}\n\t\t\t\t// TODO: prevent text selection on dblclicks\n\t\t\t\tif (ctx.targetType === \"title\") {\n\t\t\t\t\tctx.originalEvent.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** Default handling for mouse keydown events.\n\t\t\t *\n\t\t\t * NOTE: this may be called with node == null if tree (but no node) has focus.\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\tnodeKeydown: function (ctx) {\n\t\t\t\t// TODO: return promise?\n\t\t\t\tvar matchNode,\n\t\t\t\t\tstamp,\n\t\t\t\t\t_res,\n\t\t\t\t\tfocusNode,\n\t\t\t\t\tevent = ctx.originalEvent,\n\t\t\t\t\tnode = ctx.node,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\topts = ctx.options,\n\t\t\t\t\twhich = event.which,\n\t\t\t\t\t// #909: Use event.key, to get unicode characters.\n\t\t\t\t\t// We can't use `/\\w/.test(key)`, because that would\n\t\t\t\t\t// only detect plain ascii alpha-numerics. But we still need\n\t\t\t\t\t// to ignore modifier-only, whitespace, cursor-keys, etc.\n\t\t\t\t\tkey = event.key || String.fromCharCode(which),\n\t\t\t\t\tspecialModifiers = !!(\n\t\t\t\t\t\tevent.altKey ||\n\t\t\t\t\t\tevent.ctrlKey ||\n\t\t\t\t\t\tevent.metaKey\n\t\t\t\t\t),\n\t\t\t\t\tisAlnum =\n\t\t\t\t\t\t!MODIFIERS[which] &&\n\t\t\t\t\t\t!SPECIAL_KEYCODES[which] &&\n\t\t\t\t\t\t!specialModifiers,\n\t\t\t\t\t$target = $(event.target),\n\t\t\t\t\thandled = true,\n\t\t\t\t\tactivate = !(event.ctrlKey || !opts.autoActivate);\n\n\t\t\t\t// (node || FT).debug(\"ftnode.nodeKeydown(\" + event.type + \"): ftnode:\" + this + \", charCode:\" + event.charCode + \", keyCode: \" + event.keyCode + \", which: \" + event.which);\n\t\t\t\t// FT.debug( \"eventToString(): \" + FT.eventToString(event) + \", key='\" + key + \"', isAlnum: \" + isAlnum );\n\n\t\t\t\t// Set focus to active (or first node) if no other node has the focus yet\n\t\t\t\tif (!node) {\n\t\t\t\t\tfocusNode = this.getActiveNode() || this.getFirstChild();\n\t\t\t\t\tif (focusNode) {\n\t\t\t\t\t\tfocusNode.setFocus();\n\t\t\t\t\t\tnode = ctx.node = this.focusNode;\n\t\t\t\t\t\tnode.debug(\"Keydown force focus on active node\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\topts.quicksearch &&\n\t\t\t\t\tisAlnum &&\n\t\t\t\t\t!$target.is(\":input:enabled\")\n\t\t\t\t) {\n\t\t\t\t\t// Allow to search for longer streaks if typed in quickly\n\t\t\t\t\tstamp = Date.now();\n\t\t\t\t\tif (stamp - tree.lastQuicksearchTime > 500) {\n\t\t\t\t\t\ttree.lastQuicksearchTerm = \"\";\n\t\t\t\t\t}\n\t\t\t\t\ttree.lastQuicksearchTime = stamp;\n\t\t\t\t\ttree.lastQuicksearchTerm += key;\n\t\t\t\t\t// tree.debug(\"quicksearch find\", tree.lastQuicksearchTerm);\n\t\t\t\t\tmatchNode = tree.findNextNode(\n\t\t\t\t\t\ttree.lastQuicksearchTerm,\n\t\t\t\t\t\ttree.getActiveNode()\n\t\t\t\t\t);\n\t\t\t\t\tif (matchNode) {\n\t\t\t\t\t\tmatchNode.setActive();\n\t\t\t\t\t}\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tswitch (FT.eventToString(event)) {\n\t\t\t\t\tcase \"+\":\n\t\t\t\t\tcase \"=\": // 187: '+' @ Chrome, Safari\n\t\t\t\t\t\ttree.nodeSetExpanded(ctx, true);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"-\":\n\t\t\t\t\t\ttree.nodeSetExpanded(ctx, false);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"space\":\n\t\t\t\t\t\tif (node.isPagingNode()) {\n\t\t\t\t\t\t\ttree._triggerNodeEvent(\"clickPaging\", ctx, event);\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tFT.evalOption(\"checkbox\", node, node, opts, false)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// #768\n\t\t\t\t\t\t\ttree.nodeToggleSelected(ctx);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttree.nodeSetActive(ctx, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"return\":\n\t\t\t\t\t\ttree.nodeSetActive(ctx, true);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"home\":\n\t\t\t\t\tcase \"end\":\n\t\t\t\t\tcase \"backspace\":\n\t\t\t\t\tcase \"left\":\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\tcase \"up\":\n\t\t\t\t\tcase \"down\":\n\t\t\t\t\t\t_res = node.navigate(event.which, activate);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\thandled = false;\n\t\t\t\t}\n\t\t\t\tif (handled) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// /** Default handling for mouse keypress events. */\n\t\t\t// nodeKeypress: function(ctx) {\n\t\t\t//     var event = ctx.originalEvent;\n\t\t\t// },\n\n\t\t\t// /** Trigger lazyLoad event (async). */\n\t\t\t// nodeLazyLoad: function(ctx) {\n\t\t\t//     var node = ctx.node;\n\t\t\t//     if(this._triggerNodeEvent())\n\t\t\t// },\n\t\t\t/** Load child nodes (async).\n\t\t\t *\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {object[]|object|string|$.Promise|function} source\n\t\t\t * @returns {$.Promise} The deferred will be resolved as soon as the (ajax)\n\t\t\t *     data was rendered.\n\t\t\t */\n\t\t\tnodeLoadChildren: function (ctx, source) {\n\t\t\t\tvar ajax,\n\t\t\t\t\tdelay,\n\t\t\t\t\tajaxDfd = null,\n\t\t\t\t\tresultDfd,\n\t\t\t\t\tisAsync = true,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\tnode = ctx.node,\n\t\t\t\t\tnodePrevParent = node.parent,\n\t\t\t\t\ttag = \"nodeLoadChildren\",\n\t\t\t\t\trequestId = Date.now();\n\n\t\t\t\t// `source` is a callback: use the returned result instead:\n\t\t\t\tif (_isFunction(source)) {\n\t\t\t\t\tsource = source.call(tree, { type: \"source\" }, ctx);\n\t\t\t\t\t_assert(\n\t\t\t\t\t\t!_isFunction(source),\n\t\t\t\t\t\t\"source callback must not return another function\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// `source` is already a promise:\n\t\t\t\tif (_isFunction(source.then)) {\n\t\t\t\t\t// _assert(_isFunction(source.always), \"Expected jQuery?\");\n\t\t\t\t\tajaxDfd = source;\n\t\t\t\t} else if (source.url) {\n\t\t\t\t\t// `source` is an Ajax options object\n\t\t\t\t\tajax = $.extend({}, ctx.options.ajax, source);\n\t\t\t\t\tif (ajax.debugDelay) {\n\t\t\t\t\t\t// Simulate a slow server\n\t\t\t\t\t\tdelay = ajax.debugDelay;\n\t\t\t\t\t\tdelete ajax.debugDelay; // remove debug option\n\t\t\t\t\t\tif (_isArray(delay)) {\n\t\t\t\t\t\t\t// random delay range [min..max]\n\t\t\t\t\t\t\tdelay =\n\t\t\t\t\t\t\t\tdelay[0] +\n\t\t\t\t\t\t\t\tMath.random() * (delay[1] - delay[0]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.warn(\n\t\t\t\t\t\t\t\"nodeLoadChildren waiting debugDelay \" +\n\t\t\t\t\t\t\t\tMath.round(delay) +\n\t\t\t\t\t\t\t\t\" ms ...\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\tajaxDfd = $.Deferred(function (ajaxDfd) {\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\t$.ajax(ajax)\n\t\t\t\t\t\t\t\t\t.done(function () {\n\t\t\t\t\t\t\t\t\t\tajaxDfd.resolveWith(this, arguments);\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.fail(function () {\n\t\t\t\t\t\t\t\t\t\tajaxDfd.rejectWith(this, arguments);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}, delay);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tajaxDfd = $.ajax(ajax);\n\t\t\t\t\t}\n\t\t\t\t} else if ($.isPlainObject(source) || _isArray(source)) {\n\t\t\t\t\t// `source` is already a constant dict or list, but we convert\n\t\t\t\t\t// to a thenable for unified processing.\n\t\t\t\t\t// 2020-01-03: refactored.\n\t\t\t\t\t// `ajaxDfd = $.when(source)` would do the trick, but the returned\n\t\t\t\t\t// promise will resolve async, which broke some tests and\n\t\t\t\t\t// would probably also break current implementations out there.\n\t\t\t\t\t// So we mock-up a thenable that resolves synchronously:\n\t\t\t\t\tajaxDfd = {\n\t\t\t\t\t\tthen: function (resolve, reject) {\n\t\t\t\t\t\t\tresolve(source, null, null);\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tisAsync = false;\n\t\t\t\t} else {\n\t\t\t\t\t$.error(\"Invalid source type: \" + source);\n\t\t\t\t}\n\n\t\t\t\t// Check for overlapping requests\n\t\t\t\tif (node._requestId) {\n\t\t\t\t\tnode.warn(\n\t\t\t\t\t\t\"Recursive load request #\" +\n\t\t\t\t\t\t\trequestId +\n\t\t\t\t\t\t\t\" while #\" +\n\t\t\t\t\t\t\tnode._requestId +\n\t\t\t\t\t\t\t\" is pending.\"\n\t\t\t\t\t);\n\t\t\t\t\tnode._requestId = requestId;\n\t\t\t\t\t// \tnode.debug(\"Send load request #\" + requestId);\n\t\t\t\t}\n\n\t\t\t\tif (isAsync) {\n\t\t\t\t\ttree.debugTime(tag);\n\t\t\t\t\ttree.nodeSetStatus(ctx, \"loading\");\n\t\t\t\t}\n\n\t\t\t\t// The async Ajax request has now started...\n\t\t\t\t// Defer the deferred:\n\t\t\t\t// we want to be able to reject invalid responses, even if\n\t\t\t\t// the raw HTTP Ajax XHR resolved as Ok.\n\t\t\t\t// We use the ajaxDfd.then() syntax here, which is compatible with\n\t\t\t\t// jQuery and ECMA6.\n\t\t\t\t// However resultDfd is a jQuery deferred, which is currently the\n\t\t\t\t// expected result type of nodeLoadChildren()\n\t\t\t\tresultDfd = new $.Deferred();\n\t\t\t\tajaxDfd.then(\n\t\t\t\t\tfunction (data, textStatus, jqXHR) {\n\t\t\t\t\t\t// ajaxDfd was resolved, but we reject or resolve resultDfd\n\t\t\t\t\t\t// depending on the response data\n\t\t\t\t\t\tvar errorObj, res;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(source.dataType === \"json\" ||\n\t\t\t\t\t\t\t\tsource.dataType === \"jsonp\") &&\n\t\t\t\t\t\t\ttypeof data === \"string\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t$.error(\n\t\t\t\t\t\t\t\t\"Ajax request returned a string (did you get the JSON dataType wrong?).\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (node._requestId && node._requestId > requestId) {\n\t\t\t\t\t\t\t// The expected request time stamp is later than `requestId`\n\t\t\t\t\t\t\t// (which was kept as as closure variable to this handler function)\n\t\t\t\t\t\t\t// node.warn(\"Ignored load response for obsolete request #\" + requestId + \" (expected #\" + node._requestId + \")\");\n\t\t\t\t\t\t\tresultDfd.rejectWith(this, [\n\t\t\t\t\t\t\t\tRECURSIVE_REQUEST_ERROR,\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t// } else {\n\t\t\t\t\t\t\t// \tnode.debug(\"Response returned for load request #\" + requestId);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (node.parent === null && nodePrevParent !== null) {\n\t\t\t\t\t\t\tresultDfd.rejectWith(this, [\n\t\t\t\t\t\t\t\tINVALID_REQUEST_TARGET_ERROR,\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow to adjust the received response data in the `postProcess` event.\n\t\t\t\t\t\tif (ctx.options.postProcess) {\n\t\t\t\t\t\t\t// The handler may either\n\t\t\t\t\t\t\t//   - modify `ctx.response` in-place (and leave `ctx.result` undefined)\n\t\t\t\t\t\t\t//     => res = undefined\n\t\t\t\t\t\t\t//   - return a replacement in `ctx.result`\n\t\t\t\t\t\t\t//     => res = <new data>\n\t\t\t\t\t\t\t//   If res contains an `error` property, an error status is displayed\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tres = tree._triggerNodeEvent(\n\t\t\t\t\t\t\t\t\t\"postProcess\",\n\t\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\t\tctx.originalEvent,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tresponse: data,\n\t\t\t\t\t\t\t\t\t\terror: null,\n\t\t\t\t\t\t\t\t\t\tdataType: source.dataType,\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\tif (res.error) {\n\t\t\t\t\t\t\t\t\ttree.warn(\n\t\t\t\t\t\t\t\t\t\t\"postProcess returned error:\",\n\t\t\t\t\t\t\t\t\t\tres\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} catch (e) {\n\t\t\t\t\t\t\t\tres = {\n\t\t\t\t\t\t\t\t\terror: e,\n\t\t\t\t\t\t\t\t\tmessage: \"\" + e,\n\t\t\t\t\t\t\t\t\tdetails: \"postProcess failed\",\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (res.error) {\n\t\t\t\t\t\t\t\t// Either postProcess failed with an exception, or the returned\n\t\t\t\t\t\t\t\t// result object has an 'error' property attached:\n\t\t\t\t\t\t\t\terrorObj = $.isPlainObject(res.error)\n\t\t\t\t\t\t\t\t\t? res.error\n\t\t\t\t\t\t\t\t\t: { message: res.error };\n\t\t\t\t\t\t\t\terrorObj = tree._makeHookContext(\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\terrorObj\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tresultDfd.rejectWith(this, [errorObj]);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t_isArray(res) ||\n\t\t\t\t\t\t\t\t($.isPlainObject(res) && _isArray(res.children))\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Use `ctx.result` if valid\n\t\t\t\t\t\t\t\t// (otherwise use existing data, which may have been modified in-place)\n\t\t\t\t\t\t\t\tdata = res;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tdata &&\n\t\t\t\t\t\t\t_hasProp(data, \"d\") &&\n\t\t\t\t\t\t\tctx.options.enableAspx\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Process ASPX WebMethod JSON object inside \"d\" property\n\t\t\t\t\t\t\t// (only if no postProcess event was defined)\n\t\t\t\t\t\t\tif (ctx.options.enableAspx === 42) {\n\t\t\t\t\t\t\t\ttree.warn(\n\t\t\t\t\t\t\t\t\t\"The default for enableAspx will change to `false` in the fututure. \" +\n\t\t\t\t\t\t\t\t\t\t\"Pass `enableAspx: true` or implement postProcess to silence this warning.\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata =\n\t\t\t\t\t\t\t\ttypeof data.d === \"string\"\n\t\t\t\t\t\t\t\t\t? $.parseJSON(data.d)\n\t\t\t\t\t\t\t\t\t: data.d;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresultDfd.resolveWith(this, [data]);\n\t\t\t\t\t},\n\t\t\t\t\tfunction (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t// ajaxDfd was rejected, so we reject resultDfd as well\n\t\t\t\t\t\tvar errorObj = tree._makeHookContext(node, null, {\n\t\t\t\t\t\t\terror: jqXHR,\n\t\t\t\t\t\t\targs: Array.prototype.slice.call(arguments),\n\t\t\t\t\t\t\tmessage: errorThrown,\n\t\t\t\t\t\t\tdetails: jqXHR.status + \": \" + errorThrown,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresultDfd.rejectWith(this, [errorObj]);\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// The async Ajax request has now started.\n\t\t\t\t// resultDfd will be resolved/rejected after the response arrived,\n\t\t\t\t// was postProcessed, and checked.\n\t\t\t\t// Now we implement the UI update and add the data to the tree.\n\t\t\t\t// We also return this promise to the caller.\n\t\t\t\tresultDfd\n\t\t\t\t\t.done(function (data) {\n\t\t\t\t\t\ttree.nodeSetStatus(ctx, \"ok\");\n\t\t\t\t\t\tvar children, metaData, noDataRes;\n\n\t\t\t\t\t\tif ($.isPlainObject(data)) {\n\t\t\t\t\t\t\t// We got {foo: 'abc', children: [...]}\n\t\t\t\t\t\t\t// Copy extra properties to tree.data.foo\n\t\t\t\t\t\t\t_assert(\n\t\t\t\t\t\t\t\tnode.isRootNode(),\n\t\t\t\t\t\t\t\t\"source may only be an object for root nodes (expecting an array of child objects otherwise)\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t_assert(\n\t\t\t\t\t\t\t\t_isArray(data.children),\n\t\t\t\t\t\t\t\t\"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tmetaData = data;\n\t\t\t\t\t\t\tchildren = data.children;\n\t\t\t\t\t\t\tdelete metaData.children;\n\t\t\t\t\t\t\t// Copy some attributes to tree.data\n\t\t\t\t\t\t\t$.each(TREE_ATTRS, function (i, attr) {\n\t\t\t\t\t\t\t\tif (metaData[attr] !== undefined) {\n\t\t\t\t\t\t\t\t\ttree[attr] = metaData[attr];\n\t\t\t\t\t\t\t\t\tdelete metaData[attr];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t// Copy all other attributes to tree.data.NAME\n\t\t\t\t\t\t\t$.extend(tree.data, metaData);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchildren = data;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_assert(\n\t\t\t\t\t\t\t_isArray(children),\n\t\t\t\t\t\t\t\"expected array of children\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\tnode._setChildren(children);\n\n\t\t\t\t\t\tif (tree.options.nodata && children.length === 0) {\n\t\t\t\t\t\t\tif (_isFunction(tree.options.nodata)) {\n\t\t\t\t\t\t\t\tnoDataRes = tree.options.nodata.call(\n\t\t\t\t\t\t\t\t\ttree,\n\t\t\t\t\t\t\t\t\t{ type: \"nodata\" },\n\t\t\t\t\t\t\t\t\tctx\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\ttree.options.nodata === true &&\n\t\t\t\t\t\t\t\tnode.isRootNode()\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnoDataRes = tree.options.strings.noData;\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\ttypeof tree.options.nodata === \"string\" &&\n\t\t\t\t\t\t\t\tnode.isRootNode()\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnoDataRes = tree.options.nodata;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (noDataRes) {\n\t\t\t\t\t\t\t\tnode.setStatus(\"nodata\", noDataRes);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// trigger fancytreeloadchildren\n\t\t\t\t\t\ttree._triggerNodeEvent(\"loadChildren\", node);\n\t\t\t\t\t})\n\t\t\t\t\t.fail(function (error) {\n\t\t\t\t\t\tvar ctxErr;\n\n\t\t\t\t\t\tif (error === RECURSIVE_REQUEST_ERROR) {\n\t\t\t\t\t\t\tnode.warn(\n\t\t\t\t\t\t\t\t\"Ignored response for obsolete load request #\" +\n\t\t\t\t\t\t\t\t\trequestId +\n\t\t\t\t\t\t\t\t\t\" (expected #\" +\n\t\t\t\t\t\t\t\t\tnode._requestId +\n\t\t\t\t\t\t\t\t\t\")\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else if (error === INVALID_REQUEST_TARGET_ERROR) {\n\t\t\t\t\t\t\tnode.warn(\n\t\t\t\t\t\t\t\t\"Lazy parent node was removed while loading: discarding response.\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else if (error.node && error.error && error.message) {\n\t\t\t\t\t\t\t// error is already a context object\n\t\t\t\t\t\t\tctxErr = error;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tctxErr = tree._makeHookContext(node, null, {\n\t\t\t\t\t\t\t\terror: error, // it can be jqXHR or any custom error\n\t\t\t\t\t\t\t\targs: Array.prototype.slice.call(arguments),\n\t\t\t\t\t\t\t\tmessage: error\n\t\t\t\t\t\t\t\t\t? error.message || error.toString()\n\t\t\t\t\t\t\t\t\t: \"\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (ctxErr.message === \"[object Object]\") {\n\t\t\t\t\t\t\t\tctxErr.message = \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.warn(\n\t\t\t\t\t\t\t\"Load children failed (\" + ctxErr.message + \")\",\n\t\t\t\t\t\t\tctxErr\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttree._triggerNodeEvent(\n\t\t\t\t\t\t\t\t\"loadError\",\n\t\t\t\t\t\t\t\tctxErr,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t) !== false\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttree.nodeSetStatus(\n\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\t\"error\",\n\t\t\t\t\t\t\t\tctxErr.message,\n\t\t\t\t\t\t\t\tctxErr.details\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\t.always(function () {\n\t\t\t\t\t\tnode._requestId = null;\n\t\t\t\t\t\tif (isAsync) {\n\t\t\t\t\t\t\ttree.debugTimeEnd(tag);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\treturn resultDfd.promise();\n\t\t\t},\n\t\t\t/** [Not Implemented]  */\n\t\t\tnodeLoadKeyPath: function (ctx, keyPathList) {\n\t\t\t\t// TODO: implement and improve\n\t\t\t\t// http://code.google.com/p/dynatree/issues/detail?id=222\n\t\t\t},\n\t\t\t/**\n\t\t\t * Remove a single direct child of ctx.node.\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {FancytreeNode} childNode dircect child of ctx.node\n\t\t\t */\n\t\t\tnodeRemoveChild: function (ctx, childNode) {\n\t\t\t\tvar idx,\n\t\t\t\t\tnode = ctx.node,\n\t\t\t\t\t// opts = ctx.options,\n\t\t\t\t\tsubCtx = $.extend({}, ctx, { node: childNode }),\n\t\t\t\t\tchildren = node.children;\n\n\t\t\t\t// FT.debug(\"nodeRemoveChild()\", node.toString(), childNode.toString());\n\n\t\t\t\tif (children.length === 1) {\n\t\t\t\t\t_assert(childNode === children[0], \"invalid single child\");\n\t\t\t\t\treturn this.nodeRemoveChildren(ctx);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.activeNode &&\n\t\t\t\t\t(childNode === this.activeNode ||\n\t\t\t\t\t\tthis.activeNode.isDescendantOf(childNode))\n\t\t\t\t) {\n\t\t\t\t\tthis.activeNode.setActive(false); // TODO: don't fire events\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.focusNode &&\n\t\t\t\t\t(childNode === this.focusNode ||\n\t\t\t\t\t\tthis.focusNode.isDescendantOf(childNode))\n\t\t\t\t) {\n\t\t\t\t\tthis.focusNode = null;\n\t\t\t\t}\n\t\t\t\t// TODO: persist must take care to clear select and expand cookies\n\t\t\t\tthis.nodeRemoveMarkup(subCtx);\n\t\t\t\tthis.nodeRemoveChildren(subCtx);\n\t\t\t\tidx = $.inArray(childNode, children);\n\t\t\t\t_assert(idx >= 0, \"invalid child\");\n\t\t\t\t// Notify listeners\n\t\t\t\tnode.triggerModifyChild(\"remove\", childNode);\n\t\t\t\t// Unlink to support GC\n\t\t\t\tchildNode.visit(function (n) {\n\t\t\t\t\tn.parent = null;\n\t\t\t\t}, true);\n\t\t\t\tthis._callHook(\"treeRegisterNode\", this, false, childNode);\n\t\t\t\t// remove from child list\n\t\t\t\tchildren.splice(idx, 1);\n\t\t\t},\n\t\t\t/**Remove HTML markup for all descendents of ctx.node.\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\tnodeRemoveChildMarkup: function (ctx) {\n\t\t\t\tvar node = ctx.node;\n\n\t\t\t\t// FT.debug(\"nodeRemoveChildMarkup()\", node.toString());\n\t\t\t\t// TODO: Unlink attr.ftnode to support GC\n\t\t\t\tif (node.ul) {\n\t\t\t\t\tif (node.isRootNode()) {\n\t\t\t\t\t\t$(node.ul).empty();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(node.ul).remove();\n\t\t\t\t\t\tnode.ul = null;\n\t\t\t\t\t}\n\t\t\t\t\tnode.visit(function (n) {\n\t\t\t\t\t\tn.li = n.ul = null;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t/**Remove all descendants of ctx.node.\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\tnodeRemoveChildren: function (ctx) {\n\t\t\t\tvar //subCtx,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\tnode = ctx.node,\n\t\t\t\t\tchildren = node.children;\n\t\t\t\t// opts = ctx.options;\n\n\t\t\t\t// FT.debug(\"nodeRemoveChildren()\", node.toString());\n\t\t\t\tif (!children) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.activeNode && this.activeNode.isDescendantOf(node)) {\n\t\t\t\t\tthis.activeNode.setActive(false); // TODO: don't fire events\n\t\t\t\t}\n\t\t\t\tif (this.focusNode && this.focusNode.isDescendantOf(node)) {\n\t\t\t\t\tthis.focusNode = null;\n\t\t\t\t}\n\t\t\t\t// TODO: persist must take care to clear select and expand cookies\n\t\t\t\tthis.nodeRemoveChildMarkup(ctx);\n\t\t\t\t// Unlink children to support GC\n\t\t\t\t// TODO: also delete this.children (not possible using visit())\n\t\t\t\t// subCtx = $.extend({}, ctx);\n\t\t\t\tnode.triggerModifyChild(\"remove\", null);\n\t\t\t\tnode.visit(function (n) {\n\t\t\t\t\tn.parent = null;\n\t\t\t\t\ttree._callHook(\"treeRegisterNode\", tree, false, n);\n\t\t\t\t});\n\t\t\t\tif (node.lazy) {\n\t\t\t\t\t// 'undefined' would be interpreted as 'not yet loaded' for lazy nodes\n\t\t\t\t\tnode.children = [];\n\t\t\t\t} else {\n\t\t\t\t\tnode.children = null;\n\t\t\t\t}\n\t\t\t\tif (!node.isRootNode()) {\n\t\t\t\t\tnode.expanded = false; // #449, #459\n\t\t\t\t}\n\t\t\t\tthis.nodeRenderStatus(ctx);\n\t\t\t},\n\t\t\t/**Remove HTML markup for ctx.node and all its descendents.\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\tnodeRemoveMarkup: function (ctx) {\n\t\t\t\tvar node = ctx.node;\n\t\t\t\t// FT.debug(\"nodeRemoveMarkup()\", node.toString());\n\t\t\t\t// TODO: Unlink attr.ftnode to support GC\n\t\t\t\tif (node.li) {\n\t\t\t\t\t$(node.li).remove();\n\t\t\t\t\tnode.li = null;\n\t\t\t\t}\n\t\t\t\tthis.nodeRemoveChildMarkup(ctx);\n\t\t\t},\n\t\t\t/**\n\t\t\t * Create `<li><span>..</span> .. </li>` tags for this node.\n\t\t\t *\n\t\t\t * This method takes care that all HTML markup is created that is required\n\t\t\t * to display this node in its current state.\n\t\t\t *\n\t\t\t * Call this method to create new nodes, or after the strucuture\n\t\t\t * was changed (e.g. after moving this node or adding/removing children)\n\t\t\t * nodeRenderTitle() and nodeRenderStatus() are implied.\n\t\t\t *\n\t\t\t * ```html\n\t\t\t * <li id='KEY' ftnode=NODE>\n\t\t\t *     <span class='fancytree-node fancytree-expanded fancytree-has-children fancytree-lastsib fancytree-exp-el fancytree-ico-e'>\n\t\t\t *         <span class=\"fancytree-expander\"></span>\n\t\t\t *         <span class=\"fancytree-checkbox\"></span> // only present in checkbox mode\n\t\t\t *         <span class=\"fancytree-icon\"></span>\n\t\t\t *         <a href=\"#\" class=\"fancytree-title\"> Node 1 </a>\n\t\t\t *     </span>\n\t\t\t *     <ul> // only present if node has children\n\t\t\t *         <li id='KEY' ftnode=NODE> child1 ... </li>\n\t\t\t *         <li id='KEY' ftnode=NODE> child2 ... </li>\n\t\t\t *     </ul>\n\t\t\t * </li>\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {boolean} [force=false] re-render, even if html markup was already created\n\t\t\t * @param {boolean} [deep=false] also render all descendants, even if parent is collapsed\n\t\t\t * @param {boolean} [collapsed=false] force root node to be collapsed, so we can apply animated expand later\n\t\t\t */\n\t\t\tnodeRender: function (ctx, force, deep, collapsed, _recursive) {\n\t\t\t\t/* This method must take care of all cases where the current data mode\n\t\t\t\t * (i.e. node hierarchy) does not match the current markup.\n\t\t\t\t *\n\t\t\t\t * - node was not yet rendered:\n\t\t\t\t *   create markup\n\t\t\t\t * - node was rendered: exit fast\n\t\t\t\t * - children have been added\n\t\t\t\t * - children have been removed\n\t\t\t\t */\n\t\t\t\tvar childLI,\n\t\t\t\t\tchildNode1,\n\t\t\t\t\tchildNode2,\n\t\t\t\t\ti,\n\t\t\t\t\tl,\n\t\t\t\t\tnext,\n\t\t\t\t\tsubCtx,\n\t\t\t\t\tnode = ctx.node,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\topts = ctx.options,\n\t\t\t\t\taria = opts.aria,\n\t\t\t\t\tfirstTime = false,\n\t\t\t\t\tparent = node.parent,\n\t\t\t\t\tisRootNode = !parent,\n\t\t\t\t\tchildren = node.children,\n\t\t\t\t\tsuccessorLi = null;\n\t\t\t\t// FT.debug(\"nodeRender(\" + !!force + \", \" + !!deep + \")\", node.toString());\n\n\t\t\t\tif (tree._enableUpdate === false) {\n\t\t\t\t\t// tree.debug(\"no render\", tree._enableUpdate);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!isRootNode && !parent.ul) {\n\t\t\t\t\t// Calling node.collapse on a deep, unrendered node\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t_assert(isRootNode || parent.ul, \"parent UL must exist\");\n\n\t\t\t\t// Render the node\n\t\t\t\tif (!isRootNode) {\n\t\t\t\t\t// Discard markup on force-mode, or if it is not linked to parent <ul>\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.li &&\n\t\t\t\t\t\t(force || node.li.parentNode !== node.parent.ul)\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (node.li.parentNode === node.parent.ul) {\n\t\t\t\t\t\t\t// #486: store following node, so we can insert the new markup there later\n\t\t\t\t\t\t\tsuccessorLi = node.li.nextSibling;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// May happen, when a top-level node was dropped over another\n\t\t\t\t\t\t\tthis.debug(\n\t\t\t\t\t\t\t\t\"Unlinking \" +\n\t\t\t\t\t\t\t\t\tnode +\n\t\t\t\t\t\t\t\t\t\" (must be child of \" +\n\t\t\t\t\t\t\t\t\tnode.parent +\n\t\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\t//\t            this.debug(\"nodeRemoveMarkup...\");\n\t\t\t\t\t\tthis.nodeRemoveMarkup(ctx);\n\t\t\t\t\t}\n\t\t\t\t\t// Create <li><span /> </li>\n\t\t\t\t\t// node.debug(\"render...\");\n\t\t\t\t\tif (node.li) {\n\t\t\t\t\t\t// this.nodeRenderTitle(ctx);\n\t\t\t\t\t\tthis.nodeRenderStatus(ctx);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// node.debug(\"render... really\");\n\t\t\t\t\t\tfirstTime = true;\n\t\t\t\t\t\tnode.li = document.createElement(\"li\");\n\t\t\t\t\t\tnode.li.ftnode = node;\n\n\t\t\t\t\t\tif (node.key && opts.generateIds) {\n\t\t\t\t\t\t\tnode.li.id = opts.idPrefix + node.key;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.span = document.createElement(\"span\");\n\t\t\t\t\t\tnode.span.className = \"fancytree-node\";\n\t\t\t\t\t\tif (aria && !node.tr) {\n\t\t\t\t\t\t\t$(node.li).attr(\"role\", \"treeitem\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.li.appendChild(node.span);\n\n\t\t\t\t\t\t// Create inner HTML for the <span> (expander, checkbox, icon, and title)\n\t\t\t\t\t\tthis.nodeRenderTitle(ctx);\n\n\t\t\t\t\t\t// Allow tweaking and binding, after node was created for the first time\n\t\t\t\t\t\tif (opts.createNode) {\n\t\t\t\t\t\t\topts.createNode.call(\n\t\t\t\t\t\t\t\ttree,\n\t\t\t\t\t\t\t\t{ type: \"createNode\" },\n\t\t\t\t\t\t\t\tctx\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\t// Allow tweaking after node state was rendered\n\t\t\t\t\tif (opts.renderNode) {\n\t\t\t\t\t\topts.renderNode.call(tree, { type: \"renderNode\" }, ctx);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Visit child nodes\n\t\t\t\tif (children) {\n\t\t\t\t\tif (isRootNode || node.expanded || deep === true) {\n\t\t\t\t\t\t// Create a UL to hold the children\n\t\t\t\t\t\tif (!node.ul) {\n\t\t\t\t\t\t\tnode.ul = document.createElement(\"ul\");\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(collapsed === true && !_recursive) ||\n\t\t\t\t\t\t\t\t!node.expanded\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// hide top UL, so we can use an animation to show it later\n\t\t\t\t\t\t\t\tnode.ul.style.display = \"none\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (aria) {\n\t\t\t\t\t\t\t\t$(node.ul).attr(\"role\", \"group\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (node.li) {\n\t\t\t\t\t\t\t\t// issue #67\n\t\t\t\t\t\t\t\tnode.li.appendChild(node.ul);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnode.tree.$div.append(node.ul);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add child markup\n\t\t\t\t\t\tfor (i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\t\t\tsubCtx = $.extend({}, ctx, { node: children[i] });\n\t\t\t\t\t\t\tthis.nodeRender(subCtx, force, deep, false, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Remove <li> if nodes have moved to another parent\n\t\t\t\t\t\tchildLI = node.ul.firstChild;\n\t\t\t\t\t\twhile (childLI) {\n\t\t\t\t\t\t\tchildNode2 = childLI.ftnode;\n\t\t\t\t\t\t\tif (childNode2 && childNode2.parent !== node) {\n\t\t\t\t\t\t\t\tnode.debug(\n\t\t\t\t\t\t\t\t\t\"_fixParent: remove missing \" + childNode2,\n\t\t\t\t\t\t\t\t\tchildLI\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tnext = childLI.nextSibling;\n\t\t\t\t\t\t\t\tchildLI.parentNode.removeChild(childLI);\n\t\t\t\t\t\t\t\tchildLI = next;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tchildLI = childLI.nextSibling;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Make sure, that <li> order matches node.children order.\n\t\t\t\t\t\tchildLI = node.ul.firstChild;\n\t\t\t\t\t\tfor (i = 0, l = children.length - 1; i < l; i++) {\n\t\t\t\t\t\t\tchildNode1 = children[i];\n\t\t\t\t\t\t\tchildNode2 = childLI.ftnode;\n\t\t\t\t\t\t\tif (childNode1 === childNode2) {\n\t\t\t\t\t\t\t\tchildLI = childLI.nextSibling;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// node.debug(\"_fixOrder: mismatch at index \" + i + \": \" + childNode1 + \" != \" + childNode2);\n\t\t\t\t\t\t\t\tnode.ul.insertBefore(\n\t\t\t\t\t\t\t\t\tchildNode1.li,\n\t\t\t\t\t\t\t\t\tchildNode2.li\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} else {\n\t\t\t\t\t// No children: remove markup if any\n\t\t\t\t\tif (node.ul) {\n\t\t\t\t\t\t// alert(\"remove child markup for \" + node);\n\t\t\t\t\t\tthis.warn(\"remove child markup for \" + node);\n\t\t\t\t\t\tthis.nodeRemoveChildMarkup(ctx);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isRootNode) {\n\t\t\t\t\t// Update element classes according to node state\n\t\t\t\t\t// this.nodeRenderStatus(ctx);\n\t\t\t\t\t// Finally add the whole structure to the DOM, so the browser can render\n\t\t\t\t\tif (firstTime) {\n\t\t\t\t\t\t// #486: successorLi is set, if we re-rendered (i.e. discarded)\n\t\t\t\t\t\t// existing markup, which  we want to insert at the same position.\n\t\t\t\t\t\t// (null is equivalent to append)\n\t\t\t\t\t\t// \t\tparent.ul.appendChild(node.li);\n\t\t\t\t\t\tparent.ul.insertBefore(node.li, successorLi);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** Create HTML inside the node's outer `<span>` (i.e. expander, checkbox,\n\t\t\t * icon, and title).\n\t\t\t *\n\t\t\t * nodeRenderStatus() is implied.\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {string} [title] optinal new title\n\t\t\t */\n\t\t\tnodeRenderTitle: function (ctx, title) {\n\t\t\t\t// set node connector images, links and text\n\t\t\t\tvar checkbox,\n\t\t\t\t\tclassName,\n\t\t\t\t\ticon,\n\t\t\t\t\tnodeTitle,\n\t\t\t\t\trole,\n\t\t\t\t\ttabindex,\n\t\t\t\t\ttooltip,\n\t\t\t\t\ticonTooltip,\n\t\t\t\t\tnode = ctx.node,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\topts = ctx.options,\n\t\t\t\t\taria = opts.aria,\n\t\t\t\t\tlevel = node.getLevel(),\n\t\t\t\t\tares = [];\n\n\t\t\t\tif (title !== undefined) {\n\t\t\t\t\tnode.title = title;\n\t\t\t\t}\n\t\t\t\tif (!node.span || tree._enableUpdate === false) {\n\t\t\t\t\t// Silently bail out if node was not rendered yet, assuming\n\t\t\t\t\t// node.render() will be called as the node becomes visible\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Connector (expanded, expandable or simple)\n\t\t\t\trole =\n\t\t\t\t\taria && node.hasChildren() !== false\n\t\t\t\t\t\t? \" role='button'\"\n\t\t\t\t\t\t: \"\";\n\t\t\t\tif (level < opts.minExpandLevel) {\n\t\t\t\t\tif (!node.lazy) {\n\t\t\t\t\t\tnode.expanded = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (level > 1) {\n\t\t\t\t\t\tares.push(\n\t\t\t\t\t\t\t\"<span \" +\n\t\t\t\t\t\t\t\trole +\n\t\t\t\t\t\t\t\t\" class='fancytree-expander fancytree-expander-fixed'></span>\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// .. else (i.e. for root level) skip expander/connector alltogether\n\t\t\t\t} else {\n\t\t\t\t\tares.push(\n\t\t\t\t\t\t\"<span \" + role + \" class='fancytree-expander'></span>\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// Checkbox mode\n\t\t\t\tcheckbox = FT.evalOption(\"checkbox\", node, node, opts, false);\n\n\t\t\t\tif (checkbox && !node.isStatusNode()) {\n\t\t\t\t\trole = aria ? \" role='checkbox'\" : \"\";\n\t\t\t\t\tclassName = \"fancytree-checkbox\";\n\t\t\t\t\tif (\n\t\t\t\t\t\tcheckbox === \"radio\" ||\n\t\t\t\t\t\t(node.parent && node.parent.radiogroup)\n\t\t\t\t\t) {\n\t\t\t\t\t\tclassName += \" fancytree-radio\";\n\t\t\t\t\t}\n\t\t\t\t\tares.push(\n\t\t\t\t\t\t\"<span \" + role + \" class='\" + className + \"'></span>\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// Folder or doctype icon\n\t\t\t\tif (node.data.iconClass !== undefined) {\n\t\t\t\t\t// 2015-11-16\n\t\t\t\t\t// Handle / warn about backward compatibility\n\t\t\t\t\tif (node.icon) {\n\t\t\t\t\t\t$.error(\n\t\t\t\t\t\t\t\"'iconClass' node option is deprecated since v2.14.0: use 'icon' only instead\"\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode.warn(\n\t\t\t\t\t\t\t\"'iconClass' node option is deprecated since v2.14.0: use 'icon' instead\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\tnode.icon = node.data.iconClass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If opts.icon is a callback and returns something other than undefined, use that\n\t\t\t\t// else if node.icon is a boolean or string, use that\n\t\t\t\t// else if opts.icon is a boolean or string, use that\n\t\t\t\t// else show standard icon (which may be different for folders or documents)\n\t\t\t\ticon = FT.evalOption(\"icon\", node, node, opts, true);\n\t\t\t\t// if( typeof icon !== \"boolean\" ) {\n\t\t\t\t// \t// icon is defined, but not true/false: must be a string\n\t\t\t\t// \ticon = \"\" + icon;\n\t\t\t\t// }\n\t\t\t\tif (icon !== false) {\n\t\t\t\t\trole = aria ? \" role='presentation'\" : \"\";\n\n\t\t\t\t\ticonTooltip = FT.evalOption(\n\t\t\t\t\t\t\"iconTooltip\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\topts,\n\t\t\t\t\t\tnull\n\t\t\t\t\t);\n\t\t\t\t\ticonTooltip = iconTooltip\n\t\t\t\t\t\t? \" title='\" + _escapeTooltip(iconTooltip) + \"'\"\n\t\t\t\t\t\t: \"\";\n\n\t\t\t\t\tif (typeof icon === \"string\") {\n\t\t\t\t\t\tif (TEST_IMG.test(icon)) {\n\t\t\t\t\t\t\t// node.icon is an image url. Prepend imagePath\n\t\t\t\t\t\t\ticon =\n\t\t\t\t\t\t\t\ticon.charAt(0) === \"/\"\n\t\t\t\t\t\t\t\t\t? icon\n\t\t\t\t\t\t\t\t\t: (opts.imagePath || \"\") + icon;\n\t\t\t\t\t\t\tares.push(\n\t\t\t\t\t\t\t\t\"<img src='\" +\n\t\t\t\t\t\t\t\t\ticon +\n\t\t\t\t\t\t\t\t\t\"' class='fancytree-icon'\" +\n\t\t\t\t\t\t\t\t\ticonTooltip +\n\t\t\t\t\t\t\t\t\t\" alt='' />\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tares.push(\n\t\t\t\t\t\t\t\t\"<span \" +\n\t\t\t\t\t\t\t\t\trole +\n\t\t\t\t\t\t\t\t\t\" class='fancytree-custom-icon \" +\n\t\t\t\t\t\t\t\t\ticon +\n\t\t\t\t\t\t\t\t\t\"'\" +\n\t\t\t\t\t\t\t\t\ticonTooltip +\n\t\t\t\t\t\t\t\t\t\"></span>\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (icon.text) {\n\t\t\t\t\t\tares.push(\n\t\t\t\t\t\t\t\"<span \" +\n\t\t\t\t\t\t\t\trole +\n\t\t\t\t\t\t\t\t\" class='fancytree-custom-icon \" +\n\t\t\t\t\t\t\t\t(icon.addClass || \"\") +\n\t\t\t\t\t\t\t\t\"'\" +\n\t\t\t\t\t\t\t\ticonTooltip +\n\t\t\t\t\t\t\t\t\">\" +\n\t\t\t\t\t\t\t\tFT.escapeHtml(icon.text) +\n\t\t\t\t\t\t\t\t\"</span>\"\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (icon.html) {\n\t\t\t\t\t\tares.push(\n\t\t\t\t\t\t\t\"<span \" +\n\t\t\t\t\t\t\t\trole +\n\t\t\t\t\t\t\t\t\" class='fancytree-custom-icon \" +\n\t\t\t\t\t\t\t\t(icon.addClass || \"\") +\n\t\t\t\t\t\t\t\t\"'\" +\n\t\t\t\t\t\t\t\ticonTooltip +\n\t\t\t\t\t\t\t\t\">\" +\n\t\t\t\t\t\t\t\ticon.html +\n\t\t\t\t\t\t\t\t\"</span>\"\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// standard icon: theme css will take care of this\n\t\t\t\t\t\tares.push(\n\t\t\t\t\t\t\t\"<span \" +\n\t\t\t\t\t\t\t\trole +\n\t\t\t\t\t\t\t\t\" class='fancytree-icon'\" +\n\t\t\t\t\t\t\t\ticonTooltip +\n\t\t\t\t\t\t\t\t\"></span>\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Node title\n\t\t\t\tnodeTitle = \"\";\n\t\t\t\tif (opts.renderTitle) {\n\t\t\t\t\tnodeTitle =\n\t\t\t\t\t\topts.renderTitle.call(\n\t\t\t\t\t\t\ttree,\n\t\t\t\t\t\t\t{ type: \"renderTitle\" },\n\t\t\t\t\t\t\tctx\n\t\t\t\t\t\t) || \"\";\n\t\t\t\t}\n\t\t\t\tif (!nodeTitle) {\n\t\t\t\t\ttooltip = FT.evalOption(\"tooltip\", node, node, opts, null);\n\t\t\t\t\tif (tooltip === true) {\n\t\t\t\t\t\ttooltip = node.title;\n\t\t\t\t\t}\n\t\t\t\t\t// if( node.tooltip ) {\n\t\t\t\t\t// \ttooltip = node.tooltip;\n\t\t\t\t\t// } else if ( opts.tooltip ) {\n\t\t\t\t\t// \ttooltip = opts.tooltip === true ? node.title : opts.tooltip.call(tree, node);\n\t\t\t\t\t// }\n\t\t\t\t\ttooltip = tooltip\n\t\t\t\t\t\t? \" title='\" + _escapeTooltip(tooltip) + \"'\"\n\t\t\t\t\t\t: \"\";\n\t\t\t\t\ttabindex = opts.titlesTabbable ? \" tabindex='0'\" : \"\";\n\n\t\t\t\t\tnodeTitle =\n\t\t\t\t\t\t\"<span class='fancytree-title'\" +\n\t\t\t\t\t\ttooltip +\n\t\t\t\t\t\ttabindex +\n\t\t\t\t\t\t\">\" +\n\t\t\t\t\t\t(opts.escapeTitles\n\t\t\t\t\t\t\t? FT.escapeHtml(node.title)\n\t\t\t\t\t\t\t: node.title) +\n\t\t\t\t\t\t\"</span>\";\n\t\t\t\t}\n\t\t\t\tares.push(nodeTitle);\n\t\t\t\t// Note: this will trigger focusout, if node had the focus\n\t\t\t\t//$(node.span).html(ares.join(\"\")); // it will cleanup the jQuery data currently associated with SPAN (if any), but it executes more slowly\n\t\t\t\tnode.span.innerHTML = ares.join(\"\");\n\t\t\t\t// Update CSS classes\n\t\t\t\tthis.nodeRenderStatus(ctx);\n\t\t\t\tif (opts.enhanceTitle) {\n\t\t\t\t\tctx.$title = $(\">span.fancytree-title\", node.span);\n\t\t\t\t\tnodeTitle =\n\t\t\t\t\t\topts.enhanceTitle.call(\n\t\t\t\t\t\t\ttree,\n\t\t\t\t\t\t\t{ type: \"enhanceTitle\" },\n\t\t\t\t\t\t\tctx\n\t\t\t\t\t\t) || \"\";\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** Update element classes according to node state.\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\tnodeRenderStatus: function (ctx) {\n\t\t\t\t// Set classes for current status\n\t\t\t\tvar $ariaElem,\n\t\t\t\t\tnode = ctx.node,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\topts = ctx.options,\n\t\t\t\t\t// \tnodeContainer = node[tree.nodeContainerAttrName],\n\t\t\t\t\thasChildren = node.hasChildren(),\n\t\t\t\t\tisLastSib = node.isLastSibling(),\n\t\t\t\t\taria = opts.aria,\n\t\t\t\t\tcn = opts._classNames,\n\t\t\t\t\tcnList = [],\n\t\t\t\t\tstatusElem = node[tree.statusClassPropName];\n\n\t\t\t\tif (!statusElem || tree._enableUpdate === false) {\n\t\t\t\t\t// if this function is called for an unrendered node, ignore it (will be updated on nect render anyway)\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (aria) {\n\t\t\t\t\t$ariaElem = $(node.tr || node.li);\n\t\t\t\t}\n\t\t\t\t// Build a list of class names that we will add to the node <span>\n\t\t\t\tcnList.push(cn.node);\n\t\t\t\tif (tree.activeNode === node) {\n\t\t\t\t\tcnList.push(cn.active);\n\t\t\t\t\t// \t\t$(\">span.fancytree-title\", statusElem).attr(\"tabindex\", \"0\");\n\t\t\t\t\t// \t\ttree.$container.removeAttr(\"tabindex\");\n\t\t\t\t\t// }else{\n\t\t\t\t\t// \t\t$(\">span.fancytree-title\", statusElem).removeAttr(\"tabindex\");\n\t\t\t\t\t// \t\ttree.$container.attr(\"tabindex\", \"0\");\n\t\t\t\t}\n\t\t\t\tif (tree.focusNode === node) {\n\t\t\t\t\tcnList.push(cn.focused);\n\t\t\t\t}\n\t\t\t\tif (node.expanded) {\n\t\t\t\t\tcnList.push(cn.expanded);\n\t\t\t\t}\n\t\t\t\tif (aria) {\n\t\t\t\t\tif (hasChildren === false) {\n\t\t\t\t\t\t$ariaElem.removeAttr(\"aria-expanded\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$ariaElem.attr(\"aria-expanded\", Boolean(node.expanded));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (node.folder) {\n\t\t\t\t\tcnList.push(cn.folder);\n\t\t\t\t}\n\t\t\t\tif (hasChildren !== false) {\n\t\t\t\t\tcnList.push(cn.hasChildren);\n\t\t\t\t}\n\t\t\t\t// TODO: required?\n\t\t\t\tif (isLastSib) {\n\t\t\t\t\tcnList.push(cn.lastsib);\n\t\t\t\t}\n\t\t\t\tif (node.lazy && node.children == null) {\n\t\t\t\t\tcnList.push(cn.lazy);\n\t\t\t\t}\n\t\t\t\tif (node.partload) {\n\t\t\t\t\tcnList.push(cn.partload);\n\t\t\t\t}\n\t\t\t\tif (node.partsel) {\n\t\t\t\t\tcnList.push(cn.partsel);\n\t\t\t\t}\n\t\t\t\tif (FT.evalOption(\"unselectable\", node, node, opts, false)) {\n\t\t\t\t\tcnList.push(cn.unselectable);\n\t\t\t\t}\n\t\t\t\tif (node._isLoading) {\n\t\t\t\t\tcnList.push(cn.loading);\n\t\t\t\t}\n\t\t\t\tif (node._error) {\n\t\t\t\t\tcnList.push(cn.error);\n\t\t\t\t}\n\t\t\t\tif (node.statusNodeType) {\n\t\t\t\t\tcnList.push(cn.statusNodePrefix + node.statusNodeType);\n\t\t\t\t}\n\t\t\t\tif (node.selected) {\n\t\t\t\t\tcnList.push(cn.selected);\n\t\t\t\t\tif (aria) {\n\t\t\t\t\t\t$ariaElem.attr(\"aria-selected\", true);\n\t\t\t\t\t}\n\t\t\t\t} else if (aria) {\n\t\t\t\t\t$ariaElem.attr(\"aria-selected\", false);\n\t\t\t\t}\n\t\t\t\tif (node.extraClasses) {\n\t\t\t\t\tcnList.push(node.extraClasses);\n\t\t\t\t}\n\t\t\t\t// IE6 doesn't correctly evaluate multiple class names,\n\t\t\t\t// so we create combined class names that can be used in the CSS\n\t\t\t\tif (hasChildren === false) {\n\t\t\t\t\tcnList.push(\n\t\t\t\t\t\tcn.combinedExpanderPrefix + \"n\" + (isLastSib ? \"l\" : \"\")\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tcnList.push(\n\t\t\t\t\t\tcn.combinedExpanderPrefix +\n\t\t\t\t\t\t\t(node.expanded ? \"e\" : \"c\") +\n\t\t\t\t\t\t\t(node.lazy && node.children == null ? \"d\" : \"\") +\n\t\t\t\t\t\t\t(isLastSib ? \"l\" : \"\")\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcnList.push(\n\t\t\t\t\tcn.combinedIconPrefix +\n\t\t\t\t\t\t(node.expanded ? \"e\" : \"c\") +\n\t\t\t\t\t\t(node.folder ? \"f\" : \"\")\n\t\t\t\t);\n\t\t\t\t// node.span.className = cnList.join(\" \");\n\t\t\t\tstatusElem.className = cnList.join(\" \");\n\n\t\t\t\t// TODO: we should not set this in the <span> tag also, if we set it here:\n\t\t\t\t// Maybe most (all) of the classes should be set in LI instead of SPAN?\n\t\t\t\tif (node.li) {\n\t\t\t\t\t// #719: we have to consider that there may be already other classes:\n\t\t\t\t\t$(node.li).toggleClass(cn.lastsib, isLastSib);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** Activate node.\n\t\t\t * flag defaults to true.\n\t\t\t * If flag is true, the node is activated (must be a synchronous operation)\n\t\t\t * If flag is false, the node is deactivated (must be a synchronous operation)\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {boolean} [flag=true]\n\t\t\t * @param {object} [opts] additional options. Defaults to {noEvents: false, noFocus: false}\n\t\t\t * @returns {$.Promise}\n\t\t\t */\n\t\t\tnodeSetActive: function (ctx, flag, callOpts) {\n\t\t\t\t// Handle user click / [space] / [enter], according to clickFolderMode.\n\t\t\t\tcallOpts = callOpts || {};\n\t\t\t\tvar subCtx,\n\t\t\t\t\tnode = ctx.node,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\topts = ctx.options,\n\t\t\t\t\tnoEvents = callOpts.noEvents === true,\n\t\t\t\t\tnoFocus = callOpts.noFocus === true,\n\t\t\t\t\tscroll = callOpts.scrollIntoView !== false,\n\t\t\t\t\tisActive = node === tree.activeNode;\n\n\t\t\t\t// flag defaults to true\n\t\t\t\tflag = flag !== false;\n\t\t\t\t// node.debug(\"nodeSetActive\", flag);\n\n\t\t\t\tif (isActive === flag) {\n\t\t\t\t\t// Nothing to do\n\t\t\t\t\treturn _getResolvedPromise(node);\n\t\t\t\t}\n\t\t\t\t// #1042: don't scroll between mousedown/-up when clicking an embedded link\n\t\t\t\tif (\n\t\t\t\t\tscroll &&\n\t\t\t\t\tctx.originalEvent &&\n\t\t\t\t\t$(ctx.originalEvent.target).is(\"a,:checkbox\")\n\t\t\t\t) {\n\t\t\t\t\tnode.info(\"Not scrolling while clicking an embedded link.\");\n\t\t\t\t\tscroll = false;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tflag &&\n\t\t\t\t\t!noEvents &&\n\t\t\t\t\tthis._triggerNodeEvent(\n\t\t\t\t\t\t\"beforeActivate\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tctx.originalEvent\n\t\t\t\t\t) === false\n\t\t\t\t) {\n\t\t\t\t\t// Callback returned false\n\t\t\t\t\treturn _getRejectedPromise(node, [\"rejected\"]);\n\t\t\t\t}\n\t\t\t\tif (flag) {\n\t\t\t\t\tif (tree.activeNode) {\n\t\t\t\t\t\t_assert(\n\t\t\t\t\t\t\ttree.activeNode !== node,\n\t\t\t\t\t\t\t\"node was active (inconsistency)\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsubCtx = $.extend({}, ctx, { node: tree.activeNode });\n\t\t\t\t\t\ttree.nodeSetActive(subCtx, false);\n\t\t\t\t\t\t_assert(\n\t\t\t\t\t\t\ttree.activeNode === null,\n\t\t\t\t\t\t\t\"deactivate was out of sync?\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (opts.activeVisible) {\n\t\t\t\t\t\t// If no focus is set (noFocus: true) and there is no focused node, this node is made visible.\n\t\t\t\t\t\t// scroll = noFocus && tree.focusNode == null;\n\t\t\t\t\t\t// #863: scroll by default (unless `scrollIntoView: false` was passed)\n\t\t\t\t\t\tnode.makeVisible({ scrollIntoView: scroll });\n\t\t\t\t\t}\n\t\t\t\t\ttree.activeNode = node;\n\t\t\t\t\ttree.nodeRenderStatus(ctx);\n\t\t\t\t\tif (!noFocus) {\n\t\t\t\t\t\ttree.nodeSetFocus(ctx);\n\t\t\t\t\t}\n\t\t\t\t\tif (!noEvents) {\n\t\t\t\t\t\ttree._triggerNodeEvent(\n\t\t\t\t\t\t\t\"activate\",\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tctx.originalEvent\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t_assert(\n\t\t\t\t\t\ttree.activeNode === node,\n\t\t\t\t\t\t\"node was not active (inconsistency)\"\n\t\t\t\t\t);\n\t\t\t\t\ttree.activeNode = null;\n\t\t\t\t\tthis.nodeRenderStatus(ctx);\n\t\t\t\t\tif (!noEvents) {\n\t\t\t\t\t\tctx.tree._triggerNodeEvent(\n\t\t\t\t\t\t\t\"deactivate\",\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tctx.originalEvent\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn _getResolvedPromise(node);\n\t\t\t},\n\t\t\t/** Expand or collapse node, return Deferred.promise.\n\t\t\t *\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {boolean} [flag=true]\n\t\t\t * @param {object} [opts] additional options. Defaults to `{noAnimation: false, noEvents: false}`\n\t\t\t * @returns {$.Promise} The deferred will be resolved as soon as the (lazy)\n\t\t\t *     data was retrieved, rendered, and the expand animation finished.\n\t\t\t */\n\t\t\tnodeSetExpanded: function (ctx, flag, callOpts) {\n\t\t\t\tcallOpts = callOpts || {};\n\t\t\t\tvar _afterLoad,\n\t\t\t\t\tdfd,\n\t\t\t\t\ti,\n\t\t\t\t\tl,\n\t\t\t\t\tparents,\n\t\t\t\t\tprevAC,\n\t\t\t\t\tnode = ctx.node,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\topts = ctx.options,\n\t\t\t\t\tnoAnimation = callOpts.noAnimation === true,\n\t\t\t\t\tnoEvents = callOpts.noEvents === true;\n\n\t\t\t\t// flag defaults to true\n\t\t\t\tflag = flag !== false;\n\n\t\t\t\t// node.debug(\"nodeSetExpanded(\" + flag + \")\");\n\n\t\t\t\tif ($(node.li).hasClass(opts._classNames.animating)) {\n\t\t\t\t\tnode.warn(\n\t\t\t\t\t\t\"setExpanded(\" + flag + \") while animating: ignored.\"\n\t\t\t\t\t);\n\t\t\t\t\treturn _getRejectedPromise(node, [\"recursion\"]);\n\t\t\t\t}\n\n\t\t\t\tif ((node.expanded && flag) || (!node.expanded && !flag)) {\n\t\t\t\t\t// Nothing to do\n\t\t\t\t\t// node.debug(\"nodeSetExpanded(\" + flag + \"): nothing to do\");\n\t\t\t\t\treturn _getResolvedPromise(node);\n\t\t\t\t} else if (flag && !node.lazy && !node.hasChildren()) {\n\t\t\t\t\t// Prevent expanding of empty nodes\n\t\t\t\t\t// return _getRejectedPromise(node, [\"empty\"]);\n\t\t\t\t\treturn _getResolvedPromise(node);\n\t\t\t\t} else if (!flag && node.getLevel() < opts.minExpandLevel) {\n\t\t\t\t\t// Prevent collapsing locked levels\n\t\t\t\t\treturn _getRejectedPromise(node, [\"locked\"]);\n\t\t\t\t} else if (\n\t\t\t\t\t!noEvents &&\n\t\t\t\t\tthis._triggerNodeEvent(\n\t\t\t\t\t\t\"beforeExpand\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tctx.originalEvent\n\t\t\t\t\t) === false\n\t\t\t\t) {\n\t\t\t\t\t// Callback returned false\n\t\t\t\t\treturn _getRejectedPromise(node, [\"rejected\"]);\n\t\t\t\t}\n\t\t\t\t// If this node inside a collpased node, no animation and scrolling is needed\n\t\t\t\tif (!noAnimation && !node.isVisible()) {\n\t\t\t\t\tnoAnimation = callOpts.noAnimation = true;\n\t\t\t\t}\n\n\t\t\t\tdfd = new $.Deferred();\n\n\t\t\t\t// Auto-collapse mode: collapse all siblings\n\t\t\t\tif (flag && !node.expanded && opts.autoCollapse) {\n\t\t\t\t\tparents = node.getParentList(false, true);\n\t\t\t\t\tprevAC = opts.autoCollapse;\n\t\t\t\t\ttry {\n\t\t\t\t\t\topts.autoCollapse = false;\n\t\t\t\t\t\tfor (i = 0, l = parents.length; i < l; i++) {\n\t\t\t\t\t\t\t// TODO: should return promise?\n\t\t\t\t\t\t\tthis._callHook(\n\t\t\t\t\t\t\t\t\"nodeCollapseSiblings\",\n\t\t\t\t\t\t\t\tparents[i],\n\t\t\t\t\t\t\t\tcallOpts\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\topts.autoCollapse = prevAC;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger expand/collapse after expanding\n\t\t\t\tdfd.done(function () {\n\t\t\t\t\tvar lastChild = node.getLastChild();\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tflag &&\n\t\t\t\t\t\topts.autoScroll &&\n\t\t\t\t\t\t!noAnimation &&\n\t\t\t\t\t\tlastChild &&\n\t\t\t\t\t\ttree._enableUpdate\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Scroll down to last child, but keep current node visible\n\t\t\t\t\t\tlastChild\n\t\t\t\t\t\t\t.scrollIntoView(true, { topNode: node })\n\t\t\t\t\t\t\t.always(function () {\n\t\t\t\t\t\t\t\tif (!noEvents) {\n\t\t\t\t\t\t\t\t\tctx.tree._triggerNodeEvent(\n\t\t\t\t\t\t\t\t\t\tflag ? \"expand\" : \"collapse\",\n\t\t\t\t\t\t\t\t\t\tctx\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} else {\n\t\t\t\t\t\tif (!noEvents) {\n\t\t\t\t\t\t\tctx.tree._triggerNodeEvent(\n\t\t\t\t\t\t\t\tflag ? \"expand\" : \"collapse\",\n\t\t\t\t\t\t\t\tctx\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\t// vvv Code below is executed after loading finished:\n\t\t\t\t_afterLoad = function (callback) {\n\t\t\t\t\tvar cn = opts._classNames,\n\t\t\t\t\t\tisVisible,\n\t\t\t\t\t\tisExpanded,\n\t\t\t\t\t\teffect = opts.toggleEffect;\n\n\t\t\t\t\tnode.expanded = flag;\n\t\t\t\t\ttree._callHook(\n\t\t\t\t\t\t\"treeStructureChanged\",\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tflag ? \"expand\" : \"collapse\"\n\t\t\t\t\t);\n\t\t\t\t\t// Create required markup, but make sure the top UL is hidden, so we\n\t\t\t\t\t// can animate later\n\t\t\t\t\ttree._callHook(\"nodeRender\", ctx, false, false, true);\n\n\t\t\t\t\t// Hide children, if node is collapsed\n\t\t\t\t\tif (node.ul) {\n\t\t\t\t\t\tisVisible = node.ul.style.display !== \"none\";\n\t\t\t\t\t\tisExpanded = !!node.expanded;\n\t\t\t\t\t\tif (isVisible === isExpanded) {\n\t\t\t\t\t\t\tnode.warn(\n\t\t\t\t\t\t\t\t\"nodeSetExpanded: UL.style.display already set\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (!effect || noAnimation) {\n\t\t\t\t\t\t\tnode.ul.style.display =\n\t\t\t\t\t\t\t\tnode.expanded || !parent ? \"\" : \"none\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// The UI toggle() effect works with the ext-wide extension,\n\t\t\t\t\t\t\t// while jQuery.animate() has problems when the title span\n\t\t\t\t\t\t\t// has position: absolute.\n\t\t\t\t\t\t\t// Since jQuery UI 1.12, the blind effect requires the parent\n\t\t\t\t\t\t\t// element to have 'position: relative'.\n\t\t\t\t\t\t\t// See #716, #717\n\t\t\t\t\t\t\t$(node.li).addClass(cn.animating); // #717\n\n\t\t\t\t\t\t\tif (_isFunction($(node.ul)[effect.effect])) {\n\t\t\t\t\t\t\t\t// tree.debug( \"use jquery.\" + effect.effect + \" method\" );\n\t\t\t\t\t\t\t\t$(node.ul)[effect.effect]({\n\t\t\t\t\t\t\t\t\tduration: effect.duration,\n\t\t\t\t\t\t\t\t\talways: function () {\n\t\t\t\t\t\t\t\t\t\t// node.debug(\"fancytree-animating end: \" + node.li.className);\n\t\t\t\t\t\t\t\t\t\t$(this).removeClass(cn.animating); // #716\n\t\t\t\t\t\t\t\t\t\t$(node.li).removeClass(cn.animating); // #717\n\t\t\t\t\t\t\t\t\t\tcallback();\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\t// The UI toggle() effect works with the ext-wide extension,\n\t\t\t\t\t\t\t\t// while jQuery.animate() has problems when the title span\n\t\t\t\t\t\t\t\t// has positon: absolute.\n\t\t\t\t\t\t\t\t// Since jQuery UI 1.12, the blind effect requires the parent\n\t\t\t\t\t\t\t\t// element to have 'position: relative'.\n\t\t\t\t\t\t\t\t// See #716, #717\n\t\t\t\t\t\t\t\t// tree.debug(\"use specified effect (\" + effect.effect + \") with the jqueryui.toggle method\");\n\n\t\t\t\t\t\t\t\t// try to stop an animation that might be already in progress\n\t\t\t\t\t\t\t\t$(node.ul).stop(true, true); //< does not work after resetLazy has been called for a node whose animation wasn't complete and effect was \"blind\"\n\n\t\t\t\t\t\t\t\t// dirty fix to remove a defunct animation (effect: \"blind\") after resetLazy has been called\n\t\t\t\t\t\t\t\t$(node.ul)\n\t\t\t\t\t\t\t\t\t.parent()\n\t\t\t\t\t\t\t\t\t.find(\".ui-effects-placeholder\")\n\t\t\t\t\t\t\t\t\t.remove();\n\n\t\t\t\t\t\t\t\t$(node.ul).toggle(\n\t\t\t\t\t\t\t\t\teffect.effect,\n\t\t\t\t\t\t\t\t\teffect.options,\n\t\t\t\t\t\t\t\t\teffect.duration,\n\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\t// node.debug(\"fancytree-animating end: \" + node.li.className);\n\t\t\t\t\t\t\t\t\t\t$(this).removeClass(cn.animating); // #716\n\t\t\t\t\t\t\t\t\t\t$(node.li).removeClass(cn.animating); // #717\n\t\t\t\t\t\t\t\t\t\tcallback();\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\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback();\n\t\t\t\t};\n\t\t\t\t// ^^^ Code above is executed after loading finshed.\n\n\t\t\t\t// Load lazy nodes, if any. Then continue with _afterLoad()\n\t\t\t\tif (flag && node.lazy && node.hasChildren() === undefined) {\n\t\t\t\t\t// node.debug(\"nodeSetExpanded: load start...\");\n\t\t\t\t\tnode.load()\n\t\t\t\t\t\t.done(function () {\n\t\t\t\t\t\t\t// node.debug(\"nodeSetExpanded: load done\");\n\t\t\t\t\t\t\tif (dfd.notifyWith) {\n\t\t\t\t\t\t\t\t// requires jQuery 1.6+\n\t\t\t\t\t\t\t\tdfd.notifyWith(node, [\"loaded\"]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_afterLoad(function () {\n\t\t\t\t\t\t\t\tdfd.resolveWith(node);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.fail(function (errMsg) {\n\t\t\t\t\t\t\t_afterLoad(function () {\n\t\t\t\t\t\t\t\tdfd.rejectWith(node, [\n\t\t\t\t\t\t\t\t\t\"load failed (\" + errMsg + \")\",\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\tvar source = tree._triggerNodeEvent(\"lazyLoad\", node, ctx.originalEvent);\n\t\t\t\t\t_assert(typeof source !== \"boolean\", \"lazyLoad event must return source in data.result\");\n\t\t\t\t\tnode.debug(\"nodeSetExpanded: load start...\");\n\t\t\t\t\tthis._callHook(\"nodeLoadChildren\", ctx, source).done(function(){\n\t\t\t\t\t\tnode.debug(\"nodeSetExpanded: load done\");\n\t\t\t\t\t\tif(dfd.notifyWith){ // requires jQuery 1.6+\n\t\t\t\t\t\t\tdfd.notifyWith(node, [\"loaded\"]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_afterLoad.call(tree);\n\t\t\t\t\t}).fail(function(errMsg){\n\t\t\t\t\t\tdfd.rejectWith(node, [\"load failed (\" + errMsg + \")\"]);\n\t\t\t\t\t});\n\t\t\t\t\t*/\n\t\t\t\t} else {\n\t\t\t\t\t_afterLoad(function () {\n\t\t\t\t\t\tdfd.resolveWith(node);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// node.debug(\"nodeSetExpanded: returns\");\n\t\t\t\treturn dfd.promise();\n\t\t\t},\n\t\t\t/** Focus or blur this node.\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {boolean} [flag=true]\n\t\t\t */\n\t\t\tnodeSetFocus: function (ctx, flag) {\n\t\t\t\t// ctx.node.debug(\"nodeSetFocus(\" + flag + \")\");\n\t\t\t\tvar ctx2,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\tnode = ctx.node,\n\t\t\t\t\topts = tree.options,\n\t\t\t\t\t// et = ctx.originalEvent && ctx.originalEvent.type,\n\t\t\t\t\tisInput = ctx.originalEvent\n\t\t\t\t\t\t? $(ctx.originalEvent.target).is(\":input\")\n\t\t\t\t\t\t: false;\n\n\t\t\t\tflag = flag !== false;\n\n\t\t\t\t// (node || tree).debug(\"nodeSetFocus(\" + flag + \"), event: \" + et + \", isInput: \"+ isInput);\n\t\t\t\t// Blur previous node if any\n\t\t\t\tif (tree.focusNode) {\n\t\t\t\t\tif (tree.focusNode === node && flag) {\n\t\t\t\t\t\t// node.debug(\"nodeSetFocus(\" + flag + \"): nothing to do\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tctx2 = $.extend({}, ctx, { node: tree.focusNode });\n\t\t\t\t\ttree.focusNode = null;\n\t\t\t\t\tthis._triggerNodeEvent(\"blur\", ctx2);\n\t\t\t\t\tthis._callHook(\"nodeRenderStatus\", ctx2);\n\t\t\t\t}\n\t\t\t\t// Set focus to container and node\n\t\t\t\tif (flag) {\n\t\t\t\t\tif (!this.hasFocus()) {\n\t\t\t\t\t\tnode.debug(\"nodeSetFocus: forcing container focus\");\n\t\t\t\t\t\tthis._callHook(\"treeSetFocus\", ctx, true, {\n\t\t\t\t\t\t\tcalledByNode: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tnode.makeVisible({ scrollIntoView: false });\n\t\t\t\t\ttree.focusNode = node;\n\t\t\t\t\tif (opts.titlesTabbable) {\n\t\t\t\t\t\tif (!isInput) {\n\t\t\t\t\t\t\t// #621\n\t\t\t\t\t\t\t$(node.span).find(\".fancytree-title\").focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (opts.aria) {\n\t\t\t\t\t\t// Set active descendant to node's span ID (create one, if needed)\n\t\t\t\t\t\t$(tree.$container).attr(\n\t\t\t\t\t\t\t\"aria-activedescendant\",\n\t\t\t\t\t\t\t$(node.tr || node.li)\n\t\t\t\t\t\t\t\t.uniqueId()\n\t\t\t\t\t\t\t\t.attr(\"id\")\n\t\t\t\t\t\t);\n\t\t\t\t\t\t// \"ftal_\" + opts.idPrefix + node.key);\n\t\t\t\t\t}\n\t\t\t\t\t// $(node.span).find(\".fancytree-title\").focus();\n\t\t\t\t\tthis._triggerNodeEvent(\"focus\", ctx);\n\n\t\t\t\t\t// determine if we have focus on or inside tree container\n\t\t\t\t\tvar hasFancytreeFocus =\n\t\t\t\t\t\tdocument.activeElement === tree.$container.get(0) ||\n\t\t\t\t\t\t$(document.activeElement, tree.$container).length >= 1;\n\n\t\t\t\t\tif (!hasFancytreeFocus) {\n\t\t\t\t\t\t// We cannot set KB focus to a node, so use the tree container\n\t\t\t\t\t\t// #563, #570: IE scrolls on every call to .focus(), if the container\n\t\t\t\t\t\t// is partially outside the viewport. So do it only, when absolutely\n\t\t\t\t\t\t// necessary.\n\t\t\t\t\t\t$(tree.$container).focus();\n\t\t\t\t\t}\n\n\t\t\t\t\t// if( opts.autoActivate ){\n\t\t\t\t\t// \ttree.nodeSetActive(ctx, true);\n\t\t\t\t\t// }\n\t\t\t\t\tif (opts.autoScroll) {\n\t\t\t\t\t\tnode.scrollIntoView();\n\t\t\t\t\t}\n\t\t\t\t\tthis._callHook(\"nodeRenderStatus\", ctx);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** (De)Select node, return new status (sync).\n\t\t\t *\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {boolean} [flag=true]\n\t\t\t * @param {object} [opts] additional options. Defaults to {noEvents: false,\n\t\t\t *     propagateDown: null, propagateUp: null,\n\t\t\t *     callback: null,\n\t\t\t *     }\n\t\t\t * @returns {boolean} previous status\n\t\t\t */\n\t\t\tnodeSetSelected: function (ctx, flag, callOpts) {\n\t\t\t\tcallOpts = callOpts || {};\n\t\t\t\tvar node = ctx.node,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\topts = ctx.options,\n\t\t\t\t\tnoEvents = callOpts.noEvents === true,\n\t\t\t\t\tparent = node.parent;\n\n\t\t\t\t// flag defaults to true\n\t\t\t\tflag = flag !== false;\n\n\t\t\t\t// node.debug(\"nodeSetSelected(\" + flag + \")\", ctx);\n\n\t\t\t\t// Cannot (de)select unselectable nodes directly (only by propagation or\n\t\t\t\t// by setting the `.selected` property)\n\t\t\t\tif (FT.evalOption(\"unselectable\", node, node, opts, false)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Remember the user's intent, in case down -> up propagation prevents\n\t\t\t\t// applying it to node.selected\n\t\t\t\tnode._lastSelectIntent = flag; // Confusing use of '!'\n\n\t\t\t\t// Nothing to do?\n\t\t\t\tif (!!node.selected === flag) {\n\t\t\t\t\tif (opts.selectMode === 3 && node.partsel && !flag) {\n\t\t\t\t\t\t// If propagation prevented selecting this node last time, we still\n\t\t\t\t\t\t// want to allow to apply setSelected(false) now\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn flag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!noEvents &&\n\t\t\t\t\tthis._triggerNodeEvent(\n\t\t\t\t\t\t\"beforeSelect\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tctx.originalEvent\n\t\t\t\t\t) === false\n\t\t\t\t) {\n\t\t\t\t\treturn !!node.selected;\n\t\t\t\t}\n\t\t\t\tif (flag && opts.selectMode === 1) {\n\t\t\t\t\t// single selection mode (we don't uncheck all tree nodes, for performance reasons)\n\t\t\t\t\tif (tree.lastSelectedNode) {\n\t\t\t\t\t\ttree.lastSelectedNode.setSelected(false);\n\t\t\t\t\t}\n\t\t\t\t\tnode.selected = flag;\n\t\t\t\t} else if (\n\t\t\t\t\topts.selectMode === 3 &&\n\t\t\t\t\tparent &&\n\t\t\t\t\t!parent.radiogroup &&\n\t\t\t\t\t!node.radiogroup\n\t\t\t\t) {\n\t\t\t\t\t// multi-hierarchical selection mode\n\t\t\t\t\tnode.selected = flag;\n\t\t\t\t\tnode.fixSelection3AfterClick(callOpts);\n\t\t\t\t} else if (parent && parent.radiogroup) {\n\t\t\t\t\tnode.visitSiblings(function (n) {\n\t\t\t\t\t\tn._changeSelectStatusAttrs(flag && n === node);\n\t\t\t\t\t}, true);\n\t\t\t\t} else {\n\t\t\t\t\t// default: selectMode: 2, multi selection mode\n\t\t\t\t\tnode.selected = flag;\n\t\t\t\t}\n\t\t\t\tthis.nodeRenderStatus(ctx);\n\t\t\t\ttree.lastSelectedNode = flag ? node : null;\n\t\t\t\tif (!noEvents) {\n\t\t\t\t\ttree._triggerNodeEvent(\"select\", ctx);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** Show node status (ok, loading, error, nodata) using styles and a dummy child node.\n\t\t\t *\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param status\n\t\t\t * @param message\n\t\t\t * @param details\n\t\t\t * @since 2.3\n\t\t\t */\n\t\t\tnodeSetStatus: function (ctx, status, message, details) {\n\t\t\t\tvar node = ctx.node,\n\t\t\t\t\ttree = ctx.tree;\n\n\t\t\t\tfunction _clearStatusNode() {\n\t\t\t\t\t// Remove dedicated dummy node, if any\n\t\t\t\t\tvar firstChild = node.children ? node.children[0] : null;\n\t\t\t\t\tif (firstChild && firstChild.isStatusNode()) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// I've seen exceptions here with loadKeyPath...\n\t\t\t\t\t\t\tif (node.ul) {\n\t\t\t\t\t\t\t\tnode.ul.removeChild(firstChild.li);\n\t\t\t\t\t\t\t\tfirstChild.li = null; // avoid leaks (DT issue 215)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\tif (node.children.length === 1) {\n\t\t\t\t\t\t\tnode.children = [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.children.shift();\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttree._callHook(\n\t\t\t\t\t\t\t\"treeStructureChanged\",\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\"clearStatusNode\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfunction _setStatusNode(data, type) {\n\t\t\t\t\t// Create/modify the dedicated dummy node for 'loading...' or\n\t\t\t\t\t// 'error!' status. (only called for direct child of the invisible\n\t\t\t\t\t// system root)\n\t\t\t\t\tvar firstChild = node.children ? node.children[0] : null;\n\t\t\t\t\tif (firstChild && firstChild.isStatusNode()) {\n\t\t\t\t\t\t$.extend(firstChild, data);\n\t\t\t\t\t\tfirstChild.statusNodeType = type;\n\t\t\t\t\t\ttree._callHook(\"nodeRenderTitle\", firstChild);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode._setChildren([data]);\n\t\t\t\t\t\ttree._callHook(\n\t\t\t\t\t\t\t\"treeStructureChanged\",\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\"setStatusNode\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\tnode.children[0].statusNodeType = type;\n\t\t\t\t\t\ttree.render();\n\t\t\t\t\t}\n\t\t\t\t\treturn node.children[0];\n\t\t\t\t}\n\n\t\t\t\tswitch (status) {\n\t\t\t\t\tcase \"ok\":\n\t\t\t\t\t\t_clearStatusNode();\n\t\t\t\t\t\tnode._isLoading = false;\n\t\t\t\t\t\tnode._error = null;\n\t\t\t\t\t\tnode.renderStatus();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"loading\":\n\t\t\t\t\t\tif (!node.parent) {\n\t\t\t\t\t\t\t_setStatusNode(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\t\t\t\ttree.options.strings.loading +\n\t\t\t\t\t\t\t\t\t\t(message ? \" (\" + message + \")\" : \"\"),\n\t\t\t\t\t\t\t\t\t// icon: true,  // needed for 'loding' icon\n\t\t\t\t\t\t\t\t\tcheckbox: false,\n\t\t\t\t\t\t\t\t\ttooltip: details,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tstatus\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode._isLoading = true;\n\t\t\t\t\t\tnode._error = null;\n\t\t\t\t\t\tnode.renderStatus();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"error\":\n\t\t\t\t\t\t_setStatusNode(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\t\t\ttree.options.strings.loadError +\n\t\t\t\t\t\t\t\t\t(message ? \" (\" + message + \")\" : \"\"),\n\t\t\t\t\t\t\t\t// icon: false,\n\t\t\t\t\t\t\t\tcheckbox: false,\n\t\t\t\t\t\t\t\ttooltip: details,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus\n\t\t\t\t\t\t);\n\t\t\t\t\t\tnode._isLoading = false;\n\t\t\t\t\t\tnode._error = { message: message, details: details };\n\t\t\t\t\t\tnode.renderStatus();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"nodata\":\n\t\t\t\t\t\t_setStatusNode(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle: message || tree.options.strings.noData,\n\t\t\t\t\t\t\t\t// icon: false,\n\t\t\t\t\t\t\t\tcheckbox: false,\n\t\t\t\t\t\t\t\ttooltip: details,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus\n\t\t\t\t\t\t);\n\t\t\t\t\t\tnode._isLoading = false;\n\t\t\t\t\t\tnode._error = null;\n\t\t\t\t\t\tnode.renderStatus();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t$.error(\"invalid node status \" + status);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/**\n\t\t\t *\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\tnodeToggleExpanded: function (ctx) {\n\t\t\t\treturn this.nodeSetExpanded(ctx, !ctx.node.expanded);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\tnodeToggleSelected: function (ctx) {\n\t\t\t\tvar node = ctx.node,\n\t\t\t\t\tflag = !node.selected;\n\n\t\t\t\t// In selectMode: 3 this node may be unselected+partsel, even if\n\t\t\t\t// setSelected(true) was called before, due to `unselectable` children.\n\t\t\t\t// In this case, we now toggle as `setSelected(false)`\n\t\t\t\tif (\n\t\t\t\t\tnode.partsel &&\n\t\t\t\t\t!node.selected &&\n\t\t\t\t\tnode._lastSelectIntent === true\n\t\t\t\t) {\n\t\t\t\t\tflag = false;\n\t\t\t\t\tnode.selected = true; // so it is not considered 'nothing to do'\n\t\t\t\t}\n\t\t\t\tnode._lastSelectIntent = flag;\n\t\t\t\treturn this.nodeSetSelected(ctx, flag);\n\t\t\t},\n\t\t\t/** Remove all nodes.\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\ttreeClear: function (ctx) {\n\t\t\t\tvar tree = ctx.tree;\n\t\t\t\ttree.activeNode = null;\n\t\t\t\ttree.focusNode = null;\n\t\t\t\ttree.$div.find(\">ul.fancytree-container\").empty();\n\t\t\t\t// TODO: call destructors and remove reference loops\n\t\t\t\ttree.rootNode.children = null;\n\t\t\t\ttree._callHook(\"treeStructureChanged\", ctx, \"clear\");\n\t\t\t},\n\t\t\t/** Widget was created (called only once, even it re-initialized).\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\ttreeCreate: function (ctx) {},\n\t\t\t/** Widget was destroyed.\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\ttreeDestroy: function (ctx) {\n\t\t\t\tthis.$div.find(\">ul.fancytree-container\").remove();\n\t\t\t\tif (this.$source) {\n\t\t\t\t\tthis.$source.removeClass(\"fancytree-helper-hidden\");\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** Widget was (re-)initialized.\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\ttreeInit: function (ctx) {\n\t\t\t\tvar tree = ctx.tree,\n\t\t\t\t\topts = tree.options;\n\n\t\t\t\t//this.debug(\"Fancytree.treeInit()\");\n\t\t\t\t// Add container to the TAB chain\n\t\t\t\t// See http://www.w3.org/TR/wai-aria-practices/#focus_activedescendant\n\t\t\t\t// #577: Allow to set tabindex to \"0\", \"-1\" and \"\"\n\t\t\t\ttree.$container.attr(\"tabindex\", opts.tabindex);\n\n\t\t\t\t// Copy some attributes to tree.data\n\t\t\t\t$.each(TREE_ATTRS, function (i, attr) {\n\t\t\t\t\tif (opts[attr] !== undefined) {\n\t\t\t\t\t\ttree.info(\"Move option \" + attr + \" to tree\");\n\t\t\t\t\t\ttree[attr] = opts[attr];\n\t\t\t\t\t\tdelete opts[attr];\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (opts.checkboxAutoHide) {\n\t\t\t\t\ttree.$container.addClass(\"fancytree-checkbox-auto-hide\");\n\t\t\t\t}\n\t\t\t\tif (opts.rtl) {\n\t\t\t\t\ttree.$container\n\t\t\t\t\t\t.attr(\"DIR\", \"RTL\")\n\t\t\t\t\t\t.addClass(\"fancytree-rtl\");\n\t\t\t\t} else {\n\t\t\t\t\ttree.$container\n\t\t\t\t\t\t.removeAttr(\"DIR\")\n\t\t\t\t\t\t.removeClass(\"fancytree-rtl\");\n\t\t\t\t}\n\t\t\t\tif (opts.aria) {\n\t\t\t\t\ttree.$container.attr(\"role\", \"tree\");\n\t\t\t\t\tif (opts.selectMode !== 1) {\n\t\t\t\t\t\ttree.$container.attr(\"aria-multiselectable\", true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.treeLoad(ctx);\n\t\t\t},\n\t\t\t/** Parse Fancytree from source, as configured in the options.\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {object} [source] optional new source (use last data otherwise)\n\t\t\t */\n\t\t\ttreeLoad: function (ctx, source) {\n\t\t\t\tvar metaData,\n\t\t\t\t\ttype,\n\t\t\t\t\t$ul,\n\t\t\t\t\ttree = ctx.tree,\n\t\t\t\t\t$container = ctx.widget.element,\n\t\t\t\t\tdfd,\n\t\t\t\t\t// calling context for root node\n\t\t\t\t\trootCtx = $.extend({}, ctx, { node: this.rootNode });\n\n\t\t\t\tif (tree.rootNode.children) {\n\t\t\t\t\tthis.treeClear(ctx);\n\t\t\t\t}\n\t\t\t\tsource = source || this.options.source;\n\n\t\t\t\tif (!source) {\n\t\t\t\t\ttype = $container.data(\"type\") || \"html\";\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase \"html\":\n\t\t\t\t\t\t\t// There should be an embedded `<ul>` with initial nodes,\n\t\t\t\t\t\t\t// but another `<ul class='fancytree-container'>` is appended\n\t\t\t\t\t\t\t// to the tree's <div> on startup anyway.\n\t\t\t\t\t\t\t$ul = $container\n\t\t\t\t\t\t\t\t.find(\">ul\")\n\t\t\t\t\t\t\t\t.not(\".fancytree-container\")\n\t\t\t\t\t\t\t\t.first();\n\n\t\t\t\t\t\t\tif ($ul.length) {\n\t\t\t\t\t\t\t\t$ul.addClass(\n\t\t\t\t\t\t\t\t\t\"ui-fancytree-source fancytree-helper-hidden\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsource = $.ui.fancytree.parseHtml($ul);\n\t\t\t\t\t\t\t\t// allow to init tree.data.foo from <ul data-foo=''>\n\t\t\t\t\t\t\t\tthis.data = $.extend(\n\t\t\t\t\t\t\t\t\tthis.data,\n\t\t\t\t\t\t\t\t\t_getElementDataAsDict($ul)\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\tFT.warn(\n\t\t\t\t\t\t\t\t\t\"No `source` option was passed and container does not contain `<ul>`: assuming `source: []`.\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsource = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"json\":\n\t\t\t\t\t\t\tsource = $.parseJSON($container.text());\n\t\t\t\t\t\t\t// $container already contains the <ul>, but we remove the plain (json) text\n\t\t\t\t\t\t\t// $container.empty();\n\t\t\t\t\t\t\t$container\n\t\t\t\t\t\t\t\t.contents()\n\t\t\t\t\t\t\t\t.filter(function () {\n\t\t\t\t\t\t\t\t\treturn this.nodeType === 3;\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.remove();\n\t\t\t\t\t\t\tif ($.isPlainObject(source)) {\n\t\t\t\t\t\t\t\t// We got {foo: 'abc', children: [...]}\n\t\t\t\t\t\t\t\t_assert(\n\t\t\t\t\t\t\t\t\t_isArray(source.children),\n\t\t\t\t\t\t\t\t\t\"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tmetaData = source;\n\t\t\t\t\t\t\t\tsource = source.children;\n\t\t\t\t\t\t\t\tdelete metaData.children;\n\t\t\t\t\t\t\t\t// Copy some attributes to tree.data\n\t\t\t\t\t\t\t\t$.each(TREE_ATTRS, function (i, attr) {\n\t\t\t\t\t\t\t\t\tif (metaData[attr] !== undefined) {\n\t\t\t\t\t\t\t\t\t\ttree[attr] = metaData[attr];\n\t\t\t\t\t\t\t\t\t\tdelete metaData[attr];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t// Copy extra properties to tree.data.foo\n\t\t\t\t\t\t\t\t$.extend(tree.data, metaData);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t$.error(\"Invalid data-type: \" + type);\n\t\t\t\t\t}\n\t\t\t\t} else if (typeof source === \"string\") {\n\t\t\t\t\t// TODO: source is an element ID\n\t\t\t\t\t$.error(\"Not implemented\");\n\t\t\t\t}\n\n\t\t\t\t// preInit is fired when the widget markup is created, but nodes\n\t\t\t\t// not yet loaded\n\t\t\t\ttree._triggerTreeEvent(\"preInit\", null);\n\n\t\t\t\t// Trigger fancytreeinit after nodes have been loaded\n\t\t\t\tdfd = this.nodeLoadChildren(rootCtx, source)\n\t\t\t\t\t.done(function () {\n\t\t\t\t\t\ttree._callHook(\n\t\t\t\t\t\t\t\"treeStructureChanged\",\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\"loadChildren\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\ttree.render();\n\t\t\t\t\t\tif (ctx.options.selectMode === 3) {\n\t\t\t\t\t\t\ttree.rootNode.fixSelection3FromEndNodes();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (tree.activeNode && tree.options.activeVisible) {\n\t\t\t\t\t\t\ttree.activeNode.makeVisible();\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttree._triggerTreeEvent(\"init\", null, { status: true });\n\t\t\t\t\t})\n\t\t\t\t\t.fail(function () {\n\t\t\t\t\t\ttree.render();\n\t\t\t\t\t\ttree._triggerTreeEvent(\"init\", null, { status: false });\n\t\t\t\t\t});\n\t\t\t\treturn dfd;\n\t\t\t},\n\t\t\t/** Node was inserted into or removed from the tree.\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {boolean} add\n\t\t\t * @param {FancytreeNode} node\n\t\t\t */\n\t\t\ttreeRegisterNode: function (ctx, add, node) {\n\t\t\t\tctx.tree._callHook(\n\t\t\t\t\t\"treeStructureChanged\",\n\t\t\t\t\tctx,\n\t\t\t\t\tadd ? \"addNode\" : \"removeNode\"\n\t\t\t\t);\n\t\t\t},\n\t\t\t/** Widget got focus.\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {boolean} [flag=true]\n\t\t\t */\n\t\t\ttreeSetFocus: function (ctx, flag, callOpts) {\n\t\t\t\tvar targetNode;\n\n\t\t\t\tflag = flag !== false;\n\n\t\t\t\t// this.debug(\"treeSetFocus(\" + flag + \"), callOpts: \", callOpts, this.hasFocus());\n\t\t\t\t// this.debug(\"    focusNode: \" + this.focusNode);\n\t\t\t\t// this.debug(\"    activeNode: \" + this.activeNode);\n\t\t\t\tif (flag !== this.hasFocus()) {\n\t\t\t\t\tthis._hasFocus = flag;\n\t\t\t\t\tif (!flag && this.focusNode) {\n\t\t\t\t\t\t// Node also looses focus if widget blurs\n\t\t\t\t\t\tthis.focusNode.setFocus(false);\n\t\t\t\t\t} else if (flag && (!callOpts || !callOpts.calledByNode)) {\n\t\t\t\t\t\t$(this.$container).focus();\n\t\t\t\t\t}\n\t\t\t\t\tthis.$container.toggleClass(\"fancytree-treefocus\", flag);\n\t\t\t\t\tthis._triggerTreeEvent(flag ? \"focusTree\" : \"blurTree\");\n\t\t\t\t\tif (flag && !this.activeNode) {\n\t\t\t\t\t\t// #712: Use last mousedowned node ('click' event fires after focusin)\n\t\t\t\t\t\ttargetNode =\n\t\t\t\t\t\t\tthis._lastMousedownNode || this.getFirstChild();\n\t\t\t\t\t\tif (targetNode) {\n\t\t\t\t\t\t\ttargetNode.setFocus();\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\t/** Widget option was set using `$().fancytree(\"option\", \"KEY\", VALUE)`.\n\t\t\t *\n\t\t\t * Note: `key` may reference a nested option, e.g. 'dnd5.scroll'.\n\t\t\t * In this case `value`contains the complete, modified `dnd5` option hash.\n\t\t\t * We can check for changed values like\n\t\t\t *     if( value.scroll !== tree.options.dnd5.scroll ) {...}\n\t\t\t *\n\t\t\t * @param {EventData} ctx\n\t\t\t * @param {string} key option name\n\t\t\t * @param {any} value option value\n\t\t\t */\n\t\t\ttreeSetOption: function (ctx, key, value) {\n\t\t\t\tvar tree = ctx.tree,\n\t\t\t\t\tcallDefault = true,\n\t\t\t\t\tcallCreate = false,\n\t\t\t\t\tcallRender = false;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase \"aria\":\n\t\t\t\t\tcase \"checkbox\":\n\t\t\t\t\tcase \"icon\":\n\t\t\t\t\tcase \"minExpandLevel\":\n\t\t\t\t\tcase \"tabindex\":\n\t\t\t\t\t\t// tree._callHook(\"treeCreate\", tree);\n\t\t\t\t\t\tcallCreate = true;\n\t\t\t\t\t\tcallRender = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"checkboxAutoHide\":\n\t\t\t\t\t\ttree.$container.toggleClass(\n\t\t\t\t\t\t\t\"fancytree-checkbox-auto-hide\",\n\t\t\t\t\t\t\t!!value\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"escapeTitles\":\n\t\t\t\t\tcase \"tooltip\":\n\t\t\t\t\t\tcallRender = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"rtl\":\n\t\t\t\t\t\tif (value === false) {\n\t\t\t\t\t\t\ttree.$container\n\t\t\t\t\t\t\t\t.removeAttr(\"DIR\")\n\t\t\t\t\t\t\t\t.removeClass(\"fancytree-rtl\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttree.$container\n\t\t\t\t\t\t\t\t.attr(\"DIR\", \"RTL\")\n\t\t\t\t\t\t\t\t.addClass(\"fancytree-rtl\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcallRender = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"source\":\n\t\t\t\t\t\tcallDefault = false;\n\t\t\t\t\t\ttree._callHook(\"treeLoad\", tree, value);\n\t\t\t\t\t\tcallRender = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ttree.debug(\n\t\t\t\t\t\"set option \" +\n\t\t\t\t\t\tkey +\n\t\t\t\t\t\t\"=\" +\n\t\t\t\t\t\tvalue +\n\t\t\t\t\t\t\" <\" +\n\t\t\t\t\t\ttypeof value +\n\t\t\t\t\t\t\">\"\n\t\t\t\t);\n\t\t\t\tif (callDefault) {\n\t\t\t\t\tif (this.widget._super) {\n\t\t\t\t\t\t// jQuery UI 1.9+\n\t\t\t\t\t\tthis.widget._super.call(this.widget, key, value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// jQuery UI <= 1.8, we have to manually invoke the _setOption method from the base widget\n\t\t\t\t\t\t$.Widget.prototype._setOption.call(\n\t\t\t\t\t\t\tthis.widget,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (callCreate) {\n\t\t\t\t\ttree._callHook(\"treeCreate\", tree);\n\t\t\t\t}\n\t\t\t\tif (callRender) {\n\t\t\t\t\ttree.render(true, false); // force, not-deep\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** A Node was added, removed, moved, or it's visibility changed.\n\t\t\t * @param {EventData} ctx\n\t\t\t */\n\t\t\ttreeStructureChanged: function (ctx, type) {},\n\t\t}\n\t);\n\n\t/*******************************************************************************\n\t * jQuery UI widget boilerplate\n\t */\n\n\t/**\n\t * The plugin (derrived from [jQuery.Widget](http://api.jqueryui.com/jQuery.widget/)).\n\t *\n\t * **Note:**\n\t * These methods implement the standard jQuery UI widget API.\n\t * It is recommended to use methods of the {Fancytree} instance instead\n\t *\n\t * @example\n\t * // DEPRECATED: Access jQuery UI widget methods and members:\n\t * var tree = $(\"#tree\").fancytree(\"getTree\");\n\t * var node = $(\"#tree\").fancytree(\"getActiveNode\");\n\t *\n\t * // RECOMMENDED: Use the Fancytree object API\n\t * var tree = $.ui.fancytree.getTree(\"#tree\");\n\t * var node = tree.getActiveNode();\n\t *\n\t * // or you may already have stored the tree instance upon creation:\n\t * import {createTree, version} from 'jquery.fancytree'\n\t * const tree = createTree('#tree', { ... });\n\t * var node = tree.getActiveNode();\n\t *\n\t * @see {Fancytree_Static#getTree}\n\t * @deprecated Use methods of the {Fancytree} instance instead\n\t * @mixin Fancytree_Widget\n\t */\n\n\t$.widget(\n\t\t\"ui.fancytree\",\n\t\t/** @lends Fancytree_Widget# */\n\t\t{\n\t\t\t/**These options will be used as defaults\n\t\t\t * @type {FancytreeOptions}\n\t\t\t */\n\t\t\toptions: {\n\t\t\t\tactiveVisible: true,\n\t\t\t\tajax: {\n\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\tcache: false, // false: Append random '_' argument to the request url to prevent caching.\n\t\t\t\t\t// timeout: 0, // >0: Make sure we get an ajax error if server is unreachable\n\t\t\t\t\tdataType: \"json\", // Expect json format and pass json object to callbacks.\n\t\t\t\t},\n\t\t\t\taria: true,\n\t\t\t\tautoActivate: true,\n\t\t\t\tautoCollapse: false,\n\t\t\t\tautoScroll: false,\n\t\t\t\tcheckbox: false,\n\t\t\t\tclickFolderMode: 4,\n\t\t\t\tcopyFunctionsToData: false,\n\t\t\t\tdebugLevel: null, // 0..4 (null: use global setting $.ui.fancytree.debugLevel)\n\t\t\t\tdisabled: false, // TODO: required anymore?\n\t\t\t\tenableAspx: 42, // TODO: this is truethy, but distinguishable from true: default will change to false in the future\n\t\t\t\tescapeTitles: false,\n\t\t\t\textensions: [],\n\t\t\t\tfocusOnSelect: false,\n\t\t\t\tgenerateIds: false,\n\t\t\t\ticon: true,\n\t\t\t\tidPrefix: \"ft_\",\n\t\t\t\tkeyboard: true,\n\t\t\t\tkeyPathSeparator: \"/\",\n\t\t\t\tminExpandLevel: 1,\n\t\t\t\tnodata: true, // (bool, string, or callback) display message, when no data available\n\t\t\t\tquicksearch: false,\n\t\t\t\trtl: false,\n\t\t\t\tscrollOfs: { top: 0, bottom: 0 },\n\t\t\t\tscrollParent: null,\n\t\t\t\tselectMode: 2,\n\t\t\t\tstrings: {\n\t\t\t\t\tloading: \"Loading...\", // &#8230; would be escaped when escapeTitles is true\n\t\t\t\t\tloadError: \"Load error!\",\n\t\t\t\t\tmoreData: \"More...\",\n\t\t\t\t\tnoData: \"No data.\",\n\t\t\t\t},\n\t\t\t\ttabindex: \"0\",\n\t\t\t\ttitlesTabbable: false,\n\t\t\t\ttoggleEffect: { effect: \"slideToggle\", duration: 200 }, //< \"toggle\" or \"slideToggle\" to use jQuery instead of jQueryUI for toggleEffect animation\n\t\t\t\ttooltip: false,\n\t\t\t\ttreeId: null,\n\t\t\t\t_classNames: {\n\t\t\t\t\tactive: \"fancytree-active\",\n\t\t\t\t\tanimating: \"fancytree-animating\",\n\t\t\t\t\tcombinedExpanderPrefix: \"fancytree-exp-\",\n\t\t\t\t\tcombinedIconPrefix: \"fancytree-ico-\",\n\t\t\t\t\terror: \"fancytree-error\",\n\t\t\t\t\texpanded: \"fancytree-expanded\",\n\t\t\t\t\tfocused: \"fancytree-focused\",\n\t\t\t\t\tfolder: \"fancytree-folder\",\n\t\t\t\t\thasChildren: \"fancytree-has-children\",\n\t\t\t\t\tlastsib: \"fancytree-lastsib\",\n\t\t\t\t\tlazy: \"fancytree-lazy\",\n\t\t\t\t\tloading: \"fancytree-loading\",\n\t\t\t\t\tnode: \"fancytree-node\",\n\t\t\t\t\tpartload: \"fancytree-partload\",\n\t\t\t\t\tpartsel: \"fancytree-partsel\",\n\t\t\t\t\tradio: \"fancytree-radio\",\n\t\t\t\t\tselected: \"fancytree-selected\",\n\t\t\t\t\tstatusNodePrefix: \"fancytree-statusnode-\",\n\t\t\t\t\tunselectable: \"fancytree-unselectable\",\n\t\t\t\t},\n\t\t\t\t// events\n\t\t\t\tlazyLoad: null,\n\t\t\t\tpostProcess: null,\n\t\t\t},\n\t\t\t_deprecationWarning: function (name) {\n\t\t\t\tvar tree = this.tree;\n\n\t\t\t\tif (tree && tree.options.debugLevel >= 3) {\n\t\t\t\t\ttree.warn(\n\t\t\t\t\t\t\"$().fancytree('\" +\n\t\t\t\t\t\t\tname +\n\t\t\t\t\t\t\t\"') is deprecated (see https://wwwendt.de/tech/fancytree/doc/jsdoc/Fancytree_Widget.html\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/* Set up the widget, Called on first $().fancytree() */\n\t\t\t_create: function () {\n\t\t\t\tthis.tree = new Fancytree(this);\n\n\t\t\t\tthis.$source =\n\t\t\t\t\tthis.source || this.element.data(\"type\") === \"json\"\n\t\t\t\t\t\t? this.element\n\t\t\t\t\t\t: this.element.find(\">ul\").first();\n\t\t\t\t// Subclass Fancytree instance with all enabled extensions\n\t\t\t\tvar extension,\n\t\t\t\t\textName,\n\t\t\t\t\ti,\n\t\t\t\t\topts = this.options,\n\t\t\t\t\textensions = opts.extensions,\n\t\t\t\t\tbase = this.tree;\n\n\t\t\t\tfor (i = 0; i < extensions.length; i++) {\n\t\t\t\t\textName = extensions[i];\n\t\t\t\t\textension = $.ui.fancytree._extensions[extName];\n\t\t\t\t\tif (!extension) {\n\t\t\t\t\t\t$.error(\n\t\t\t\t\t\t\t\"Could not apply extension '\" +\n\t\t\t\t\t\t\t\textName +\n\t\t\t\t\t\t\t\t\"' (it is not registered, did you forget to include it?)\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Add extension options as tree.options.EXTENSION\n\t\t\t\t\t// \t_assert(!this.tree.options[extName], \"Extension name must not exist as option name: \" + extName);\n\n\t\t\t\t\t// console.info(\"extend \" + extName, extension.options, this.tree.options[extName])\n\t\t\t\t\t// issue #876: we want to replace custom array-options, not merge them\n\t\t\t\t\tthis.tree.options[extName] = _simpleDeepMerge(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\textension.options,\n\t\t\t\t\t\tthis.tree.options[extName]\n\t\t\t\t\t);\n\t\t\t\t\t// this.tree.options[extName] = $.extend(true, {}, extension.options, this.tree.options[extName]);\n\n\t\t\t\t\t// console.info(\"extend \" + extName + \" =>\", this.tree.options[extName])\n\t\t\t\t\t// console.info(\"extend \" + extName + \" org default =>\", extension.options)\n\n\t\t\t\t\t// Add a namespace tree.ext.EXTENSION, to hold instance data\n\t\t\t\t\t_assert(\n\t\t\t\t\t\tthis.tree.ext[extName] === undefined,\n\t\t\t\t\t\t\"Extension name must not exist as Fancytree.ext attribute: '\" +\n\t\t\t\t\t\t\textName +\n\t\t\t\t\t\t\t\"'\"\n\t\t\t\t\t);\n\t\t\t\t\t// this.tree[extName] = extension;\n\t\t\t\t\tthis.tree.ext[extName] = {};\n\t\t\t\t\t// Subclass Fancytree methods using proxies.\n\t\t\t\t\t_subclassObject(this.tree, base, extension, extName);\n\t\t\t\t\t// current extension becomes base for the next extension\n\t\t\t\t\tbase = extension;\n\t\t\t\t}\n\t\t\t\t//\n\t\t\t\tif (opts.icons !== undefined) {\n\t\t\t\t\t// 2015-11-16\n\t\t\t\t\tif (opts.icon === true) {\n\t\t\t\t\t\tthis.tree.warn(\n\t\t\t\t\t\t\t\"'icons' tree option is deprecated since v2.14.0: use 'icon' instead\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\topts.icon = opts.icons;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$.error(\n\t\t\t\t\t\t\t\"'icons' tree option is deprecated since v2.14.0: use 'icon' only instead\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (opts.iconClass !== undefined) {\n\t\t\t\t\t// 2015-11-16\n\t\t\t\t\tif (opts.icon) {\n\t\t\t\t\t\t$.error(\n\t\t\t\t\t\t\t\"'iconClass' tree option is deprecated since v2.14.0: use 'icon' only instead\"\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.tree.warn(\n\t\t\t\t\t\t\t\"'iconClass' tree option is deprecated since v2.14.0: use 'icon' instead\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\topts.icon = opts.iconClass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (opts.tabbable !== undefined) {\n\t\t\t\t\t// 2016-04-04\n\t\t\t\t\topts.tabindex = opts.tabbable ? \"0\" : \"-1\";\n\t\t\t\t\tthis.tree.warn(\n\t\t\t\t\t\t\"'tabbable' tree option is deprecated since v2.17.0: use 'tabindex='\" +\n\t\t\t\t\t\t\topts.tabindex +\n\t\t\t\t\t\t\t\"' instead\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t//\n\t\t\t\tthis.tree._callHook(\"treeCreate\", this.tree);\n\t\t\t\t// Note: 'fancytreecreate' event is fired by widget base class\n\t\t\t\t//        this.tree._triggerTreeEvent(\"create\");\n\t\t\t},\n\n\t\t\t/* Called on every $().fancytree() */\n\t\t\t_init: function () {\n\t\t\t\tthis.tree._callHook(\"treeInit\", this.tree);\n\t\t\t\t// TODO: currently we call bind after treeInit, because treeInit\n\t\t\t\t// might change tree.$container.\n\t\t\t\t// It would be better, to move event binding into hooks altogether\n\t\t\t\tthis._bind();\n\t\t\t},\n\n\t\t\t/* Use the _setOption method to respond to changes to options. */\n\t\t\t_setOption: function (key, value) {\n\t\t\t\treturn this.tree._callHook(\n\t\t\t\t\t\"treeSetOption\",\n\t\t\t\t\tthis.tree,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t},\n\n\t\t\t/** Use the destroy method to clean up any modifications your widget has made to the DOM */\n\t\t\t_destroy: function () {\n\t\t\t\tthis._unbind();\n\t\t\t\tthis.tree._callHook(\"treeDestroy\", this.tree);\n\t\t\t\t// In jQuery UI 1.8, you must invoke the destroy method from the base widget\n\t\t\t\t// $.Widget.prototype.destroy.call(this);\n\t\t\t\t// TODO: delete tree and nodes to make garbage collect easier?\n\t\t\t\t// TODO: In jQuery UI 1.9 and above, you would define _destroy instead of destroy and not call the base method\n\t\t\t},\n\n\t\t\t// -------------------------------------------------------------------------\n\n\t\t\t/* Remove all event handlers for our namespace */\n\t\t\t_unbind: function () {\n\t\t\t\tvar ns = this.tree._ns;\n\t\t\t\tthis.element.off(ns);\n\t\t\t\tthis.tree.$container.off(ns);\n\t\t\t\t$(document).off(ns);\n\t\t\t},\n\t\t\t/* Add mouse and kyboard handlers to the container */\n\t\t\t_bind: function () {\n\t\t\t\tvar self = this,\n\t\t\t\t\topts = this.options,\n\t\t\t\t\ttree = this.tree,\n\t\t\t\t\tns = tree._ns;\n\t\t\t\t// selstartEvent = ( $.support.selectstart ? \"selectstart\" : \"mousedown\" )\n\n\t\t\t\t// Remove all previuous handlers for this tree\n\t\t\t\tthis._unbind();\n\n\t\t\t\t//alert(\"keydown\" + ns + \"foc=\" + tree.hasFocus() + tree.$container);\n\t\t\t\t// tree.debug(\"bind events; container: \", tree.$container);\n\t\t\t\ttree.$container\n\t\t\t\t\t.on(\"focusin\" + ns + \" focusout\" + ns, function (event) {\n\t\t\t\t\t\tvar node = FT.getNode(event),\n\t\t\t\t\t\t\tflag = event.type === \"focusin\";\n\n\t\t\t\t\t\tif (!flag && node && $(event.target).is(\"a\")) {\n\t\t\t\t\t\t\t// #764\n\t\t\t\t\t\t\tnode.debug(\n\t\t\t\t\t\t\t\t\"Ignored focusout on embedded <a> element.\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// tree.treeOnFocusInOut.call(tree, event);\n\t\t\t\t\t\t// tree.debug(\"Tree container got event \" + event.type, node, event, FT.getEventTarget(event));\n\t\t\t\t\t\tif (flag) {\n\t\t\t\t\t\t\tif (tree._getExpiringValue(\"focusin\")) {\n\t\t\t\t\t\t\t\t// #789: IE 11 may send duplicate focusin events\n\t\t\t\t\t\t\t\ttree.debug(\"Ignored double focusin.\");\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttree._setExpiringValue(\"focusin\", true, 50);\n\n\t\t\t\t\t\t\tif (!node) {\n\t\t\t\t\t\t\t\t// #789: IE 11 may send focusin before mousdown(?)\n\t\t\t\t\t\t\t\tnode = tree._getExpiringValue(\"mouseDownNode\");\n\t\t\t\t\t\t\t\tif (node) {\n\t\t\t\t\t\t\t\t\ttree.debug(\n\t\t\t\t\t\t\t\t\t\t\"Reconstruct mouse target for focusin from recent event.\"\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\tif (node) {\n\t\t\t\t\t\t\t// For example clicking into an <input> that is part of a node\n\t\t\t\t\t\t\ttree._callHook(\n\t\t\t\t\t\t\t\t\"nodeSetFocus\",\n\t\t\t\t\t\t\t\ttree._makeHookContext(node, event),\n\t\t\t\t\t\t\t\tflag\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttree.tbody &&\n\t\t\t\t\t\t\t\t$(event.target).parents(\n\t\t\t\t\t\t\t\t\t\"table.fancytree-container > thead\"\n\t\t\t\t\t\t\t\t).length\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// #767: ignore events in the table's header\n\t\t\t\t\t\t\t\ttree.debug(\n\t\t\t\t\t\t\t\t\t\"Ignore focus event outside table body.\",\n\t\t\t\t\t\t\t\t\tevent\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\ttree._callHook(\"treeSetFocus\", tree, flag);\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\t.on(\n\t\t\t\t\t\t\"selectstart\" + ns,\n\t\t\t\t\t\t\"span.fancytree-title\",\n\t\t\t\t\t\tfunction (event) {\n\t\t\t\t\t\t\t// prevent mouse-drags to select text ranges\n\t\t\t\t\t\t\t// tree.debug(\"<span title> got event \" + event.type);\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t\t.on(\"keydown\" + ns, function (event) {\n\t\t\t\t\t\t// TODO: also bind keyup and keypress\n\t\t\t\t\t\t// tree.debug(\"got event \" + event.type + \", hasFocus:\" + tree.hasFocus());\n\t\t\t\t\t\t// if(opts.disabled || opts.keyboard === false || !tree.hasFocus() ){\n\t\t\t\t\t\tif (opts.disabled || opts.keyboard === false) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar res,\n\t\t\t\t\t\t\tnode = tree.focusNode, // node may be null\n\t\t\t\t\t\t\tctx = tree._makeHookContext(node || tree, event),\n\t\t\t\t\t\t\tprevPhase = tree.phase;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\ttree.phase = \"userEvent\";\n\t\t\t\t\t\t\t// If a 'fancytreekeydown' handler returns false, skip the default\n\t\t\t\t\t\t\t// handling (implemented by tree.nodeKeydown()).\n\t\t\t\t\t\t\tif (node) {\n\t\t\t\t\t\t\t\tres = tree._triggerNodeEvent(\n\t\t\t\t\t\t\t\t\t\"keydown\",\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tevent\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\tres = tree._triggerTreeEvent(\"keydown\", event);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (res === \"preventNav\") {\n\t\t\t\t\t\t\t\tres = true; // prevent keyboard navigation, but don't prevent default handling of embedded input controls\n\t\t\t\t\t\t\t} else if (res !== false) {\n\t\t\t\t\t\t\t\tres = tree._callHook(\"nodeKeydown\", ctx);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn res;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\ttree.phase = prevPhase;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.on(\"mousedown\" + ns, function (event) {\n\t\t\t\t\t\tvar et = FT.getEventTarget(event);\n\t\t\t\t\t\t// self.tree.debug(\"event(\" + event.type + \"): node: \", et.node);\n\t\t\t\t\t\t// #712: Store the clicked node, so we can use it when we get a focusin event\n\t\t\t\t\t\t//       ('click' event fires after focusin)\n\t\t\t\t\t\t// tree.debug(\"event(\" + event.type + \"): node: \", et.node);\n\t\t\t\t\t\ttree._lastMousedownNode = et ? et.node : null;\n\t\t\t\t\t\t// #789: Store the node also for a short period, so we can use it\n\t\t\t\t\t\t// in a *resulting* focusin event\n\t\t\t\t\t\ttree._setExpiringValue(\n\t\t\t\t\t\t\t\"mouseDownNode\",\n\t\t\t\t\t\t\ttree._lastMousedownNode\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.on(\"click\" + ns + \" dblclick\" + ns, function (event) {\n\t\t\t\t\t\tif (opts.disabled) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar ctx,\n\t\t\t\t\t\t\tet = FT.getEventTarget(event),\n\t\t\t\t\t\t\tnode = et.node,\n\t\t\t\t\t\t\ttree = self.tree,\n\t\t\t\t\t\t\tprevPhase = tree.phase;\n\n\t\t\t\t\t\t// self.tree.debug(\"event(\" + event.type + \"): node: \", node);\n\t\t\t\t\t\tif (!node) {\n\t\t\t\t\t\t\treturn true; // Allow bubbling of other events\n\t\t\t\t\t\t}\n\t\t\t\t\t\tctx = tree._makeHookContext(node, event);\n\t\t\t\t\t\t// self.tree.debug(\"event(\" + event.type + \"): node: \", node);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\ttree.phase = \"userEvent\";\n\t\t\t\t\t\t\tswitch (event.type) {\n\t\t\t\t\t\t\t\tcase \"click\":\n\t\t\t\t\t\t\t\t\tctx.targetType = et.type;\n\t\t\t\t\t\t\t\t\tif (node.isPagingNode()) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\ttree._triggerNodeEvent(\n\t\t\t\t\t\t\t\t\t\t\t\t\"clickPaging\",\n\t\t\t\t\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t\t\t\t) === true\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\treturn tree._triggerNodeEvent(\n\t\t\t\t\t\t\t\t\t\t\"click\",\n\t\t\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t\t) === false\n\t\t\t\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t\t\t\t: tree._callHook(\"nodeClick\", ctx);\n\t\t\t\t\t\t\t\tcase \"dblclick\":\n\t\t\t\t\t\t\t\t\tctx.targetType = et.type;\n\t\t\t\t\t\t\t\t\treturn tree._triggerNodeEvent(\n\t\t\t\t\t\t\t\t\t\t\"dblclick\",\n\t\t\t\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t\t) === false\n\t\t\t\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t\t\t\t: tree._callHook(\"nodeDblclick\", ctx);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\ttree.phase = prevPhase;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t},\n\t\t\t/** Return the active node or null.\n\t\t\t * @returns {FancytreeNode}\n\t\t\t * @deprecated Use methods of the Fancytree instance instead (<a href=\"Fancytree_Widget.html\">example above</a>).\n\t\t\t */\n\t\t\tgetActiveNode: function () {\n\t\t\t\tthis._deprecationWarning(\"getActiveNode\");\n\t\t\t\treturn this.tree.activeNode;\n\t\t\t},\n\t\t\t/** Return the matching node or null.\n\t\t\t * @param {string} key\n\t\t\t * @returns {FancytreeNode}\n\t\t\t * @deprecated Use methods of the Fancytree instance instead (<a href=\"Fancytree_Widget.html\">example above</a>).\n\t\t\t */\n\t\t\tgetNodeByKey: function (key) {\n\t\t\t\tthis._deprecationWarning(\"getNodeByKey\");\n\t\t\t\treturn this.tree.getNodeByKey(key);\n\t\t\t},\n\t\t\t/** Return the invisible system root node.\n\t\t\t * @returns {FancytreeNode}\n\t\t\t * @deprecated Use methods of the Fancytree instance instead (<a href=\"Fancytree_Widget.html\">example above</a>).\n\t\t\t */\n\t\t\tgetRootNode: function () {\n\t\t\t\tthis._deprecationWarning(\"getRootNode\");\n\t\t\t\treturn this.tree.rootNode;\n\t\t\t},\n\t\t\t/** Return the current tree instance.\n\t\t\t * @returns {Fancytree}\n\t\t\t * @deprecated Use `$.ui.fancytree.getTree()` instead (<a href=\"Fancytree_Widget.html\">example above</a>).\n\t\t\t */\n\t\t\tgetTree: function () {\n\t\t\t\tthis._deprecationWarning(\"getTree\");\n\t\t\t\treturn this.tree;\n\t\t\t},\n\t\t}\n\t);\n\n\t// $.ui.fancytree was created by the widget factory. Create a local shortcut:\n\tFT = $.ui.fancytree;\n\n\t/**\n\t * Static members in the `$.ui.fancytree` namespace.\n\t * This properties and methods can be accessed without instantiating a concrete\n\t * Fancytree instance.\n\t *\n\t * @example\n\t * // Access static members:\n\t * var node = $.ui.fancytree.getNode(element);\n\t * alert($.ui.fancytree.version);\n\t *\n\t * @mixin Fancytree_Static\n\t */\n\t$.extend(\n\t\t$.ui.fancytree,\n\t\t/** @lends Fancytree_Static# */\n\t\t{\n\t\t\t/** Version number `\"MAJOR.MINOR.PATCH\"`\n\t\t\t * @type {string} */\n\t\t\tversion: \"2.38.3\", // Set to semver by 'grunt release'\n\t\t\t/** @type {string}\n\t\t\t * @description `\"production\" for release builds` */\n\t\t\tbuildType: \"production\", // Set to 'production' by 'grunt build'\n\t\t\t/** @type {int}\n\t\t\t * @description 0: silent .. 5: verbose (default: 3 for release builds). */\n\t\t\tdebugLevel: 3, // Set to 3 by 'grunt build'\n\t\t\t// Used by $.ui.fancytree.debug() and as default for tree.options.debugLevel\n\n\t\t\t_nextId: 1,\n\t\t\t_nextNodeKey: 1,\n\t\t\t_extensions: {},\n\t\t\t// focusTree: null,\n\n\t\t\t/** Expose class object as `$.ui.fancytree._FancytreeClass`.\n\t\t\t * Useful to extend `$.ui.fancytree._FancytreeClass.prototype`.\n\t\t\t * @type {Fancytree}\n\t\t\t */\n\t\t\t_FancytreeClass: Fancytree,\n\t\t\t/** Expose class object as $.ui.fancytree._FancytreeNodeClass\n\t\t\t * Useful to extend `$.ui.fancytree._FancytreeNodeClass.prototype`.\n\t\t\t * @type {FancytreeNode}\n\t\t\t */\n\t\t\t_FancytreeNodeClass: FancytreeNode,\n\t\t\t/* Feature checks to provide backwards compatibility */\n\t\t\tjquerySupports: {\n\t\t\t\t// http://jqueryui.com/upgrade-guide/1.9/#deprecated-offset-option-merged-into-my-and-at\n\t\t\t\tpositionMyOfs: isVersionAtLeast($.ui.version, 1, 9),\n\t\t\t},\n\t\t\t/** Throw an error if condition fails (debug method).\n\t\t\t * @param {boolean} cond\n\t\t\t * @param {string} msg\n\t\t\t */\n\t\t\tassert: function (cond, msg) {\n\t\t\t\treturn _assert(cond, msg);\n\t\t\t},\n\t\t\t/** Create a new Fancytree instance on a target element.\n\t\t\t *\n\t\t\t * @param {Element | jQueryObject | string} el Target DOM element or selector\n\t\t\t * @param {FancytreeOptions} [opts] Fancytree options\n\t\t\t * @returns {Fancytree} new tree instance\n\t\t\t * @example\n\t\t\t * var tree = $.ui.fancytree.createTree(\"#tree\", {\n\t\t\t *     source: {url: \"my/webservice\"}\n\t\t\t * }); // Create tree for this matching element\n\t\t\t *\n\t\t\t * @since 2.25\n\t\t\t */\n\t\t\tcreateTree: function (el, opts) {\n\t\t\t\tvar $tree = $(el).fancytree(opts);\n\t\t\t\treturn FT.getTree($tree);\n\t\t\t},\n\t\t\t/** Return a function that executes *fn* at most every *timeout* ms.\n\t\t\t * @param {integer} timeout\n\t\t\t * @param {function} fn\n\t\t\t * @param {boolean} [invokeAsap=false]\n\t\t\t * @param {any} [ctx]\n\t\t\t */\n\t\t\tdebounce: function (timeout, fn, invokeAsap, ctx) {\n\t\t\t\tvar timer;\n\t\t\t\tif (arguments.length === 3 && typeof invokeAsap !== \"boolean\") {\n\t\t\t\t\tctx = invokeAsap;\n\t\t\t\t\tinvokeAsap = false;\n\t\t\t\t}\n\t\t\t\treturn function () {\n\t\t\t\t\tvar args = arguments;\n\t\t\t\t\tctx = ctx || this;\n\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\tinvokeAsap && !timer && fn.apply(ctx, args);\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\ttimer = setTimeout(function () {\n\t\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\t\tinvokeAsap || fn.apply(ctx, args);\n\t\t\t\t\t\ttimer = null;\n\t\t\t\t\t}, timeout);\n\t\t\t\t};\n\t\t\t},\n\t\t\t/** Write message to console if debugLevel >= 4\n\t\t\t * @param {string} msg\n\t\t\t */\n\t\t\tdebug: function (msg) {\n\t\t\t\tif ($.ui.fancytree.debugLevel >= 4) {\n\t\t\t\t\tconsoleApply(\"log\", arguments);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** Write error message to console if debugLevel >= 1.\n\t\t\t * @param {string} msg\n\t\t\t */\n\t\t\terror: function (msg) {\n\t\t\t\tif ($.ui.fancytree.debugLevel >= 1) {\n\t\t\t\t\tconsoleApply(\"error\", arguments);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** Convert `<`, `>`, `&`, `\"`, `'`, and `/` to the equivalent entities.\n\t\t\t *\n\t\t\t * @param {string} s\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tescapeHtml: function (s) {\n\t\t\t\treturn (\"\" + s).replace(REX_HTML, function (s) {\n\t\t\t\t\treturn ENTITY_MAP[s];\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** Make jQuery.position() arguments backwards compatible, i.e. if\n\t\t\t * jQuery UI version <= 1.8, convert\n\t\t\t *   { my: \"left+3 center\", at: \"left bottom\", of: $target }\n\t\t\t * to\n\t\t\t *   { my: \"left center\", at: \"left bottom\", of: $target, offset: \"3  0\" }\n\t\t\t *\n\t\t\t * See http://jqueryui.com/upgrade-guide/1.9/#deprecated-offset-option-merged-into-my-and-at\n\t\t\t * and http://jsfiddle.net/mar10/6xtu9a4e/\n\t\t\t *\n\t\t\t * @param {object} opts\n\t\t\t * @returns {object} the (potentially modified) original opts hash object\n\t\t\t */\n\t\t\tfixPositionOptions: function (opts) {\n\t\t\t\tif (opts.offset || (\"\" + opts.my + opts.at).indexOf(\"%\") >= 0) {\n\t\t\t\t\t$.error(\n\t\t\t\t\t\t\"expected new position syntax (but '%' is not supported)\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (!$.ui.fancytree.jquerySupports.positionMyOfs) {\n\t\t\t\t\tvar // parse 'left+3 center' into ['left+3 center', 'left', '+3', 'center', undefined]\n\t\t\t\t\t\tmyParts = /(\\w+)([+-]?\\d+)?\\s+(\\w+)([+-]?\\d+)?/.exec(\n\t\t\t\t\t\t\topts.my\n\t\t\t\t\t\t),\n\t\t\t\t\t\tatParts = /(\\w+)([+-]?\\d+)?\\s+(\\w+)([+-]?\\d+)?/.exec(\n\t\t\t\t\t\t\topts.at\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// convert to numbers\n\t\t\t\t\t\tdx =\n\t\t\t\t\t\t\t(myParts[2] ? +myParts[2] : 0) +\n\t\t\t\t\t\t\t(atParts[2] ? +atParts[2] : 0),\n\t\t\t\t\t\tdy =\n\t\t\t\t\t\t\t(myParts[4] ? +myParts[4] : 0) +\n\t\t\t\t\t\t\t(atParts[4] ? +atParts[4] : 0);\n\n\t\t\t\t\topts = $.extend({}, opts, {\n\t\t\t\t\t\t// make a copy and overwrite\n\t\t\t\t\t\tmy: myParts[1] + \" \" + myParts[3],\n\t\t\t\t\t\tat: atParts[1] + \" \" + atParts[3],\n\t\t\t\t\t});\n\t\t\t\t\tif (dx || dy) {\n\t\t\t\t\t\topts.offset = \"\" + dx + \" \" + dy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn opts;\n\t\t\t},\n\t\t\t/** Return a {node: FancytreeNode, type: TYPE} object for a mouse event.\n\t\t\t *\n\t\t\t * @param {Event} event Mouse event, e.g. click, ...\n\t\t\t * @returns {object} Return a {node: FancytreeNode, type: TYPE} object\n\t\t\t *     TYPE: 'title' | 'prefix' | 'expander' | 'checkbox' | 'icon' | undefined\n\t\t\t */\n\t\t\tgetEventTarget: function (event) {\n\t\t\t\tvar $target,\n\t\t\t\t\ttree,\n\t\t\t\t\ttcn = event && event.target ? event.target.className : \"\",\n\t\t\t\t\tres = { node: this.getNode(event.target), type: undefined };\n\t\t\t\t// We use a fast version of $(res.node).hasClass()\n\t\t\t\t// See http://jsperf.com/test-for-classname/2\n\t\t\t\tif (/\\bfancytree-title\\b/.test(tcn)) {\n\t\t\t\t\tres.type = \"title\";\n\t\t\t\t} else if (/\\bfancytree-expander\\b/.test(tcn)) {\n\t\t\t\t\tres.type =\n\t\t\t\t\t\tres.node.hasChildren() === false\n\t\t\t\t\t\t\t? \"prefix\"\n\t\t\t\t\t\t\t: \"expander\";\n\t\t\t\t\t// }else if( /\\bfancytree-checkbox\\b/.test(tcn) || /\\bfancytree-radio\\b/.test(tcn) ){\n\t\t\t\t} else if (/\\bfancytree-checkbox\\b/.test(tcn)) {\n\t\t\t\t\tres.type = \"checkbox\";\n\t\t\t\t} else if (/\\bfancytree(-custom)?-icon\\b/.test(tcn)) {\n\t\t\t\t\tres.type = \"icon\";\n\t\t\t\t} else if (/\\bfancytree-node\\b/.test(tcn)) {\n\t\t\t\t\t// Somewhere near the title\n\t\t\t\t\tres.type = \"title\";\n\t\t\t\t} else if (event && event.target) {\n\t\t\t\t\t$target = $(event.target);\n\t\t\t\t\tif ($target.is(\"ul[role=group]\")) {\n\t\t\t\t\t\t// #nnn: Clicking right to a node may hit the surrounding UL\n\t\t\t\t\t\ttree = res.node && res.node.tree;\n\t\t\t\t\t\t(tree || FT).debug(\"Ignoring click on outer UL.\");\n\t\t\t\t\t\tres.node = null;\n\t\t\t\t\t} else if ($target.closest(\".fancytree-title\").length) {\n\t\t\t\t\t\t// #228: clicking an embedded element inside a title\n\t\t\t\t\t\tres.type = \"title\";\n\t\t\t\t\t} else if ($target.closest(\".fancytree-checkbox\").length) {\n\t\t\t\t\t\t// E.g. <svg> inside checkbox span\n\t\t\t\t\t\tres.type = \"checkbox\";\n\t\t\t\t\t} else if ($target.closest(\".fancytree-expander\").length) {\n\t\t\t\t\t\tres.type = \"expander\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\t/** Return a string describing the affected node region for a mouse event.\n\t\t\t *\n\t\t\t * @param {Event} event Mouse event, e.g. click, mousemove, ...\n\t\t\t * @returns {string} 'title' | 'prefix' | 'expander' | 'checkbox' | 'icon' | undefined\n\t\t\t */\n\t\t\tgetEventTargetType: function (event) {\n\t\t\t\treturn this.getEventTarget(event).type;\n\t\t\t},\n\t\t\t/** Return a FancytreeNode instance from element, event, or jQuery object.\n\t\t\t *\n\t\t\t * @param {Element | jQueryObject | Event} el\n\t\t\t * @returns {FancytreeNode} matching node or null\n\t\t\t */\n\t\t\tgetNode: function (el) {\n\t\t\t\tif (el instanceof FancytreeNode) {\n\t\t\t\t\treturn el; // el already was a FancytreeNode\n\t\t\t\t} else if (el instanceof $) {\n\t\t\t\t\tel = el[0]; // el was a jQuery object: use the DOM element\n\t\t\t\t} else if (el.originalEvent !== undefined) {\n\t\t\t\t\tel = el.target; // el was an Event\n\t\t\t\t}\n\t\t\t\twhile (el) {\n\t\t\t\t\tif (el.ftnode) {\n\t\t\t\t\t\treturn el.ftnode;\n\t\t\t\t\t}\n\t\t\t\t\tel = el.parentNode;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t/** Return a Fancytree instance, from element, index, event, or jQueryObject.\n\t\t\t *\n\t\t\t * @param {Element | jQueryObject | Event | integer | string} [el]\n\t\t\t * @returns {Fancytree} matching tree or null\n\t\t\t * @example\n\t\t\t * $.ui.fancytree.getTree();  // Get first Fancytree instance on page\n\t\t\t * $.ui.fancytree.getTree(1);  // Get second Fancytree instance on page\n\t\t\t * $.ui.fancytree.getTree(event);  // Get tree for this mouse- or keyboard event\n\t\t\t * $.ui.fancytree.getTree(\"foo\");  // Get tree for this `opts.treeId`\n\t\t\t * $.ui.fancytree.getTree(\"#tree\");  // Get tree for this matching element\n\t\t\t *\n\t\t\t * @since 2.13\n\t\t\t */\n\t\t\tgetTree: function (el) {\n\t\t\t\tvar widget,\n\t\t\t\t\torgEl = el;\n\n\t\t\t\tif (el instanceof Fancytree) {\n\t\t\t\t\treturn el; // el already was a Fancytree\n\t\t\t\t}\n\t\t\t\tif (el === undefined) {\n\t\t\t\t\tel = 0; // get first tree\n\t\t\t\t}\n\t\t\t\tif (typeof el === \"number\") {\n\t\t\t\t\tel = $(\".fancytree-container\").eq(el); // el was an integer: return nth instance\n\t\t\t\t} else if (typeof el === \"string\") {\n\t\t\t\t\t// `el` may be a treeId or a selector:\n\t\t\t\t\tel = $(\"#ft-id-\" + orgEl).eq(0);\n\t\t\t\t\tif (!el.length) {\n\t\t\t\t\t\tel = $(orgEl).eq(0); // el was a selector: use first match\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tel instanceof Element ||\n\t\t\t\t\tel instanceof HTMLDocument\n\t\t\t\t) {\n\t\t\t\t\tel = $(el);\n\t\t\t\t} else if (el instanceof $) {\n\t\t\t\t\tel = el.eq(0); // el was a jQuery object: use the first\n\t\t\t\t} else if (el.originalEvent !== undefined) {\n\t\t\t\t\tel = $(el.target); // el was an Event\n\t\t\t\t}\n\t\t\t\t// el is a jQuery object wit one element here\n\t\t\t\tel = el.closest(\":ui-fancytree\");\n\t\t\t\twidget = el.data(\"ui-fancytree\") || el.data(\"fancytree\"); // the latter is required by jQuery <= 1.8\n\t\t\t\treturn widget ? widget.tree : null;\n\t\t\t},\n\t\t\t/** Return an option value that has a default, but may be overridden by a\n\t\t\t * callback or a node instance attribute.\n\t\t\t *\n\t\t\t * Evaluation sequence:\n\t\t\t *\n\t\t\t * If `tree.options.<optionName>` is a callback that returns something, use that.\n\t\t\t * Else if `node.<optionName>` is defined, use that.\n\t\t\t * Else if `tree.options.<optionName>` is a value, use that.\n\t\t\t * Else use `defaultValue`.\n\t\t\t *\n\t\t\t * @param {string} optionName name of the option property (on node and tree)\n\t\t\t * @param {FancytreeNode} node passed to the callback\n\t\t\t * @param {object} nodeObject where to look for the local option property, e.g. `node` or `node.data`\n\t\t\t * @param {object} treeOption where to look for the tree option, e.g. `tree.options` or `tree.options.dnd5`\n\t\t\t * @param {any} [defaultValue]\n\t\t\t * @returns {any}\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Check for node.foo, tree,options.foo(), and tree.options.foo:\n\t\t\t * $.ui.fancytree.evalOption(\"foo\", node, node, tree.options);\n\t\t\t * // Check for node.data.bar, tree,options.qux.bar(), and tree.options.qux.bar:\n\t\t\t * $.ui.fancytree.evalOption(\"bar\", node, node.data, tree.options.qux);\n\t\t\t *\n\t\t\t * @since 2.22\n\t\t\t */\n\t\t\tevalOption: function (\n\t\t\t\toptionName,\n\t\t\t\tnode,\n\t\t\t\tnodeObject,\n\t\t\t\ttreeOptions,\n\t\t\t\tdefaultValue\n\t\t\t) {\n\t\t\t\tvar ctx,\n\t\t\t\t\tres,\n\t\t\t\t\ttree = node.tree,\n\t\t\t\t\ttreeOpt = treeOptions[optionName],\n\t\t\t\t\tnodeOpt = nodeObject[optionName];\n\n\t\t\t\tif (_isFunction(treeOpt)) {\n\t\t\t\t\tctx = {\n\t\t\t\t\t\tnode: node,\n\t\t\t\t\t\ttree: tree,\n\t\t\t\t\t\twidget: tree.widget,\n\t\t\t\t\t\toptions: tree.widget.options,\n\t\t\t\t\t\ttypeInfo: tree.types[node.type] || {},\n\t\t\t\t\t};\n\t\t\t\t\tres = treeOpt.call(tree, { type: optionName }, ctx);\n\t\t\t\t\tif (res == null) {\n\t\t\t\t\t\tres = nodeOpt;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tres = nodeOpt == null ? treeOpt : nodeOpt;\n\t\t\t\t}\n\t\t\t\tif (res == null) {\n\t\t\t\t\tres = defaultValue; // no option set at all: return default\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\t/** Set expander, checkbox, or node icon, supporting string and object format.\n\t\t\t *\n\t\t\t * @param {Element | jQueryObject} span\n\t\t\t * @param {string} baseClass\n\t\t\t * @param {string | object} icon\n\t\t\t * @since 2.27\n\t\t\t */\n\t\t\tsetSpanIcon: function (span, baseClass, icon) {\n\t\t\t\tvar $span = $(span);\n\n\t\t\t\tif (typeof icon === \"string\") {\n\t\t\t\t\t$span.attr(\"class\", baseClass + \" \" + icon);\n\t\t\t\t} else {\n\t\t\t\t\t// support object syntax: { text: ligature, addClasse: classname }\n\t\t\t\t\tif (icon.text) {\n\t\t\t\t\t\t$span.text(\"\" + icon.text);\n\t\t\t\t\t} else if (icon.html) {\n\t\t\t\t\t\tspan.innerHTML = icon.html;\n\t\t\t\t\t}\n\t\t\t\t\t$span.attr(\n\t\t\t\t\t\t\"class\",\n\t\t\t\t\t\tbaseClass + \" \" + (icon.addClass || \"\")\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** Convert a keydown or mouse event to a canonical string like 'ctrl+a',\n\t\t\t * 'ctrl+shift+f2', 'shift+leftdblclick'.\n\t\t\t *\n\t\t\t * This is especially handy for switch-statements in event handlers.\n\t\t\t *\n\t\t\t * @param {event}\n\t\t\t * @returns {string}\n\t\t\t *\n\t\t\t * @example\n\n\t\t\tswitch( $.ui.fancytree.eventToString(event) ) {\n\t\t\t\tcase \"-\":\n\t\t\t\t\ttree.nodeSetExpanded(ctx, false);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"shift+return\":\n\t\t\t\t\ttree.nodeSetActive(ctx, true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tres = node.navigate(event.which, activate);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\thandled = false;\n\t\t\t}\n\t\t\tif( handled ){\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t\t*/\n\t\t\teventToString: function (event) {\n\t\t\t\t// Poor-man's hotkeys. See here for a complete implementation:\n\t\t\t\t//   https://github.com/jeresig/jquery.hotkeys\n\t\t\t\tvar which = event.which,\n\t\t\t\t\tet = event.type,\n\t\t\t\t\ts = [];\n\n\t\t\t\tif (event.altKey) {\n\t\t\t\t\ts.push(\"alt\");\n\t\t\t\t}\n\t\t\t\tif (event.ctrlKey) {\n\t\t\t\t\ts.push(\"ctrl\");\n\t\t\t\t}\n\t\t\t\tif (event.metaKey) {\n\t\t\t\t\ts.push(\"meta\");\n\t\t\t\t}\n\t\t\t\tif (event.shiftKey) {\n\t\t\t\t\ts.push(\"shift\");\n\t\t\t\t}\n\n\t\t\t\tif (et === \"click\" || et === \"dblclick\") {\n\t\t\t\t\ts.push(MOUSE_BUTTONS[event.button] + et);\n\t\t\t\t} else if (et === \"wheel\") {\n\t\t\t\t\ts.push(et);\n\t\t\t\t} else if (!IGNORE_KEYCODES[which]) {\n\t\t\t\t\ts.push(\n\t\t\t\t\t\tSPECIAL_KEYCODES[which] ||\n\t\t\t\t\t\t\tString.fromCharCode(which).toLowerCase()\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn s.join(\"+\");\n\t\t\t},\n\t\t\t/** Write message to console if debugLevel >= 3\n\t\t\t * @param {string} msg\n\t\t\t */\n\t\t\tinfo: function (msg) {\n\t\t\t\tif ($.ui.fancytree.debugLevel >= 3) {\n\t\t\t\t\tconsoleApply(\"info\", arguments);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/* @deprecated: use eventToString(event) instead.\n\t\t\t */\n\t\t\tkeyEventToString: function (event) {\n\t\t\t\tthis.warn(\n\t\t\t\t\t\"keyEventToString() is deprecated: use eventToString()\"\n\t\t\t\t);\n\t\t\t\treturn this.eventToString(event);\n\t\t\t},\n\t\t\t/** Return a wrapped handler method, that provides `this._super`.\n\t\t\t *\n\t\t\t * @example\n\t\t\t\t// Implement `opts.createNode` event to add the 'draggable' attribute\n\t\t\t\t$.ui.fancytree.overrideMethod(ctx.options, \"createNode\", function(event, data) {\n\t\t\t\t\t// Default processing if any\n\t\t\t\t\tthis._super.apply(this, arguments);\n\t\t\t\t\t// Add 'draggable' attribute\n\t\t\t\t\tdata.node.span.draggable = true;\n\t\t\t\t});\n\t\t\t *\n\t\t\t * @param {object} instance\n\t\t\t * @param {string} methodName\n\t\t\t * @param {function} handler\n\t\t\t * @param {object} [context] optional context\n\t\t\t */\n\t\t\toverrideMethod: function (instance, methodName, handler, context) {\n\t\t\t\tvar prevSuper,\n\t\t\t\t\t_super = instance[methodName] || $.noop;\n\n\t\t\t\tinstance[methodName] = function () {\n\t\t\t\t\tvar self = context || this;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tprevSuper = self._super;\n\t\t\t\t\t\tself._super = _super;\n\t\t\t\t\t\treturn handler.apply(self, arguments);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tself._super = prevSuper;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\t\t\t/**\n\t\t\t * Parse tree data from HTML <ul> markup\n\t\t\t *\n\t\t\t * @param {jQueryObject} $ul\n\t\t\t * @returns {NodeData[]}\n\t\t\t */\n\t\t\tparseHtml: function ($ul) {\n\t\t\t\tvar classes,\n\t\t\t\t\tclassName,\n\t\t\t\t\textraClasses,\n\t\t\t\t\ti,\n\t\t\t\t\tiPos,\n\t\t\t\t\tl,\n\t\t\t\t\ttmp,\n\t\t\t\t\ttmp2,\n\t\t\t\t\t$children = $ul.find(\">li\"),\n\t\t\t\t\tchildren = [];\n\n\t\t\t\t$children.each(function () {\n\t\t\t\t\tvar allData,\n\t\t\t\t\t\tlowerCaseAttr,\n\t\t\t\t\t\t$li = $(this),\n\t\t\t\t\t\t$liSpan = $li.find(\">span\", this).first(),\n\t\t\t\t\t\t$liA = $liSpan.length ? null : $li.find(\">a\").first(),\n\t\t\t\t\t\td = { tooltip: null, data: {} };\n\n\t\t\t\t\tif ($liSpan.length) {\n\t\t\t\t\t\td.title = $liSpan.html();\n\t\t\t\t\t} else if ($liA && $liA.length) {\n\t\t\t\t\t\t// If a <li><a> tag is specified, use it literally and extract href/target.\n\t\t\t\t\t\td.title = $liA.html();\n\t\t\t\t\t\td.data.href = $liA.attr(\"href\");\n\t\t\t\t\t\td.data.target = $liA.attr(\"target\");\n\t\t\t\t\t\td.tooltip = $liA.attr(\"title\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If only a <li> tag is specified, use the trimmed string up to\n\t\t\t\t\t\t// the next child <ul> tag.\n\t\t\t\t\t\td.title = $li.html();\n\t\t\t\t\t\tiPos = d.title.search(/<ul/i);\n\t\t\t\t\t\tif (iPos >= 0) {\n\t\t\t\t\t\t\td.title = d.title.substring(0, iPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\td.title = _trim(d.title);\n\n\t\t\t\t\t// Make sure all fields exist\n\t\t\t\t\tfor (i = 0, l = CLASS_ATTRS.length; i < l; i++) {\n\t\t\t\t\t\td[CLASS_ATTRS[i]] = undefined;\n\t\t\t\t\t}\n\t\t\t\t\t// Initialize to `true`, if class is set and collect extraClasses\n\t\t\t\t\tclasses = this.className.split(\" \");\n\t\t\t\t\textraClasses = [];\n\t\t\t\t\tfor (i = 0, l = classes.length; i < l; i++) {\n\t\t\t\t\t\tclassName = classes[i];\n\t\t\t\t\t\tif (CLASS_ATTR_MAP[className]) {\n\t\t\t\t\t\t\td[className] = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\textraClasses.push(className);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\td.extraClasses = extraClasses.join(\" \");\n\n\t\t\t\t\t// Parse node options from ID, title and class attributes\n\t\t\t\t\ttmp = $li.attr(\"title\");\n\t\t\t\t\tif (tmp) {\n\t\t\t\t\t\td.tooltip = tmp; // overrides <a title='...'>\n\t\t\t\t\t}\n\t\t\t\t\ttmp = $li.attr(\"id\");\n\t\t\t\t\tif (tmp) {\n\t\t\t\t\t\td.key = tmp;\n\t\t\t\t\t}\n\t\t\t\t\t// Translate hideCheckbox -> checkbox:false\n\t\t\t\t\tif ($li.attr(\"hideCheckbox\")) {\n\t\t\t\t\t\td.checkbox = false;\n\t\t\t\t\t}\n\t\t\t\t\t// Add <li data-NAME='...'> as node.data.NAME\n\t\t\t\t\tallData = _getElementDataAsDict($li);\n\t\t\t\t\tif (allData && !$.isEmptyObject(allData)) {\n\t\t\t\t\t\t// #507: convert data-hidecheckbox (lower case) to hideCheckbox\n\t\t\t\t\t\tfor (lowerCaseAttr in NODE_ATTR_LOWERCASE_MAP) {\n\t\t\t\t\t\t\tif (_hasProp(allData, lowerCaseAttr)) {\n\t\t\t\t\t\t\t\tallData[\n\t\t\t\t\t\t\t\t\tNODE_ATTR_LOWERCASE_MAP[lowerCaseAttr]\n\t\t\t\t\t\t\t\t] = allData[lowerCaseAttr];\n\t\t\t\t\t\t\t\tdelete allData[lowerCaseAttr];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// #56: Allow to set special node.attributes from data-...\n\t\t\t\t\t\tfor (i = 0, l = NODE_ATTRS.length; i < l; i++) {\n\t\t\t\t\t\t\ttmp = NODE_ATTRS[i];\n\t\t\t\t\t\t\ttmp2 = allData[tmp];\n\t\t\t\t\t\t\tif (tmp2 != null) {\n\t\t\t\t\t\t\t\tdelete allData[tmp];\n\t\t\t\t\t\t\t\td[tmp] = tmp2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// All other data-... goes to node.data...\n\t\t\t\t\t\t$.extend(d.data, allData);\n\t\t\t\t\t}\n\t\t\t\t\t// Recursive reading of child nodes, if LI tag contains an UL tag\n\t\t\t\t\t$ul = $li.find(\">ul\").first();\n\t\t\t\t\tif ($ul.length) {\n\t\t\t\t\t\td.children = $.ui.fancytree.parseHtml($ul);\n\t\t\t\t\t} else {\n\t\t\t\t\t\td.children = d.lazy ? undefined : null;\n\t\t\t\t\t}\n\t\t\t\t\tchildren.push(d);\n\t\t\t\t\t// FT.debug(\"parse \", d, children);\n\t\t\t\t});\n\t\t\t\treturn children;\n\t\t\t},\n\t\t\t/** Add Fancytree extension definition to the list of globally available extensions.\n\t\t\t *\n\t\t\t * @param {object} definition\n\t\t\t */\n\t\t\tregisterExtension: function (definition) {\n\t\t\t\t_assert(\n\t\t\t\t\tdefinition.name != null,\n\t\t\t\t\t\"extensions must have a `name` property.\"\n\t\t\t\t);\n\t\t\t\t_assert(\n\t\t\t\t\tdefinition.version != null,\n\t\t\t\t\t\"extensions must have a `version` property.\"\n\t\t\t\t);\n\t\t\t\t$.ui.fancytree._extensions[definition.name] = definition;\n\t\t\t},\n\t\t\t/** Replacement for the deprecated `jQuery.trim()`.\n\t\t\t *\n\t\t\t * @param {string} text\n\t\t\t */\n\t\t\ttrim: _trim,\n\t\t\t/** Inverse of escapeHtml().\n\t\t\t *\n\t\t\t * @param {string} s\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tunescapeHtml: function (s) {\n\t\t\t\tvar e = document.createElement(\"div\");\n\t\t\t\te.innerHTML = s;\n\t\t\t\treturn e.childNodes.length === 0\n\t\t\t\t\t? \"\"\n\t\t\t\t\t: e.childNodes[0].nodeValue;\n\t\t\t},\n\t\t\t/** Write warning message to console if debugLevel >= 2.\n\t\t\t * @param {string} msg\n\t\t\t */\n\t\t\twarn: function (msg) {\n\t\t\t\tif ($.ui.fancytree.debugLevel >= 2) {\n\t\t\t\t\tconsoleApply(\"warn\", arguments);\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n\n\t// Value returned by `require('jquery.fancytree')`\n\treturn $.ui.fancytree;\n}); // End of closure\n", "/*!\n * Fancytree \"Win8\" skin.\n *\n * DON'T EDIT THE CSS FILE DIRECTLY, since it is automatically generated from\n * the LESS templates.\n */\n/*******************************************************************************\n * Common Styles for Fancytree Skins.\n *\n * This section is automatically generated from the `skin-common.less` template.\n *\n * Copyright (c) 2008-2023, Martin Wendt (https://wwWendt.de)\n * Released under the MIT license\n * https://github.com/mar10/fancytree/wiki/LicenseInfo\n *\n * @version 2.38.3\n * @date 2023-02-01T20:52:50Z\n******************************************************************************/\n/*------------------------------------------------------------------------------\n * Helpers\n *----------------------------------------------------------------------------*/\n.fancytree-helper-hidden {\n  display: none;\n}\n.fancytree-helper-indeterminate-cb {\n  color: #777;\n}\n.fancytree-helper-disabled {\n  color: #c0c0c0;\n}\n/* Helper to allow spinning loader icon with glyph-, ligature-, and SVG-icons. */\n.fancytree-helper-spin {\n  -webkit-animation: spin 1000ms infinite linear;\n  animation: spin 1000ms infinite linear;\n}\n@-webkit-keyframes spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n@keyframes spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n/*------------------------------------------------------------------------------\n * Container and UL / LI\n *----------------------------------------------------------------------------*/\nul.fancytree-container {\n  font-family: tahoma, arial, helvetica;\n  font-size: 10pt;\n  white-space: nowrap;\n  padding: 3px;\n  margin: 0;\n  background-color: white;\n  border: 1px dotted gray;\n  min-height: 0%;\n  position: relative;\n}\nul.fancytree-container ul {\n  padding: 0 0 0 16px;\n  margin: 0;\n}\nul.fancytree-container ul > li:before {\n  content: none;\n}\nul.fancytree-container li {\n  list-style-image: none;\n  list-style-position: outside;\n  list-style-type: none;\n  -moz-background-clip: border;\n  -moz-background-inline-policy: continuous;\n  -moz-background-origin: padding;\n  background-attachment: scroll;\n  background-color: transparent;\n  background-position: 0px 0px;\n  background-repeat: repeat-y;\n  background-image: none;\n  margin: 0;\n}\nul.fancytree-container li.fancytree-lastsib {\n  background-image: none;\n}\n.ui-fancytree-disabled ul.fancytree-container {\n  opacity: 0.5;\n  background-color: silver;\n}\nul.fancytree-connectors.fancytree-container li {\n  background-image: url(\"../skin-win8/vline.gif\");\n  background-position: 0 0;\n}\nul.fancytree-container li.fancytree-lastsib,\nul.fancytree-no-connector > li {\n  background-image: none;\n}\nli.fancytree-animating {\n  position: relative;\n}\n/*------------------------------------------------------------------------------\n * Common icon definitions\n *----------------------------------------------------------------------------*/\nspan.fancytree-empty,\nspan.fancytree-vline,\nspan.fancytree-expander,\nspan.fancytree-icon,\nspan.fancytree-checkbox,\nspan.fancytree-drag-helper-img,\n#fancytree-drop-marker {\n  width: 16px;\n  height: 16px;\n  display: inline-block;\n  vertical-align: top;\n  background-repeat: no-repeat;\n  background-image: url(\"../skin-win8/icons.gif\");\n  background-position: 0px 0px;\n}\nspan.fancytree-icon,\nspan.fancytree-checkbox,\nspan.fancytree-expander,\nspan.fancytree-custom-icon {\n  margin-top: 2px;\n}\n/* Used by icon option: */\nspan.fancytree-custom-icon {\n  width: 16px;\n  height: 16px;\n  display: inline-block;\n  margin-left: 3px;\n  background-position: 0px 0px;\n}\n/* Used by 'icon' node option: */\nimg.fancytree-icon {\n  width: 16px;\n  height: 16px;\n  margin-left: 3px;\n  margin-top: 2px;\n  vertical-align: top;\n  border-style: none;\n}\n/*------------------------------------------------------------------------------\n * Expander icon\n *\n * Note: IE6 doesn't correctly evaluate multiples class names,\n *\t\t so we create combined class names that can be used in the CSS.\n *\n * Prefix: fancytree-exp-\n * 1st character: 'e': expanded, 'c': collapsed, 'n': no children\n * 2nd character (optional): 'd': lazy (Delayed)\n * 3rd character (optional): 'l': Last sibling\n *----------------------------------------------------------------------------*/\nspan.fancytree-expander {\n  cursor: pointer;\n}\n.fancytree-exp-n span.fancytree-expander,\n.fancytree-exp-nl span.fancytree-expander {\n  background-image: none;\n  cursor: default;\n}\n.fancytree-connectors .fancytree-exp-n span.fancytree-expander,\n.fancytree-connectors .fancytree-exp-nl span.fancytree-expander {\n  background-image: url(\"../skin-win8/icons.gif\");\n  margin-top: 0;\n}\n.fancytree-connectors .fancytree-exp-n span.fancytree-expander,\n.fancytree-connectors .fancytree-exp-n span.fancytree-expander:hover {\n  background-position: 0px -64px;\n}\n.fancytree-connectors .fancytree-exp-nl span.fancytree-expander,\n.fancytree-connectors .fancytree-exp-nl span.fancytree-expander:hover {\n  background-position: -16px -64px;\n}\n.fancytree-exp-c span.fancytree-expander {\n  background-position: 0px -80px;\n}\n.fancytree-exp-c span.fancytree-expander:hover {\n  background-position: -16px -80px;\n}\n.fancytree-exp-cl span.fancytree-expander {\n  background-position: 0px -96px;\n}\n.fancytree-exp-cl span.fancytree-expander:hover {\n  background-position: -16px -96px;\n}\n.fancytree-exp-cd span.fancytree-expander {\n  background-position: -64px -80px;\n}\n.fancytree-exp-cd span.fancytree-expander:hover {\n  background-position: -80px -80px;\n}\n.fancytree-exp-cdl span.fancytree-expander {\n  background-position: -64px -96px;\n}\n.fancytree-exp-cdl span.fancytree-expander:hover {\n  background-position: -80px -96px;\n}\n.fancytree-exp-e span.fancytree-expander,\n.fancytree-exp-ed span.fancytree-expander {\n  background-position: -32px -80px;\n}\n.fancytree-exp-e span.fancytree-expander:hover,\n.fancytree-exp-ed span.fancytree-expander:hover {\n  background-position: -48px -80px;\n}\n.fancytree-exp-el span.fancytree-expander,\n.fancytree-exp-edl span.fancytree-expander {\n  background-position: -32px -96px;\n}\n.fancytree-exp-el span.fancytree-expander:hover,\n.fancytree-exp-edl span.fancytree-expander:hover {\n  background-position: -48px -96px;\n}\n/* Fade out expanders, when container is not hovered or active */\n.fancytree-fade-expander span.fancytree-expander {\n  transition: opacity 1.5s;\n  opacity: 0;\n}\n.fancytree-fade-expander:hover span.fancytree-expander,\n.fancytree-fade-expander.fancytree-treefocus span.fancytree-expander,\n.fancytree-fade-expander .fancytree-treefocus span.fancytree-expander,\n.fancytree-fade-expander [class*=\"fancytree-statusnode-\"] span.fancytree-expander {\n  transition: opacity 0.6s;\n  opacity: 1;\n}\n/*------------------------------------------------------------------------------\n * Checkbox icon\n *----------------------------------------------------------------------------*/\nspan.fancytree-checkbox {\n  margin-left: 3px;\n  background-position: 0px -32px;\n}\nspan.fancytree-checkbox:hover {\n  background-position: -16px -32px;\n}\nspan.fancytree-checkbox.fancytree-radio {\n  background-position: 0px -48px;\n}\nspan.fancytree-checkbox.fancytree-radio:hover {\n  background-position: -16px -48px;\n}\n.fancytree-partsel span.fancytree-checkbox {\n  background-position: -64px -32px;\n}\n.fancytree-partsel span.fancytree-checkbox:hover {\n  background-position: -80px -32px;\n}\n.fancytree-partsel span.fancytree-checkbox.fancytree-radio {\n  background-position: -64px -48px;\n}\n.fancytree-partsel span.fancytree-checkbox.fancytree-radio:hover {\n  background-position: -80px -48px;\n}\n.fancytree-selected span.fancytree-checkbox {\n  background-position: -32px -32px;\n}\n.fancytree-selected span.fancytree-checkbox:hover {\n  background-position: -48px -32px;\n}\n.fancytree-selected span.fancytree-checkbox.fancytree-radio {\n  background-position: -32px -48px;\n}\n.fancytree-selected span.fancytree-checkbox.fancytree-radio:hover {\n  background-position: -48px -48px;\n}\n.fancytree-unselectable span.fancytree-checkbox {\n  opacity: 0.4;\n  filter: alpha(opacity=40);\n}\n.fancytree-unselectable span.fancytree-checkbox:hover {\n  background-position: 0px -32px;\n}\n.fancytree-unselectable span.fancytree-checkbox.fancytree-radio:hover {\n  background-position: 0px -48px;\n}\n.fancytree-unselectable.fancytree-partsel span.fancytree-checkbox:hover {\n  background-position: -64px -32px;\n}\n.fancytree-unselectable.fancytree-selected span.fancytree-checkbox:hover {\n  background-position: -32px -32px;\n}\n.fancytree-unselectable.fancytree-selected span.fancytree-checkbox.fancytree-radio:hover {\n  background-position: -32px -48px;\n}\n.fancytree-container.fancytree-checkbox-auto-hide span.fancytree-checkbox {\n  visibility: hidden;\n}\n.fancytree-container.fancytree-checkbox-auto-hide .fancytree-node:hover span.fancytree-checkbox,\n.fancytree-container.fancytree-checkbox-auto-hide tr:hover td span.fancytree-checkbox,\n.fancytree-container.fancytree-checkbox-auto-hide .fancytree-node.fancytree-selected span.fancytree-checkbox,\n.fancytree-container.fancytree-checkbox-auto-hide tr.fancytree-selected td span.fancytree-checkbox {\n  visibility: unset;\n}\n.fancytree-container.fancytree-checkbox-auto-hide.fancytree-treefocus .fancytree-node.fancytree-active span.fancytree-checkbox,\n.fancytree-container.fancytree-checkbox-auto-hide.fancytree-treefocus tr.fancytree-active td span.fancytree-checkbox {\n  visibility: unset;\n}\n/*------------------------------------------------------------------------------\n * Node type icon\n * Note: IE6 doesn't correctly evaluate multiples class names,\n *\t\t so we create combined class names that can be used in the CSS.\n *\n * Prefix: fancytree-ico-\n * 1st character: 'e': expanded, 'c': collapsed\n * 2nd character (optional): 'f': folder\n *----------------------------------------------------------------------------*/\nspan.fancytree-icon {\n  margin-left: 3px;\n  background-position: 0px 0px;\n}\n/* Documents */\n.fancytree-ico-c span.fancytree-icon:hover {\n  background-position: -16px 0px;\n}\n.fancytree-has-children.fancytree-ico-c span.fancytree-icon {\n  background-position: -32px 0px;\n}\n.fancytree-has-children.fancytree-ico-c span.fancytree-icon:hover {\n  background-position: -48px 0px;\n}\n.fancytree-ico-e span.fancytree-icon {\n  background-position: -64px 0px;\n}\n.fancytree-ico-e span.fancytree-icon:hover {\n  background-position: -80px 0px;\n}\n/* Folders */\n.fancytree-ico-cf span.fancytree-icon {\n  background-position: 0px -16px;\n}\n.fancytree-ico-cf span.fancytree-icon:hover {\n  background-position: -16px -16px;\n}\n.fancytree-has-children.fancytree-ico-cf span.fancytree-icon {\n  background-position: -32px -16px;\n}\n.fancytree-has-children.fancytree-ico-cf span.fancytree-icon:hover {\n  background-position: -48px -16px;\n}\n.fancytree-ico-ef span.fancytree-icon {\n  background-position: -64px -16px;\n}\n.fancytree-ico-ef span.fancytree-icon:hover {\n  background-position: -80px -16px;\n}\n.fancytree-loading span.fancytree-expander,\n.fancytree-loading span.fancytree-expander:hover,\n.fancytree-statusnode-loading span.fancytree-icon,\n.fancytree-statusnode-loading span.fancytree-icon:hover,\nspan.fancytree-icon.fancytree-icon-loading {\n  background-image: url(\"../skin-win8/loading.gif\");\n  background-position: 0px 0px;\n}\n/* Status node icons */\n.fancytree-statusnode-error span.fancytree-icon,\n.fancytree-statusnode-error span.fancytree-icon:hover {\n  background-position: 0px -112px;\n}\n/*------------------------------------------------------------------------------\n * Node titles and highlighting\n *----------------------------------------------------------------------------*/\nspan.fancytree-node {\n  /* See #117 */\n  display: inherit;\n  width: 100%;\n  margin-top: 0px;\n  min-height: 20px;\n}\nspan.fancytree-title {\n  color: black;\n  cursor: pointer;\n  display: inline-block;\n  vertical-align: top;\n  min-height: 20px;\n  padding: 0 3px 0 3px;\n  margin: 0px 0 0 3px;\n  border: 1px solid transparent;\n  -webkit-border-radius: 0px;\n  -moz-border-radius: 0px;\n  -ms-border-radius: 0px;\n  -o-border-radius: 0px;\n  border-radius: 0px;\n}\nspan.fancytree-node.fancytree-error span.fancytree-title {\n  color: red;\n}\n/*------------------------------------------------------------------------------\n * Drag'n'drop support\n *----------------------------------------------------------------------------*/\n/* ext-dnd5: */\nspan.fancytree-childcounter {\n  color: #fff;\n  background: #337ab7;\n  border: 1px solid gray;\n  border-radius: 10px;\n  padding: 2px;\n  text-align: center;\n}\n/* ext-dnd: */\ndiv.fancytree-drag-helper span.fancytree-childcounter,\ndiv.fancytree-drag-helper span.fancytree-dnd-modifier {\n  display: inline-block;\n  color: #fff;\n  background: #337ab7;\n  border: 1px solid gray;\n  min-width: 10px;\n  height: 10px;\n  line-height: 1;\n  vertical-align: baseline;\n  border-radius: 10px;\n  padding: 2px;\n  text-align: center;\n  font-size: 9px;\n}\ndiv.fancytree-drag-helper span.fancytree-childcounter {\n  position: absolute;\n  top: -6px;\n  right: -6px;\n}\ndiv.fancytree-drag-helper span.fancytree-dnd-modifier {\n  background: #5cb85c;\n  border: none;\n  font-weight: bolder;\n}\ndiv.fancytree-drag-helper.fancytree-drop-accept span.fancytree-drag-helper-img {\n  background-position: -32px -112px;\n}\ndiv.fancytree-drag-helper.fancytree-drop-reject span.fancytree-drag-helper-img {\n  background-position: -16px -112px;\n}\n/*** Drop marker icon *********************************************************/\n#fancytree-drop-marker {\n  width: 32px;\n  position: absolute;\n  background-position: 0px -128px;\n  margin: 0;\n}\n#fancytree-drop-marker.fancytree-drop-after,\n#fancytree-drop-marker.fancytree-drop-before {\n  width: 64px;\n  background-position: 0px -144px;\n}\n#fancytree-drop-marker.fancytree-drop-copy {\n  background-position: -64px -128px;\n}\n#fancytree-drop-marker.fancytree-drop-move {\n  background-position: -32px -128px;\n}\n/*** Source node while dragging ***********************************************/\nspan.fancytree-drag-source.fancytree-drag-remove {\n  opacity: 0.15;\n}\n/*** Target node while dragging cursor is over it *****************************/\n/*------------------------------------------------------------------------------\n * 'rtl' option\n *----------------------------------------------------------------------------*/\n.fancytree-container.fancytree-rtl .fancytree-title {\n  /*unicode-bidi: bidi-override;*/\n  /* optional: reverse title letters */\n}\n.fancytree-container.fancytree-rtl span.fancytree-connector,\n.fancytree-container.fancytree-rtl span.fancytree-expander,\n.fancytree-container.fancytree-rtl span.fancytree-icon,\n.fancytree-container.fancytree-rtl span.fancytree-drag-helper-img {\n  background-image: url(\"../skin-win8/icons-rtl.gif\");\n}\n.fancytree-container.fancytree-rtl .fancytree-exp-n span.fancytree-expander,\n.fancytree-container.fancytree-rtl .fancytree-exp-nl span.fancytree-expander {\n  background-image: none;\n}\n.fancytree-container.fancytree-rtl.fancytree-connectors .fancytree-exp-n span.fancytree-expander,\n.fancytree-container.fancytree-rtl.fancytree-connectors .fancytree-exp-nl span.fancytree-expander {\n  background-image: url(\"../skin-win8/icons-rtl.gif\");\n}\nul.fancytree-container.fancytree-rtl ul {\n  padding: 0 16px 0 0;\n}\nul.fancytree-container.fancytree-rtl.fancytree-connectors li {\n  background-position: right 0;\n  background-image: url(\"../skin-win8/vline-rtl.gif\");\n}\nul.fancytree-container.fancytree-rtl li.fancytree-lastsib,\nul.fancytree-container.fancytree-rtl.fancytree-no-connector > li {\n  background-image: none;\n}\n#fancytree-drop-marker.fancytree-rtl {\n  background-image: url(\"../skin-win8/icons-rtl.gif\");\n}\n/*------------------------------------------------------------------------------\n * 'table' extension\n *----------------------------------------------------------------------------*/\ntable.fancytree-ext-table {\n  font-family: tahoma, arial, helvetica;\n  font-size: 10pt;\n  border-collapse: collapse;\n  /* ext-ariagrid */\n}\ntable.fancytree-ext-table span.fancytree-node {\n  display: inline-block;\n  box-sizing: border-box;\n}\ntable.fancytree-ext-table td.fancytree-status-merged {\n  text-align: center;\n  font-style: italic;\n  color: #c0c0c0;\n}\ntable.fancytree-ext-table tr.fancytree-statusnode-error td.fancytree-status-merged {\n  color: red;\n}\ntable.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode > tbody > tr.fancytree-active > td {\n  background-color: #eee;\n}\ntable.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode > tbody > tr > td.fancytree-active-cell {\n  background-color: #cbe8f6;\n}\ntable.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode.fancytree-cell-nav-mode > tbody > tr > td.fancytree-active-cell {\n  background-color: #3875d7;\n}\n/*------------------------------------------------------------------------------\n * 'columnview' extension\n *----------------------------------------------------------------------------*/\ntable.fancytree-ext-columnview tbody tr td {\n  position: relative;\n  border: 1px solid gray;\n  vertical-align: top;\n  overflow: auto;\n}\ntable.fancytree-ext-columnview tbody tr td > ul {\n  padding: 0;\n}\ntable.fancytree-ext-columnview tbody tr td > ul li {\n  list-style-image: none;\n  list-style-position: outside;\n  list-style-type: none;\n  -moz-background-clip: border;\n  -moz-background-inline-policy: continuous;\n  -moz-background-origin: padding;\n  background-attachment: scroll;\n  background-color: transparent;\n  background-position: 0px 0px;\n  background-repeat: repeat-y;\n  background-image: none;\n  /* no v-lines */\n  margin: 0;\n}\ntable.fancytree-ext-columnview span.fancytree-node {\n  position: relative;\n  /* allow positioning of embedded spans */\n  display: inline-block;\n}\ntable.fancytree-ext-columnview span.fancytree-node.fancytree-expanded {\n  background-color: #e0e0e0;\n}\ntable.fancytree-ext-columnview span.fancytree-node.fancytree-active {\n  background-color: #cbe8f6;\n}\ntable.fancytree-ext-columnview .fancytree-has-children span.fancytree-cv-right {\n  position: absolute;\n  right: 3px;\n  background-position: 0px -80px;\n}\ntable.fancytree-ext-columnview .fancytree-has-children span.fancytree-cv-right:hover {\n  background-position: -16px -80px;\n}\n/*------------------------------------------------------------------------------\n * 'filter' extension\n *----------------------------------------------------------------------------*/\n.fancytree-ext-filter-dimm span.fancytree-node span.fancytree-title {\n  color: #c0c0c0;\n  font-weight: lighter;\n}\n.fancytree-ext-filter-dimm tr.fancytree-submatch span.fancytree-title,\n.fancytree-ext-filter-dimm span.fancytree-node.fancytree-submatch span.fancytree-title {\n  color: black;\n  font-weight: normal;\n}\n.fancytree-ext-filter-dimm tr.fancytree-match span.fancytree-title,\n.fancytree-ext-filter-dimm span.fancytree-node.fancytree-match span.fancytree-title {\n  color: black;\n  font-weight: bold;\n}\n.fancytree-ext-filter-hide tr.fancytree-hide,\n.fancytree-ext-filter-hide span.fancytree-node.fancytree-hide {\n  display: none;\n}\n.fancytree-ext-filter-hide tr.fancytree-submatch span.fancytree-title,\n.fancytree-ext-filter-hide span.fancytree-node.fancytree-submatch span.fancytree-title {\n  color: #c0c0c0;\n  font-weight: lighter;\n}\n.fancytree-ext-filter-hide tr.fancytree-match span.fancytree-title,\n.fancytree-ext-filter-hide span.fancytree-node.fancytree-match span.fancytree-title {\n  color: black;\n  font-weight: normal;\n}\n/* Hide expanders if all child nodes are hidden by filter */\n.fancytree-ext-filter-hide-expanders tr.fancytree-match span.fancytree-expander,\n.fancytree-ext-filter-hide-expanders span.fancytree-node.fancytree-match span.fancytree-expander {\n  visibility: hidden;\n}\n.fancytree-ext-filter-hide-expanders tr.fancytree-submatch span.fancytree-expander,\n.fancytree-ext-filter-hide-expanders span.fancytree-node.fancytree-submatch span.fancytree-expander {\n  visibility: visible;\n}\n.fancytree-ext-childcounter span.fancytree-icon,\n.fancytree-ext-filter span.fancytree-icon,\n.fancytree-ext-childcounter span.fancytree-custom-icon,\n.fancytree-ext-filter span.fancytree-custom-icon {\n  position: relative;\n}\n.fancytree-ext-childcounter span.fancytree-childcounter,\n.fancytree-ext-filter span.fancytree-childcounter {\n  color: #fff;\n  background: #777;\n  border: 1px solid gray;\n  position: absolute;\n  top: -6px;\n  right: -6px;\n  min-width: 10px;\n  height: 10px;\n  line-height: 1;\n  vertical-align: baseline;\n  border-radius: 10px;\n  padding: 2px;\n  text-align: center;\n  font-size: 9px;\n}\n/*------------------------------------------------------------------------------\n * 'wide' extension\n *----------------------------------------------------------------------------*/\nul.fancytree-ext-wide {\n  position: relative;\n  min-width: 100%;\n  z-index: 2;\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nul.fancytree-ext-wide span.fancytree-node > span {\n  position: relative;\n  z-index: 2;\n}\nul.fancytree-ext-wide span.fancytree-node span.fancytree-title {\n  position: absolute;\n  z-index: 1;\n  left: 0px;\n  min-width: 100%;\n  margin-left: 0;\n  margin-right: 0;\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n/*------------------------------------------------------------------------------\n * 'fixed' extension\n *----------------------------------------------------------------------------*/\n.fancytree-ext-fixed-wrapper .fancytree-ext-fixed-hidden {\n  display: none;\n}\n.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-scroll-border-bottom {\n  border-bottom: 3px solid rgba(0, 0, 0, 0.75);\n}\n.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-scroll-border-right {\n  border-right: 3px solid rgba(0, 0, 0, 0.75);\n}\n.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-tl {\n  position: absolute;\n  overflow: hidden;\n  z-index: 3;\n  top: 0px;\n  left: 0px;\n}\n.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-tr {\n  position: absolute;\n  overflow: hidden;\n  z-index: 2;\n  top: 0px;\n}\n.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-bl {\n  position: absolute;\n  overflow: hidden;\n  z-index: 2;\n  left: 0px;\n}\n.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-br {\n  position: absolute;\n  overflow: scroll;\n  z-index: 1;\n}\n/*******************************************************************************\n * Styles specific to this skin.\n *\n * This section is automatically generated from the `ui-fancytree.less` template.\n ******************************************************************************/\n/*******************************************************************************\n * Node titles\n */\n.fancytree-plain span.fancytree-title {\n  border: 1px solid transparent;\n}\n.fancytree-plain.fancytree-container.fancytree-treefocus span.fancytree-focused span.fancytree-title {\n  border-color: #3399ff;\n}\n.fancytree-plain span.fancytree-active span.fancytree-title,\n.fancytree-plain span.fancytree-selected span.fancytree-title {\n  background-color: #f7f7f7;\n  border-color: #dedede;\n}\n.fancytree-plain span.fancytree-node span.fancytree-selected span.fancytree-title {\n  font-style: italic;\n}\n.fancytree-plain span.fancytree-node:hover span.fancytree-title {\n  background-color: #eff9fe;\n  border-color: #70c0e7;\n}\n.fancytree-plain.fancytree-container.fancytree-treefocus span.fancytree-active span.fancytree-title,\n.fancytree-plain.fancytree-container.fancytree-treefocus span.fancytree-selected span.fancytree-title {\n  background-color: #cbe8f6;\n  border-color: #26a0da;\n}\n/*******************************************************************************\n * 'table' extension\n */\ntable.fancytree-ext-table tbody tr td {\n  border: 1px solid #EDEDED;\n}\ntable.fancytree-ext-table tbody span.fancytree-node,\ntable.fancytree-ext-table tbody span.fancytree-node:hover {\n  border: none;\n  background: none;\n}\ntable.fancytree-ext-table tbody tr:hover {\n  background-color: #E5F3FB;\n  outline: 1px solid #70C0E7;\n}\ntable.fancytree-ext-table tbody tr.fancytree-focused span.fancytree-title {\n  outline: 1px dotted black;\n}\ntable.fancytree-ext-table tbody tr.fancytree-active:hover,\ntable.fancytree-ext-table tbody tr.fancytree-selected:hover {\n  background-color: #CBE8F6;\n  outline: 1px solid #26A0DA;\n}\ntable.fancytree-ext-table tbody tr.fancytree-active {\n  background-color: #F7F7F7;\n  outline: 1px solid #DEDEDE;\n}\ntable.fancytree-ext-table tbody tr.fancytree-selected {\n  background-color: #F7F7F7;\n}\ntable.fancytree-ext-table.fancytree-treefocus tbody tr.fancytree-active {\n  background-color: #CBE8F6;\n  outline: 1px solid #26A0DA;\n}\ntable.fancytree-ext-table.fancytree-treefocus tbody tr.fancytree-selected {\n  background-color: #CBE8F6;\n}\n", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/javascript\nReleased under the MIT license\n */\n(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? module.exports = factory() : typeof define === \"function\" && define.amd ? define(factory) : (global = typeof globalThis !== \"undefined\" ? globalThis : global || self, \n  global.Rails = factory());\n})(this, (function() {\n  \"use strict\";\n  const linkClickSelector = \"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]\";\n  const buttonClickSelector = {\n    selector: \"button[data-remote]:not([form]), button[data-confirm]:not([form])\",\n    exclude: \"form button\"\n  };\n  const inputChangeSelector = \"select[data-remote], input[data-remote], textarea[data-remote]\";\n  const formSubmitSelector = \"form:not([data-turbo=true])\";\n  const 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  const formDisableSelector = \"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  const formEnableSelector = \"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  const fileInputSelector = \"input[name][type=file]:not([disabled])\";\n  const linkDisableSelector = \"a[data-disable-with], a[data-disable]\";\n  const buttonDisableSelector = \"button[data-remote][data-disable-with], button[data-remote][data-disable]\";\n  let nonce = null;\n  const loadCSPNonce = () => {\n    const metaTag = document.querySelector(\"meta[name=csp-nonce]\");\n    return nonce = metaTag && metaTag.content;\n  };\n  const cspNonce = () => nonce || loadCSPNonce();\n  const m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n  const matches = function(element, selector) {\n    if (selector.exclude) {\n      return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n    } else {\n      return m.call(element, selector);\n    }\n  };\n  const EXPANDO = \"_ujsData\";\n  const getData = (element, key) => element[EXPANDO] ? element[EXPANDO][key] : undefined;\n  const setData = function(element, key, value) {\n    if (!element[EXPANDO]) {\n      element[EXPANDO] = {};\n    }\n    return element[EXPANDO][key] = value;\n  };\n  const $ = selector => Array.prototype.slice.call(document.querySelectorAll(selector));\n  const isContentEditable = function(element) {\n    var isEditable = false;\n    do {\n      if (element.isContentEditable) {\n        isEditable = true;\n        break;\n      }\n      element = element.parentElement;\n    } while (element);\n    return isEditable;\n  };\n  const csrfToken = () => {\n    const meta = document.querySelector(\"meta[name=csrf-token]\");\n    return meta && meta.content;\n  };\n  const csrfParam = () => {\n    const meta = document.querySelector(\"meta[name=csrf-param]\");\n    return meta && meta.content;\n  };\n  const CSRFProtection = xhr => {\n    const token = csrfToken();\n    if (token) {\n      return xhr.setRequestHeader(\"X-CSRF-Token\", token);\n    }\n  };\n  const refreshCSRFTokens = () => {\n    const token = csrfToken();\n    const param = csrfParam();\n    if (token && param) {\n      return $('form input[name=\"' + param + '\"]').forEach((input => input.value = token));\n    }\n  };\n  const AcceptHeaders = {\n    \"*\": \"*/*\",\n    text: \"text/plain\",\n    html: \"text/html\",\n    xml: \"application/xml, text/xml\",\n    json: \"application/json, text/javascript\",\n    script: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n  };\n  const ajax = options => {\n    options = prepareOptions(options);\n    var xhr = createXHR(options, (function() {\n      const response = processResponse(xhr.response != null ? xhr.response : xhr.responseText, xhr.getResponseHeader(\"Content-Type\"));\n      if (Math.floor(xhr.status / 100) === 2) {\n        if (typeof options.success === \"function\") {\n          options.success(response, xhr.statusText, xhr);\n        }\n      } else {\n        if (typeof options.error === \"function\") {\n          options.error(response, xhr.statusText, xhr);\n        }\n      }\n      return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : undefined;\n    }));\n    if (options.beforeSend && !options.beforeSend(xhr, options)) {\n      return false;\n    }\n    if (xhr.readyState === XMLHttpRequest.OPENED) {\n      return xhr.send(options.data);\n    }\n  };\n  var prepareOptions = function(options) {\n    options.url = options.url || location.href;\n    options.type = options.type.toUpperCase();\n    if (options.type === \"GET\" && options.data) {\n      if (options.url.indexOf(\"?\") < 0) {\n        options.url += \"?\" + options.data;\n      } else {\n        options.url += \"&\" + options.data;\n      }\n    }\n    if (!(options.dataType in AcceptHeaders)) {\n      options.dataType = \"*\";\n    }\n    options.accept = AcceptHeaders[options.dataType];\n    if (options.dataType !== \"*\") {\n      options.accept += \", */*; q=0.01\";\n    }\n    return options;\n  };\n  var createXHR = function(options, done) {\n    const xhr = new XMLHttpRequest;\n    xhr.open(options.type, options.url, true);\n    xhr.setRequestHeader(\"Accept\", options.accept);\n    if (typeof options.data === \"string\") {\n      xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n    }\n    if (!options.crossDomain) {\n      xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      CSRFProtection(xhr);\n    }\n    xhr.withCredentials = !!options.withCredentials;\n    xhr.onreadystatechange = function() {\n      if (xhr.readyState === XMLHttpRequest.DONE) {\n        return done(xhr);\n      }\n    };\n    return xhr;\n  };\n  var processResponse = function(response, type) {\n    if (typeof response === \"string\" && typeof type === \"string\") {\n      if (type.match(/\\bjson\\b/)) {\n        try {\n          response = JSON.parse(response);\n        } catch (error) {}\n      } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n        const script = document.createElement(\"script\");\n        script.setAttribute(\"nonce\", cspNonce());\n        script.text = response;\n        document.head.appendChild(script).parentNode.removeChild(script);\n      } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n        const parser = new DOMParser;\n        type = type.replace(/;.+/, \"\");\n        try {\n          response = parser.parseFromString(response, type);\n        } catch (error1) {}\n      }\n    }\n    return response;\n  };\n  const href = element => element.href;\n  const isCrossDomain = function(url) {\n    const originAnchor = document.createElement(\"a\");\n    originAnchor.href = location.href;\n    const urlAnchor = document.createElement(\"a\");\n    try {\n      urlAnchor.href = url;\n      return !((!urlAnchor.protocol || urlAnchor.protocol === \":\") && !urlAnchor.host || originAnchor.protocol + \"//\" + originAnchor.host === urlAnchor.protocol + \"//\" + urlAnchor.host);\n    } catch (e) {\n      return true;\n    }\n  };\n  let preventDefault;\n  let {CustomEvent: CustomEvent} = window;\n  if (typeof CustomEvent !== \"function\") {\n    CustomEvent = function(event, params) {\n      const evt = document.createEvent(\"CustomEvent\");\n      evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n      return evt;\n    };\n    CustomEvent.prototype = window.Event.prototype;\n    ({preventDefault: preventDefault} = CustomEvent.prototype);\n    CustomEvent.prototype.preventDefault = function() {\n      const result = preventDefault.call(this);\n      if (this.cancelable && !this.defaultPrevented) {\n        Object.defineProperty(this, \"defaultPrevented\", {\n          get() {\n            return true;\n          }\n        });\n      }\n      return result;\n    };\n  }\n  const fire = (obj, name, data) => {\n    const event = new CustomEvent(name, {\n      bubbles: true,\n      cancelable: true,\n      detail: data\n    });\n    obj.dispatchEvent(event);\n    return !event.defaultPrevented;\n  };\n  const stopEverything = e => {\n    fire(e.target, \"ujs:everythingStopped\");\n    e.preventDefault();\n    e.stopPropagation();\n    e.stopImmediatePropagation();\n  };\n  const delegate = (element, selector, eventType, handler) => element.addEventListener(eventType, (function(e) {\n    let {target: target} = e;\n    while (!!(target instanceof Element) && !matches(target, selector)) {\n      target = target.parentNode;\n    }\n    if (target instanceof Element && handler.call(target, e) === false) {\n      e.preventDefault();\n      e.stopPropagation();\n    }\n  }));\n  const toArray = e => Array.prototype.slice.call(e);\n  const serializeElement = (element, additionalParam) => {\n    let inputs = [ element ];\n    if (matches(element, \"form\")) {\n      inputs = toArray(element.elements);\n    }\n    const params = [];\n    inputs.forEach((function(input) {\n      if (!input.name || input.disabled) {\n        return;\n      }\n      if (matches(input, \"fieldset[disabled] *\")) {\n        return;\n      }\n      if (matches(input, \"select\")) {\n        toArray(input.options).forEach((function(option) {\n          if (option.selected) {\n            params.push({\n              name: input.name,\n              value: option.value\n            });\n          }\n        }));\n      } else if (input.checked || [ \"radio\", \"checkbox\", \"submit\" ].indexOf(input.type) === -1) {\n        params.push({\n          name: input.name,\n          value: input.value\n        });\n      }\n    }));\n    if (additionalParam) {\n      params.push(additionalParam);\n    }\n    return params.map((function(param) {\n      if (param.name) {\n        return `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`;\n      } else {\n        return param;\n      }\n    })).join(\"&\");\n  };\n  const formElements = (form, selector) => {\n    if (matches(form, \"form\")) {\n      return toArray(form.elements).filter((el => matches(el, selector)));\n    } else {\n      return toArray(form.querySelectorAll(selector));\n    }\n  };\n  const handleConfirmWithRails = rails => function(e) {\n    if (!allowAction(this, rails)) {\n      stopEverything(e);\n    }\n  };\n  const confirm = (message, element) => window.confirm(message);\n  var allowAction = function(element, rails) {\n    let callback;\n    const message = element.getAttribute(\"data-confirm\");\n    if (!message) {\n      return true;\n    }\n    let answer = false;\n    if (fire(element, \"confirm\")) {\n      try {\n        answer = rails.confirm(message, element);\n      } catch (error) {}\n      callback = fire(element, \"confirm:complete\", [ answer ]);\n    }\n    return answer && callback;\n  };\n  const handleDisabledElement = function(e) {\n    const element = this;\n    if (element.disabled) {\n      stopEverything(e);\n    }\n  };\n  const enableElement = e => {\n    let element;\n    if (e instanceof Event) {\n      if (isXhrRedirect(e)) {\n        return;\n      }\n      element = e.target;\n    } else {\n      element = e;\n    }\n    if (isContentEditable(element)) {\n      return;\n    }\n    if (matches(element, linkDisableSelector)) {\n      return enableLinkElement(element);\n    } else if (matches(element, buttonDisableSelector) || matches(element, formEnableSelector)) {\n      return enableFormElement(element);\n    } else if (matches(element, formSubmitSelector)) {\n      return enableFormElements(element);\n    }\n  };\n  const disableElement = e => {\n    const element = e instanceof Event ? e.target : e;\n    if (isContentEditable(element)) {\n      return;\n    }\n    if (matches(element, linkDisableSelector)) {\n      return disableLinkElement(element);\n    } else if (matches(element, buttonDisableSelector) || matches(element, formDisableSelector)) {\n      return disableFormElement(element);\n    } else if (matches(element, formSubmitSelector)) {\n      return disableFormElements(element);\n    }\n  };\n  var disableLinkElement = function(element) {\n    if (getData(element, \"ujs:disabled\")) {\n      return;\n    }\n    const replacement = element.getAttribute(\"data-disable-with\");\n    if (replacement != null) {\n      setData(element, \"ujs:enable-with\", element.innerHTML);\n      element.innerHTML = replacement;\n    }\n    element.addEventListener(\"click\", stopEverything);\n    return setData(element, \"ujs:disabled\", true);\n  };\n  var enableLinkElement = function(element) {\n    const originalText = getData(element, \"ujs:enable-with\");\n    if (originalText != null) {\n      element.innerHTML = originalText;\n      setData(element, \"ujs:enable-with\", null);\n    }\n    element.removeEventListener(\"click\", stopEverything);\n    return setData(element, \"ujs:disabled\", null);\n  };\n  var disableFormElements = form => formElements(form, formDisableSelector).forEach(disableFormElement);\n  var disableFormElement = function(element) {\n    if (getData(element, \"ujs:disabled\")) {\n      return;\n    }\n    const replacement = element.getAttribute(\"data-disable-with\");\n    if (replacement != null) {\n      if (matches(element, \"button\")) {\n        setData(element, \"ujs:enable-with\", element.innerHTML);\n        element.innerHTML = replacement;\n      } else {\n        setData(element, \"ujs:enable-with\", element.value);\n        element.value = replacement;\n      }\n    }\n    element.disabled = true;\n    return setData(element, \"ujs:disabled\", true);\n  };\n  var enableFormElements = form => formElements(form, formEnableSelector).forEach((element => enableFormElement(element)));\n  var enableFormElement = function(element) {\n    const originalText = getData(element, \"ujs:enable-with\");\n    if (originalText != null) {\n      if (matches(element, \"button\")) {\n        element.innerHTML = originalText;\n      } else {\n        element.value = originalText;\n      }\n      setData(element, \"ujs:enable-with\", null);\n    }\n    element.disabled = false;\n    return setData(element, \"ujs:disabled\", null);\n  };\n  var isXhrRedirect = function(event) {\n    const xhr = event.detail ? event.detail[0] : undefined;\n    return xhr && xhr.getResponseHeader(\"X-Xhr-Redirect\");\n  };\n  const handleMethodWithRails = rails => function(e) {\n    const link = this;\n    const method = link.getAttribute(\"data-method\");\n    if (!method) {\n      return;\n    }\n    if (isContentEditable(this)) {\n      return;\n    }\n    const href = rails.href(link);\n    const csrfToken$1 = csrfToken();\n    const csrfParam$1 = csrfParam();\n    const form = document.createElement(\"form\");\n    let formContent = `<input name='_method' value='${method}' type='hidden' />`;\n    if (csrfParam$1 && csrfToken$1 && !isCrossDomain(href)) {\n      formContent += `<input name='${csrfParam$1}' value='${csrfToken$1}' type='hidden' />`;\n    }\n    formContent += '<input type=\"submit\" />';\n    form.method = \"post\";\n    form.action = href;\n    form.target = link.target;\n    form.innerHTML = formContent;\n    form.style.display = \"none\";\n    document.body.appendChild(form);\n    form.querySelector('[type=\"submit\"]').click();\n    stopEverything(e);\n  };\n  const isRemote = function(element) {\n    const value = element.getAttribute(\"data-remote\");\n    return value != null && value !== \"false\";\n  };\n  const handleRemoteWithRails = rails => function(e) {\n    let data, method, url;\n    const element = this;\n    if (!isRemote(element)) {\n      return true;\n    }\n    if (!fire(element, \"ajax:before\")) {\n      fire(element, \"ajax:stopped\");\n      return false;\n    }\n    if (isContentEditable(element)) {\n      fire(element, \"ajax:stopped\");\n      return false;\n    }\n    const withCredentials = element.getAttribute(\"data-with-credentials\");\n    const dataType = element.getAttribute(\"data-type\") || \"script\";\n    if (matches(element, formSubmitSelector)) {\n      const button = getData(element, \"ujs:submit-button\");\n      method = getData(element, \"ujs:submit-button-formmethod\") || element.getAttribute(\"method\") || \"get\";\n      url = getData(element, \"ujs:submit-button-formaction\") || element.getAttribute(\"action\") || location.href;\n      if (method.toUpperCase() === \"GET\") {\n        url = url.replace(/\\?.*$/, \"\");\n      }\n      if (element.enctype === \"multipart/form-data\") {\n        data = new FormData(element);\n        if (button != null) {\n          data.append(button.name, button.value);\n        }\n      } else {\n        data = serializeElement(element, button);\n      }\n      setData(element, \"ujs:submit-button\", null);\n      setData(element, \"ujs:submit-button-formmethod\", null);\n      setData(element, \"ujs:submit-button-formaction\", null);\n    } else if (matches(element, buttonClickSelector) || matches(element, inputChangeSelector)) {\n      method = element.getAttribute(\"data-method\");\n      url = element.getAttribute(\"data-url\");\n      data = serializeElement(element, element.getAttribute(\"data-params\"));\n    } else {\n      method = element.getAttribute(\"data-method\");\n      url = rails.href(element);\n      data = element.getAttribute(\"data-params\");\n    }\n    ajax({\n      type: method || \"GET\",\n      url: url,\n      data: data,\n      dataType: dataType,\n      beforeSend(xhr, options) {\n        if (fire(element, \"ajax:beforeSend\", [ xhr, options ])) {\n          return fire(element, \"ajax:send\", [ xhr ]);\n        } else {\n          fire(element, \"ajax:stopped\");\n          return false;\n        }\n      },\n      success(...args) {\n        return fire(element, \"ajax:success\", args);\n      },\n      error(...args) {\n        return fire(element, \"ajax:error\", args);\n      },\n      complete(...args) {\n        return fire(element, \"ajax:complete\", args);\n      },\n      crossDomain: isCrossDomain(url),\n      withCredentials: withCredentials != null && withCredentials !== \"false\"\n    });\n    stopEverything(e);\n  };\n  const formSubmitButtonClick = function(e) {\n    const button = this;\n    const {form: form} = button;\n    if (!form) {\n      return;\n    }\n    if (button.name) {\n      setData(form, \"ujs:submit-button\", {\n        name: button.name,\n        value: button.value\n      });\n    }\n    setData(form, \"ujs:formnovalidate-button\", button.formNoValidate);\n    setData(form, \"ujs:submit-button-formaction\", button.getAttribute(\"formaction\"));\n    return setData(form, \"ujs:submit-button-formmethod\", button.getAttribute(\"formmethod\"));\n  };\n  const preventInsignificantClick = function(e) {\n    const link = this;\n    const method = (link.getAttribute(\"data-method\") || \"GET\").toUpperCase();\n    const data = link.getAttribute(\"data-params\");\n    const metaClick = e.metaKey || e.ctrlKey;\n    const insignificantMetaClick = metaClick && method === \"GET\" && !data;\n    const nonPrimaryMouseClick = e.button != null && e.button !== 0;\n    if (nonPrimaryMouseClick || insignificantMetaClick) {\n      e.stopImmediatePropagation();\n    }\n  };\n  const Rails = {\n    $: $,\n    ajax: ajax,\n    buttonClickSelector: buttonClickSelector,\n    buttonDisableSelector: buttonDisableSelector,\n    confirm: confirm,\n    cspNonce: cspNonce,\n    csrfToken: csrfToken,\n    csrfParam: csrfParam,\n    CSRFProtection: CSRFProtection,\n    delegate: delegate,\n    disableElement: disableElement,\n    enableElement: enableElement,\n    fileInputSelector: fileInputSelector,\n    fire: fire,\n    formElements: formElements,\n    formEnableSelector: formEnableSelector,\n    formDisableSelector: formDisableSelector,\n    formInputClickSelector: formInputClickSelector,\n    formSubmitButtonClick: formSubmitButtonClick,\n    formSubmitSelector: formSubmitSelector,\n    getData: getData,\n    handleDisabledElement: handleDisabledElement,\n    href: href,\n    inputChangeSelector: inputChangeSelector,\n    isCrossDomain: isCrossDomain,\n    linkClickSelector: linkClickSelector,\n    linkDisableSelector: linkDisableSelector,\n    loadCSPNonce: loadCSPNonce,\n    matches: matches,\n    preventInsignificantClick: preventInsignificantClick,\n    refreshCSRFTokens: refreshCSRFTokens,\n    serializeElement: serializeElement,\n    setData: setData,\n    stopEverything: stopEverything\n  };\n  const handleConfirm = handleConfirmWithRails(Rails);\n  Rails.handleConfirm = handleConfirm;\n  const handleMethod = handleMethodWithRails(Rails);\n  Rails.handleMethod = handleMethod;\n  const handleRemote = handleRemoteWithRails(Rails);\n  Rails.handleRemote = handleRemote;\n  const start = function() {\n    if (window._rails_loaded) {\n      throw new Error(\"rails-ujs has already been loaded!\");\n    }\n    window.addEventListener(\"pageshow\", (function() {\n      $(formEnableSelector).forEach((function(el) {\n        if (getData(el, \"ujs:disabled\")) {\n          enableElement(el);\n        }\n      }));\n      $(linkDisableSelector).forEach((function(el) {\n        if (getData(el, \"ujs:disabled\")) {\n          enableElement(el);\n        }\n      }));\n    }));\n    delegate(document, linkDisableSelector, \"ajax:complete\", enableElement);\n    delegate(document, linkDisableSelector, \"ajax:stopped\", enableElement);\n    delegate(document, buttonDisableSelector, \"ajax:complete\", enableElement);\n    delegate(document, buttonDisableSelector, \"ajax:stopped\", enableElement);\n    delegate(document, linkClickSelector, \"click\", preventInsignificantClick);\n    delegate(document, linkClickSelector, \"click\", handleDisabledElement);\n    delegate(document, linkClickSelector, \"click\", handleConfirm);\n    delegate(document, linkClickSelector, \"click\", disableElement);\n    delegate(document, linkClickSelector, \"click\", handleRemote);\n    delegate(document, linkClickSelector, \"click\", handleMethod);\n    delegate(document, buttonClickSelector, \"click\", preventInsignificantClick);\n    delegate(document, buttonClickSelector, \"click\", handleDisabledElement);\n    delegate(document, buttonClickSelector, \"click\", handleConfirm);\n    delegate(document, buttonClickSelector, \"click\", disableElement);\n    delegate(document, buttonClickSelector, \"click\", handleRemote);\n    delegate(document, inputChangeSelector, \"change\", handleDisabledElement);\n    delegate(document, inputChangeSelector, \"change\", handleConfirm);\n    delegate(document, inputChangeSelector, \"change\", handleRemote);\n    delegate(document, formSubmitSelector, \"submit\", handleDisabledElement);\n    delegate(document, formSubmitSelector, \"submit\", handleConfirm);\n    delegate(document, formSubmitSelector, \"submit\", handleRemote);\n    delegate(document, formSubmitSelector, \"submit\", (e => setTimeout((() => disableElement(e)), 13)));\n    delegate(document, formSubmitSelector, \"ajax:send\", disableElement);\n    delegate(document, formSubmitSelector, \"ajax:complete\", enableElement);\n    delegate(document, formInputClickSelector, \"click\", preventInsignificantClick);\n    delegate(document, formInputClickSelector, \"click\", handleDisabledElement);\n    delegate(document, formInputClickSelector, \"click\", handleConfirm);\n    delegate(document, formInputClickSelector, \"click\", formSubmitButtonClick);\n    document.addEventListener(\"DOMContentLoaded\", refreshCSRFTokens);\n    document.addEventListener(\"DOMContentLoaded\", loadCSPNonce);\n    return window._rails_loaded = true;\n  };\n  Rails.start = start;\n  if (typeof jQuery !== \"undefined\" && jQuery && jQuery.ajax) {\n    if (jQuery.rails) {\n      throw new Error(\"If you load both jquery_ujs and rails-ujs, use rails-ujs only.\");\n    }\n    jQuery.rails = Rails;\n    jQuery.ajaxPrefilter((function(options, originalOptions, xhr) {\n      if (!options.crossDomain) {\n        return CSRFProtection(xhr);\n      }\n    }));\n  }\n  if (typeof exports !== \"object\" && typeof module === \"undefined\") {\n    window.Rails = Rails;\n    if (fire(document, \"rails:attachBindings\")) {\n      start();\n    }\n  }\n  return Rails;\n}));\n", ".direct-upload {\n    display: inline-block;\n    position: relative;\n    padding: 2px 4px;\n    margin: 0 3px 3px 0;\n    border: 1px solid rgba(0, 0, 0, 0.3);\n    border-radius: 3px;\n    font-size: 11px;\n    line-height: 13px;\n}\n\n.direct-upload--pending {\n    opacity: 0.6;\n}\n\n.direct-upload__progress {\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    opacity: 0.2;\n    background: #0076ff;\n    transition: width 120ms ease-out, opacity 60ms 60ms ease-in;\n    transform: translate3d(0, 0, 0);\n}\n\n.direct-upload--complete .direct-upload__progress {\n    opacity: 0.4;\n}\n\n.direct-upload--error {\n    border-color: red;\n}\n\ninput[type=file][data-direct-upload-url][disabled] {\n    display: none;\n}\n", "/* ========================================================================\n * Bootstrap: transition.js v3.3.6\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: alert.js v3.3.6\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.3.6'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: button.js v3.3.6\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.3.6'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state += 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked')) changed = false\n        $parent.find('.active').removeClass('active')\n        this.$element.addClass('active')\n      } else if ($input.prop('type') == 'checkbox') {\n        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n        this.$element.toggleClass('active')\n      }\n      $input.prop('checked', this.$element.hasClass('active'))\n      if (changed) $input.trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n      this.$element.toggleClass('active')\n    }\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target)\n      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n      Plugin.call($btn, 'toggle')\n      if (!($(e.target).is('input[type=\"radio\"]') || $(e.target).is('input[type=\"checkbox\"]'))) e.preventDefault()\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: carousel.js v3.3.6\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.3.6'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var href\n    var $this   = $(this)\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n    if (!$target.hasClass('carousel')) return\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: collapse.js v3.3.6\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.3.6'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: dropdown.js v3.3.6\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.3.6'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: modal.js v3.3.6\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options             = options\n    this.$body               = $(document.body)\n    this.$element            = $(element)\n    this.$dialog             = this.$element.find('.modal-dialog')\n    this.$backdrop           = null\n    this.isShown             = null\n    this.originalBodyPad     = null\n    this.scrollbarWidth      = 0\n    this.ignoreBackdropClick = false\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION  = '3.3.6'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal             = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: tooltip.js v3.3.6\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.3.6'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    }\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      that.$element\n        .removeAttr('aria-describedby')\n        .trigger('hidden.bs.' + that.type)\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n    })\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: popover.js v3.3.6\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.3.6'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.6\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.3.6'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: tab.js v3.3.6\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.3.6'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n          .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n            .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n            .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: affix.js v3.3.6\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    this.$target = $(this.options.target)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.3.6'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n", "// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')", "/*!\n * Bootstrap v3.3.6 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  margin: .67em 0;\n  font-size: 2em;\n}\nmark {\n  color: #000;\n  background: #ff0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsup {\n  top: -.5em;\n}\nsub {\n  bottom: -.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  height: 0;\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  margin: 0;\n  font: inherit;\n  color: inherit;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  padding: .35em .625em .75em;\n  margin: 0 2px;\n  border: 1px solid #c0c0c0;\n}\nlegend {\n  padding: 0;\n  border: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n       -o-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: .2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  margin-left: -5px;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    overflow: hidden;\n    clear: left;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: .01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n      touch-action: manipulation;\n  cursor: pointer;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  opacity: .65;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: normal;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n       -o-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-timing-function: ease;\n       -o-transition-timing-function: ease;\n          transition-timing-function: ease;\n  -webkit-transition-duration: .35s;\n       -o-transition-duration: .35s;\n          transition-duration: .35s;\n  -webkit-transition-property: height, visibility;\n       -o-transition-property: height, visibility;\n          transition-property: height, visibility;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.nav > li.disabled > a {\n  color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  -webkit-overflow-scrolling: touch;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-right: 15px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-top: 8px;\n  margin-right: -15px;\n  margin-bottom: 8px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: #777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  padding-right: 15px;\n  padding-left: 15px;\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border .2s ease-in-out;\n       -o-transition: border .2s ease-in-out;\n          transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n  -webkit-transition: width .6s ease;\n       -o-transition: width .6s ease;\n          transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n          background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n       -o-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: .2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\nbutton.close {\n  -webkit-appearance: none;\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform .3s ease-out;\n       -o-transition:      -o-transform .3s ease-out;\n          transition:         transform .3s ease-out;\n  -webkit-transform: translate(0, -25%);\n      -ms-transform: translate(0, -25%);\n       -o-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n      -ms-transform: translate(0, 0);\n       -o-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  outline: 0;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  filter: alpha(opacity=0);\n  opacity: 0;\n\n  line-break: auto;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: .9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n\n  line-break: auto;\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, .25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, .25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: .6s ease-in-out left;\n       -o-transition: .6s ease-in-out left;\n          transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform .6s ease-in-out;\n         -o-transition:      -o-transform .6s ease-in-out;\n            transition:         transform .6s ease-in-out;\n\n    -webkit-backface-visibility: hidden;\n            backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n            perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    left: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    left: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    left: 0;\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n  background-color: rgba(0, 0, 0, 0);\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  filter: alpha(opacity=90);\n  outline: 0;\n  opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n  margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n", "/** Bootstrap fix **/\n@media print {\n    .col-md-1,.col-md-2,.col-md-3,.col-md-4,\n    .col-md-5,.col-md-6,.col-md-7,.col-md-8,\n    .col-md-9,.col-md-10,.col-md-11,.col-md-12 {\n        float: left;\n    }\n\n    .col-md-1 {\n        width: 8%;\n    }\n    .col-md-2 {\n        width: 16%;\n    }\n    .col-md-3 {\n        width: 25%;\n    }\n    .col-md-4 {\n        width: 33%;\n    }\n    .col-md-5 {\n        width: 42%;\n    }\n    .col-md-6 {\n        width: 50%;\n    }\n    .col-md-7 {\n        width: 58%;\n    }\n    .col-md-8 {\n        width: 66%;\n    }\n    .col-md-9 {\n        width: 75%;\n    }\n    .col-md-10 {\n        width: 83%;\n    }\n    .col-md-11 {\n        width: 92%;\n    }\n    .col-md-12 {\n        width: 100%;\n    }\n}\n", "// drop up dropdowns at page bottom\n$(function() {\n\n\t$(document).on(\"shown.bs.dropdown\", \".dropdown\", function () {\n\t    // calculate the required sizes, spaces\n\t    var $ul = $(this).children(\".dropdown-menu\");\n\t    var $button = $(this).children(\".dropdown-toggle\");\n\t    var ulOffset = $ul.offset();\n\t    // how much space would be left on the top if the dropdown opened that direction\n\t    var spaceUp = (ulOffset.top - $button.height() - $ul.height()) - $(window).scrollTop();\n\t    // how much space is left at the bottom\n\t    var spaceDown = $(window).scrollTop() + $(window).height() - (ulOffset.top + $ul.height());\n\t    // switch to dropup only if there is no space at the bottom AND there is space at the top, or there isn't either but it would be still better fit\n\t    if (spaceDown < 0 && (spaceUp >= 0 || spaceUp > spaceDown))\n\t      $(this).addClass(\"dropup\");\n\t}).on(\"hidden.bs.dropdown\", \".dropdown\", function() {\n\t    // always reset after close\n\t    $(this).removeClass(\"dropup\");\n\t});\n\t\n});\n", "require('bootstrap');\nrequire('bootstrap/dist/css/bootstrap.css');\nrequire('./bootstrap_print.css')\nrequire('./auto-dropup')\n", "/*! AdminLTE app.js\n * ================\n * Main JS application file for AdminLTE v2. This file\n * should be included in all pages. It controls some layout\n * options and implements exclusive AdminLTE plugins.\n *\n * @Author  Almsaeed Studio\n * @Support <http://www.almsaeedstudio.com>\n * @Email   <support@almsaeedstudio.com>\n * @version 2.3.0\n * @license MIT <http://opensource.org/licenses/MIT>\n */\n\n//Make sure jQuery has been loaded before app.js\nif (typeof jQuery === \"undefined\") {\n  throw new Error(\"AdminLTE requires jQuery\");\n}\n\n/* AdminLTE\n *\n * @type Object\n * @description $.AdminLTE is the main object for the template's app.\n *              It's used for implementing functions and options related\n *              to the template. Keeping everything wrapped in an object\n *              prevents conflict with other plugins and is a better\n *              way to organize our code.\n */\n$.AdminLTE = {};\n\n/* --------------------\n * - AdminLTE Options -\n * --------------------\n * Modify these options to suit your implementation\n */\n$.AdminLTE.options = {\n  //Add slimscroll to navbar menus\n  //This requires you to load the slimscroll plugin\n  //in every page before app.js\n  navbarMenuSlimscroll: true,\n  navbarMenuSlimscrollWidth: \"3px\", //The width of the scroll bar\n  navbarMenuHeight: \"200px\", //The height of the inner menu\n  //General animation speed for JS animated elements such as box collapse/expand and\n  //sidebar treeview slide up/down. This options accepts an integer as milliseconds,\n  //'fast', 'normal', or 'slow'\n  animationSpeed: 150,\n  //Sidebar push menu toggle button selector\n  sidebarToggleSelector: \"[data-toggle='offcanvas']\",\n  //Activate sidebar push menu\n  sidebarPushMenu: true,\n  //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)\n  sidebarSlimScroll: true,\n  //Enable sidebar expand on hover effect for sidebar mini\n  //This option is forced to true if both the fixed layout and sidebar mini\n  //are used together\n  sidebarExpandOnHover: false,\n  //BoxRefresh Plugin\n  enableBoxRefresh: true,\n  //Bootstrap.js tooltip\n  enableBSToppltip: true,\n  BSTooltipSelector: \"[data-toggle='tooltip']\",\n  //Enable Fast Click. Fastclick.js creates a more\n  //native touch experience with touch devices. If you\n  //choose to enable the plugin, make sure you load the script\n  //before AdminLTE's app.js\n  enableFastclick: true,\n  //Control Sidebar Options\n  enableControlSidebar: true,\n  controlSidebarOptions: {\n    //Which button should trigger the open/close event\n    toggleBtnSelector: \"[data-toggle='control-sidebar']\",\n    //The sidebar selector\n    selector: \".control-sidebar\",\n    //Enable slide over content\n    slide: true\n  },\n  //Box Widget Plugin. Enable this plugin\n  //to allow boxes to be collapsed and/or removed\n  enableBoxWidget: true,\n  //Box Widget plugin options\n  boxWidgetOptions: {\n    boxWidgetIcons: {\n      //Collapse icon\n      collapse: 'fa-minus',\n      //Open icon\n      open: 'fa-plus',\n      //Remove icon\n      remove: 'fa-times'\n    },\n    boxWidgetSelectors: {\n      //Remove button selector\n      remove: '[data-widget=\"remove\"]',\n      //Collapse button selector\n      collapse: '[data-widget=\"collapse\"]'\n    }\n  },\n  //Direct Chat plugin options\n  directChat: {\n    //Enable direct chat by default\n    enable: true,\n    //The button to open and close the chat contacts pane\n    contactToggleSelector: '[data-widget=\"chat-pane-toggle\"]'\n  },\n  //Define the set of colors to use globally around the website\n  colors: {\n    lightBlue: \"#3c8dbc\",\n    red: \"#f56954\",\n    green: \"#00a65a\",\n    aqua: \"#00c0ef\",\n    yellow: \"#f39c12\",\n    blue: \"#0073b7\",\n    navy: \"#001F3F\",\n    teal: \"#39CCCC\",\n    olive: \"#3D9970\",\n    lime: \"#01FF70\",\n    orange: \"#FF851B\",\n    fuchsia: \"#F012BE\",\n    purple: \"#8E24AA\",\n    maroon: \"#D81B60\",\n    black: \"#222222\",\n    gray: \"#d2d6de\"\n  },\n  //The standard screen sizes that bootstrap uses.\n  //If you change these in the variables.less file, change\n  //them here too.\n  screenSizes: {\n    xs: 480,\n    sm: 768,\n    md: 992,\n    lg: 1200\n  }\n};\n\n/* ------------------\n * - Implementation -\n * ------------------\n * The next block of code implements AdminLTE's\n * functions and plugins as specified by the\n * options above.\n */\n$(function () {\n  \"use strict\";\n\n  //Fix for IE page transitions\n  $(\"body\").removeClass(\"hold-transition\");\n\n  //Extend options if external options exist\n  if (typeof AdminLTEOptions !== \"undefined\") {\n    $.extend(true,\n            $.AdminLTE.options,\n            AdminLTEOptions);\n  }\n\n  //Easy access to options\n  var o = $.AdminLTE.options;\n\n  //Set up the object\n  _init();\n\n  //Activate the layout maker\n  $.AdminLTE.layout.activate();\n\n  //Enable sidebar tree view controls\n  $.AdminLTE.tree('.sidebar');\n\n  //Enable control sidebar\n  if (o.enableControlSidebar) {\n    $.AdminLTE.controlSidebar.activate();\n  }\n\n  //Add slimscroll to navbar dropdown\n  if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {\n    $(\".navbar .menu\").slimscroll({\n      height: o.navbarMenuHeight,\n      alwaysVisible: false,\n      size: o.navbarMenuSlimscrollWidth\n    }).css(\"width\", \"100%\");\n  }\n\n  //Activate sidebar push menu\n  if (o.sidebarPushMenu) {\n    $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector);\n  }\n\n  //Activate Bootstrap tooltip\n  if (o.enableBSToppltip) {\n    $('body').tooltip({\n      selector: o.BSTooltipSelector\n    });\n  }\n\n  //Activate box widget\n  if (o.enableBoxWidget) {\n    $.AdminLTE.boxWidget.activate();\n  }\n\n  //Activate fast click\n  if (o.enableFastclick && typeof FastClick != 'undefined') {\n    FastClick.attach(document.body);\n  }\n\n  //Activate direct chat widget\n  if (o.directChat.enable) {\n    $(document).on('click', o.directChat.contactToggleSelector, function () {\n      var box = $(this).parents('.direct-chat').first();\n      box.toggleClass('direct-chat-contacts-open');\n    });\n  }\n\n  /*\n   * INITIALIZE BUTTON TOGGLE\n   * ------------------------\n   */\n  $('.btn-group[data-toggle=\"btn-toggle\"]').each(function () {\n    var group = $(this);\n    $(this).find(\".btn\").on('click', function (e) {\n      group.find(\".btn.active\").removeClass(\"active\");\n      $(this).addClass(\"active\");\n      e.preventDefault();\n    });\n\n  });\n});\n\n/* ----------------------------------\n * - Initialize the AdminLTE Object -\n * ----------------------------------\n * All AdminLTE functions are implemented below.\n */\nfunction _init() {\n  'use strict';\n  /* Layout\n   * ======\n   * Fixes the layout height in case min-height fails.\n   *\n   * @type Object\n   * @usage $.AdminLTE.layout.activate()\n   *        $.AdminLTE.layout.fix()\n   *        $.AdminLTE.layout.fixSidebar()\n   */\n  $.AdminLTE.layout = {\n    activate: function () {\n      var _this = this;\n      _this.fix();\n      _this.fixSidebar();\n      $(window, \".wrapper\").resize(function () {\n        _this.fix();\n        _this.fixSidebar();\n      });\n    },\n    fix: function () {\n      //Get window height and the wrapper height\n      var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight();\n      var window_height = $(window).height();\n      var sidebar_height = $(\".sidebar\").height();\n      //Set the min-height of the content and sidebar based on the\n      //the height of the document.\n      if ($(\"body\").hasClass(\"fixed\")) {\n        $(\".content-wrapper, .right-side\").css('min-height', window_height - $('.main-footer').outerHeight());\n      } else {\n        var postSetWidth;\n        if (window_height >= sidebar_height) {\n          $(\".content-wrapper, .right-side\").css('min-height', window_height - neg);\n          postSetWidth = window_height - neg;\n        } else {\n          $(\".content-wrapper, .right-side\").css('min-height', sidebar_height);\n          postSetWidth = sidebar_height;\n        }\n\n        //Fix for the control sidebar height\n        var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector);\n        if (typeof controlSidebar !== \"undefined\") {\n          if (controlSidebar.height() > postSetWidth)\n            $(\".content-wrapper, .right-side\").css('min-height', controlSidebar.height());\n        }\n\n      }\n    },\n    fixSidebar: function () {\n      //Make sure the body tag has the .fixed class\n      if (!$(\"body\").hasClass(\"fixed\")) {\n        if (typeof $.fn.slimScroll != 'undefined') {\n          $(\".sidebar\").slimScroll({destroy: true}).height(\"auto\");\n        }\n        return;\n      } else if (typeof $.fn.slimScroll == 'undefined' && window.console) {\n        window.console.error(\"Error: the fixed layout requires the slimscroll plugin!\");\n      }\n      //Enable slimscroll for fixed layout\n      if ($.AdminLTE.options.sidebarSlimScroll) {\n        if (typeof $.fn.slimScroll != 'undefined') {\n          var focusedElement = $(\"input:focus\", $(\".sidebar\"));\n          //Destroy if it exists\n          $(\".sidebar\").slimScroll({destroy: true}).height(\"auto\");\n          //Add slimscroll\n          $(\".sidebar\").slimscroll({\n            height: ($(window).height() - $(\".main-header\").height()) + \"px\",\n            color: \"rgba(0,0,0,0.2)\",\n            size: \"3px\"\n          });\n            //Refocus input if it exists after slimscroll init\n          // this is an ugly hack provided by an adminlte contributor. remove this, as soon as the search input field goes to the header bar.\n          if(focusedElement[0]) {\n            focusedElement.focus();\n          }\n        }\n      }\n    }\n  };\n\n  /* PushMenu()\n   * ==========\n   * Adds the push menu functionality to the sidebar.\n   *\n   * @type Function\n   * @usage: $.AdminLTE.pushMenu(\"[data-toggle='offcanvas']\")\n   */\n  $.AdminLTE.pushMenu = {\n    activate: function (toggleBtn) {\n      //Get the screen sizes\n      var screenSizes = $.AdminLTE.options.screenSizes;\n\n      //Enable sidebar toggle\n      $(toggleBtn).on('click', function (e) {\n        e.preventDefault();\n\n        //Enable sidebar push menu\n        if ($(window).width() > (screenSizes.sm - 1)) {\n          if ($(\"body\").hasClass('sidebar-collapse')) {\n            $(\"body\").removeClass('sidebar-collapse').trigger('expanded.pushMenu');\n          } else {\n            $(\"body\").addClass('sidebar-collapse').trigger('collapsed.pushMenu');\n          }\n        }\n        //Handle sidebar push menu for small screens\n        else {\n          if ($(\"body\").hasClass('sidebar-open')) {\n            $(\"body\").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu');\n          } else {\n            $(\"body\").addClass('sidebar-open').trigger('expanded.pushMenu');\n          }\n        }\n      });\n\n      $(\".content-wrapper\").click(function () {\n        //Enable hide menu when clicking on the content-wrapper on small screens\n        if ($(window).width() <= (screenSizes.sm - 1) && $(\"body\").hasClass(\"sidebar-open\")) {\n          $(\"body\").removeClass('sidebar-open');\n        }\n      });\n\n      //Enable expand on hover for sidebar mini\n      if ($.AdminLTE.options.sidebarExpandOnHover\n              || ($('body').hasClass('fixed')\n                      && $('body').hasClass('sidebar-mini'))) {\n        this.expandOnHover();\n      }\n    },\n    expandOnHover: function () {\n      var _this = this;\n      var screenWidth = $.AdminLTE.options.screenSizes.sm - 1;\n      //Expand sidebar on hover\n      $('.main-sidebar').hover(function () {\n        if ($('body').hasClass('sidebar-mini')\n                && $(\"body\").hasClass('sidebar-collapse')\n                && $(window).width() > screenWidth) {\n          _this.expand();\n        }\n      }, function () {\n        if ($('body').hasClass('sidebar-mini')\n                && $('body').hasClass('sidebar-expanded-on-hover')\n                && $(window).width() > screenWidth) {\n          _this.collapse();\n        }\n      });\n    },\n    expand: function () {\n      $(\"body\").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover');\n    },\n    collapse: function () {\n      if ($('body').hasClass('sidebar-expanded-on-hover')) {\n        $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse');\n      }\n    }\n  };\n\n  /* Tree()\n   * ======\n   * Converts the sidebar into a multilevel\n   * tree view menu.\n   *\n   * @type Function\n   * @Usage: $.AdminLTE.tree('.sidebar')\n   */\n  $.AdminLTE.tree = function (menu) {\n    var _this = this;\n    var animationSpeed = $.AdminLTE.options.animationSpeed;\n    $(document).on('click', menu + ' li a', function (e) {\n      //Get the clicked link and the next element\n      var $this = $(this);\n      var checkElement = $this.next();\n\n      //Check if the next element is a menu and is visible\n      if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible'))) {\n        //Close the menu\n        checkElement.slideUp(animationSpeed, function () {\n          checkElement.removeClass('menu-open');\n          //Fix the layout in case the sidebar stretches over the height of the window\n          //_this.layout.fix();\n        });\n        checkElement.parent(\"li\").removeClass(\"active\");\n      }\n      //If the menu is not visible\n      else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {\n        //Get the parent menu\n        var parent = $this.parents('ul').first();\n        //Close all open menus within the parent\n        var ul = parent.find('ul:visible').slideUp(animationSpeed);\n        //Remove the menu-open class from the parent\n        ul.removeClass('menu-open');\n        //Get the parent li\n        var parent_li = $this.parent(\"li\");\n\n        //Open the target menu and add the menu-open class\n        checkElement.slideDown(animationSpeed, function () {\n          //Add the class active to the parent li\n          checkElement.addClass('menu-open');\n          parent.find('li.active').removeClass('active');\n          parent_li.addClass('active');\n          //Fix the layout in case the sidebar stretches over the height of the window\n          _this.layout.fix();\n        });\n      }\n      //if this isn't a link, prevent the page from being redirected\n      if (checkElement.is('.treeview-menu')) {\n        e.preventDefault();\n      }\n    });\n  };\n\n  /* ControlSidebar\n   * ==============\n   * Adds functionality to the right sidebar\n   *\n   * @type Object\n   * @usage $.AdminLTE.controlSidebar.activate(options)\n   */\n  $.AdminLTE.controlSidebar = {\n    //instantiate the object\n    activate: function () {\n      //Get the object\n      var _this = this;\n      //Update options\n      var o = $.AdminLTE.options.controlSidebarOptions;\n      //Get the sidebar\n      var sidebar = $(o.selector);\n      //The toggle button\n      var btn = $(o.toggleBtnSelector);\n\n      //Listen to the click event\n      btn.on('click', function (e) {\n        e.preventDefault();\n        //If the sidebar is not open\n        if (!sidebar.hasClass('control-sidebar-open')\n                && !$('body').hasClass('control-sidebar-open')) {\n          //Open the sidebar\n          _this.open(sidebar, o.slide);\n        } else {\n          _this.close(sidebar, o.slide);\n        }\n      });\n\n      //If the body has a boxed layout, fix the sidebar bg position\n      var bg = $(\".control-sidebar-bg\");\n      _this._fix(bg);\n\n      //If the body has a fixed layout, make the control sidebar fixed\n      if ($('body').hasClass('fixed')) {\n        _this._fixForFixed(sidebar);\n      } else {\n        //If the content height is less than the sidebar's height, force max height\n        if ($('.content-wrapper, .right-side').height() < sidebar.height()) {\n          _this._fixForContent(sidebar);\n        }\n      }\n    },\n    //Open the control sidebar\n    open: function (sidebar, slide) {\n      //Slide over content\n      if (slide) {\n        sidebar.addClass('control-sidebar-open');\n      } else {\n        //Push the content by adding the open class to the body instead\n        //of the sidebar itself\n        $('body').addClass('control-sidebar-open');\n      }\n    },\n    //Close the control sidebar\n    close: function (sidebar, slide) {\n      if (slide) {\n        sidebar.removeClass('control-sidebar-open');\n      } else {\n        $('body').removeClass('control-sidebar-open');\n      }\n    },\n    _fix: function (sidebar) {\n      var _this = this;\n      if ($(\"body\").hasClass('layout-boxed')) {\n        sidebar.css('position', 'absolute');\n        sidebar.height($(\".wrapper\").height());\n        $(window).resize(function () {\n          _this._fix(sidebar);\n        });\n      } else {\n        sidebar.css({\n          'position': 'fixed',\n          'height': 'auto'\n        });\n      }\n    },\n    _fixForFixed: function (sidebar) {\n      sidebar.css({\n        'position': 'fixed',\n        'max-height': '100%',\n        'overflow': 'auto',\n        'padding-bottom': '50px'\n      });\n    },\n    _fixForContent: function (sidebar) {\n      $(\".content-wrapper, .right-side\").css('min-height', sidebar.height());\n    }\n  };\n\n  /* BoxWidget\n   * =========\n   * BoxWidget is a plugin to handle collapsing and\n   * removing boxes from the screen.\n   *\n   * @type Object\n   * @usage $.AdminLTE.boxWidget.activate()\n   *        Set all your options in the main $.AdminLTE.options object\n   */\n  $.AdminLTE.boxWidget = {\n    selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,\n    icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,\n    animationSpeed: $.AdminLTE.options.animationSpeed,\n    activate: function (_box) {\n      var _this = this;\n      if (!_box) {\n        _box = document; // activate all boxes per default\n      }\n      //Listen for collapse event triggers\n      $(_box).on('click', _this.selectors.collapse, function (e) {\n        e.preventDefault();\n        _this.collapse($(this));\n      });\n\n      //Listen for remove event triggers\n      $(_box).on('click', _this.selectors.remove, function (e) {\n        e.preventDefault();\n        _this.remove($(this));\n      });\n    },\n    collapse: function (element) {\n      var _this = this;\n      //Find the box parent\n      var box = element.parents(\".box\").first();\n      //Find the body and the footer\n      var box_content = box.find(\"> .box-body, > .box-footer, > form  >.box-body, > form > .box-footer\");\n      if (!box.hasClass(\"collapsed-box\")) {\n        //Convert minus into plus\n        element.children(\":first\")\n                .removeClass(_this.icons.collapse)\n                .addClass(_this.icons.open);\n        //Hide the content\n        box_content.slideUp(_this.animationSpeed, function () {\n          box.addClass(\"collapsed-box\");\n        });\n      } else {\n        //Convert plus into minus\n        element.children(\":first\")\n                .removeClass(_this.icons.open)\n                .addClass(_this.icons.collapse);\n        //Show the content\n        box_content.slideDown(_this.animationSpeed, function () {\n          box.removeClass(\"collapsed-box\");\n        });\n      }\n    },\n    remove: function (element) {\n      //Find the box parent\n      var box = element.parents(\".box\").first();\n      box.slideUp(this.animationSpeed);\n    }\n  };\n}\n\n/* ------------------\n * - Custom Plugins -\n * ------------------\n * All custom plugins are defined below.\n */\n\n/*\n * BOX REFRESH BUTTON\n * ------------------\n * This is a custom plugin to use with the component BOX. It allows you to add\n * a refresh button to the box. It converts the box's state to a loading state.\n *\n * @type plugin\n * @usage $(\"#box-widget\").boxRefresh( options );\n */\n(function ($) {\n\n  \"use strict\";\n\n  $.fn.boxRefresh = function (options) {\n\n    // Render options\n    var settings = $.extend({\n      //Refresh button selector\n      trigger: \".refresh-btn\",\n      //File source to be loaded (e.g: ajax/src.php)\n      source: \"\",\n      //Callbacks\n      onLoadStart: function (box) {\n        return box;\n      }, //Right after the button has been clicked\n      onLoadDone: function (box) {\n        return box;\n      } //When the source has been loaded\n\n    }, options);\n\n    //The overlay\n    var overlay = $('<div class=\"overlay\"><div class=\"fa fa-refresh fa-spin\"></div></div>');\n\n    return this.each(function () {\n      //if a source is specified\n      if (settings.source === \"\") {\n        if (window.console) {\n          window.console.log(\"Please specify a source first - boxRefresh()\");\n        }\n        return;\n      }\n      //the box\n      var box = $(this);\n      //the button\n      var rBtn = box.find(settings.trigger).first();\n\n      //On trigger click\n      rBtn.on('click', function (e) {\n        e.preventDefault();\n        //Add loading overlay\n        start(box);\n\n        //Perform ajax call\n        box.find(\".box-body\").load(settings.source, function () {\n          done(box);\n        });\n      });\n    });\n\n    function start(box) {\n      //Add overlay and loading img\n      box.append(overlay);\n\n      settings.onLoadStart.call(box);\n    }\n\n    function done(box) {\n      //Remove overlay and loading img\n      box.find(overlay).remove();\n\n      settings.onLoadDone.call(box);\n    }\n\n  };\n\n})(jQuery);\n\n/*\n * EXPLICIT BOX ACTIVATION\n * -----------------------\n * This is a custom plugin to use with the component BOX. It allows you to activate\n * a box inserted in the DOM after the app.js was loaded.\n *\n * @type plugin\n * @usage $(\"#box-widget\").activateBox();\n */\n(function ($) {\n\n  'use strict';\n\n  $.fn.activateBox = function () {\n    $.AdminLTE.boxWidget.activate(this);\n  };\n\n})(jQuery);\n\n/*\n * TODO LIST CUSTOM PLUGIN\n * -----------------------\n * This plugin depends on iCheck plugin for checkbox and radio inputs\n *\n * @type plugin\n * @usage $(\"#todo-widget\").todolist( options );\n */\n(function ($) {\n\n  'use strict';\n\n  $.fn.todolist = function (options) {\n    // Render options\n    var settings = $.extend({\n      //When the user checks the input\n      onCheck: function (ele) {\n        return ele;\n      },\n      //When the user unchecks the input\n      onUncheck: function (ele) {\n        return ele;\n      }\n    }, options);\n\n    return this.each(function () {\n\n      if (typeof $.fn.iCheck != 'undefined') {\n        $('input', this).on('ifChecked', function () {\n          var ele = $(this).parents(\"li\").first();\n          ele.toggleClass(\"done\");\n          settings.onCheck.call(ele);\n        });\n\n        $('input', this).on('ifUnchecked', function () {\n          var ele = $(this).parents(\"li\").first();\n          ele.toggleClass(\"done\");\n          settings.onUncheck.call(ele);\n        });\n      } else {\n        $('input', this).on('change', function () {\n          var ele = $(this).parents(\"li\").first();\n          ele.toggleClass(\"done\");\n          if ($('input', ele).is(\":checked\")) {\n            settings.onCheck.call(ele);\n          } else {\n            settings.onUncheck.call(ele);\n          }\n        });\n      }\n    });\n  };\n}(jQuery));\n", "/*!\n *   AdminLTE v2.3.3\n *   Author: Almsaeed Studio\n *\t Website: Almsaeed Studio <http://almsaeedstudio.com>\n *   License: Open source - MIT\n *           Please visit http://opensource.org/licenses/MIT for more information\n!*/\n/*\n * Core: General Layout Style\n * -------------------------\n */\nhtml,\nbody {\n  min-height: 100%;\n}\n.layout-boxed html,\n.layout-boxed body {\n  height: 100%;\n}\nbody {\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n/* Layout */\n.wrapper {\n  min-height: 100%;\n  position: relative;\n  overflow: hidden;\n}\n.wrapper:before,\n.wrapper:after {\n  content: \" \";\n  display: table;\n}\n.wrapper:after {\n  clear: both;\n}\n.layout-boxed .wrapper {\n  max-width: 1250px;\n  margin: 0 auto;\n  min-height: 100%;\n  box-shadow: 0 0 8px rgba(0, 0, 0, 0.5);\n  position: relative;\n}\n.layout-boxed {\n  /*background: url('../img/boxed-bg.jpg') repeat fixed;*/\n}\n/*\n * Content Wrapper - contains the main content\n * ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper  ```\n */\n.content-wrapper,\n.right-side,\n.main-footer {\n  -webkit-transition: -webkit-transform 0.3s ease-in-out, margin 0.3s ease-in-out;\n  -moz-transition: -moz-transform 0.3s ease-in-out, margin 0.3s ease-in-out;\n  -o-transition: -o-transform 0.3s ease-in-out, margin 0.3s ease-in-out;\n  transition: transform 0.3s ease-in-out, margin 0.3s ease-in-out;\n  margin-left: 230px;\n  z-index: 820;\n}\n.layout-top-nav .content-wrapper,\n.layout-top-nav .right-side,\n.layout-top-nav .main-footer {\n  margin-left: 0;\n}\n@media (max-width: 767px) {\n  .content-wrapper,\n  .right-side,\n  .main-footer {\n    margin-left: 0;\n  }\n}\n@media (min-width: 768px) {\n  .sidebar-collapse .content-wrapper,\n  .sidebar-collapse .right-side,\n  .sidebar-collapse .main-footer {\n    margin-left: 0;\n  }\n}\n@media (max-width: 767px) {\n  .sidebar-open .content-wrapper,\n  .sidebar-open .right-side,\n  .sidebar-open .main-footer {\n    -webkit-transform: translate(230px, 0);\n    -ms-transform: translate(230px, 0);\n    -o-transform: translate(230px, 0);\n    transform: translate(230px, 0);\n  }\n}\n.content-wrapper,\n.right-side {\n  min-height: 100%;\n  background-color: #ecf0f5;\n  z-index: 800;\n}\n.main-footer {\n  background: #fff;\n  padding: 15px;\n  color: #444;\n  border-top: 1px solid #d2d6de;\n}\n/* Fixed layout */\n.fixed .main-header,\n.fixed .main-sidebar,\n.fixed .left-side {\n  position: fixed;\n}\n.fixed .main-header {\n  top: 0;\n  right: 0;\n  left: 0;\n}\n.fixed .content-wrapper,\n.fixed .right-side {\n  padding-top: 50px;\n}\n@media (max-width: 767px) {\n  .fixed .content-wrapper,\n  .fixed .right-side {\n    padding-top: 50px;\n  }\n}\n.fixed.layout-boxed .wrapper {\n  max-width: 100%;\n}\nbody.hold-transition .content-wrapper,\nbody.hold-transition .right-side,\nbody.hold-transition .main-footer,\nbody.hold-transition .main-sidebar,\nbody.hold-transition .left-side,\nbody.hold-transition .main-header > .navbar,\nbody.hold-transition .main-header .logo {\n  /* Fix for IE */\n  -webkit-transition: none;\n  -o-transition: none;\n  transition: none;\n}\n/* Content */\n.content {\n  min-height: 250px;\n  padding: 15px;\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n/* H1 - H6 font */\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: 'Source Sans Pro', sans-serif;\n}\n/* General Links */\na {\n  color: #008199;\n}\na:hover,\na:active,\na:focus {\n  outline: none;\n  text-decoration: none;\n  color: #00c1e5;\n}\n/* Page Header */\n.page-header {\n  margin: 10px 0 20px 0;\n  font-size: 22px;\n}\n.page-header > small {\n  color: #666;\n  display: block;\n  margin-top: 5px;\n}\n/*\n * Component: Main Header\n * ----------------------\n */\n.main-header {\n  position: relative;\n  max-height: 100px;\n  z-index: 1030;\n}\n.main-header > .navbar {\n  -webkit-transition: margin-left 0.3s ease-in-out;\n  -o-transition: margin-left 0.3s ease-in-out;\n  transition: margin-left 0.3s ease-in-out;\n  margin-bottom: 0;\n  margin-left: 230px;\n  border: none;\n  min-height: 50px;\n  border-radius: 0;\n}\n.layout-top-nav .main-header > .navbar {\n  margin-left: 0;\n}\n.main-header #navbar-search-input.form-control {\n  background: rgba(255, 255, 255, 0.2);\n  border-color: transparent;\n}\n.main-header #navbar-search-input.form-control:focus,\n.main-header #navbar-search-input.form-control:active {\n  border-color: rgba(0, 0, 0, 0.1);\n  background: rgba(255, 255, 255, 0.9);\n}\n.main-header #navbar-search-input.form-control::-moz-placeholder {\n  color: #ccc;\n  opacity: 1;\n}\n.main-header #navbar-search-input.form-control:-ms-input-placeholder {\n  color: #ccc;\n}\n.main-header #navbar-search-input.form-control::-webkit-input-placeholder {\n  color: #ccc;\n}\n.main-header .navbar-custom-menu,\n.main-header .navbar-right {\n  float: right;\n}\n@media (max-width: 991px) {\n  .main-header .navbar-custom-menu a,\n  .main-header .navbar-right a {\n    color: inherit;\n    background: transparent;\n  }\n}\n@media (max-width: 767px) {\n  .main-header .navbar-right {\n    float: none;\n  }\n  .navbar-collapse .main-header .navbar-right {\n    margin: 7.5px -15px;\n  }\n  .main-header .navbar-right > li {\n    color: inherit;\n    border: 0;\n  }\n}\n.main-header .sidebar-toggle {\n  float: left;\n  background-color: transparent;\n  background-image: none;\n  padding: 15px 15px;\n  font-family: fontAwesome;\n}\n.main-header .sidebar-toggle:before {\n  content: \"\\f0c9\";\n}\n.main-header .sidebar-toggle:hover {\n  color: #fff;\n}\n.main-header .sidebar-toggle:focus,\n.main-header .sidebar-toggle:active {\n  background: transparent;\n}\n.main-header .sidebar-toggle .icon-bar {\n  display: none;\n}\n.main-header .navbar .nav > li.user > a > .fa,\n.main-header .navbar .nav > li.user > a > .glyphicon,\n.main-header .navbar .nav > li.user > a > .ion {\n  margin-right: 5px;\n}\n.main-header .navbar .nav > li > a > .label {\n  position: absolute;\n  top: 9px;\n  right: 7px;\n  text-align: center;\n  font-size: 9px;\n  padding: 2px 3px;\n  line-height: .9;\n}\n.main-header .logo {\n  -webkit-transition: width 0.3s ease-in-out;\n  -o-transition: width 0.3s ease-in-out;\n  transition: width 0.3s ease-in-out;\n  display: block;\n  float: left;\n  height: 50px;\n  font-size: 20px;\n  line-height: 50px;\n  text-align: center;\n  width: 230px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  padding: 0 15px;\n  font-weight: 300;\n  overflow: hidden;\n}\n.main-header .logo .logo-lg {\n  display: block;\n}\n.main-header .logo .logo-mini {\n  display: none;\n}\n.main-header .navbar-brand {\n  color: #fff;\n}\n.content-header {\n  position: relative;\n  padding: 15px 15px 0 15px;\n}\n.content-header > h1 {\n  margin: 0;\n}\n.content-header-fixed {\n  position: fixed;\n  background-color: #ffffff;\n  margin-left: 230px;\n  left: 0;\n  right: 0;\n  padding: 15px 15px 0 15px;\n  transition: transform 0.3s ease-in-out 0s, margin 0.3s ease-in-out 0s;\n  z-index: 800;\n}\n.content-header-fixed .nav-tabs {\n  margin-top: 15px;\n}\n.content-header-fixed .nav-tabs > li > a {\n  border: none;\n}\n.content-header-fixed ul {\n  border: none;\n}\n.content-header-fixed .nav-tabs > li.active > a {\n  border-bottom: 3px solid #008199;\n  background-color: inherit;\n  margin-bottom: -3px;\n}\n.content-header-fixed .nav-tabs > li > a:hover {\n  border-left: none;\n  border-right: none;\n  border-top: none;\n  background-color: #f5f5f5;\n}\n.content-header-fixed > h1 {\n  margin: 0 0 15px 0;\n}\n.content-header-fixed > h1,\n.content-header > h1 {\n  font-size: 24px;\n}\n.content-header-fixed > h1 > small,\n.content-header > h1 > small {\n  font-size: 15px;\n  display: inline-block;\n  padding-left: 4px;\n  font-weight: 300;\n}\n.content-header-fixed > .breadcrumb,\n.content-header > .breadcrumb {\n  float: right;\n  background: transparent;\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 12px;\n  padding: 7px 5px;\n  position: absolute;\n  top: 15px;\n  right: 10px;\n  border-radius: 2px;\n}\n.content-header-fixed > .breadcrumb > li > a,\n.content-header > .breadcrumb > li > a {\n  color: #444;\n  text-decoration: none;\n  display: inline-block;\n}\n.content-header-fixed > .breadcrumb > li > a > .fa,\n.content-header > .breadcrumb > li > a > .fa,\n.content-header-fixed > .breadcrumb > li > a > .glyphicon,\n.content-header > .breadcrumb > li > a > .glyphicon,\n.content-header-fixed > .breadcrumb > li > a > .ion,\n.content-header > .breadcrumb > li > a > .ion {\n  margin-right: 5px;\n}\n.content-header-fixed > .breadcrumb > li + li:before,\n.content-header > .breadcrumb > li + li:before {\n  content: '>\\00a0';\n}\n@media (max-width: 991px) {\n  .content-header-fixed > .breadcrumb,\n  .content-header > .breadcrumb {\n    position: relative;\n    margin-top: 5px;\n    top: 0;\n    right: 0;\n    float: none;\n    background: #d2d6de;\n    padding-left: 10px;\n  }\n  .content-header-fixed > .breadcrumb li:before,\n  .content-header > .breadcrumb li:before {\n    color: #97a0b3;\n  }\n}\n.navbar-toggle {\n  color: #fff;\n  border: 0;\n  margin: 0;\n  padding: 15px 15px;\n}\n@media (max-width: 991px) {\n  .navbar-custom-menu .navbar-nav > li {\n    float: left;\n  }\n  .navbar-custom-menu .navbar-nav {\n    margin: 0;\n    float: left;\n  }\n  .navbar-custom-menu .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n    line-height: 20px;\n  }\n}\n@media (max-width: 767px) {\n  .main-header {\n    position: relative;\n  }\n  .main-header .logo,\n  .main-header .navbar {\n    width: 100%;\n    float: none;\n  }\n  .main-header .navbar {\n    margin: 0;\n  }\n  .main-header .navbar-custom-menu {\n    float: right;\n  }\n}\n@media (max-width: 991px) {\n  .navbar-collapse.pull-left {\n    float: none !important;\n  }\n  .navbar-collapse.pull-left + .navbar-custom-menu {\n    display: block;\n    position: absolute;\n    top: 0;\n    right: 40px;\n  }\n}\n/*\n * Component: Sidebar\n * ------------------\n */\n.main-sidebar,\n.left-side {\n  position: absolute;\n  top: 0;\n  left: 0;\n  padding-top: 50px;\n  min-height: 100%;\n  width: 230px;\n  z-index: 810;\n  -webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in-out;\n  -moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out;\n  -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out;\n  transition: transform 0.3s ease-in-out, width 0.3s ease-in-out;\n}\n@media (max-width: 767px) {\n  .main-sidebar,\n  .left-side {\n    padding-top: 100px;\n  }\n}\n@media (max-width: 767px) {\n  .main-sidebar,\n  .left-side {\n    -webkit-transform: translate(-230px, 0);\n    -ms-transform: translate(-230px, 0);\n    -o-transform: translate(-230px, 0);\n    transform: translate(-230px, 0);\n  }\n}\n@media (min-width: 768px) {\n  .sidebar-collapse .main-sidebar,\n  .sidebar-collapse .left-side {\n    -webkit-transform: translate(-230px, 0);\n    -ms-transform: translate(-230px, 0);\n    -o-transform: translate(-230px, 0);\n    transform: translate(-230px, 0);\n  }\n}\n@media (max-width: 767px) {\n  .sidebar-open .main-sidebar,\n  .sidebar-open .left-side {\n    -webkit-transform: translate(0, 0);\n    -ms-transform: translate(0, 0);\n    -o-transform: translate(0, 0);\n    transform: translate(0, 0);\n  }\n}\n.sidebar {\n  padding-bottom: 10px;\n}\n.sidebar-form input:focus {\n  border-color: transparent;\n}\n.user-panel {\n  position: relative;\n  width: 100%;\n  padding: 10px;\n  overflow: hidden;\n}\n.user-panel:before,\n.user-panel:after {\n  content: \" \";\n  display: table;\n}\n.user-panel:after {\n  clear: both;\n}\n.user-panel > .image > img {\n  width: 100%;\n  max-width: 45px;\n  height: auto;\n}\n.user-panel > .info {\n  padding: 5px 5px 5px 15px;\n  line-height: 1;\n  position: absolute;\n  left: 55px;\n}\n.user-panel > .info > p {\n  font-weight: 600;\n  margin-bottom: 9px;\n}\n.user-panel > .info > a {\n  text-decoration: none;\n  padding-right: 5px;\n  margin-top: 3px;\n  font-size: 11px;\n}\n.user-panel > .info > a > .fa,\n.user-panel > .info > a > .ion,\n.user-panel > .info > a > .glyphicon {\n  margin-right: 3px;\n}\n.sidebar-menu {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n.sidebar-menu > li {\n  position: relative;\n  margin: 0;\n  padding: 0;\n}\n.sidebar-menu > li > a {\n  padding: 12px 5px 12px 15px;\n  display: block;\n}\n.sidebar-menu > li > a > .fa,\n.sidebar-menu > li > a > .glyphicon,\n.sidebar-menu > li > a > .ion {\n  width: 20px;\n}\n.sidebar-menu > li .label,\n.sidebar-menu > li .badge {\n  margin-top: 3px;\n  margin-right: 5px;\n}\n.sidebar-menu li.header {\n  padding: 10px 25px 10px 15px;\n  font-size: 12px;\n}\n.sidebar-menu li > a > .fa-angle-left {\n  width: auto;\n  height: auto;\n  padding: 0;\n  margin-right: 10px;\n  margin-top: 3px;\n}\n.sidebar-menu li.active > a > .fa-angle-left {\n  -webkit-transform: rotate(-90deg);\n  -ms-transform: rotate(-90deg);\n  -o-transform: rotate(-90deg);\n  transform: rotate(-90deg);\n}\n.sidebar-menu li.active > .treeview-menu {\n  display: block;\n}\n.sidebar-menu .treeview-menu {\n  display: none;\n  list-style: none;\n  padding: 0;\n  margin: 0;\n  padding-left: 5px;\n}\n.sidebar-menu .treeview-menu .treeview-menu {\n  padding-left: 20px;\n}\n.sidebar-menu .treeview-menu > li {\n  margin: 0;\n}\n.sidebar-menu .treeview-menu > li > a {\n  padding: 5px 5px 5px 15px;\n  display: block;\n  font-size: 14px;\n}\n.sidebar-menu .treeview-menu > li > a > .fa,\n.sidebar-menu .treeview-menu > li > a > .glyphicon,\n.sidebar-menu .treeview-menu > li > a > .ion {\n  width: 20px;\n}\n.sidebar-menu .treeview-menu > li > a > .fa-angle-left,\n.sidebar-menu .treeview-menu > li > a > .fa-angle-down {\n  width: auto;\n}\n/*\n * Component: Sidebar Mini\n */\n@media (min-width: 768px) {\n  .sidebar-mini.sidebar-collapse .content-wrapper,\n  .sidebar-mini.sidebar-collapse .right-side,\n  .sidebar-mini.sidebar-collapse .main-footer {\n    margin-left: 50px !important;\n    z-index: 840;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar {\n    -webkit-transform: translate(0, 0);\n    -ms-transform: translate(0, 0);\n    -o-transform: translate(0, 0);\n    transform: translate(0, 0);\n    width: 40px !important;\n    z-index: 850;\n  }\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li {\n    position: relative;\n  }\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li > a {\n    margin-right: 0;\n  }\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span {\n    border-top-right-radius: 4px;\n  }\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span {\n    border-bottom-right-radius: 4px;\n  }\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {\n    padding-top: 5px;\n    padding-bottom: 5px;\n    border-bottom-right-radius: 4px;\n  }\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right),\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu {\n    display: block !important;\n    position: absolute;\n    width: 180px;\n    left: 50px;\n  }\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span {\n    top: 0;\n    margin-left: -3px;\n    padding: 12px 5px 12px 20px;\n    background-color: inherit;\n  }\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu {\n    top: 44px;\n    margin-left: 0;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info,\n  .sidebar-mini.sidebar-collapse .sidebar-form,\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span,\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu,\n  .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right,\n  .sidebar-mini.sidebar-collapse .sidebar-menu li.header {\n    display: none !important;\n    -webkit-transform: translateZ(0);\n  }\n  .sidebar-mini.sidebar-collapse .main-header .logo {\n    width: 50px;\n  }\n  .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini {\n    display: block;\n    margin-left: -15px;\n    margin-right: -15px;\n    font-size: 18px;\n  }\n  .sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg {\n    display: none;\n  }\n  .sidebar-mini.sidebar-collapse .main-header .navbar {\n    margin-left: 50px;\n  }\n}\n.sidebar-menu,\n.main-sidebar .user-panel,\n.sidebar-menu > li.header {\n  white-space: nowrap;\n  overflow: hidden;\n}\n.sidebar-menu:hover {\n  overflow: visible;\n}\n.sidebar-form,\n.sidebar-menu > li.header {\n  overflow: hidden;\n  text-overflow: clip;\n}\n.sidebar-menu li > a {\n  position: relative;\n}\n.sidebar-menu li > a > .pull-right {\n  position: absolute;\n  right: 10px;\n  top: 50%;\n  margin-top: -7px;\n}\n/*\n * Component: Control sidebar. By default, this is the right sidebar.\n */\n.control-sidebar-bg {\n  position: fixed;\n  z-index: 1000;\n  bottom: 0;\n}\n.control-sidebar-bg,\n.control-sidebar {\n  top: 0;\n  right: -230px;\n  width: 230px;\n  -webkit-transition: right 0.3s ease-in-out;\n  -o-transition: right 0.3s ease-in-out;\n  transition: right 0.3s ease-in-out;\n}\n.control-sidebar {\n  position: absolute;\n  padding-top: 50px;\n  z-index: 1010;\n}\n@media (max-width: 768px) {\n  .control-sidebar {\n    padding-top: 100px;\n  }\n}\n.control-sidebar > .tab-content {\n  padding: 10px 15px;\n}\n.control-sidebar.control-sidebar-open,\n.control-sidebar.control-sidebar-open + .control-sidebar-bg {\n  right: 0;\n}\n.control-sidebar-open .control-sidebar-bg,\n.control-sidebar-open .control-sidebar {\n  right: 0;\n}\n@media (min-width: 768px) {\n  .control-sidebar-open .content-wrapper,\n  .control-sidebar-open .right-side,\n  .control-sidebar-open .main-footer {\n    margin-right: 230px;\n  }\n}\n.nav-tabs.control-sidebar-tabs > li:first-of-type > a,\n.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover,\n.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus {\n  border-left-width: 0;\n}\n.nav-tabs.control-sidebar-tabs > li > a {\n  border-radius: 0;\n}\n.nav-tabs.control-sidebar-tabs > li > a,\n.nav-tabs.control-sidebar-tabs > li > a:hover {\n  border-top: none;\n  border-right: none;\n  border-left: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n}\n.nav-tabs.control-sidebar-tabs > li > a .icon {\n  font-size: 16px;\n}\n.nav-tabs.control-sidebar-tabs > li.active > a,\n.nav-tabs.control-sidebar-tabs > li.active > a:hover,\n.nav-tabs.control-sidebar-tabs > li.active > a:focus,\n.nav-tabs.control-sidebar-tabs > li.active > a:active {\n  border-top: none;\n  border-right: none;\n  border-bottom: none;\n}\n@media (max-width: 768px) {\n  .nav-tabs.control-sidebar-tabs {\n    display: table;\n  }\n  .nav-tabs.control-sidebar-tabs > li {\n    display: table-cell;\n  }\n}\n.control-sidebar-heading {\n  font-weight: 400;\n  font-size: 16px;\n  padding: 10px 0;\n  margin-bottom: 10px;\n}\n.control-sidebar-subheading {\n  display: block;\n  font-weight: 400;\n  font-size: 14px;\n}\n.control-sidebar-menu {\n  list-style: none;\n  padding: 0;\n  margin: 0 -15px;\n}\n.control-sidebar-menu > li > a {\n  display: block;\n  padding: 10px 15px;\n}\n.control-sidebar-menu > li > a:before,\n.control-sidebar-menu > li > a:after {\n  content: \" \";\n  display: table;\n}\n.control-sidebar-menu > li > a:after {\n  clear: both;\n}\n.control-sidebar-menu > li > a > .control-sidebar-subheading {\n  margin-top: 0;\n}\n.control-sidebar-menu .menu-icon {\n  float: left;\n  width: 35px;\n  height: 35px;\n  border-radius: 50%;\n  text-align: center;\n  line-height: 35px;\n}\n.control-sidebar-menu .menu-info {\n  margin-left: 45px;\n  margin-top: 3px;\n}\n.control-sidebar-menu .menu-info > .control-sidebar-subheading {\n  margin: 0;\n}\n.control-sidebar-menu .menu-info > p {\n  margin: 0;\n  font-size: 11px;\n}\n.control-sidebar-menu .progress {\n  margin: 0;\n}\n.control-sidebar-dark {\n  color: #b8c7ce;\n}\n.control-sidebar-dark,\n.control-sidebar-dark + .control-sidebar-bg {\n  background: #222d32;\n}\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs {\n  border-bottom: #1c2529;\n}\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a {\n  background: #181f23;\n  color: #b8c7ce;\n}\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a,\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus {\n  border-left-color: #141a1d;\n  border-bottom-color: #141a1d;\n}\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus,\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active {\n  background: #1c2529;\n}\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover {\n  color: #fff;\n}\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a,\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover,\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus,\n.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active {\n  background: #222d32;\n  color: #fff;\n}\n.control-sidebar-dark .control-sidebar-heading,\n.control-sidebar-dark .control-sidebar-subheading {\n  color: #fff;\n}\n.control-sidebar-dark .control-sidebar-menu > li > a:hover {\n  background: #1e282c;\n}\n.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p {\n  color: #b8c7ce;\n}\n.control-sidebar-light {\n  color: #5e5e5e;\n}\n.control-sidebar-light,\n.control-sidebar-light + .control-sidebar-bg {\n  background: #f9fafc;\n  border-left: 1px solid #d2d6de;\n}\n.control-sidebar-light .nav-tabs.control-sidebar-tabs {\n  border-bottom: #d2d6de;\n}\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a {\n  background: #e8ecf4;\n  color: #444444;\n}\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a,\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus {\n  border-left-color: #d2d6de;\n  border-bottom-color: #d2d6de;\n}\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus,\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active {\n  background: #eff1f7;\n}\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a,\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover,\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus,\n.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active {\n  background: #f9fafc;\n  color: #111;\n}\n.control-sidebar-light .control-sidebar-heading,\n.control-sidebar-light .control-sidebar-subheading {\n  color: #111;\n}\n.control-sidebar-light .control-sidebar-menu {\n  margin-left: -14px;\n}\n.control-sidebar-light .control-sidebar-menu > li > a:hover {\n  background: #f4f4f5;\n}\n.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p {\n  color: #5e5e5e;\n}\n/*\n * Component: Dropdown menus\n * -------------------------\n */\n/*Dropdowns in general*/\n.dropdown-menu {\n  box-shadow: none;\n  border-color: #eee;\n}\n.dropdown-menu > li > a {\n  color: #777;\n}\n.dropdown-menu > li > a > .glyphicon,\n.dropdown-menu > li > a > .fa,\n.dropdown-menu > li > a > .ion {\n  margin-right: 10px;\n}\n.dropdown-menu > li > a:hover {\n  background-color: #e1e3e9;\n  color: #333;\n}\n.dropdown-menu > .divider {\n  background-color: #eee;\n}\n.navbar-nav > .notifications-menu > .dropdown-menu,\n.navbar-nav > .messages-menu > .dropdown-menu,\n.navbar-nav > .tasks-menu > .dropdown-menu {\n  width: 280px;\n  padding: 0 0 0 0;\n  margin: 0;\n  top: 100%;\n}\n.navbar-nav > .notifications-menu > .dropdown-menu > li,\n.navbar-nav > .messages-menu > .dropdown-menu > li,\n.navbar-nav > .tasks-menu > .dropdown-menu > li {\n  position: relative;\n}\n.navbar-nav > .notifications-menu > .dropdown-menu > li.header,\n.navbar-nav > .messages-menu > .dropdown-menu > li.header,\n.navbar-nav > .tasks-menu > .dropdown-menu > li.header {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n  background-color: #ffffff;\n  padding: 7px 10px;\n  border-bottom: 1px solid #f4f4f4;\n  color: #444444;\n  font-size: 14px;\n}\n.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,\n.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,\n.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n  font-size: 12px;\n  background-color: #fff;\n  padding: 7px 10px;\n  border-bottom: 1px solid #eeeeee;\n  color: #444 !important;\n  text-align: center;\n}\n@media (max-width: 991px) {\n  .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,\n  .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,\n  .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a {\n    background: #fff !important;\n    color: #444 !important;\n  }\n}\n.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover,\n.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover,\n.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover {\n  text-decoration: none;\n  font-weight: normal;\n}\n.navbar-nav > .notifications-menu > .dropdown-menu > li .menu,\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu,\n.navbar-nav > .tasks-menu > .dropdown-menu > li .menu {\n  max-height: 200px;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  overflow-x: hidden;\n}\n.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,\n.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a {\n  display: block;\n  white-space: nowrap;\n  /* Prevent text from breaking */\n  border-bottom: 1px solid #f4f4f4;\n}\n.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover,\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover,\n.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover {\n  background: #f4f4f4;\n  text-decoration: none;\n}\n.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a {\n  color: #444444;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  padding: 10px;\n}\n.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon,\n.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa,\n.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion {\n  width: 20px;\n}\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a {\n  margin: 0;\n  padding: 10px 10px;\n}\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img {\n  margin: auto 10px auto auto;\n  width: 40px;\n  height: 40px;\n}\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 {\n  padding: 0;\n  margin: 0 0 0 45px;\n  color: #444444;\n  font-size: 15px;\n  position: relative;\n}\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small {\n  color: #999999;\n  font-size: 10px;\n  position: absolute;\n  top: 0;\n  right: 0;\n}\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p {\n  margin: 0 0 0 45px;\n  font-size: 12px;\n  color: #888888;\n}\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after {\n  content: \" \";\n  display: table;\n}\n.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after {\n  clear: both;\n}\n.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a {\n  padding: 10px;\n}\n.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 {\n  font-size: 14px;\n  padding: 0;\n  margin: 0 0 10px 0;\n  color: #666666;\n}\n.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress {\n  padding: 0;\n  margin: 0;\n}\n.navbar-nav > .user-menu > .dropdown-menu {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n  padding: 1px 0 0 0;\n  border-top-width: 0;\n  width: 280px;\n}\n.navbar-nav > .user-menu > .dropdown-menu,\n.navbar-nav > .user-menu > .dropdown-menu > .user-body {\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.navbar-nav > .user-menu > .dropdown-menu > li.user-header {\n  height: 175px;\n  padding: 10px;\n  text-align: center;\n}\n.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img {\n  z-index: 5;\n  height: 90px;\n  width: 90px;\n  border: 3px solid;\n  border-color: transparent;\n  border-color: rgba(255, 255, 255, 0.2);\n}\n.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p {\n  z-index: 5;\n  color: #fff;\n  color: rgba(255, 255, 255, 0.8);\n  font-size: 17px;\n  margin-top: 10px;\n}\n.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small {\n  display: block;\n  font-size: 12px;\n}\n.navbar-nav > .user-menu > .dropdown-menu > .user-body {\n  padding: 15px;\n  border-bottom: 1px solid #f4f4f4;\n  border-top: 1px solid #dddddd;\n}\n.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,\n.navbar-nav > .user-menu > .dropdown-menu > .user-body:after {\n  content: \" \";\n  display: table;\n}\n.navbar-nav > .user-menu > .dropdown-menu > .user-body:after {\n  clear: both;\n}\n.navbar-nav > .user-menu > .dropdown-menu > .user-body a {\n  color: #444 !important;\n}\n@media (max-width: 991px) {\n  .navbar-nav > .user-menu > .dropdown-menu > .user-body a {\n    background: #fff !important;\n    color: #444 !important;\n  }\n}\n.navbar-nav > .user-menu > .dropdown-menu > .user-footer {\n  background-color: #f9f9f9;\n  padding: 10px;\n}\n.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,\n.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after {\n  content: \" \";\n  display: table;\n}\n.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after {\n  clear: both;\n}\n.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default {\n  color: #666666;\n}\n@media (max-width: 991px) {\n  .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover {\n    background-color: #f9f9f9;\n  }\n}\n.navbar-nav > .user-menu .user-image {\n  float: left;\n  width: 25px;\n  height: 25px;\n  border-radius: 50%;\n  margin-right: 10px;\n  margin-top: -2px;\n}\n@media (max-width: 767px) {\n  .navbar-nav > .user-menu .user-image {\n    float: none;\n    margin-right: 0;\n    margin-top: -8px;\n    line-height: 10px;\n  }\n}\n/* Add fade animation to dropdown menus by appending\n the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/\n.open:not(.dropup) > .animated-dropdown-menu {\n  backface-visibility: visible !important;\n  -webkit-animation: flipInX 0.7s both;\n  -o-animation: flipInX 0.7s both;\n  animation: flipInX 0.7s both;\n}\n@keyframes flipInX {\n  0% {\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transition-timing-function: ease-in;\n    opacity: 0;\n  }\n  40% {\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transition-timing-function: ease-in;\n  }\n  60% {\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1;\n  }\n  80% {\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n  }\n  100% {\n    transform: perspective(400px);\n  }\n}\n@-webkit-keyframes flipInX {\n  0% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    -webkit-transition-timing-function: ease-in;\n    opacity: 0;\n  }\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    -webkit-transition-timing-function: ease-in;\n  }\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1;\n  }\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n  }\n  100% {\n    -webkit-transform: perspective(400px);\n  }\n}\n/* Fix dropdown menu in navbars */\n.navbar-custom-menu > .navbar-nav > li {\n  position: relative;\n}\n.navbar-custom-menu > .navbar-nav > li > .dropdown-menu {\n  position: absolute;\n  right: 0;\n  left: auto;\n}\n@media (max-width: 991px) {\n  .navbar-custom-menu > .navbar-nav {\n    float: right;\n  }\n  .navbar-custom-menu > .navbar-nav > li {\n    position: static;\n  }\n  .navbar-custom-menu > .navbar-nav > li > .dropdown-menu {\n    position: absolute;\n    right: 5%;\n    left: auto;\n    border: 1px solid #ddd;\n    background: #fff;\n  }\n}\n/*\n * Component: Form\n * ---------------\n */\n.form-control {\n  border-radius: 0;\n  box-shadow: none;\n  border-color: #d2d6de;\n}\n.form-control:focus {\n  border-color: #008199;\n  box-shadow: none;\n}\n.form-control::-moz-placeholder,\n.form-control:-ms-input-placeholder,\n.form-control::-webkit-input-placeholder {\n  color: #bbb;\n  opacity: 1;\n}\n.form-control:not(select) {\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n.form-group.has-success label {\n  color: #00a65a;\n}\n.form-group.has-success .form-control {\n  border-color: #00a65a;\n  box-shadow: none;\n}\n.form-group.has-success .help-block {\n  color: #00a65a;\n}\n.form-group.has-warning label, .form-group:has(> .has-warning) label {\n  color: #f39c12;\n}\n.form-group.has-warning .form-control, .form-group:has(> .has-warning) .form-control {\n  border-color: #f39c12;\n  box-shadow: none;\n}\n.form-group.has-warning .help-block, .form-group:has(> .has-warning) .help-block {\n  color: #f39c12;\n}\n.form-group.has-error label {\n  color: #dd4b39;\n}\n.form-group.has-error .form-control {\n  border-color: #dd4b39;\n  box-shadow: none;\n}\n.form-group.has-error .help-block {\n  color: #dd4b39;\n}\n/* Input group */\n.input-group .input-group-addon {\n  border-radius: 0;\n  border-color: #d2d6de;\n  background-color: #fff;\n}\n/* button groups */\n.btn-group-vertical .btn.btn-flat:first-of-type,\n.btn-group-vertical .btn.btn-flat:last-of-type {\n  border-radius: 0;\n}\n.icheck > label {\n  padding-left: 0;\n}\n/* support Font Awesome icons in form-control */\n.form-control-feedback.fa {\n  line-height: 34px;\n}\n.input-lg + .form-control-feedback.fa,\n.input-group-lg + .form-control-feedback.fa,\n.form-group-lg .form-control + .form-control-feedback.fa {\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback.fa,\n.input-group-sm + .form-control-feedback.fa,\n.form-group-sm .form-control + .form-control-feedback.fa {\n  line-height: 30px;\n}\n/* Basti: let table add margins  */\ntd .form-group {\n  margin-bottom: 0;\n}\n/*\n * Component: Progress Bar\n * -----------------------\n */\n.progress,\n.progress > .progress-bar {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.progress,\n.progress > .progress-bar,\n.progress .progress-bar,\n.progress > .progress-bar .progress-bar {\n  border-radius: 1px;\n}\n/* size variation */\n.progress.sm,\n.progress-sm {\n  height: 10px;\n}\n.progress.sm,\n.progress-sm,\n.progress.sm .progress-bar,\n.progress-sm .progress-bar {\n  border-radius: 1px;\n}\n.progress.xs,\n.progress-xs {\n  height: 7px;\n}\n.progress.xs,\n.progress-xs,\n.progress.xs .progress-bar,\n.progress-xs .progress-bar {\n  border-radius: 1px;\n}\n.progress.xxs,\n.progress-xxs {\n  height: 3px;\n}\n.progress.xxs,\n.progress-xxs,\n.progress.xxs .progress-bar,\n.progress-xxs .progress-bar {\n  border-radius: 1px;\n}\n/* Vertical bars */\n.progress.vertical {\n  position: relative;\n  width: 30px;\n  height: 200px;\n  display: inline-block;\n  margin-right: 10px;\n}\n.progress.vertical > .progress-bar {\n  width: 100%;\n  position: absolute;\n  bottom: 0;\n}\n.progress.vertical.sm,\n.progress.vertical.progress-sm {\n  width: 20px;\n}\n.progress.vertical.xs,\n.progress.vertical.progress-xs {\n  width: 10px;\n}\n.progress.vertical.xxs,\n.progress.vertical.progress-xxs {\n  width: 3px;\n}\n.progress-group .progress-text {\n  font-weight: 600;\n}\n.progress-group .progress-number {\n  float: right;\n}\n/* Remove margins from progress bars when put in a table */\n.table tr > td .progress {\n  margin: 0;\n}\n.progress-bar-light-blue,\n.progress-bar-primary {\n  background-color: #008199;\n}\n.progress-striped .progress-bar-light-blue,\n.progress-striped .progress-bar-primary {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-green,\n.progress-bar-success {\n  background-color: #00a65a;\n}\n.progress-striped .progress-bar-green,\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-aqua,\n.progress-bar-info {\n  background-color: #00c0ef;\n}\n.progress-striped .progress-bar-aqua,\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-yellow,\n.progress-bar-warning {\n  background-color: #f39c12;\n}\n.progress-striped .progress-bar-yellow,\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-red,\n.progress-bar-danger {\n  background-color: #dd4b39;\n}\n.progress-striped .progress-bar-red,\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n/*\n * Component: Box\n * --------------\n */\n.box {\n  position: relative;\n  border-radius: 3px;\n  background: #ffffff;\n  border-top: 3px solid #d2d6de;\n  margin-bottom: 20px;\n  width: 100%;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\n}\n.box.box-primary {\n  border-top-color: #008199;\n}\n.box.box-info {\n  border-top-color: #00c0ef;\n}\n.box.box-danger {\n  border-top-color: #dd4b39;\n}\n.box.box-warning {\n  border-top-color: #f39c12;\n}\n.box.box-success {\n  border-top-color: #00a65a;\n}\n.box.box-default {\n  border-top-color: #d2d6de;\n}\n.box.collapsed-box .box-body,\n.box.collapsed-box .box-footer {\n  display: none;\n}\n.box .nav-stacked > li {\n  border-bottom: 1px solid #f4f4f4;\n  margin: 0;\n}\n.box .nav-stacked > li:last-of-type {\n  border-bottom: none;\n}\n.box.height-control .box-body {\n  max-height: 300px;\n  overflow: auto;\n}\n.box .border-right {\n  border-right: 1px solid #f4f4f4;\n}\n.box .border-left {\n  border-left: 1px solid #f4f4f4;\n}\n.box.box-solid {\n  border-top: 0;\n}\n.box.box-solid > .box-header .btn.btn-default {\n  background: transparent;\n}\n.box.box-solid > .box-header .btn:hover,\n.box.box-solid > .box-header a:hover {\n  background: rgba(0, 0, 0, 0.1);\n}\n.box.box-solid.box-default {\n  border: 1px solid #d2d6de;\n}\n.box.box-solid.box-default > .box-header {\n  color: #444444;\n  background: #d2d6de;\n  background-color: #d2d6de;\n}\n.box.box-solid.box-default > .box-header a,\n.box.box-solid.box-default > .box-header .btn {\n  color: #444444;\n}\n.box.box-solid.box-primary {\n  border: 1px solid #008199;\n}\n.box.box-solid.box-primary > .box-header {\n  color: #ffffff;\n  background: #008199;\n  background-color: #008199;\n}\n.box.box-solid.box-primary > .box-header a,\n.box.box-solid.box-primary > .box-header .btn {\n  color: #ffffff;\n}\n.box.box-solid.box-info {\n  border: 1px solid #00c0ef;\n}\n.box.box-solid.box-info > .box-header {\n  color: #ffffff;\n  background: #00c0ef;\n  background-color: #00c0ef;\n}\n.box.box-solid.box-info > .box-header a,\n.box.box-solid.box-info > .box-header .btn {\n  color: #ffffff;\n}\n.box.box-solid.box-danger {\n  border: 1px solid #dd4b39;\n}\n.box.box-solid.box-danger > .box-header {\n  color: #ffffff;\n  background: #dd4b39;\n  background-color: #dd4b39;\n}\n.box.box-solid.box-danger > .box-header a,\n.box.box-solid.box-danger > .box-header .btn {\n  color: #ffffff;\n}\n.box.box-solid.box-warning {\n  border: 1px solid #f39c12;\n}\n.box.box-solid.box-warning > .box-header {\n  color: #ffffff;\n  background: #f39c12;\n  background-color: #f39c12;\n}\n.box.box-solid.box-warning > .box-header a,\n.box.box-solid.box-warning > .box-header .btn {\n  color: #ffffff;\n}\n.box.box-solid.box-success {\n  border: 1px solid #00a65a;\n}\n.box.box-solid.box-success > .box-header {\n  color: #ffffff;\n  background: #00a65a;\n  background-color: #00a65a;\n}\n.box.box-solid.box-success > .box-header a,\n.box.box-solid.box-success > .box-header .btn {\n  color: #ffffff;\n}\n.box.box-solid > .box-header > .box-tools .btn {\n  border: 0;\n  box-shadow: none;\n}\n.box.box-solid[class*='bg'] > .box-header {\n  color: #fff;\n}\n.box .box-group > .box {\n  margin-bottom: 5px;\n}\n.box .knob-label {\n  text-align: center;\n  color: #333;\n  font-weight: 100;\n  font-size: 12px;\n  margin-bottom: 0.3em;\n}\n.box > .overlay,\n.overlay-wrapper > .overlay,\n.box > .loading-img,\n.overlay-wrapper > .loading-img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n.box .overlay,\n.overlay-wrapper .overlay {\n  z-index: 50;\n  background: rgba(255, 255, 255, 0.7);\n  border-radius: 3px;\n}\n.box .overlay > .fa,\n.overlay-wrapper .overlay > .fa {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  margin-left: -15px;\n  margin-top: -15px;\n  color: #000;\n  font-size: 30px;\n}\n.box .overlay.dark,\n.overlay-wrapper .overlay.dark {\n  background: rgba(0, 0, 0, 0.5);\n}\n.box-header:before,\n.box-body:before,\n.box-footer:before,\n.box-header:after,\n.box-body:after,\n.box-footer:after {\n  content: \" \";\n  display: table;\n}\n.box-header:after,\n.box-body:after,\n.box-footer:after {\n  clear: both;\n}\n.box-header {\n  color: #444;\n  display: block;\n  padding: 10px;\n  position: relative;\n}\n.box-header.with-border {\n  border-bottom: 1px solid #f4f4f4;\n}\n.collapsed-box .box-header.with-border {\n  border-bottom: none;\n}\n.box-header > .fa,\n.box-header > .glyphicon,\n.box-header > .ion,\n.box-header .box-title {\n  display: inline-block;\n  font-size: 18px;\n  margin: 0;\n  line-height: 1;\n}\n.box-header > .fa,\n.box-header > .glyphicon,\n.box-header > .ion {\n  margin-right: 5px;\n}\n.box-header > .box-tools {\n  position: absolute;\n  right: 10px;\n  top: 5px;\n}\n.box-header > .box-tools [data-toggle=\"tooltip\"] {\n  position: relative;\n}\n.box-header > .box-tools.pull-right .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.btn-box-tool {\n  padding: 5px;\n  font-size: 12px;\n  background: transparent;\n  color: #97a0b3;\n}\n.open .btn-box-tool,\n.btn-box-tool:hover {\n  color: #606c84;\n}\n.btn-box-tool.btn:active {\n  box-shadow: none;\n}\n.box-body {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n  padding: 10px;\n}\n.no-header .box-body {\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.box-body > .table {\n  margin-bottom: 0;\n}\n.box-body .fc {\n  margin-top: 5px;\n}\n.box-body .full-width-chart {\n  margin: -19px;\n}\n.box-body.no-padding .full-width-chart {\n  margin: -9px;\n}\n.box-body .box-pane {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 3px;\n}\n.box-body .box-pane-right {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 0;\n}\n.box-footer {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n  border-top: 1px solid #f4f4f4;\n  padding: 10px;\n  background-color: #ffffff;\n}\n.chart-legend {\n  margin: 10px 0;\n}\n@media (max-width: 991px) {\n  .chart-legend > li {\n    float: left;\n    margin-right: 10px;\n  }\n}\n.box-comments {\n  background: #f7f7f7;\n}\n.box-comments .box-comment {\n  padding: 8px 0;\n  border-bottom: 1px solid #eee;\n}\n.box-comments .box-comment:before,\n.box-comments .box-comment:after {\n  content: \" \";\n  display: table;\n}\n.box-comments .box-comment:after {\n  clear: both;\n}\n.box-comments .box-comment:last-of-type {\n  border-bottom: 0;\n}\n.box-comments .box-comment:first-of-type {\n  padding-top: 0;\n}\n.box-comments .box-comment img {\n  float: left;\n}\n.box-comments .comment-text {\n  margin-left: 40px;\n  color: #555;\n}\n.box-comments .username {\n  color: #444;\n  display: block;\n  font-weight: 600;\n}\n.box-comments .text-muted {\n  font-weight: 400;\n  font-size: 12px;\n}\n/* Widget: TODO LIST */\n.todo-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  overflow: auto;\n}\n.todo-list > li {\n  border-radius: 2px;\n  padding: 10px;\n  background: #f4f4f4;\n  margin-bottom: 2px;\n  border-left: 2px solid #e6e7e8;\n  color: #444;\n}\n.todo-list > li:last-of-type {\n  margin-bottom: 0;\n}\n.todo-list > li > input[type='checkbox'] {\n  margin: 0 10px 0 5px;\n}\n.todo-list > li .text {\n  display: inline-block;\n  margin-left: 5px;\n  font-weight: 600;\n}\n.todo-list > li .label {\n  margin-left: 10px;\n  font-size: 9px;\n}\n.todo-list > li .tools {\n  display: none;\n  float: right;\n  color: #dd4b39;\n}\n.todo-list > li .tools > .fa,\n.todo-list > li .tools > .glyphicon,\n.todo-list > li .tools > .ion {\n  margin-right: 5px;\n  cursor: pointer;\n}\n.todo-list > li:hover .tools {\n  display: inline-block;\n}\n.todo-list > li.done {\n  color: #999;\n}\n.todo-list > li.done .text {\n  text-decoration: line-through;\n  font-weight: 500;\n}\n.todo-list > li.done .label {\n  background: #d2d6de !important;\n}\n.todo-list .danger {\n  border-left-color: #dd4b39;\n}\n.todo-list .warning {\n  border-left-color: #f39c12;\n}\n.todo-list .info {\n  border-left-color: #00c0ef;\n}\n.todo-list .success {\n  border-left-color: #00a65a;\n}\n.todo-list .primary {\n  border-left-color: #008199;\n}\n.todo-list .handle {\n  display: inline-block;\n  cursor: move;\n  margin: 0 5px;\n}\n/* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/\n.chat {\n  padding: 5px 20px 5px 10px;\n}\n.chat .item {\n  margin-bottom: 10px;\n}\n.chat .item:before,\n.chat .item:after {\n  content: \" \";\n  display: table;\n}\n.chat .item:after {\n  clear: both;\n}\n.chat .item > img {\n  width: 40px;\n  height: 40px;\n  border: 2px solid transparent;\n  border-radius: 50%;\n}\n.chat .item > .online {\n  border: 2px solid #00a65a;\n}\n.chat .item > .offline {\n  border: 2px solid #dd4b39;\n}\n.chat .item > .message {\n  margin-left: 55px;\n  margin-top: -40px;\n}\n.chat .item > .message > .name {\n  display: block;\n  font-weight: 600;\n}\n.chat .item > .attachment {\n  border-radius: 3px;\n  background: #f4f4f4;\n  margin-left: 65px;\n  margin-right: 15px;\n  padding: 10px;\n}\n.chat .item > .attachment > h4 {\n  margin: 0 0 5px 0;\n  font-weight: 600;\n  font-size: 14px;\n}\n.chat .item > .attachment > p,\n.chat .item > .attachment > .filename {\n  font-weight: 600;\n  font-size: 13px;\n  font-style: italic;\n  margin: 0;\n}\n.chat .item > .attachment:before,\n.chat .item > .attachment:after {\n  content: \" \";\n  display: table;\n}\n.chat .item > .attachment:after {\n  clear: both;\n}\n.box-input {\n  max-width: 200px;\n}\n.modal .panel-body {\n  color: #444;\n}\n/*\n * Component: Info Box\n * -------------------\n */\n.info-box {\n  display: block;\n  min-height: 90px;\n  background: #fff;\n  width: 100%;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\n  border-radius: 2px;\n  margin-bottom: 15px;\n}\n.info-box small {\n  font-size: 14px;\n}\n.info-box .progress {\n  background: rgba(0, 0, 0, 0.2);\n  margin: 5px -10px 5px -10px;\n  height: 2px;\n}\n.info-box .progress,\n.info-box .progress .progress-bar {\n  border-radius: 0;\n}\n.info-box .progress .progress-bar {\n  background: #fff;\n}\n.info-box-icon {\n  border-top-left-radius: 2px;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 2px;\n  display: block;\n  float: left;\n  height: 90px;\n  width: 90px;\n  text-align: center;\n  font-size: 45px;\n  line-height: 90px;\n  background: rgba(0, 0, 0, 0.2);\n}\n.info-box-icon > img {\n  max-width: 100%;\n}\n.info-box-content {\n  padding: 5px 10px;\n  margin-left: 90px;\n}\n.info-box-number {\n  display: block;\n  font-weight: bold;\n  font-size: 18px;\n}\n.progress-description,\n.info-box-text {\n  display: block;\n  font-size: 14px;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.info-box-text {\n  text-transform: uppercase;\n}\n.info-box-more {\n  display: block;\n}\n.progress-description {\n  margin: 0;\n}\n/*\n * Component: Timeline\n * -------------------\n */\n.timeline {\n  position: relative;\n  margin: 0 0 30px 0;\n  padding: 0;\n  list-style: none;\n}\n.timeline:before {\n  content: '';\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  width: 4px;\n  background: #ddd;\n  left: 31px;\n  margin: 0;\n  border-radius: 2px;\n}\n.timeline > li {\n  position: relative;\n  margin-right: 10px;\n  margin-bottom: 15px;\n}\n.timeline > li:before,\n.timeline > li:after {\n  content: \" \";\n  display: table;\n}\n.timeline > li:after {\n  clear: both;\n}\n.timeline > li > .timeline-inter {\n  margin-top: 5px;\n  margin-left: 60px;\n  margin-right: 15px;\n  padding: 0;\n  position: relative;\n}\n.timeline > li > .timeline-item {\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\n  border-radius: 3px;\n  margin-top: 0;\n  background: #fff;\n  color: #444;\n  margin-left: 60px;\n  margin-right: 15px;\n  padding: 0;\n  position: relative;\n}\n.timeline > li > .timeline-item > .time {\n  color: #999;\n  float: right;\n  padding: 10px;\n  font-size: 12px;\n}\n.timeline > li > .timeline-item > .timeline-header {\n  margin: 0;\n  color: #555;\n  border-bottom: 1px solid #f4f4f4;\n  padding: 10px;\n  font-size: 16px;\n  line-height: 1.1;\n}\n.timeline > li > .timeline-item > .timeline-header > a {\n  font-weight: 600;\n}\n.timeline > li > .timeline-item > .timeline-body,\n.timeline > li > .timeline-item > .timeline-footer {\n  padding: 10px;\n}\n.timeline > li > .fa,\n.timeline > li > .glyphicon,\n.timeline > li > .ion {\n  width: 30px;\n  height: 30px;\n  font-size: 15px;\n  line-height: 30px;\n  position: absolute;\n  color: #666;\n  background: #d2d6de;\n  border-radius: 50%;\n  text-align: center;\n  left: 18px;\n  top: 0;\n}\n.timeline > li > a > .fa,\n.timeline > li > a > .glyphicon,\n.timeline > li > a > .ion {\n  width: 30px;\n  height: 30px;\n  font-size: 15px;\n  line-height: 30px;\n  position: absolute;\n  color: #666;\n  background: #d2d6de;\n  border-radius: 50%;\n  text-align: center;\n  left: 18px;\n  top: 0;\n}\n.timeline > .time-label > span {\n  font-weight: 600;\n  padding: 5px;\n  display: inline-block;\n  background-color: #fff;\n  border-radius: 4px;\n}\n.timeline-inverse > li > .timeline-item {\n  background: #f0f0f0;\n  border: 1px solid #ddd;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.timeline-inverse > li > .timeline-item > .timeline-header {\n  border-bottom-color: #ddd;\n}\n/*\n * Component: Button\n * -----------------\n */\n.btn {\n  border-radius: 3px;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n  border: 1px solid transparent;\n}\n.btn.uppercase {\n  text-transform: uppercase;\n}\n.btn.btn-flat {\n  border-radius: 0;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n  border-width: 1px;\n}\n.btn.btn-footer {\n  border-radius: 0;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n  padding: 10px 16px;\n  font-size: 14px;\n  border: none;\n}\n.btn:active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn:focus {\n  outline: none;\n}\n.btn.btn-file {\n  position: relative;\n  overflow: hidden;\n}\n.btn.btn-file > input[type='file'] {\n  position: absolute;\n  top: 0;\n  right: 0;\n  min-width: 100%;\n  min-height: 100%;\n  font-size: 100px;\n  text-align: right;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  outline: none;\n  background: white;\n  cursor: inherit;\n  display: block;\n}\n.btn-default {\n  background-color: #f4f4f4;\n  color: #444;\n  border-color: #ddd;\n}\n.btn-default:hover,\n.btn-default:active,\n.btn-default.hover {\n  background-color: #e7e7e7;\n}\n.btn-primary {\n  background-color: #008199;\n  border-color: #006b80;\n}\n.btn-primary:hover,\n.btn-primary:active,\n.btn-primary.hover {\n  background-color: #006b80;\n}\n.btn-success {\n  background-color: #00a65a;\n  border-color: #008d4c;\n}\n.btn-success:hover,\n.btn-success:active,\n.btn-success.hover {\n  background-color: #008d4c;\n}\n.btn-info {\n  background-color: #00c0ef;\n  border-color: #00acd6;\n}\n.btn-info:hover,\n.btn-info:active,\n.btn-info.hover {\n  background-color: #00acd6;\n}\n.btn-danger {\n  background-color: #dd4b39;\n  border-color: #d73925;\n}\n.btn-danger:hover,\n.btn-danger:active,\n.btn-danger.hover {\n  background-color: #d73925;\n}\n.btn-warning {\n  background-color: #f39c12;\n  border-color: #e08e0b;\n}\n.btn-warning:hover,\n.btn-warning:active,\n.btn-warning.hover {\n  background-color: #e08e0b;\n}\n.btn-outline {\n  border: 1px solid #fff;\n  background: transparent;\n  color: #fff;\n}\n.btn-outline:hover,\n.btn-outline:focus,\n.btn-outline:active {\n  color: rgba(255, 255, 255, 0.7);\n  border-color: rgba(255, 255, 255, 0.7);\n}\n.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn[class*='bg-']:hover {\n  -webkit-box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2);\n  box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2);\n}\n.btn-app {\n  border-radius: 3px;\n  position: relative;\n  padding: 15px 5px;\n  margin: 0 0 10px 10px;\n  min-width: 80px;\n  height: 60px;\n  text-align: center;\n  color: #666;\n  border: 1px solid #ddd;\n  background-color: #f4f4f4;\n  font-size: 12px;\n}\n.btn-app > .fa,\n.btn-app > .glyphicon,\n.btn-app > .ion {\n  font-size: 20px;\n  display: block;\n}\n.btn-app:hover {\n  background: #f4f4f4;\n  color: #444;\n  border-color: #aaa;\n}\n.btn-app:active,\n.btn-app:focus {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-app > .badge {\n  position: absolute;\n  top: -3px;\n  right: -10px;\n  font-size: 10px;\n  font-weight: 400;\n}\n/*\n * Component: alert\n * ----------------\n */\n.alert {\n  border-radius: 3px;\n}\n.alert h4 {\n  font-weight: 600;\n}\n.alert .icon {\n  margin-right: 10px;\n}\n.alert .close {\n  color: #000;\n  opacity: 0.2;\n  filter: alpha(opacity=20);\n}\n.alert .close:hover {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.alert a {\n  color: #fff;\n  text-decoration: underline;\n}\n.alert-success {\n  border-color: #008d4c;\n}\n.alert-danger,\n.alert-error {\n  border-color: #d73925;\n}\n.alert-warning {\n  border-color: #e08e0b;\n}\n.alert-info {\n  border-color: #006b80;\n}\n/*\n * Component: Nav\n * --------------\n */\n.nav > li > a:hover,\n.nav > li > a:active,\n.nav > li > a:focus {\n  color: #444;\n  background: #f7f7f7;\n}\n/* NAV PILLS */\n.nav-pills > li > a {\n  border-radius: 0;\n  border-top: 3px solid transparent;\n  color: #444;\n}\n.nav-pills > li > a > .fa,\n.nav-pills > li > a > .glyphicon,\n.nav-pills > li > a > .ion {\n  margin-right: 5px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  border-top-color: #008199;\n}\n.nav-pills > li.active > a {\n  font-weight: 600;\n}\n/* NAV STACKED */\n.nav-stacked > li > a {\n  border-radius: 0;\n  border-top: 0;\n  border-left: 3px solid transparent;\n  color: #444;\n}\n.nav-stacked > li.active > a,\n.nav-stacked > li.active > a:hover {\n  background: transparent;\n  color: #444;\n  border-top: 0;\n  border-left-color: #008199;\n}\n.nav-stacked > li.header {\n  border-bottom: 1px solid #ddd;\n  color: #777;\n  margin-bottom: 10px;\n  padding: 5px 10px;\n  text-transform: uppercase;\n}\n/* NAV TABS */\n.nav-tabs-custom {\n  margin-bottom: 20px;\n  background: #fff;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\n  border-radius: 3px;\n}\n.nav-tabs-custom > .nav-tabs {\n  margin: 0;\n  border-bottom-color: #f4f4f4;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.nav-tabs-custom > .nav-tabs > li {\n  border-top: 3px solid transparent;\n  margin-bottom: -2px;\n  margin-right: 5px;\n}\n.nav-tabs-custom > .nav-tabs > li > a {\n  color: #444;\n  border-radius: 0;\n}\n.nav-tabs-custom > .nav-tabs > li > a.text-muted {\n  color: #999;\n}\n.nav-tabs-custom > .nav-tabs > li > a,\n.nav-tabs-custom > .nav-tabs > li > a:hover {\n  background: transparent;\n  margin: 0;\n}\n.nav-tabs-custom > .nav-tabs > li > a:hover {\n  color: #999;\n}\n.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,\n.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,\n.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active {\n  border-color: transparent;\n}\n.nav-tabs-custom > .nav-tabs > li.active {\n  border-top-color: #008199;\n}\n.nav-tabs-custom > .nav-tabs > li.active > a,\n.nav-tabs-custom > .nav-tabs > li.active:hover > a {\n  background-color: #fff;\n  color: #444;\n}\n.nav-tabs-custom > .nav-tabs > li.active > a {\n  border-top-color: transparent;\n  border-left-color: #f4f4f4;\n  border-right-color: #f4f4f4;\n}\n.nav-tabs-custom > .nav-tabs > li:first-of-type {\n  margin-left: 0;\n}\n.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a {\n  border-left-color: transparent;\n}\n.nav-tabs-custom > .nav-tabs.pull-right {\n  float: none !important;\n}\n.nav-tabs-custom > .nav-tabs.pull-right > li {\n  float: right;\n}\n.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type {\n  margin-right: 0;\n}\n.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a {\n  border-left-width: 1px;\n}\n.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a {\n  border-left-color: #f4f4f4;\n  border-right-color: transparent;\n}\n.nav-tabs-custom > .nav-tabs > li.header {\n  line-height: 35px;\n  padding: 0 10px;\n  font-size: 20px;\n  color: #444;\n}\n.nav-tabs-custom > .nav-tabs > li.header > .fa,\n.nav-tabs-custom > .nav-tabs > li.header > .glyphicon,\n.nav-tabs-custom > .nav-tabs > li.header > .ion {\n  margin-right: 5px;\n}\n.nav-tabs-custom > .tab-content {\n  background: #fff;\n  padding: 10px;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.nav-tabs-custom .dropdown.open > a:active,\n.nav-tabs-custom .dropdown.open > a:focus {\n  background: transparent;\n  color: #999;\n}\n.nav-tabs-custom.tab-primary > .nav-tabs > li.active {\n  border-top-color: #008199;\n}\n.nav-tabs-custom.tab-info > .nav-tabs > li.active {\n  border-top-color: #00c0ef;\n}\n.nav-tabs-custom.tab-danger > .nav-tabs > li.active {\n  border-top-color: #dd4b39;\n}\n.nav-tabs-custom.tab-warning > .nav-tabs > li.active {\n  border-top-color: #f39c12;\n}\n.nav-tabs-custom.tab-success > .nav-tabs > li.active {\n  border-top-color: #00a65a;\n}\n.nav-tabs-custom.tab-default > .nav-tabs > li.active {\n  border-top-color: #d2d6de;\n}\n/* PAGINATION */\n.pagination > li > a {\n  background: #fafafa;\n  color: #666;\n}\n.pagination.pagination-flat > li > a {\n  border-radius: 0 !important;\n}\n/*\n * Component: Table\n * ----------------\n */\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  border-top: 1px solid #f4f4f4;\n}\n.table > thead > tr > th {\n  border-bottom: 2px solid #f4f4f4;\n}\n.table tr td .progress {\n  margin-top: 5px;\n}\n.table-bordered {\n  border: 1px solid #f4f4f4;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #f4f4f4;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table.no-border,\n.table.no-border td,\n.table.no-border th {\n  border: 0;\n}\n/* .text-center in tables */\ntable.text-center,\ntable.text-center td,\ntable.text-center th {\n  text-align: center;\n}\n.table.align th {\n  text-align: left;\n}\n.table.align td {\n  text-align: right;\n}\n/*\n * Component: Label\n * ----------------\n */\n.label-default {\n  background-color: #d2d6de;\n  color: #444;\n}\n/*\n * Component: modal\n * ----------------\n */\n.modal {\n  background: rgba(0, 0, 0, 0.3);\n}\n.modal-content {\n  border-radius: 0;\n  -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);\n  box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);\n  border: 0;\n}\n@media (min-width: 768px) {\n  .modal-content {\n    -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);\n    box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);\n  }\n}\n.modal-header {\n  border-bottom-color: #f4f4f4;\n}\n.modal-footer {\n  border-top-color: #f4f4f4;\n}\n.modal-primary .modal-header,\n.modal-primary .modal-footer {\n  border-color: #005666;\n}\n.modal-warning .modal-header,\n.modal-warning .modal-footer {\n  border-color: #c87f0a;\n}\n.modal-info .modal-header,\n.modal-info .modal-footer {\n  border-color: #0097bc;\n}\n.modal-success .modal-header,\n.modal-success .modal-footer {\n  border-color: #00733e;\n}\n.modal-danger .modal-header,\n.modal-danger .modal-footer {\n  border-color: #c23321;\n}\n@media (min-width: 992px) {\n  .modal-xl {\n    width: 90%;\n  }\n}\n.modal-flex {\n  max-width: 90%;\n  width: fit-content;\n  width: -moz-fit-content;\n}\n.modal-flex .modal-content .modal-body {\n  overflow: auto;\n}\n/*\n * Page: Login & Register\n * ----------------------\n */\n.login-logo,\n.register-logo {\n  font-size: 35px;\n  text-align: center;\n  margin-bottom: 25px;\n  font-weight: 300;\n}\n.login-logo a,\n.register-logo a {\n  color: #444;\n}\n.login-page,\n.register-page {\n  background: #d2d6de;\n}\n.login-box,\n.register-box {\n  width: 360px;\n  margin: 7% auto;\n}\n@media (max-width: 768px) {\n  .login-box,\n  .register-box {\n    width: 90%;\n    margin-top: 20px;\n  }\n}\n.login-box-body,\n.register-box-body {\n  background: #fff;\n  padding: 20px;\n  border-top: 0;\n  color: #666;\n}\n.login-box-body .form-control-feedback,\n.register-box-body .form-control-feedback {\n  color: #777;\n}\n.login-box-msg,\n.register-box-msg {\n  margin: 0;\n  text-align: center;\n  padding: 0 20px 20px 20px;\n}\n.social-auth-links {\n  margin: 10px 0;\n}\n/*\n * Page: 400 and 500 error pages\n * ------------------------------\n */\n.error-page {\n  width: 600px;\n  margin: 20px auto 0 auto;\n}\n@media (max-width: 991px) {\n  .error-page {\n    width: 100%;\n  }\n}\n.error-page > .headline {\n  float: left;\n  font-size: 100px;\n  font-weight: 300;\n}\n@media (max-width: 991px) {\n  .error-page > .headline {\n    float: none;\n    text-align: center;\n  }\n}\n.error-page > .error-content {\n  margin-left: 190px;\n  display: block;\n}\n@media (max-width: 991px) {\n  .error-page > .error-content {\n    margin-left: 0;\n  }\n}\n.error-page > .error-content > h3 {\n  font-weight: 300;\n  font-size: 25px;\n}\n@media (max-width: 991px) {\n  .error-page > .error-content > h3 {\n    text-align: center;\n  }\n}\n/*\n * Plugin: Select2\n * ---------------\n */\n.select2-container--default.select2-container--focus,\n.select2-selection.select2-container--focus,\n.select2-container--default:focus,\n.select2-selection:focus,\n.select2-container--default:active,\n.select2-selection:active {\n  outline: none;\n}\n.select2-container--default .select2-selection--single,\n.select2-selection .select2-selection--single {\n  border: 1px solid #d2d6de;\n  border-radius: 0;\n  padding: 6px 12px;\n  height: 34px;\n}\n.select2-container--default.select2-container--open {\n  border-color: #008199;\n}\n.select2-dropdown {\n  border: 1px solid #d2d6de;\n  border-radius: 0;\n}\n.select2-container--default .select2-results__option--highlighted[aria-selected] {\n  background-color: #008199;\n  color: white;\n}\n.select2-results__option {\n  padding: 6px 12px;\n  user-select: none;\n  -webkit-user-select: none;\n}\n.select2-container .select2-selection--single .select2-selection__rendered {\n  padding-left: 0;\n  padding-right: 0;\n  height: auto;\n  margin-top: -4px;\n}\n.select2-container[dir=\"rtl\"] .select2-selection--single .select2-selection__rendered {\n  padding-right: 6px;\n  padding-left: 20px;\n}\n.select2-container--default .select2-selection--single .select2-selection__arrow {\n  height: 28px;\n  right: 3px;\n}\n.select2-container--default .select2-selection--single .select2-selection__arrow b {\n  margin-top: 0;\n}\n.select2-dropdown .select2-search__field,\n.select2-search--inline .select2-search__field {\n  border: 1px solid #d2d6de;\n}\n.select2-dropdown .select2-search__field:focus,\n.select2-search--inline .select2-search__field:focus {\n  outline: none;\n  border: 1px solid #008199;\n}\n.select2-container--default .select2-results__option[aria-disabled=true] {\n  color: #999;\n}\n.select2-container--default .select2-results__option[aria-selected=true] {\n  background-color: #ddd;\n}\n.select2-container--default .select2-results__option[aria-selected=true],\n.select2-container--default .select2-results__option[aria-selected=true]:hover {\n  color: #444;\n}\n.select2-container--default .select2-selection--multiple {\n  border: 1px solid #d2d6de;\n  border-radius: 0;\n}\n.select2-container--default .select2-selection--multiple:focus {\n  border-color: #008199;\n}\n.select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #d2d6de;\n}\n.select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #008199;\n  border-color: #006b80;\n  padding: 1px 10px;\n  color: #fff;\n}\n.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  margin-right: 5px;\n  color: rgba(255, 255, 255, 0.7);\n}\n.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #fff;\n}\n.select2-container .select2-selection--single .select2-selection__rendered {\n  padding-right: 10px;\n}\n/*\n * General: Miscellaneous\n * ----------------------\n */\n.pad {\n  padding: 10px;\n}\n.margin {\n  margin: 10px;\n}\n.margin-bottom {\n  margin-bottom: 20px;\n}\n.margin-bottom-none {\n  margin-bottom: 0;\n}\n.margin-r-5 {\n  margin-right: 5px;\n}\n.inline {\n  display: inline;\n}\n.description-block {\n  display: block;\n  margin: 10px 0;\n  text-align: center;\n}\n.description-block.margin-bottom {\n  margin-bottom: 25px;\n}\n.description-block > .description-header {\n  margin: 0;\n  padding: 0;\n  font-weight: 600;\n  font-size: 16px;\n}\n.description-block > .description-text {\n  text-transform: uppercase;\n}\n.bg-red,\n.bg-yellow,\n.bg-aqua,\n.bg-blue,\n.bg-light-blue,\n.bg-green,\n.bg-navy,\n.bg-teal,\n.bg-olive,\n.bg-lime,\n.bg-orange,\n.bg-fuchsia,\n.bg-purple,\n.bg-maroon,\n.bg-black,\n.bg-red-active,\n.bg-yellow-active,\n.bg-aqua-active,\n.bg-blue-active,\n.bg-light-blue-active,\n.bg-green-active,\n.bg-navy-active,\n.bg-teal-active,\n.bg-olive-active,\n.bg-lime-active,\n.bg-orange-active,\n.bg-fuchsia-active,\n.bg-purple-active,\n.bg-maroon-active,\n.bg-black-active,\n.alert-success,\n.alert-danger,\n.alert-error,\n.alert-warning,\n.alert-info,\n.label-danger,\n.label-info,\n.label-warning,\n.label-primary,\n.label-success,\n.modal-primary .modal-body,\n.modal-primary .modal-header,\n.modal-primary .modal-footer,\n.modal-warning .modal-body,\n.modal-warning .modal-header,\n.modal-warning .modal-footer,\n.modal-info .modal-body,\n.modal-info .modal-header,\n.modal-info .modal-footer,\n.modal-success .modal-body,\n.modal-success .modal-header,\n.modal-success .modal-footer,\n.modal-danger .modal-body,\n.modal-danger .modal-header,\n.modal-danger .modal-footer {\n  color: #fff !important;\n}\n.bg-gray {\n  color: #000;\n  background-color: #d2d6de !important;\n}\n.bg-gray-light {\n  background-color: #f7f7f7;\n}\n.bg-black {\n  background-color: #111111 !important;\n}\n.bg-red,\n.alert-danger,\n.alert-error,\n.label-danger,\n.modal-danger .modal-body {\n  background-color: #dd4b39 !important;\n}\n.bg-yellow,\n.alert-warning,\n.label-warning,\n.modal-warning .modal-body {\n  background-color: #f39c12 !important;\n}\n.bg-aqua,\n.label-info,\n.modal-info .modal-body {\n  background-color: #00c0ef !important;\n}\n.bg-blue {\n  background-color: #008199 !important;\n}\n.bg-light-blue,\n.alert-info,\n.label-primary,\n.modal-primary .modal-body {\n  background-color: #008199 !important;\n}\n.bg-green,\n.alert-success,\n.label-success,\n.modal-success .modal-body {\n  background-color: #00a65a !important;\n}\n.bg-navy {\n  background-color: #001f3f !important;\n}\n.bg-teal {\n  background-color: #39cccc !important;\n}\n.bg-olive {\n  background-color: #3d9970 !important;\n}\n.bg-lime {\n  background-color: #01ff70 !important;\n}\n.bg-orange {\n  background-color: #ff851b !important;\n}\n.bg-fuchsia {\n  background-color: #f012be !important;\n}\n.bg-purple {\n  background-color: #605ca8 !important;\n}\n.bg-maroon {\n  background-color: #d81b60 !important;\n}\n.bg-gray-active {\n  color: #000;\n  background-color: #b5bbc8 !important;\n}\n.bg-black-active {\n  background-color: #000000 !important;\n}\n.bg-red-active,\n.modal-danger .modal-header,\n.modal-danger .modal-footer {\n  background-color: #d33724 !important;\n}\n.bg-yellow-active,\n.modal-warning .modal-header,\n.modal-warning .modal-footer {\n  background-color: #db8b0b !important;\n}\n.bg-aqua-active,\n.modal-info .modal-header,\n.modal-info .modal-footer {\n  background-color: #00a7d0 !important;\n}\n.bg-blue-active {\n  background-color: #005666 !important;\n}\n.bg-light-blue-active,\n.modal-primary .modal-header,\n.modal-primary .modal-footer {\n  background-color: #00677a !important;\n}\n.bg-green-active,\n.modal-success .modal-header,\n.modal-success .modal-footer {\n  background-color: #008d4c !important;\n}\n.bg-navy-active {\n  background-color: #001a35 !important;\n}\n.bg-teal-active {\n  background-color: #30bbbb !important;\n}\n.bg-olive-active {\n  background-color: #368763 !important;\n}\n.bg-lime-active {\n  background-color: #00e765 !important;\n}\n.bg-orange-active {\n  background-color: #ff7701 !important;\n}\n.bg-fuchsia-active {\n  background-color: #db0ead !important;\n}\n.bg-purple-active {\n  background-color: #555299 !important;\n}\n.bg-maroon-active {\n  background-color: #ca195a !important;\n}\n[class^=\"bg-\"].disabled {\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n}\n.text-red {\n  color: #dd4b39 !important;\n}\n.text-yellow {\n  color: #f39c12 !important;\n}\n.text-aqua {\n  color: #00c0ef !important;\n}\n.text-blue {\n  color: #008199 !important;\n}\n.text-black {\n  color: #111111 !important;\n}\n.text-light-blue {\n  color: #008199 !important;\n}\n.text-green {\n  color: #00a65a !important;\n}\n.text-gray {\n  color: #d2d6de !important;\n}\n.text-navy {\n  color: #001f3f !important;\n}\n.text-teal {\n  color: #39cccc !important;\n}\n.text-olive {\n  color: #3d9970 !important;\n}\n.text-lime {\n  color: #01ff70 !important;\n}\n.text-orange {\n  color: #ff851b !important;\n}\n.text-fuchsia {\n  color: #f012be !important;\n}\n.text-purple {\n  color: #605ca8 !important;\n}\n.text-maroon {\n  color: #d81b60 !important;\n}\n.link-muted {\n  color: #7a869d;\n}\n.link-muted:hover,\n.link-muted:focus {\n  color: #606c84;\n}\n.link-black {\n  color: #666;\n}\n.link-black:hover,\n.link-black:focus {\n  color: #999;\n}\n.hide {\n  display: none !important;\n}\n.no-border {\n  border: 0 !important;\n}\n.no-padding {\n  padding: 0 !important;\n}\n.no-margin {\n  margin: 0 !important;\n}\n.no-shadow {\n  box-shadow: none !important;\n}\n.list-unstyled,\n.chart-legend {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n.list-group-unbordered > .list-group-item {\n  border-left: 0;\n  border-right: 0;\n  border-radius: 0;\n  padding-left: 0;\n  padding-right: 0;\n}\n.flat {\n  border-radius: 0 !important;\n}\n.text-bold,\n.text-bold.table td,\n.text-bold.table th {\n  font-weight: 700;\n}\n.text-sm {\n  font-size: 12px;\n}\n.jqstooltip {\n  padding: 5px !important;\n  width: auto !important;\n  height: auto !important;\n}\n.bg-teal-gradient {\n  background: #39cccc !important;\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #39cccc), color-stop(1, #7adddd)) !important;\n  background: -ms-linear-gradient(bottom, #39cccc, #7adddd) !important;\n  background: -moz-linear-gradient(center bottom, #39cccc 0%, #7adddd 100%) !important;\n  background: -o-linear-gradient(#7adddd, #39cccc) !important;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39cccc', GradientType=0) !important;\n  color: #fff;\n}\n.bg-light-blue-gradient {\n  background: #008199 !important;\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #008199), color-stop(1, #00b5d6)) !important;\n  background: -ms-linear-gradient(bottom, #008199, #00b5d6) !important;\n  background: -moz-linear-gradient(center bottom, #008199 0%, #00b5d6 100%) !important;\n  background: -o-linear-gradient(#00b5d6, #008199) !important;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00b5d6', endColorstr='#008199', GradientType=0) !important;\n  color: #fff;\n}\n.bg-blue-gradient {\n  background: #008199 !important;\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #008199), color-stop(1, #009fbd)) !important;\n  background: -ms-linear-gradient(bottom, #008199, #009fbd) !important;\n  background: -moz-linear-gradient(center bottom, #008199 0%, #009fbd 100%) !important;\n  background: -o-linear-gradient(#009fbd, #008199) !important;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#009fbd', endColorstr='#008199', GradientType=0) !important;\n  color: #fff;\n}\n.bg-aqua-gradient {\n  background: #00c0ef !important;\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important;\n  background: -ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important;\n  background: -moz-linear-gradient(center bottom, #00c0ef 0%, #14d1ff 100%) !important;\n  background: -o-linear-gradient(#14d1ff, #00c0ef) !important;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important;\n  color: #fff;\n}\n.bg-yellow-gradient {\n  background: #f39c12 !important;\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important;\n  background: -ms-linear-gradient(bottom, #f39c12, #f7bc60) !important;\n  background: -moz-linear-gradient(center bottom, #f39c12 0%, #f7bc60 100%) !important;\n  background: -o-linear-gradient(#f7bc60, #f39c12) !important;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important;\n  color: #fff;\n}\n.bg-purple-gradient {\n  background: #605ca8 !important;\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important;\n  background: -ms-linear-gradient(bottom, #605ca8, #9491c4) !important;\n  background: -moz-linear-gradient(center bottom, #605ca8 0%, #9491c4 100%) !important;\n  background: -o-linear-gradient(#9491c4, #605ca8) !important;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important;\n  color: #fff;\n}\n.bg-green-gradient {\n  background: #00a65a !important;\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important;\n  background: -ms-linear-gradient(bottom, #00a65a, #00ca6d) !important;\n  background: -moz-linear-gradient(center bottom, #00a65a 0%, #00ca6d 100%) !important;\n  background: -o-linear-gradient(#00ca6d, #00a65a) !important;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important;\n  color: #fff;\n}\n.bg-red-gradient {\n  background: #dd4b39 !important;\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important;\n  background: -ms-linear-gradient(bottom, #dd4b39, #e47365) !important;\n  background: -moz-linear-gradient(center bottom, #dd4b39 0%, #e47365 100%) !important;\n  background: -o-linear-gradient(#e47365, #dd4b39) !important;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important;\n  color: #fff;\n}\n.bg-black-gradient {\n  background: #111111 !important;\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #111111), color-stop(1, #2b2b2b)) !important;\n  background: -ms-linear-gradient(bottom, #111111, #2b2b2b) !important;\n  background: -moz-linear-gradient(center bottom, #111111 0%, #2b2b2b 100%) !important;\n  background: -o-linear-gradient(#2b2b2b, #111111) !important;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111111', GradientType=0) !important;\n  color: #fff;\n}\n.bg-maroon-gradient {\n  background: #d81b60 !important;\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #d81b60), color-stop(1, #e73f7c)) !important;\n  background: -ms-linear-gradient(bottom, #d81b60, #e73f7c) !important;\n  background: -moz-linear-gradient(center bottom, #d81b60 0%, #e73f7c 100%) !important;\n  background: -o-linear-gradient(#e73f7c, #d81b60) !important;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#d81b60', GradientType=0) !important;\n  color: #fff;\n}\n.description-block .description-icon {\n  font-size: 16px;\n}\n.no-pad-top {\n  padding-top: 0;\n}\n.position-static {\n  position: static !important;\n}\n.list-header {\n  font-size: 15px;\n  padding: 10px 4px;\n  font-weight: bold;\n  color: #666;\n}\n.list-seperator {\n  height: 1px;\n  background: #f4f4f4;\n  margin: 15px 0 9px 0;\n}\n.list-link > a {\n  padding: 4px;\n  color: #777;\n}\n.list-link > a:hover {\n  color: #222;\n}\n.font-light {\n  font-weight: 300;\n}\n.user-block:before,\n.user-block:after {\n  content: \" \";\n  display: table;\n}\n.user-block:after {\n  clear: both;\n}\n.user-block img {\n  width: 40px;\n  height: 40px;\n  float: left;\n}\n.user-block .username,\n.user-block .description,\n.user-block .comment {\n  display: block;\n  margin-left: 50px;\n}\n.user-block .username {\n  font-size: 16px;\n  font-weight: 600;\n}\n.user-block .description {\n  color: #999;\n  font-size: 13px;\n}\n.user-block.user-block-sm .username,\n.user-block.user-block-sm .description,\n.user-block.user-block-sm .comment {\n  margin-left: 40px;\n}\n.user-block.user-block-sm .username {\n  font-size: 14px;\n}\n.img-sm,\n.img-md,\n.img-lg,\n.box-comments .box-comment img,\n.user-block.user-block-sm img {\n  float: left;\n}\n.img-sm,\n.box-comments .box-comment img,\n.user-block.user-block-sm img {\n  width: 30px !important;\n  height: 30px !important;\n}\n.img-sm + .img-push {\n  margin-left: 40px;\n}\n.img-md {\n  width: 60px;\n  height: 60px;\n}\n.img-md + .img-push {\n  margin-left: 70px;\n}\n.img-lg {\n  width: 100px;\n  height: 100px;\n}\n.img-lg + .img-push {\n  margin-left: 110px;\n}\n.img-bordered {\n  border: 3px solid #d2d6de;\n  padding: 3px;\n}\n.img-bordered-sm {\n  border: 2px solid #d2d6de;\n  padding: 2px;\n}\n.attachment-block {\n  border: 1px solid #f4f4f4;\n  padding: 5px;\n  margin-bottom: 10px;\n  background: #f7f7f7;\n}\n.attachment-block .attachment-img {\n  max-width: 100px;\n  max-height: 100px;\n  height: auto;\n  float: left;\n}\n.attachment-block .attachment-pushed {\n  margin-left: 110px;\n}\n.attachment-block .attachment-heading {\n  margin: 0;\n}\n.attachment-block .attachment-text {\n  color: #555;\n}\n.connectedSortable {\n  min-height: 100px;\n}\n.ui-helper-hidden-accessible {\n  border: 0;\n  clip: rect(0 0 0 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px;\n}\n.sort-highlight {\n  background: #f4f4f4;\n  border: 1px dashed #ddd;\n  margin-bottom: 10px;\n}\n.full-opacity-hover {\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n}\n.full-opacity-hover:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n.chart {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n}\n.chart svg,\n.chart canvas {\n  width: 100% !important;\n}\n/*\n * Misc: print\n * -----------\n */\n@media print {\n  .no-print,\n  .main-sidebar,\n  .left-side,\n  .main-header,\n  .content-header {\n    display: none !important;\n  }\n  .content-wrapper,\n  .right-side,\n  .main-footer {\n    margin-left: 0 !important;\n    min-height: 0 !important;\n    -webkit-transform: translate(0, 0) !important;\n    -ms-transform: translate(0, 0) !important;\n    -o-transform: translate(0, 0) !important;\n    transform: translate(0, 0) !important;\n  }\n  .fixed .content-wrapper,\n  .fixed .right-side {\n    padding-top: 0 !important;\n  }\n  .invoice {\n    width: 100%;\n    border: 0;\n    margin: 0;\n    padding: 0;\n  }\n  .invoice-col {\n    float: left;\n    width: 33.3333333%;\n  }\n  .table-responsive {\n    overflow: auto;\n  }\n  .table-responsive > .table tr th,\n  .table-responsive > .table tr td {\n    white-space: normal !important;\n  }\n}\n", ".dl-small-horizontal dd::before, .dl-small-horizontal dd::after {\n  content: \" \";\n  display: table;\n}\n\n.dl-small-horizontal dd::after {\n  clear: both;\n}\n\ndl.dl-horizontal.dl-horizontal-large dt {\n  width: 300px;\n}\n\ndl.dl-horizontal.dl-horizontal-large dd {\n  margin-left: 320px;\n}\n\n@media (min-width: 768px) {\n  .dl-small-horizontal dt {\n    clear: left;\n    float: left;\n    overflow: hidden;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    width: 130px;\n  }\n  .dl-small-horizontal dd {\n    margin-left: 140px;\n  }\n  .pac-container {\n    z-index: 1051 !important;\n  }\n}\ntd.spacer {\n  border-right: solid 1px #ddd;\n  border-top: solid 1px #ddd;\n  margin-right: 10px;\n  width: 5%;\n}\n\ntr.spaced_detail td:not(.spacer) {\n  border-top: none !important;\n}\n\ntd.spaced, th.spaced {\n  width: 5%;\n}\n\n.draggable {\n  display: block;\n  margin: 3px 10px;\n  background-color: #eeeeee;\n  border: thin solid silver;\n  cursor: move;\n  -moz-border-radius: 4px 4px 4px 4px;\n  border-radius: 4px 4px 4px 4px;\n  padding: 6px;\n}\n\nul.sortable {\n  display: block;\n  min-height: 350px;\n  max-height: 350px;\n  overflow: auto;\n  border: thin solid #cccccc;\n  padding: 4px 4px 4px 4px;\n}\n\n.grid th {\n  padding: 0;\n  border-left: thin solid silver;\n  white-space: nowrap;\n  text-align: center;\n}\n\n.grid th:first-child {\n  border-left: none;\n}\n\n.grid td {\n  padding: 0;\n  border-top: thin solid silver;\n  border-left: thin solid silver;\n  white-space: nowrap;\n}\n\n.grid td:first-child {\n  border-left: none;\n}\n\n.grid td img {\n  margin-right: 3px;\n}\n\n.grid input, .grid textarea {\n  padding: 5px;\n  border: 0;\n}\n\n.grid .data {\n  background-color: #fff;\n}\n\nspan.label-block {\n  display: inline-block !important;\n  width: 100%;\n  padding-top: 4px;\n  padding-bottom: 5px;\n}\n\nbody.loading, body.loading * {\n  cursor: progress !important;\n}\n\n.handle {\n  cursor: pointer;\n}\n\ntr.handle:hover {\n  background-color: #f5f5f5;\n}\n\ndt.dl-horizontal {\n  padding: 180px !important;\n}\n\ndd.dl-horizontal {\n  margin-left: 200px !important;\n}\n\ndiv.nav-tabs-contacts > ul.nav-tabs > li > a {\n  padding: 10px;\n}\n\n.context-menu {\n  position: fixed;\n  width: inherit;\n  z-index: 1010;\n}\n\n.contact-row-primary {\n  width: 50pt;\n}\n\n.contact-row-buttons {\n  width: 65pt;\n  text-align: right;\n}\n\n.contact-row-buttons a {\n  margin-left: 10px;\n}\n\nul.nav-stacked ul.nav-stacked > li > a {\n  padding-left: 50px;\n}\n\n.radio-inline {\n  margin-right: 30px;\n}\n\n.border-bottom-shadow {\n  border-bottom: 1px solid #ddd;\n  -webkit-box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.1);\n}\n\n.sidebar-collapse .content-header-fixed {\n  margin-left: 50px;\n}\n\n@media (max-width: 767px) {\n  .content-header-fixed {\n    margin-left: 0;\n  }\n  .main-footer {\n    margin-left: 0;\n  }\n}\ndl > dt {\n  font-weight: normal;\n  color: #999;\n}\n\n.main-footer {\n  border: none;\n  bottom: 0;\n  left: 0;\n  position: fixed;\n  right: 0;\n  z-index: 800;\n  padding: 0;\n  border-top: 1px solid #ddd;\n  -webkit-box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.1);\n}\n\n.main-footer > .btn-group {\n  margin-top: 0;\n  margin-bottom: 0;\n  transition: margin-left 0.3s ease-in-out 0s;\n  display: block;\n}\n\n.main-footer .btn-default:hover {\n  background-color: #d0d0d0;\n}\n\n.footer-text {\n  color: #777;\n  line-height: 40px;\n  margin-left: 8px;\n}\n\nsection.content {\n  margin-top: 255px;\n  padding-bottom: 40px;\n}\n\ntable.table thead th {\n  font-weight: normal;\n  color: #999;\n  border-bottom: none;\n}\n\ntable.burnoutable {\n  table-layout: fixed;\n  background-color: white;\n}\n\ndiv.table-responsive-x {\n  overflow-x: auto;\n}\n\ntable.burnoutable td, table.burnoutable th {\n  white-space: nowrap;\n  word-wrap: break-word;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  border: thin solid #f4f4f4;\n  border-top: none;\n}\n\ntable.burnoutable tbody tr:first-child, table.burnoutable tbody tr:first-child td {\n  height: 0;\n  padding: 0;\n  margin: 0;\n}\n\ntable.table_burnoutheader {\n  margin-bottom: 5px;\n  table-layout: fixed;\n}\n\ntable.table_burnoutheader th {\n  padding-left: 8px;\n  padding-right: 8px;\n  white-space: nowrap;\n  word-wrap: break-word;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.burnoutheader th.burnoutable-sorted-asc::after, .burnoutheader th.burnoutable-sorted-desc::after, .burnoutheader th.burnoutable-sortable::after {\n  font-family: FontAwesome;\n  font-size: 12px;\n}\n\n.burnoutheader th.burnoutable-sorted-asc::after {\n  content: \" \\f160\";\n}\n\n.burnoutheader th.burnoutable-sorted-desc::after {\n  content: \" \\f161\";\n}\n\n.burnoutheader th.burnoutable-sortable::after {\n  opacity: 0.5;\n  content: \" \\f07d\";\n}\n\n.burnoutheader th.burnoutable-sorted-asc, .burnoutheader th.burnoutable-sorted-desc, .burnoutheader th.burnoutable-sortable {\n  cursor: pointer;\n}\n\nh3 + .dropdown, h3 + a {\n  margin-left: 10px;\n  display: inline-block;\n  font-size: 14pt;\n}\n\n.inline-block {\n  display: inline-block;\n}\n\n.widget {\n  display: inline-block;\n  width: 200px;\n  height: 120px;\n  background-color: white;\n  margin: 10px;\n  text-align: center;\n  font-size: large;\n  padding-top: 20px;\n  border-bottom: 1px solid #ddd;\n  -webkit-box-shadow: 0 2px 6px 2px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 2px 6px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 2px 6px 2px rgba(0, 0, 0, 0.1);\n}\n\n.widget .fa {\n  display: block;\n  margin: 10px;\n  font-size: 25pt;\n}\n\n.master-detail.master-detail-master ul.nav.nav-pills.nav-stacked li.active a,\n.master-detail.master-detail-master ul.nav.nav-pills.nav-stacked li.active a:focus {\n  background-color: #008199;\n  color: white;\n}\n\n.master-detail.master-detail-master {\n  position: sticky;\n  max-height: calc(100vh - 165px);\n  overflow-y: auto;\n  padding-right: 2px;\n}\n.master-detail.master-detail-master li:not(:hover) .master-detail-master-remove {\n  visibility: hidden;\n  opacity: 0;\n  transition: visibility 0s linear 300ms, opacity 300ms;\n}\n\n.master-detail.master-detail-detail {\n  position: sticky;\n  max-height: calc(100vh - 165px);\n  overflow-y: auto;\n  padding-left: 0;\n}\n\n.modal .master-detail.master-detail-detail .box {\n  margin-bottom: 0;\n}\n\n.box-body table.table:first-child tr th {\n  border-top: none;\n}\n\n.box-body table.table:first-child tr td {\n  border-top: none;\n}\n\ntable.table.merge-table td:nth-child(2) {\n  width: 35%;\n}\n\ntable.table.merge-table td:nth-child(3) {\n  width: 40px;\n}\n\ntable.table.merge-table td:last-child {\n  width: 35%;\n}\n\ninput.radio_buttons.inline label.radio {\n  display: inline-block;\n}\n\n.modal-body .modal-body-gray {\n  background-color: #ecf0f5;\n  padding: 10px;\n  margin: -15px -15px;\n}\n\n.form-section {\n  border-bottom: 1px solid #eee;\n  padding-bottom: 10px;\n  margin-bottom: 15px;\n}\n\nh3.form-section {\n  margin-top: 40px;\n}\n\nh4.form-section {\n  margin-top: 20px;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n.collapsed-boxes .box-body {\n  display: none;\n}\n.collapsed-boxes .box-tools {\n  display: none;\n}\n\n.sortable.sortable-dark {\n  list-style: none;\n  background-color: #d5dee9;\n}\n.sortable.sortable-dark li {\n  margin: 5px;\n}\n.sortable.sortable-dark li .box {\n  margin-bottom: 7px;\n}\n.sortable.sortable-dark li .box .form-group {\n  margin-bottom: 0;\n}\n.sortable.sortable-dark li .box .form-group .checkbox, .sortable.sortable-dark li .box .form-group .text {\n  margin: 0;\n}\n.sortable.sortable-dark li .box .box-header h3.box-title {\n  font-size: 16px;\n}\n\n.sortable-ghost {\n  opacity: 0.7;\n  box-shadow: 0 0 23px -2px rgba(0, 129, 153, 0.7);\n}\n\n.sortable-drag {\n  opacity: 0.7;\n}\n\n.form-group .form-control-feedback {\n  pointer-events: initial;\n}\n\nform.button-form {\n  display: inline;\n}\n\n.visually-hidden {\n  opacity: 0;\n  transition: opacity 0.5s;\n}\n\n.table > tbody + tbody {\n  border-top: 1px solid #ddd;\n}\n\n.text-nowrap {\n  white-space: nowrap;\n}\n\n.no-overflow {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n/* Full calendar  */\n.fc-daygrid-event {\n  white-space: inherit;\n}\n\n.fc-daygrid-dot-event {\n  align-items: inherit;\n}\n.fc-daygrid-dot-event .fc-daygrid-event-dot {\n  margin-top: 5px;\n}\n.fc-daygrid-dot-event .fc-event-title {\n  font-weight: inherit;\n}\n\n.course-session .calendar .status-cancelled {\n  text-decoration: line-through;\n}\n\n.fc-event.fc-timegrid-event, .fc-event.fc-daygrid-event {\n  border-left-style: solid;\n  border-left-width: 6px;\n  padding-left: 4px;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUva3Vyc28vYXBwcy9rdXJzby9yZWxlYXNlcy8yMDI2MDMxOTIyNTU0MC9hcHAvamF2YXNjcmlwdC9jb21wb25lbnRzL2FkbWlubHRlIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBO0VBQ0k7RUFDQTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTs7O0FBSUo7RUFDSTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBOztFQUdKO0lBQ0k7O0VBR0o7SUFDSTs7O0FBSVI7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7O0FBSUo7RUFDSTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJO0lBQ0k7O0VBR0o7SUFDSTs7O0FBS1I7RUFDSTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0k7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0E7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0k7RUFDQTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7OztBQUlKO0FBQUE7RUFFSTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUNBO0VBQ0k7RUFDQTtFQUNBOzs7QUFJUjtFQUNJO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0k7OztBQUlKO0VBQ0k7OztBQUlGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBSUo7RUFDSTtFQUNBOztBQUNBO0VBQ0k7O0FBQ0E7RUFDSTs7QUFDQTtFQUNJOztBQUNBO0VBQ0k7O0FBR1I7RUFDSTs7O0FBTWhCO0VBQ0k7RUFDQTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7O0FBR0o7QUFFQTtFQUNJOzs7QUFHSjtFQUNJOztBQUNBO0VBQ0k7O0FBRUo7RUFDSTs7O0FBSVI7RUFDSTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJcbi5kbC1zbWFsbC1ob3Jpem9udGFsIGRkOjpiZWZvcmUsIC5kbC1zbWFsbC1ob3Jpem9udGFsIGRkOjphZnRlciB7XG4gICAgY29udGVudDogXCIgXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG59XG5cbi5kbC1zbWFsbC1ob3Jpem9udGFsIGRkOjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG59XG5cbmRsLmRsLWhvcml6b250YWwuZGwtaG9yaXpvbnRhbC1sYXJnZSBkdCB7XG4gICAgd2lkdGg6IDMwMHB4O1xufVxuXG5kbC5kbC1ob3Jpem9udGFsLmRsLWhvcml6b250YWwtbGFyZ2UgZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAzMjBweDtcbn1cblxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAuZGwtc21hbGwtaG9yaXpvbnRhbCBkdCB7XG4gICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB3aWR0aDogMTMwcHg7XG4gICAgfVxuXG4gICAgLmRsLXNtYWxsLWhvcml6b250YWwgZGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMTQwcHg7XG4gICAgfVxuXG4gICAgLnBhYy1jb250YWluZXIge1xuICAgICAgICB6LWluZGV4OiAxMDUxICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG50ZC5zcGFjZXIge1xuICAgIGJvcmRlci1yaWdodDogc29saWQgMXB4ICNkZGQ7XG4gICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICNkZGQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIHdpZHRoOiA1JTtcbn1cblxudHIuc3BhY2VkX2RldGFpbCB0ZDpub3QoLnNwYWNlcikge1xuICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbn1cblxudGQuc3BhY2VkLCB0aC5zcGFjZWQge1xuICAgIHdpZHRoOiA1JTtcbn1cblxuLmRyYWdnYWJsZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAzcHggMTBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlO1xuICAgIGJvcmRlcjogdGhpbiBzb2xpZCBzaWx2ZXI7XG4gICAgY3Vyc29yOiBtb3ZlO1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4IDRweCA0cHggNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggNHB4IDRweDtcbiAgICBwYWRkaW5nOiA2cHg7XG59XG5cbnVsLnNvcnRhYmxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtaW4taGVpZ2h0OiAzNTBweDtcbiAgICBtYXgtaGVpZ2h0OiAzNTBweDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBib3JkZXI6IHRoaW4gc29saWQgI2NjY2NjYztcbiAgICBwYWRkaW5nOiA0cHggNHB4IDRweCA0cHg7XG59XG5cbi5ncmlkIHRoIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlci1sZWZ0OiB0aGluIHNvbGlkIHNpbHZlcjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxufVxuXG4uZ3JpZCB0aDpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG59XG5cbi5ncmlkIHRkIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlci10b3A6IHRoaW4gc29saWQgc2lsdmVyO1xuICAgIGJvcmRlci1sZWZ0OiB0aGluIHNvbGlkIHNpbHZlcjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZ3JpZCB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG59XG5cbi5ncmlkIHRkIGltZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG59XG5cbi5ncmlkIGlucHV0LCAuZ3JpZCB0ZXh0YXJlYSB7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIGJvcmRlcjogMDtcbn1cblxuLmdyaWQgLmRhdGEge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbnNwYW4ubGFiZWwtYmxvY2sge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDVweDtcbn1cblxuYm9keS5sb2FkaW5nLCBib2R5LmxvYWRpbmcgKiB7XG4gICAgY3Vyc29yOiBwcm9ncmVzcyAhaW1wb3J0YW50O1xufVxuXG4uaGFuZGxlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbnRyLmhhbmRsZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbn1cblxuZHQuZGwtaG9yaXpvbnRhbCB7XG4gICAgcGFkZGluZzogMTgwcHggIWltcG9ydGFudDtcbn1cblxuZGQuZGwtaG9yaXpvbnRhbCB7XG4gICAgbWFyZ2luLWxlZnQ6IDIwMHB4ICFpbXBvcnRhbnQ7XG59XG5cbmRpdi5uYXYtdGFicy1jb250YWN0cyA+IHVsLm5hdi10YWJzID4gbGkgPiBhIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xufVxuXG4uY29udGV4dC1tZW51IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgei1pbmRleDogMTAxMDtcbn1cblxuLmNvbnRhY3Qtcm93LXByaW1hcnkge1xuICAgIHdpZHRoOiA1MHB0O1xufVxuXG4uY29udGFjdC1yb3ctYnV0dG9ucyB7XG4gICAgd2lkdGg6IDY1cHQ7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi5jb250YWN0LXJvdy1idXR0b25zIGEge1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xufVxuXG51bC5uYXYtc3RhY2tlZCB1bC5uYXYtc3RhY2tlZCA+IGxpID4gYSB7XG4gICAgcGFkZGluZy1sZWZ0OiA1MHB4O1xufVxuXG4ucmFkaW8taW5saW5lIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDMwcHg7XG59XG5cbi5ib3JkZXItYm90dG9tLXNoYWRvdyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDNweCA2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAtbW96LWJveC1zaGFkb3c6IDAgM3B4IDZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIGJveC1zaGFkb3c6IDAgM3B4IDZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4uc2lkZWJhci1jb2xsYXBzZSAuY29udGVudC1oZWFkZXItZml4ZWQge1xuICAgIG1hcmdpbi1sZWZ0OiA1MHB4O1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAuY29udGVudC1oZWFkZXItZml4ZWQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG5cbiAgICAubWFpbi1mb290ZXIge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG5cbn1cblxuZGwgPiBkdCB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBjb2xvcjogIzk5OTtcbn1cblxuLm1haW4tZm9vdGVyIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHJpZ2h0OiAwO1xuICAgIHotaW5kZXg6IDgwMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgLW1vei1ib3gtc2hhZG93OiAwIDNweCA2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBib3gtc2hhZG93OiAwIDNweCA2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLm1haW4tZm9vdGVyID4gLmJ0bi1ncm91cCB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHRyYW5zaXRpb246IG1hcmdpbi1sZWZ0IDAuM3MgZWFzZS1pbi1vdXQgMHM7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5tYWluLWZvb3RlciAuYnRuLWRlZmF1bHQ6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkMGQwZDA7XG59XG5cbi5mb290ZXItdGV4dCB7XG4gICAgY29sb3I6ICM3Nzc7XG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbn1cblxuc2VjdGlvbi5jb250ZW50IHtcbiAgICBtYXJnaW4tdG9wOiAyNTVweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogNDBweDtcbn1cblxudGFibGUudGFibGUgdGhlYWQgdGgge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgY29sb3I6ICM5OTk7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxudGFibGUuYnVybm91dGFibGUge1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG5cbmRpdi50YWJsZS1yZXNwb25zaXZlLXgge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG59XG5cbnRhYmxlLmJ1cm5vdXRhYmxlIHRkLCB0YWJsZS5idXJub3V0YWJsZSB0aCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBib3JkZXI6IHRoaW4gc29saWQgI2Y0ZjRmNDtcbiAgICBib3JkZXItdG9wOiBub25lO1xufVxuXG50YWJsZS5idXJub3V0YWJsZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCwgdGFibGUuYnVybm91dGFibGUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQge1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbn1cblxudGFibGUudGFibGVfYnVybm91dGhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG5cbnRhYmxlLnRhYmxlX2J1cm5vdXRoZWFkZXIgdGgge1xuICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4uYnVybm91dGhlYWRlciB0aC5idXJub3V0YWJsZS1zb3J0ZWQtYXNjOjphZnRlciwgLmJ1cm5vdXRoZWFkZXIgdGguYnVybm91dGFibGUtc29ydGVkLWRlc2M6OmFmdGVyLCAuYnVybm91dGhlYWRlciB0aC5idXJub3V0YWJsZS1zb3J0YWJsZTo6YWZ0ZXIge1xuICAgIGZvbnQtZmFtaWx5OiBGb250QXdlc29tZTtcbiAgICBmb250LXNpemU6IDEycHg7XG59XG5cbi5idXJub3V0aGVhZGVyIHRoLmJ1cm5vdXRhYmxlLXNvcnRlZC1hc2M6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiBcXGYxNjBcIjtcbn1cblxuLmJ1cm5vdXRoZWFkZXIgdGguYnVybm91dGFibGUtc29ydGVkLWRlc2M6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiBcXGYxNjFcIjtcbn1cblxuLmJ1cm5vdXRoZWFkZXIgdGguYnVybm91dGFibGUtc29ydGFibGU6OmFmdGVyIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY29udGVudDogXCIgXFxmMDdkXCI7XG59XG5cbi5idXJub3V0aGVhZGVyIHRoLmJ1cm5vdXRhYmxlLXNvcnRlZC1hc2MsIC5idXJub3V0aGVhZGVyIHRoLmJ1cm5vdXRhYmxlLXNvcnRlZC1kZXNjLCAuYnVybm91dGhlYWRlciB0aC5idXJub3V0YWJsZS1zb3J0YWJsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5oMyArIC5kcm9wZG93biwgaDMgKyBhIHtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiAxNHB0O1xufVxuXG4uaW5saW5lLWJsb2NrIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi53aWRnZXQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgaGVpZ2h0OiAxMjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBtYXJnaW46IDEwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogbGFyZ2U7XG4gICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDJweCA2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAtbW96LWJveC1zaGFkb3c6IDAgMnB4IDZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4ud2lkZ2V0IC5mYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAxMHB4O1xuICAgIGZvbnQtc2l6ZTogMjVwdDtcblxufVxuXG4ubWFzdGVyLWRldGFpbC5tYXN0ZXItZGV0YWlsLW1hc3RlciB1bC5uYXYubmF2LXBpbGxzLm5hdi1zdGFja2VkIGxpLmFjdGl2ZSBhLFxuLm1hc3Rlci1kZXRhaWwubWFzdGVyLWRldGFpbC1tYXN0ZXIgdWwubmF2Lm5hdi1waWxscy5uYXYtc3RhY2tlZCBsaS5hY3RpdmUgYTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwODE5OTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5tYXN0ZXItZGV0YWlsLm1hc3Rlci1kZXRhaWwtbWFzdGVyIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxNjVweCk7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7XG4gICAgbGk6bm90KDpob3ZlcikgLm1hc3Rlci1kZXRhaWwtbWFzdGVyLXJlbW92ZSB7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAwcyBsaW5lYXIgMzAwbXMsIG9wYWNpdHkgMzAwbXM7XG4gICAgfVxufVxuXG4ubWFzdGVyLWRldGFpbC5tYXN0ZXItZGV0YWlsLWRldGFpbCB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTY1cHgpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xufVxuXG4ubW9kYWwgLm1hc3Rlci1kZXRhaWwubWFzdGVyLWRldGFpbC1kZXRhaWwgLmJveCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmJveC1ib2R5IHRhYmxlLnRhYmxlOmZpcnN0LWNoaWxkIHRyIHRoIHtcbiAgICBib3JkZXItdG9wOiBub25lO1xufVxuXG4uYm94LWJvZHkgdGFibGUudGFibGU6Zmlyc3QtY2hpbGQgdHIgdGQge1xuICAgIGJvcmRlci10b3A6IG5vbmU7XG59XG5cbnRhYmxlLnRhYmxlLm1lcmdlLXRhYmxlIHRkOm50aC1jaGlsZCgyKSB7XG4gICAgd2lkdGg6IDM1JTtcbn1cblxudGFibGUudGFibGUubWVyZ2UtdGFibGUgdGQ6bnRoLWNoaWxkKDMpIHtcbiAgICB3aWR0aDogNDBweDtcbn1cblxudGFibGUudGFibGUubWVyZ2UtdGFibGUgdGQ6bGFzdC1jaGlsZCB7XG4gICAgd2lkdGg6IDM1JTtcbn1cblxuaW5wdXQucmFkaW9fYnV0dG9ucy5pbmxpbmUgbGFiZWwucmFkaW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLm1vZGFsLWJvZHkgLm1vZGFsLWJvZHktZ3JheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZjBmNTtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIG1hcmdpbjogLTE1cHggLTE1cHg7XG59XG5cbi5mb3JtLXNlY3Rpb24ge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xuICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG5cbmgzLmZvcm0tc2VjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogNDBweDtcbn1cblxuaDQuZm9ybS1zZWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xufVxuXG4vLyBGaXggaGlkZGVuIHRhZyBlbGVtZW50XG5baGlkZGVuXSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uY29sbGFwc2VkLWJveGVzIHtcbiAgLmJveC1ib2R5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5ib3gtdG9vbHMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLnNvcnRhYmxlLnNvcnRhYmxlLWRhcmsge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Q1ZGVlOTtcbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbjogNXB4O1xuICAgICAgICAuYm94IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDdweDtcbiAgICAgICAgICAgIC5mb3JtLWdyb3VwIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIC5jaGVja2JveCwgLnRleHQge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmJveC1oZWFkZXIgaDMuYm94LXRpdGxlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zb3J0YWJsZS1naG9zdCB7XG4gICAgb3BhY2l0eTogLjc7XG4gICAgYm94LXNoYWRvdzogMCAwIDIzcHggLTJweCByZ2JhKDAsMTI5LDE1MywwLjcpXG59XG5cbi5zb3J0YWJsZS1kcmFnIHtcbiAgICBvcGFjaXR5OiAuNztcbn1cblxuLmZvcm0tZ3JvdXAgLmZvcm0tY29udHJvbC1mZWVkYmFjayB7XG4gICAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XG59XG5cbmZvcm0uYnV0dG9uLWZvcm0ge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbn1cblxuLnZpc3VhbGx5LWhpZGRlbiB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOm9wYWNpdHkgMC41cztcbn1cblxuLnRhYmxlID4gdGJvZHkgKyB0Ym9keSB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi50ZXh0LW5vd3JhcCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLm5vLW92ZXJmbG93IHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogRnVsbCBjYWxlbmRhciAgKi9cblxuLmZjLWRheWdyaWQtZXZlbnQge1xuICAgIHdoaXRlLXNwYWNlOiBpbmhlcml0O1xufVxuXG4uZmMtZGF5Z3JpZC1kb3QtZXZlbnQge1xuICAgIGFsaWduLWl0ZW1zOiBpbmhlcml0O1xuICAgIC5mYy1kYXlncmlkLWV2ZW50LWRvdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICB9XG4gICAgLmZjLWV2ZW50LXRpdGxlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxufVxuXG4uY291cnNlLXNlc3Npb24gLmNhbGVuZGFyIC5zdGF0dXMtY2FuY2VsbGVkIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbn1cblxuLmZjLWV2ZW50LmZjLXRpbWVncmlkLWV2ZW50LCAuZmMtZXZlbnQuZmMtZGF5Z3JpZC1ldmVudCB7XG4gICAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiA2cHg7XG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7XG59Il19 */", "/*\n * Skin: Blue\n * ----------\n */\n.skin-blue .main-header .navbar {\n  background-color: #008199;\n}\n.skin-blue .main-header .navbar .nav > li > a {\n  color: #ffffff;\n}\n.skin-blue .main-header .navbar .nav > li > a:hover,\n.skin-blue .main-header .navbar .nav > li > a:active,\n.skin-blue .main-header .navbar .nav > li > a:focus,\n.skin-blue .main-header .navbar .nav .open > a,\n.skin-blue .main-header .navbar .nav .open > a:hover,\n.skin-blue .main-header .navbar .nav .open > a:focus,\n.skin-blue .main-header .navbar .nav > .active > a {\n  background: rgba(0, 0, 0, 0.1);\n  color: #f6f6f6;\n}\n.skin-blue .main-header .navbar .sidebar-toggle {\n  color: #ffffff;\n}\n.skin-blue .main-header .navbar .sidebar-toggle:hover {\n  color: #f6f6f6;\n  background: rgba(0, 0, 0, 0.1);\n}\n.skin-blue .main-header .navbar .sidebar-toggle {\n  color: #fff;\n}\n.skin-blue .main-header .navbar .sidebar-toggle:hover {\n  background-color: #006b80;\n}\n@media (max-width: 767px) {\n  .skin-blue .main-header .navbar .dropdown-menu li.divider {\n    background-color: rgba(255, 255, 255, 0.1);\n  }\n  .skin-blue .main-header .navbar .dropdown-menu li a {\n    color: #fff;\n  }\n  .skin-blue .main-header .navbar .dropdown-menu li a:hover {\n    background: #006b80;\n  }\n}\n.skin-blue .main-header .logo {\n  background-color: #006b80;\n  color: #ffffff;\n  border-bottom: 0 solid transparent;\n}\n.skin-blue .main-header .logo:hover {\n  background-color: #00677a;\n}\n.skin-blue .main-header li.user-header {\n  background-color: #008199;\n}\n.skin-blue .content-header {\n  background: transparent;\n}\n.skin-blue .wrapper,\n.skin-blue .main-sidebar,\n.skin-blue .left-side {\n  background-color: #222d32;\n}\n.skin-blue .user-panel > .info,\n.skin-blue .user-panel > .info > a {\n  color: #fff;\n}\n.skin-blue .sidebar-menu > li.header {\n  color: #4b646f;\n  background: #1a2226;\n}\n.skin-blue .sidebar-menu > li > a {\n  border-left: 3px solid transparent;\n}\n.skin-blue .sidebar-menu > li:hover > a,\n.skin-blue .sidebar-menu > li.active > a {\n  color: #ffffff;\n  background: #1e282c;\n  border-left-color: #008199;\n}\n.skin-blue .sidebar-menu > li > .treeview-menu {\n  margin: 0 1px;\n  background: #2c3b41;\n}\n.skin-blue .sidebar a {\n  color: #b8c7ce;\n}\n.skin-blue .sidebar a:hover {\n  text-decoration: none;\n}\n.skin-blue .treeview-menu > li > a {\n  color: #c7d3d9;\n}\n.skin-blue .treeview-menu > li.active > a,\n.skin-blue .treeview-menu > li > a:hover {\n  color: #ffffff;\n  font-weight: bold;\n}\n.skin-blue .sidebar-form {\n  border-radius: 3px;\n  border: 1px solid #607f8d;\n  margin: 10px 10px;\n}\n.skin-blue .sidebar-form input[type=\"text\"],\n.skin-blue .sidebar-form .btn {\n  box-shadow: none;\n  background-color: #374850;\n  border: 1px solid transparent;\n  height: 35px;\n  -webkit-transition: all 0.3s ease-in-out;\n  -o-transition: all 0.3s ease-in-out;\n  transition: all 0.3s ease-in-out;\n}\n.skin-blue .sidebar-form input[type=\"text\"] {\n  color: #c7d3d9;\n  border-top-left-radius: 2px;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 2px;\n}\n.skin-blue .sidebar-form input[type=\"text\"]:focus,\n.skin-blue .sidebar-form input[type=\"text\"]:focus + .input-group-btn .btn {\n  background-color: #fff;\n  color: #666;\n}\n.skin-blue .sidebar-form input[type=\"text\"]:focus + .input-group-btn .btn {\n  border-left-color: #fff;\n}\n.skin-blue .sidebar-form .btn {\n  color: #999;\n  border-top-left-radius: 0;\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px;\n  border-bottom-left-radius: 0;\n}\n.skin-blue.layout-top-nav .main-header > .logo {\n  background-color: #008199;\n  color: #ffffff;\n  border-bottom: 0 solid transparent;\n}\n.skin-blue.layout-top-nav .main-header > .logo:hover {\n  background-color: #007d94;\n}\n", "/*\n * Skin: Blue\n * ----------\n */\n.skin-blue-light .main-header .navbar,\n.skin-blue-light .main-footer .navbar {\n  background-color: #008199;\n}\n.skin-blue-light .main-header .navbar .nav > li > a,\n.skin-blue-light .main-footer .navbar .nav > li > a {\n  color: #ffffff;\n}\n.skin-blue-light .main-header .navbar .nav > li > a:hover,\n.skin-blue-light .main-footer .navbar .nav > li > a:hover,\n.skin-blue-light .main-header .navbar .nav > li > a:active,\n.skin-blue-light .main-footer .navbar .nav > li > a:active,\n.skin-blue-light .main-header .navbar .nav > li > a:focus,\n.skin-blue-light .main-footer .navbar .nav > li > a:focus,\n.skin-blue-light .main-header .navbar .nav .open > a,\n.skin-blue-light .main-footer .navbar .nav .open > a,\n.skin-blue-light .main-header .navbar .nav .open > a:hover,\n.skin-blue-light .main-footer .navbar .nav .open > a:hover,\n.skin-blue-light .main-header .navbar .nav .open > a:focus,\n.skin-blue-light .main-footer .navbar .nav .open > a:focus,\n.skin-blue-light .main-header .navbar .nav > .active > a,\n.skin-blue-light .main-footer .navbar .nav > .active > a {\n  background: rgba(0, 0, 0, 0.1);\n  color: #f6f6f6;\n}\n.skin-blue-light .main-header .navbar .sidebar-toggle,\n.skin-blue-light .main-footer .navbar .sidebar-toggle {\n  color: #ffffff;\n}\n.skin-blue-light .main-header .navbar .sidebar-toggle:hover,\n.skin-blue-light .main-footer .navbar .sidebar-toggle:hover {\n  color: #f6f6f6;\n  background: rgba(0, 0, 0, 0.1);\n}\n.skin-blue-light .main-header .navbar .sidebar-toggle,\n.skin-blue-light .main-footer .navbar .sidebar-toggle {\n  color: #fff;\n}\n.skin-blue-light .main-header .navbar .sidebar-toggle:hover,\n.skin-blue-light .main-footer .navbar .sidebar-toggle:hover {\n  background-color: #006b80;\n}\n@media (max-width: 767px) {\n  .skin-blue-light .main-header .navbar .dropdown-menu li.divider,\n  .skin-blue-light .main-footer .navbar .dropdown-menu li.divider {\n    background-color: rgba(255, 255, 255, 0.1);\n  }\n  .skin-blue-light .main-header .navbar .dropdown-menu li a,\n  .skin-blue-light .main-footer .navbar .dropdown-menu li a {\n    color: #fff;\n  }\n  .skin-blue-light .main-header .navbar .dropdown-menu li a:hover,\n  .skin-blue-light .main-footer .navbar .dropdown-menu li a:hover {\n    background: #006b80;\n  }\n}\n.skin-blue-light .main-header .logo,\n.skin-blue-light .main-footer .logo {\n  background-color: #008199;\n  color: #ffffff;\n  border-bottom: 0 solid transparent;\n}\n.skin-blue-light .main-header .logo:hover,\n.skin-blue-light .main-footer .logo:hover {\n  background-color: #007d94;\n}\n.skin-blue-light .main-header li.user-header,\n.skin-blue-light .main-footer li.user-header {\n  background-color: #008199;\n}\n.skin-blue-light .content-header {\n  background: transparent;\n}\n.skin-blue-light .wrapper,\n.skin-blue-light .main-sidebar,\n.skin-blue-light .left-side {\n  background-color: #f9fafc;\n}\n.skin-blue-light .content-wrapper,\n.skin-blue-light .main-footer {\n  border-left: 1px solid #d2d6de;\n}\n.skin-blue-light .user-panel > .info,\n.skin-blue-light .user-panel > .info > a {\n  color: #444444;\n}\n.skin-blue-light .sidebar-menu > li {\n  -webkit-transition: border-left-color 0.3s ease;\n  -o-transition: border-left-color 0.3s ease;\n  transition: border-left-color 0.3s ease;\n}\n.skin-blue-light .sidebar-menu > li.header {\n  color: #848484;\n  background: #f9fafc;\n}\n.skin-blue-light .sidebar-menu > li > a {\n  border-left: 3px solid transparent;\n  font-weight: 600;\n}\n.skin-blue-light .sidebar-menu > li:hover > a,\n.skin-blue-light .sidebar-menu > li.active > a {\n  color: #000000;\n  background: #f4f4f5;\n}\n.skin-blue-light .sidebar-menu > li.active {\n  border-left-color: #008199;\n}\n.skin-blue-light .sidebar-menu > li.active > a {\n  font-weight: 600;\n}\n.skin-blue-light .sidebar-menu > li > .treeview-menu {\n  background: #f4f4f5;\n}\n.skin-blue-light .sidebar a {\n  color: #444444;\n}\n.skin-blue-light .sidebar a:hover {\n  text-decoration: none;\n}\n.skin-blue-light .treeview-menu > li > a {\n  color: #777777;\n}\n.skin-blue-light .treeview-menu > li.active > a,\n.skin-blue-light .treeview-menu > li > a:hover {\n  color: #000000;\n}\n.skin-blue-light .treeview-menu > li.active > a {\n  font-weight: 600;\n}\n.skin-blue-light .sidebar-form {\n  border-radius: 3px;\n  border: 1px solid #d2d6de;\n  margin: 10px 10px;\n}\n.skin-blue-light .sidebar-form input[type=\"text\"],\n.skin-blue-light .sidebar-form .btn {\n  box-shadow: none;\n  background-color: #fff;\n  border: 1px solid transparent;\n  height: 35px;\n  -webkit-transition: all 0.3s ease-in-out;\n  -o-transition: all 0.3s ease-in-out;\n  transition: all 0.3s ease-in-out;\n}\n.skin-blue-light .sidebar-form input[type=\"text\"] {\n  color: #666;\n  border-top-left-radius: 2px;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 2px;\n}\n.skin-blue-light .sidebar-form input[type=\"text\"]:focus,\n.skin-blue-light .sidebar-form input[type=\"text\"]:focus + .input-group-btn .btn {\n  background-color: #fff;\n  color: #666;\n}\n.skin-blue-light .sidebar-form input[type=\"text\"]:focus + .input-group-btn .btn {\n  border-left-color: #fff;\n}\n.skin-blue-light .sidebar-form .btn {\n  color: #999;\n  border-top-left-radius: 0;\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px;\n  border-bottom-left-radius: 0;\n}\n@media (min-width: 768px) {\n  .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {\n    border-left: 1px solid #d2d6de;\n  }\n}\n.skin-blue-light .main-footer {\n  border-top-color: #d2d6de;\n}\n.skin-blue.layout-top-nav .main-header > .logo {\n  background-color: #008199;\n  color: #ffffff;\n  border-bottom: 0 solid transparent;\n}\n.skin-blue.layout-top-nav .main-header > .logo:hover {\n  background-color: #007d94;\n}\n", "/*\n * Skin: Yellow\n * ------------\n */\n.skin-yellow .main-header .navbar {\n  background-color: #f39c12;\n}\n.skin-yellow .main-header .navbar .nav > li > a {\n  color: #ffffff;\n}\n.skin-yellow .main-header .navbar .nav > li > a:hover,\n.skin-yellow .main-header .navbar .nav > li > a:active,\n.skin-yellow .main-header .navbar .nav > li > a:focus,\n.skin-yellow .main-header .navbar .nav .open > a,\n.skin-yellow .main-header .navbar .nav .open > a:hover,\n.skin-yellow .main-header .navbar .nav .open > a:focus,\n.skin-yellow .main-header .navbar .nav > .active > a {\n  background: rgba(0, 0, 0, 0.1);\n  color: #f6f6f6;\n}\n.skin-yellow .main-header .navbar .sidebar-toggle {\n  color: #ffffff;\n}\n.skin-yellow .main-header .navbar .sidebar-toggle:hover {\n  color: #f6f6f6;\n  background: rgba(0, 0, 0, 0.1);\n}\n.skin-yellow .main-header .navbar .sidebar-toggle {\n  color: #fff;\n}\n.skin-yellow .main-header .navbar .sidebar-toggle:hover {\n  background-color: #e08e0b;\n}\n@media (max-width: 767px) {\n  .skin-yellow .main-header .navbar .dropdown-menu li.divider {\n    background-color: rgba(255, 255, 255, 0.1);\n  }\n  .skin-yellow .main-header .navbar .dropdown-menu li a {\n    color: #fff;\n  }\n  .skin-yellow .main-header .navbar .dropdown-menu li a:hover {\n    background: #e08e0b;\n  }\n}\n.skin-yellow .main-header .logo {\n  background-color: #e08e0b;\n  color: #ffffff;\n  border-bottom: 0 solid transparent;\n}\n.skin-yellow .main-header .logo:hover {\n  background-color: #db8b0b;\n}\n.skin-yellow .main-header li.user-header {\n  background-color: #f39c12;\n}\n.skin-yellow .content-header {\n  background: transparent;\n}\n.skin-yellow .wrapper,\n.skin-yellow .main-sidebar,\n.skin-yellow .left-side {\n  background-color: #222d32;\n}\n.skin-yellow .user-panel > .info,\n.skin-yellow .user-panel > .info > a {\n  color: #fff;\n}\n.skin-yellow .sidebar-menu > li.header {\n  color: #4b646f;\n  background: #1a2226;\n}\n.skin-yellow .sidebar-menu > li > a {\n  border-left: 3px solid transparent;\n}\n.skin-yellow .sidebar-menu > li:hover > a,\n.skin-yellow .sidebar-menu > li.active > a {\n  color: #ffffff;\n  background: #1e282c;\n  border-left-color: #f39c12;\n}\n.skin-yellow .sidebar-menu > li > .treeview-menu {\n  margin: 0 1px;\n  background: #2c3b41;\n}\n.skin-yellow .sidebar a {\n  color: #b8c7ce;\n}\n.skin-yellow .sidebar a:hover {\n  text-decoration: none;\n}\n.skin-yellow .treeview-menu > li > a {\n  color: #c7d3d9;\n}\n.skin-yellow .treeview-menu > li.active > a,\n.skin-yellow .treeview-menu > li > a:hover {\n  color: #ffffff;\n  font-weight: bold;\n}\n.skin-yellow .sidebar-form {\n  border-radius: 3px;\n  border: 1px solid #607f8d;\n  margin: 10px 10px;\n}\n.skin-yellow .sidebar-form input[type=\"text\"],\n.skin-yellow .sidebar-form .btn {\n  box-shadow: none;\n  background-color: #374850;\n  border: 1px solid transparent;\n  height: 35px;\n  -webkit-transition: all 0.3s ease-in-out;\n  -o-transition: all 0.3s ease-in-out;\n  transition: all 0.3s ease-in-out;\n}\n.skin-yellow .sidebar-form input[type=\"text\"] {\n  color: #c7d3d9;\n  border-top-left-radius: 2px;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 2px;\n}\n.skin-yellow .sidebar-form input[type=\"text\"]:focus,\n.skin-yellow .sidebar-form input[type=\"text\"]:focus + .input-group-btn .btn {\n  background-color: #fff;\n  color: #666;\n}\n.skin-yellow .sidebar-form input[type=\"text\"]:focus + .input-group-btn .btn {\n  border-left-color: #fff;\n}\n.skin-yellow .sidebar-form .btn {\n  color: #999;\n  border-top-left-radius: 0;\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px;\n  border-bottom-left-radius: 0;\n}\n", "/*\n * Skin: Yellow\n * ------------\n */\n.skin-yellow-light .main-header .navbar {\n  background-color: #f39c12;\n}\n.skin-yellow-light .main-header .navbar .nav > li > a {\n  color: #ffffff;\n}\n.skin-yellow-light .main-header .navbar .nav > li > a:hover,\n.skin-yellow-light .main-header .navbar .nav > li > a:active,\n.skin-yellow-light .main-header .navbar .nav > li > a:focus,\n.skin-yellow-light .main-header .navbar .nav .open > a,\n.skin-yellow-light .main-header .navbar .nav .open > a:hover,\n.skin-yellow-light .main-header .navbar .nav .open > a:focus,\n.skin-yellow-light .main-header .navbar .nav > .active > a {\n  background: rgba(0, 0, 0, 0.1);\n  color: #f6f6f6;\n}\n.skin-yellow-light .main-header .navbar .sidebar-toggle {\n  color: #ffffff;\n}\n.skin-yellow-light .main-header .navbar .sidebar-toggle:hover {\n  color: #f6f6f6;\n  background: rgba(0, 0, 0, 0.1);\n}\n.skin-yellow-light .main-header .navbar .sidebar-toggle {\n  color: #fff;\n}\n.skin-yellow-light .main-header .navbar .sidebar-toggle:hover {\n  background-color: #e08e0b;\n}\n@media (max-width: 767px) {\n  .skin-yellow-light .main-header .navbar .dropdown-menu li.divider {\n    background-color: rgba(255, 255, 255, 0.1);\n  }\n  .skin-yellow-light .main-header .navbar .dropdown-menu li a {\n    color: #fff;\n  }\n  .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover {\n    background: #e08e0b;\n  }\n}\n.skin-yellow-light .main-header .logo {\n  background-color: #f39c12;\n  color: #ffffff;\n  border-bottom: 0 solid transparent;\n}\n.skin-yellow-light .main-header .logo:hover {\n  background-color: #f39a0d;\n}\n.skin-yellow-light .main-header li.user-header {\n  background-color: #f39c12;\n}\n.skin-yellow-light .content-header {\n  background: transparent;\n}\n.skin-yellow-light .wrapper,\n.skin-yellow-light .main-sidebar,\n.skin-yellow-light .left-side {\n  background-color: #f9fafc;\n}\n.skin-yellow-light .content-wrapper,\n.skin-yellow-light .main-footer {\n  border-left: 1px solid #d2d6de;\n}\n.skin-yellow-light .user-panel > .info,\n.skin-yellow-light .user-panel > .info > a {\n  color: #444444;\n}\n.skin-yellow-light .sidebar-menu > li {\n  -webkit-transition: border-left-color 0.3s ease;\n  -o-transition: border-left-color 0.3s ease;\n  transition: border-left-color 0.3s ease;\n}\n.skin-yellow-light .sidebar-menu > li.header {\n  color: #848484;\n  background: #f9fafc;\n}\n.skin-yellow-light .sidebar-menu > li > a {\n  border-left: 3px solid transparent;\n  font-weight: 600;\n}\n.skin-yellow-light .sidebar-menu > li:hover > a,\n.skin-yellow-light .sidebar-menu > li.active > a {\n  color: #000000;\n  background: #f4f4f5;\n}\n.skin-yellow-light .sidebar-menu > li.active {\n  border-left-color: #f39c12;\n}\n.skin-yellow-light .sidebar-menu > li.active > a {\n  font-weight: 600;\n}\n.skin-yellow-light .sidebar-menu > li > .treeview-menu {\n  background: #f4f4f5;\n}\n.skin-yellow-light .sidebar a {\n  color: #444444;\n}\n.skin-yellow-light .sidebar a:hover {\n  text-decoration: none;\n}\n.skin-yellow-light .treeview-menu > li > a {\n  color: #777777;\n}\n.skin-yellow-light .treeview-menu > li.active > a,\n.skin-yellow-light .treeview-menu > li > a:hover {\n  color: #000000;\n}\n.skin-yellow-light .treeview-menu > li.active > a {\n  font-weight: 600;\n}\n.skin-yellow-light .sidebar-form {\n  border-radius: 3px;\n  border: 1px solid #d2d6de;\n  margin: 10px 10px;\n}\n.skin-yellow-light .sidebar-form input[type=\"text\"],\n.skin-yellow-light .sidebar-form .btn {\n  box-shadow: none;\n  background-color: #fff;\n  border: 1px solid transparent;\n  height: 35px;\n  -webkit-transition: all 0.3s ease-in-out;\n  -o-transition: all 0.3s ease-in-out;\n  transition: all 0.3s ease-in-out;\n}\n.skin-yellow-light .sidebar-form input[type=\"text\"] {\n  color: #666;\n  border-top-left-radius: 2px;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 2px;\n}\n.skin-yellow-light .sidebar-form input[type=\"text\"]:focus,\n.skin-yellow-light .sidebar-form input[type=\"text\"]:focus + .input-group-btn .btn {\n  background-color: #fff;\n  color: #666;\n}\n.skin-yellow-light .sidebar-form input[type=\"text\"]:focus + .input-group-btn .btn {\n  border-left-color: #fff;\n}\n.skin-yellow-light .sidebar-form .btn {\n  color: #999;\n  border-top-left-radius: 0;\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px;\n  border-bottom-left-radius: 0;\n}\n@media (min-width: 768px) {\n  .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {\n    border-left: 1px solid #d2d6de;\n  }\n}\n", "#search-backdrop {\n    filter: alpha(opacity=50);\n    opacity: 0.5;\n    -moz-Opacity: 0.5;\n    z-index: 100;\n}\n\n#search-results {\n    z-index: 1000;\n\n    position: absolute;\n    left: 11px;\n    max-width: 600px;\n    top: 94px;\n    display: block;\n    padding: 3px;\n    /* width: 400px; */\n    -moz-border-radius:0px 0px 4px 4px;\n    border-radius: 0px 0px 4px 4px;\n    float: left;\n\n    -webkit-box-shadow: 5px 5px 6px 2px rgba(0, 0, 0, 0.1);\n    -moz-box-shadow: 5px 5px 6px 2px rgba(0, 0, 0, 0.1);\n    box-shadow: 5px 5px 6px 2px rgba(0, 0, 0, 0.1);\n\n    overflow-y: auto;\n    max-height: calc(100vh - 100px)\n\n}\n", "/*!\n *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\"\\f000\"}.fa-music:before{content:\"\\f001\"}.fa-search:before{content:\"\\f002\"}.fa-envelope-o:before{content:\"\\f003\"}.fa-heart:before{content:\"\\f004\"}.fa-star:before{content:\"\\f005\"}.fa-star-o:before{content:\"\\f006\"}.fa-user:before{content:\"\\f007\"}.fa-film:before{content:\"\\f008\"}.fa-th-large:before{content:\"\\f009\"}.fa-th:before{content:\"\\f00a\"}.fa-th-list:before{content:\"\\f00b\"}.fa-check:before{content:\"\\f00c\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\"\\f00d\"}.fa-search-plus:before{content:\"\\f00e\"}.fa-search-minus:before{content:\"\\f010\"}.fa-power-off:before{content:\"\\f011\"}.fa-signal:before{content:\"\\f012\"}.fa-gear:before,.fa-cog:before{content:\"\\f013\"}.fa-trash-o:before{content:\"\\f014\"}.fa-home:before{content:\"\\f015\"}.fa-file-o:before{content:\"\\f016\"}.fa-clock-o:before{content:\"\\f017\"}.fa-road:before{content:\"\\f018\"}.fa-download:before{content:\"\\f019\"}.fa-arrow-circle-o-down:before{content:\"\\f01a\"}.fa-arrow-circle-o-up:before{content:\"\\f01b\"}.fa-inbox:before{content:\"\\f01c\"}.fa-play-circle-o:before{content:\"\\f01d\"}.fa-rotate-right:before,.fa-repeat:before{content:\"\\f01e\"}.fa-refresh:before{content:\"\\f021\"}.fa-list-alt:before{content:\"\\f022\"}.fa-lock:before{content:\"\\f023\"}.fa-flag:before{content:\"\\f024\"}.fa-headphones:before{content:\"\\f025\"}.fa-volume-off:before{content:\"\\f026\"}.fa-volume-down:before{content:\"\\f027\"}.fa-volume-up:before{content:\"\\f028\"}.fa-qrcode:before{content:\"\\f029\"}.fa-barcode:before{content:\"\\f02a\"}.fa-tag:before{content:\"\\f02b\"}.fa-tags:before{content:\"\\f02c\"}.fa-book:before{content:\"\\f02d\"}.fa-bookmark:before{content:\"\\f02e\"}.fa-print:before{content:\"\\f02f\"}.fa-camera:before{content:\"\\f030\"}.fa-font:before{content:\"\\f031\"}.fa-bold:before{content:\"\\f032\"}.fa-italic:before{content:\"\\f033\"}.fa-text-height:before{content:\"\\f034\"}.fa-text-width:before{content:\"\\f035\"}.fa-align-left:before{content:\"\\f036\"}.fa-align-center:before{content:\"\\f037\"}.fa-align-right:before{content:\"\\f038\"}.fa-align-justify:before{content:\"\\f039\"}.fa-list:before{content:\"\\f03a\"}.fa-dedent:before,.fa-outdent:before{content:\"\\f03b\"}.fa-indent:before{content:\"\\f03c\"}.fa-video-camera:before{content:\"\\f03d\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\"\\f03e\"}.fa-pencil:before{content:\"\\f040\"}.fa-map-marker:before{content:\"\\f041\"}.fa-adjust:before{content:\"\\f042\"}.fa-tint:before{content:\"\\f043\"}.fa-edit:before,.fa-pencil-square-o:before{content:\"\\f044\"}.fa-share-square-o:before{content:\"\\f045\"}.fa-check-square-o:before{content:\"\\f046\"}.fa-arrows:before{content:\"\\f047\"}.fa-step-backward:before{content:\"\\f048\"}.fa-fast-backward:before{content:\"\\f049\"}.fa-backward:before{content:\"\\f04a\"}.fa-play:before{content:\"\\f04b\"}.fa-pause:before{content:\"\\f04c\"}.fa-stop:before{content:\"\\f04d\"}.fa-forward:before{content:\"\\f04e\"}.fa-fast-forward:before{content:\"\\f050\"}.fa-step-forward:before{content:\"\\f051\"}.fa-eject:before{content:\"\\f052\"}.fa-chevron-left:before{content:\"\\f053\"}.fa-chevron-right:before{content:\"\\f054\"}.fa-plus-circle:before{content:\"\\f055\"}.fa-minus-circle:before{content:\"\\f056\"}.fa-times-circle:before{content:\"\\f057\"}.fa-check-circle:before{content:\"\\f058\"}.fa-question-circle:before{content:\"\\f059\"}.fa-info-circle:before{content:\"\\f05a\"}.fa-crosshairs:before{content:\"\\f05b\"}.fa-times-circle-o:before{content:\"\\f05c\"}.fa-check-circle-o:before{content:\"\\f05d\"}.fa-ban:before{content:\"\\f05e\"}.fa-arrow-left:before{content:\"\\f060\"}.fa-arrow-right:before{content:\"\\f061\"}.fa-arrow-up:before{content:\"\\f062\"}.fa-arrow-down:before{content:\"\\f063\"}.fa-mail-forward:before,.fa-share:before{content:\"\\f064\"}.fa-expand:before{content:\"\\f065\"}.fa-compress:before{content:\"\\f066\"}.fa-plus:before{content:\"\\f067\"}.fa-minus:before{content:\"\\f068\"}.fa-asterisk:before{content:\"\\f069\"}.fa-exclamation-circle:before{content:\"\\f06a\"}.fa-gift:before{content:\"\\f06b\"}.fa-leaf:before{content:\"\\f06c\"}.fa-fire:before{content:\"\\f06d\"}.fa-eye:before{content:\"\\f06e\"}.fa-eye-slash:before{content:\"\\f070\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\"\\f071\"}.fa-plane:before{content:\"\\f072\"}.fa-calendar:before{content:\"\\f073\"}.fa-random:before{content:\"\\f074\"}.fa-comment:before{content:\"\\f075\"}.fa-magnet:before{content:\"\\f076\"}.fa-chevron-up:before{content:\"\\f077\"}.fa-chevron-down:before{content:\"\\f078\"}.fa-retweet:before{content:\"\\f079\"}.fa-shopping-cart:before{content:\"\\f07a\"}.fa-folder:before{content:\"\\f07b\"}.fa-folder-open:before{content:\"\\f07c\"}.fa-arrows-v:before{content:\"\\f07d\"}.fa-arrows-h:before{content:\"\\f07e\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\"\\f080\"}.fa-twitter-square:before{content:\"\\f081\"}.fa-facebook-square:before{content:\"\\f082\"}.fa-camera-retro:before{content:\"\\f083\"}.fa-key:before{content:\"\\f084\"}.fa-gears:before,.fa-cogs:before{content:\"\\f085\"}.fa-comments:before{content:\"\\f086\"}.fa-thumbs-o-up:before{content:\"\\f087\"}.fa-thumbs-o-down:before{content:\"\\f088\"}.fa-star-half:before{content:\"\\f089\"}.fa-heart-o:before{content:\"\\f08a\"}.fa-sign-out:before{content:\"\\f08b\"}.fa-linkedin-square:before{content:\"\\f08c\"}.fa-thumb-tack:before{content:\"\\f08d\"}.fa-external-link:before{content:\"\\f08e\"}.fa-sign-in:before{content:\"\\f090\"}.fa-trophy:before{content:\"\\f091\"}.fa-github-square:before{content:\"\\f092\"}.fa-upload:before{content:\"\\f093\"}.fa-lemon-o:before{content:\"\\f094\"}.fa-phone:before{content:\"\\f095\"}.fa-square-o:before{content:\"\\f096\"}.fa-bookmark-o:before{content:\"\\f097\"}.fa-phone-square:before{content:\"\\f098\"}.fa-twitter:before{content:\"\\f099\"}.fa-facebook-f:before,.fa-facebook:before{content:\"\\f09a\"}.fa-github:before{content:\"\\f09b\"}.fa-unlock:before{content:\"\\f09c\"}.fa-credit-card:before{content:\"\\f09d\"}.fa-feed:before,.fa-rss:before{content:\"\\f09e\"}.fa-hdd-o:before{content:\"\\f0a0\"}.fa-bullhorn:before{content:\"\\f0a1\"}.fa-bell:before{content:\"\\f0f3\"}.fa-certificate:before{content:\"\\f0a3\"}.fa-hand-o-right:before{content:\"\\f0a4\"}.fa-hand-o-left:before{content:\"\\f0a5\"}.fa-hand-o-up:before{content:\"\\f0a6\"}.fa-hand-o-down:before{content:\"\\f0a7\"}.fa-arrow-circle-left:before{content:\"\\f0a8\"}.fa-arrow-circle-right:before{content:\"\\f0a9\"}.fa-arrow-circle-up:before{content:\"\\f0aa\"}.fa-arrow-circle-down:before{content:\"\\f0ab\"}.fa-globe:before{content:\"\\f0ac\"}.fa-wrench:before{content:\"\\f0ad\"}.fa-tasks:before{content:\"\\f0ae\"}.fa-filter:before{content:\"\\f0b0\"}.fa-briefcase:before{content:\"\\f0b1\"}.fa-arrows-alt:before{content:\"\\f0b2\"}.fa-group:before,.fa-users:before{content:\"\\f0c0\"}.fa-chain:before,.fa-link:before{content:\"\\f0c1\"}.fa-cloud:before{content:\"\\f0c2\"}.fa-flask:before{content:\"\\f0c3\"}.fa-cut:before,.fa-scissors:before{content:\"\\f0c4\"}.fa-copy:before,.fa-files-o:before{content:\"\\f0c5\"}.fa-paperclip:before{content:\"\\f0c6\"}.fa-save:before,.fa-floppy-o:before{content:\"\\f0c7\"}.fa-square:before{content:\"\\f0c8\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\"\\f0c9\"}.fa-list-ul:before{content:\"\\f0ca\"}.fa-list-ol:before{content:\"\\f0cb\"}.fa-strikethrough:before{content:\"\\f0cc\"}.fa-underline:before{content:\"\\f0cd\"}.fa-table:before{content:\"\\f0ce\"}.fa-magic:before{content:\"\\f0d0\"}.fa-truck:before{content:\"\\f0d1\"}.fa-pinterest:before{content:\"\\f0d2\"}.fa-pinterest-square:before{content:\"\\f0d3\"}.fa-google-plus-square:before{content:\"\\f0d4\"}.fa-google-plus:before{content:\"\\f0d5\"}.fa-money:before{content:\"\\f0d6\"}.fa-caret-down:before{content:\"\\f0d7\"}.fa-caret-up:before{content:\"\\f0d8\"}.fa-caret-left:before{content:\"\\f0d9\"}.fa-caret-right:before{content:\"\\f0da\"}.fa-columns:before{content:\"\\f0db\"}.fa-unsorted:before,.fa-sort:before{content:\"\\f0dc\"}.fa-sort-down:before,.fa-sort-desc:before{content:\"\\f0dd\"}.fa-sort-up:before,.fa-sort-asc:before{content:\"\\f0de\"}.fa-envelope:before{content:\"\\f0e0\"}.fa-linkedin:before{content:\"\\f0e1\"}.fa-rotate-left:before,.fa-undo:before{content:\"\\f0e2\"}.fa-legal:before,.fa-gavel:before{content:\"\\f0e3\"}.fa-dashboard:before,.fa-tachometer:before{content:\"\\f0e4\"}.fa-comment-o:before{content:\"\\f0e5\"}.fa-comments-o:before{content:\"\\f0e6\"}.fa-flash:before,.fa-bolt:before{content:\"\\f0e7\"}.fa-sitemap:before{content:\"\\f0e8\"}.fa-umbrella:before{content:\"\\f0e9\"}.fa-paste:before,.fa-clipboard:before{content:\"\\f0ea\"}.fa-lightbulb-o:before{content:\"\\f0eb\"}.fa-exchange:before{content:\"\\f0ec\"}.fa-cloud-download:before{content:\"\\f0ed\"}.fa-cloud-upload:before{content:\"\\f0ee\"}.fa-user-md:before{content:\"\\f0f0\"}.fa-stethoscope:before{content:\"\\f0f1\"}.fa-suitcase:before{content:\"\\f0f2\"}.fa-bell-o:before{content:\"\\f0a2\"}.fa-coffee:before{content:\"\\f0f4\"}.fa-cutlery:before{content:\"\\f0f5\"}.fa-file-text-o:before{content:\"\\f0f6\"}.fa-building-o:before{content:\"\\f0f7\"}.fa-hospital-o:before{content:\"\\f0f8\"}.fa-ambulance:before{content:\"\\f0f9\"}.fa-medkit:before{content:\"\\f0fa\"}.fa-fighter-jet:before{content:\"\\f0fb\"}.fa-beer:before{content:\"\\f0fc\"}.fa-h-square:before{content:\"\\f0fd\"}.fa-plus-square:before{content:\"\\f0fe\"}.fa-angle-double-left:before{content:\"\\f100\"}.fa-angle-double-right:before{content:\"\\f101\"}.fa-angle-double-up:before{content:\"\\f102\"}.fa-angle-double-down:before{content:\"\\f103\"}.fa-angle-left:before{content:\"\\f104\"}.fa-angle-right:before{content:\"\\f105\"}.fa-angle-up:before{content:\"\\f106\"}.fa-angle-down:before{content:\"\\f107\"}.fa-desktop:before{content:\"\\f108\"}.fa-laptop:before{content:\"\\f109\"}.fa-tablet:before{content:\"\\f10a\"}.fa-mobile-phone:before,.fa-mobile:before{content:\"\\f10b\"}.fa-circle-o:before{content:\"\\f10c\"}.fa-quote-left:before{content:\"\\f10d\"}.fa-quote-right:before{content:\"\\f10e\"}.fa-spinner:before{content:\"\\f110\"}.fa-circle:before{content:\"\\f111\"}.fa-mail-reply:before,.fa-reply:before{content:\"\\f112\"}.fa-github-alt:before{content:\"\\f113\"}.fa-folder-o:before{content:\"\\f114\"}.fa-folder-open-o:before{content:\"\\f115\"}.fa-smile-o:before{content:\"\\f118\"}.fa-frown-o:before{content:\"\\f119\"}.fa-meh-o:before{content:\"\\f11a\"}.fa-gamepad:before{content:\"\\f11b\"}.fa-keyboard-o:before{content:\"\\f11c\"}.fa-flag-o:before{content:\"\\f11d\"}.fa-flag-checkered:before{content:\"\\f11e\"}.fa-terminal:before{content:\"\\f120\"}.fa-code:before{content:\"\\f121\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\"\\f122\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\"\\f123\"}.fa-location-arrow:before{content:\"\\f124\"}.fa-crop:before{content:\"\\f125\"}.fa-code-fork:before{content:\"\\f126\"}.fa-unlink:before,.fa-chain-broken:before{content:\"\\f127\"}.fa-question:before{content:\"\\f128\"}.fa-info:before{content:\"\\f129\"}.fa-exclamation:before{content:\"\\f12a\"}.fa-superscript:before{content:\"\\f12b\"}.fa-subscript:before{content:\"\\f12c\"}.fa-eraser:before{content:\"\\f12d\"}.fa-puzzle-piece:before{content:\"\\f12e\"}.fa-microphone:before{content:\"\\f130\"}.fa-microphone-slash:before{content:\"\\f131\"}.fa-shield:before{content:\"\\f132\"}.fa-calendar-o:before{content:\"\\f133\"}.fa-fire-extinguisher:before{content:\"\\f134\"}.fa-rocket:before{content:\"\\f135\"}.fa-maxcdn:before{content:\"\\f136\"}.fa-chevron-circle-left:before{content:\"\\f137\"}.fa-chevron-circle-right:before{content:\"\\f138\"}.fa-chevron-circle-up:before{content:\"\\f139\"}.fa-chevron-circle-down:before{content:\"\\f13a\"}.fa-html5:before{content:\"\\f13b\"}.fa-css3:before{content:\"\\f13c\"}.fa-anchor:before{content:\"\\f13d\"}.fa-unlock-alt:before{content:\"\\f13e\"}.fa-bullseye:before{content:\"\\f140\"}.fa-ellipsis-h:before{content:\"\\f141\"}.fa-ellipsis-v:before{content:\"\\f142\"}.fa-rss-square:before{content:\"\\f143\"}.fa-play-circle:before{content:\"\\f144\"}.fa-ticket:before{content:\"\\f145\"}.fa-minus-square:before{content:\"\\f146\"}.fa-minus-square-o:before{content:\"\\f147\"}.fa-level-up:before{content:\"\\f148\"}.fa-level-down:before{content:\"\\f149\"}.fa-check-square:before{content:\"\\f14a\"}.fa-pencil-square:before{content:\"\\f14b\"}.fa-external-link-square:before{content:\"\\f14c\"}.fa-share-square:before{content:\"\\f14d\"}.fa-compass:before{content:\"\\f14e\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\"\\f150\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\"\\f151\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\"\\f152\"}.fa-euro:before,.fa-eur:before{content:\"\\f153\"}.fa-gbp:before{content:\"\\f154\"}.fa-dollar:before,.fa-usd:before{content:\"\\f155\"}.fa-rupee:before,.fa-inr:before{content:\"\\f156\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\"\\f157\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\"\\f158\"}.fa-won:before,.fa-krw:before{content:\"\\f159\"}.fa-bitcoin:before,.fa-btc:before{content:\"\\f15a\"}.fa-file:before{content:\"\\f15b\"}.fa-file-text:before{content:\"\\f15c\"}.fa-sort-alpha-asc:before{content:\"\\f15d\"}.fa-sort-alpha-desc:before{content:\"\\f15e\"}.fa-sort-amount-asc:before{content:\"\\f160\"}.fa-sort-amount-desc:before{content:\"\\f161\"}.fa-sort-numeric-asc:before{content:\"\\f162\"}.fa-sort-numeric-desc:before{content:\"\\f163\"}.fa-thumbs-up:before{content:\"\\f164\"}.fa-thumbs-down:before{content:\"\\f165\"}.fa-youtube-square:before{content:\"\\f166\"}.fa-youtube:before{content:\"\\f167\"}.fa-xing:before{content:\"\\f168\"}.fa-xing-square:before{content:\"\\f169\"}.fa-youtube-play:before{content:\"\\f16a\"}.fa-dropbox:before{content:\"\\f16b\"}.fa-stack-overflow:before{content:\"\\f16c\"}.fa-instagram:before{content:\"\\f16d\"}.fa-flickr:before{content:\"\\f16e\"}.fa-adn:before{content:\"\\f170\"}.fa-bitbucket:before{content:\"\\f171\"}.fa-bitbucket-square:before{content:\"\\f172\"}.fa-tumblr:before{content:\"\\f173\"}.fa-tumblr-square:before{content:\"\\f174\"}.fa-long-arrow-down:before{content:\"\\f175\"}.fa-long-arrow-up:before{content:\"\\f176\"}.fa-long-arrow-left:before{content:\"\\f177\"}.fa-long-arrow-right:before{content:\"\\f178\"}.fa-apple:before{content:\"\\f179\"}.fa-windows:before{content:\"\\f17a\"}.fa-android:before{content:\"\\f17b\"}.fa-linux:before{content:\"\\f17c\"}.fa-dribbble:before{content:\"\\f17d\"}.fa-skype:before{content:\"\\f17e\"}.fa-foursquare:before{content:\"\\f180\"}.fa-trello:before{content:\"\\f181\"}.fa-female:before{content:\"\\f182\"}.fa-male:before{content:\"\\f183\"}.fa-gittip:before,.fa-gratipay:before{content:\"\\f184\"}.fa-sun-o:before{content:\"\\f185\"}.fa-moon-o:before{content:\"\\f186\"}.fa-archive:before{content:\"\\f187\"}.fa-bug:before{content:\"\\f188\"}.fa-vk:before{content:\"\\f189\"}.fa-weibo:before{content:\"\\f18a\"}.fa-renren:before{content:\"\\f18b\"}.fa-pagelines:before{content:\"\\f18c\"}.fa-stack-exchange:before{content:\"\\f18d\"}.fa-arrow-circle-o-right:before{content:\"\\f18e\"}.fa-arrow-circle-o-left:before{content:\"\\f190\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\"\\f191\"}.fa-dot-circle-o:before{content:\"\\f192\"}.fa-wheelchair:before{content:\"\\f193\"}.fa-vimeo-square:before{content:\"\\f194\"}.fa-turkish-lira:before,.fa-try:before{content:\"\\f195\"}.fa-plus-square-o:before{content:\"\\f196\"}.fa-space-shuttle:before{content:\"\\f197\"}.fa-slack:before{content:\"\\f198\"}.fa-envelope-square:before{content:\"\\f199\"}.fa-wordpress:before{content:\"\\f19a\"}.fa-openid:before{content:\"\\f19b\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\"\\f19c\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\"\\f19d\"}.fa-yahoo:before{content:\"\\f19e\"}.fa-google:before{content:\"\\f1a0\"}.fa-reddit:before{content:\"\\f1a1\"}.fa-reddit-square:before{content:\"\\f1a2\"}.fa-stumbleupon-circle:before{content:\"\\f1a3\"}.fa-stumbleupon:before{content:\"\\f1a4\"}.fa-delicious:before{content:\"\\f1a5\"}.fa-digg:before{content:\"\\f1a6\"}.fa-pied-piper-pp:before{content:\"\\f1a7\"}.fa-pied-piper-alt:before{content:\"\\f1a8\"}.fa-drupal:before{content:\"\\f1a9\"}.fa-joomla:before{content:\"\\f1aa\"}.fa-language:before{content:\"\\f1ab\"}.fa-fax:before{content:\"\\f1ac\"}.fa-building:before{content:\"\\f1ad\"}.fa-child:before{content:\"\\f1ae\"}.fa-paw:before{content:\"\\f1b0\"}.fa-spoon:before{content:\"\\f1b1\"}.fa-cube:before{content:\"\\f1b2\"}.fa-cubes:before{content:\"\\f1b3\"}.fa-behance:before{content:\"\\f1b4\"}.fa-behance-square:before{content:\"\\f1b5\"}.fa-steam:before{content:\"\\f1b6\"}.fa-steam-square:before{content:\"\\f1b7\"}.fa-recycle:before{content:\"\\f1b8\"}.fa-automobile:before,.fa-car:before{content:\"\\f1b9\"}.fa-cab:before,.fa-taxi:before{content:\"\\f1ba\"}.fa-tree:before{content:\"\\f1bb\"}.fa-spotify:before{content:\"\\f1bc\"}.fa-deviantart:before{content:\"\\f1bd\"}.fa-soundcloud:before{content:\"\\f1be\"}.fa-database:before{content:\"\\f1c0\"}.fa-file-pdf-o:before{content:\"\\f1c1\"}.fa-file-word-o:before{content:\"\\f1c2\"}.fa-file-excel-o:before{content:\"\\f1c3\"}.fa-file-powerpoint-o:before{content:\"\\f1c4\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\"\\f1c5\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\"\\f1c6\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\"\\f1c7\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\"\\f1c8\"}.fa-file-code-o:before{content:\"\\f1c9\"}.fa-vine:before{content:\"\\f1ca\"}.fa-codepen:before{content:\"\\f1cb\"}.fa-jsfiddle:before{content:\"\\f1cc\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\"\\f1cd\"}.fa-circle-o-notch:before{content:\"\\f1ce\"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:\"\\f1d0\"}.fa-ge:before,.fa-empire:before{content:\"\\f1d1\"}.fa-git-square:before{content:\"\\f1d2\"}.fa-git:before{content:\"\\f1d3\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\"\\f1d4\"}.fa-tencent-weibo:before{content:\"\\f1d5\"}.fa-qq:before{content:\"\\f1d6\"}.fa-wechat:before,.fa-weixin:before{content:\"\\f1d7\"}.fa-send:before,.fa-paper-plane:before{content:\"\\f1d8\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\"\\f1d9\"}.fa-history:before{content:\"\\f1da\"}.fa-circle-thin:before{content:\"\\f1db\"}.fa-header:before{content:\"\\f1dc\"}.fa-paragraph:before{content:\"\\f1dd\"}.fa-sliders:before{content:\"\\f1de\"}.fa-share-alt:before{content:\"\\f1e0\"}.fa-share-alt-square:before{content:\"\\f1e1\"}.fa-bomb:before{content:\"\\f1e2\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\"\\f1e3\"}.fa-tty:before{content:\"\\f1e4\"}.fa-binoculars:before{content:\"\\f1e5\"}.fa-plug:before{content:\"\\f1e6\"}.fa-slideshare:before{content:\"\\f1e7\"}.fa-twitch:before{content:\"\\f1e8\"}.fa-yelp:before{content:\"\\f1e9\"}.fa-newspaper-o:before{content:\"\\f1ea\"}.fa-wifi:before{content:\"\\f1eb\"}.fa-calculator:before{content:\"\\f1ec\"}.fa-paypal:before{content:\"\\f1ed\"}.fa-google-wallet:before{content:\"\\f1ee\"}.fa-cc-visa:before{content:\"\\f1f0\"}.fa-cc-mastercard:before{content:\"\\f1f1\"}.fa-cc-discover:before{content:\"\\f1f2\"}.fa-cc-amex:before{content:\"\\f1f3\"}.fa-cc-paypal:before{content:\"\\f1f4\"}.fa-cc-stripe:before{content:\"\\f1f5\"}.fa-bell-slash:before{content:\"\\f1f6\"}.fa-bell-slash-o:before{content:\"\\f1f7\"}.fa-trash:before{content:\"\\f1f8\"}.fa-copyright:before{content:\"\\f1f9\"}.fa-at:before{content:\"\\f1fa\"}.fa-eyedropper:before{content:\"\\f1fb\"}.fa-paint-brush:before{content:\"\\f1fc\"}.fa-birthday-cake:before{content:\"\\f1fd\"}.fa-area-chart:before{content:\"\\f1fe\"}.fa-pie-chart:before{content:\"\\f200\"}.fa-line-chart:before{content:\"\\f201\"}.fa-lastfm:before{content:\"\\f202\"}.fa-lastfm-square:before{content:\"\\f203\"}.fa-toggle-off:before{content:\"\\f204\"}.fa-toggle-on:before{content:\"\\f205\"}.fa-bicycle:before{content:\"\\f206\"}.fa-bus:before{content:\"\\f207\"}.fa-ioxhost:before{content:\"\\f208\"}.fa-angellist:before{content:\"\\f209\"}.fa-cc:before{content:\"\\f20a\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\"\\f20b\"}.fa-meanpath:before{content:\"\\f20c\"}.fa-buysellads:before{content:\"\\f20d\"}.fa-connectdevelop:before{content:\"\\f20e\"}.fa-dashcube:before{content:\"\\f210\"}.fa-forumbee:before{content:\"\\f211\"}.fa-leanpub:before{content:\"\\f212\"}.fa-sellsy:before{content:\"\\f213\"}.fa-shirtsinbulk:before{content:\"\\f214\"}.fa-simplybuilt:before{content:\"\\f215\"}.fa-skyatlas:before{content:\"\\f216\"}.fa-cart-plus:before{content:\"\\f217\"}.fa-cart-arrow-down:before{content:\"\\f218\"}.fa-diamond:before{content:\"\\f219\"}.fa-ship:before{content:\"\\f21a\"}.fa-user-secret:before{content:\"\\f21b\"}.fa-motorcycle:before{content:\"\\f21c\"}.fa-street-view:before{content:\"\\f21d\"}.fa-heartbeat:before{content:\"\\f21e\"}.fa-venus:before{content:\"\\f221\"}.fa-mars:before{content:\"\\f222\"}.fa-mercury:before{content:\"\\f223\"}.fa-intersex:before,.fa-transgender:before{content:\"\\f224\"}.fa-transgender-alt:before{content:\"\\f225\"}.fa-venus-double:before{content:\"\\f226\"}.fa-mars-double:before{content:\"\\f227\"}.fa-venus-mars:before{content:\"\\f228\"}.fa-mars-stroke:before{content:\"\\f229\"}.fa-mars-stroke-v:before{content:\"\\f22a\"}.fa-mars-stroke-h:before{content:\"\\f22b\"}.fa-neuter:before{content:\"\\f22c\"}.fa-genderless:before{content:\"\\f22d\"}.fa-facebook-official:before{content:\"\\f230\"}.fa-pinterest-p:before{content:\"\\f231\"}.fa-whatsapp:before{content:\"\\f232\"}.fa-server:before{content:\"\\f233\"}.fa-user-plus:before{content:\"\\f234\"}.fa-user-times:before{content:\"\\f235\"}.fa-hotel:before,.fa-bed:before{content:\"\\f236\"}.fa-viacoin:before{content:\"\\f237\"}.fa-train:before{content:\"\\f238\"}.fa-subway:before{content:\"\\f239\"}.fa-medium:before{content:\"\\f23a\"}.fa-yc:before,.fa-y-combinator:before{content:\"\\f23b\"}.fa-optin-monster:before{content:\"\\f23c\"}.fa-opencart:before{content:\"\\f23d\"}.fa-expeditedssl:before{content:\"\\f23e\"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:\"\\f240\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\"\\f241\"}.fa-battery-2:before,.fa-battery-half:before{content:\"\\f242\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\"\\f243\"}.fa-battery-0:before,.fa-battery-empty:before{content:\"\\f244\"}.fa-mouse-pointer:before{content:\"\\f245\"}.fa-i-cursor:before{content:\"\\f246\"}.fa-object-group:before{content:\"\\f247\"}.fa-object-ungroup:before{content:\"\\f248\"}.fa-sticky-note:before{content:\"\\f249\"}.fa-sticky-note-o:before{content:\"\\f24a\"}.fa-cc-jcb:before{content:\"\\f24b\"}.fa-cc-diners-club:before{content:\"\\f24c\"}.fa-clone:before{content:\"\\f24d\"}.fa-balance-scale:before{content:\"\\f24e\"}.fa-hourglass-o:before{content:\"\\f250\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\"\\f251\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\"\\f252\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\"\\f253\"}.fa-hourglass:before{content:\"\\f254\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\"\\f255\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\"\\f256\"}.fa-hand-scissors-o:before{content:\"\\f257\"}.fa-hand-lizard-o:before{content:\"\\f258\"}.fa-hand-spock-o:before{content:\"\\f259\"}.fa-hand-pointer-o:before{content:\"\\f25a\"}.fa-hand-peace-o:before{content:\"\\f25b\"}.fa-trademark:before{content:\"\\f25c\"}.fa-registered:before{content:\"\\f25d\"}.fa-creative-commons:before{content:\"\\f25e\"}.fa-gg:before{content:\"\\f260\"}.fa-gg-circle:before{content:\"\\f261\"}.fa-tripadvisor:before{content:\"\\f262\"}.fa-odnoklassniki:before{content:\"\\f263\"}.fa-odnoklassniki-square:before{content:\"\\f264\"}.fa-get-pocket:before{content:\"\\f265\"}.fa-wikipedia-w:before{content:\"\\f266\"}.fa-safari:before{content:\"\\f267\"}.fa-chrome:before{content:\"\\f268\"}.fa-firefox:before{content:\"\\f269\"}.fa-opera:before{content:\"\\f26a\"}.fa-internet-explorer:before{content:\"\\f26b\"}.fa-tv:before,.fa-television:before{content:\"\\f26c\"}.fa-contao:before{content:\"\\f26d\"}.fa-500px:before{content:\"\\f26e\"}.fa-amazon:before{content:\"\\f270\"}.fa-calendar-plus-o:before{content:\"\\f271\"}.fa-calendar-minus-o:before{content:\"\\f272\"}.fa-calendar-times-o:before{content:\"\\f273\"}.fa-calendar-check-o:before{content:\"\\f274\"}.fa-industry:before{content:\"\\f275\"}.fa-map-pin:before{content:\"\\f276\"}.fa-map-signs:before{content:\"\\f277\"}.fa-map-o:before{content:\"\\f278\"}.fa-map:before{content:\"\\f279\"}.fa-commenting:before{content:\"\\f27a\"}.fa-commenting-o:before{content:\"\\f27b\"}.fa-houzz:before{content:\"\\f27c\"}.fa-vimeo:before{content:\"\\f27d\"}.fa-black-tie:before{content:\"\\f27e\"}.fa-fonticons:before{content:\"\\f280\"}.fa-reddit-alien:before{content:\"\\f281\"}.fa-edge:before{content:\"\\f282\"}.fa-credit-card-alt:before{content:\"\\f283\"}.fa-codiepie:before{content:\"\\f284\"}.fa-modx:before{content:\"\\f285\"}.fa-fort-awesome:before{content:\"\\f286\"}.fa-usb:before{content:\"\\f287\"}.fa-product-hunt:before{content:\"\\f288\"}.fa-mixcloud:before{content:\"\\f289\"}.fa-scribd:before{content:\"\\f28a\"}.fa-pause-circle:before{content:\"\\f28b\"}.fa-pause-circle-o:before{content:\"\\f28c\"}.fa-stop-circle:before{content:\"\\f28d\"}.fa-stop-circle-o:before{content:\"\\f28e\"}.fa-shopping-bag:before{content:\"\\f290\"}.fa-shopping-basket:before{content:\"\\f291\"}.fa-hashtag:before{content:\"\\f292\"}.fa-bluetooth:before{content:\"\\f293\"}.fa-bluetooth-b:before{content:\"\\f294\"}.fa-percent:before{content:\"\\f295\"}.fa-gitlab:before{content:\"\\f296\"}.fa-wpbeginner:before{content:\"\\f297\"}.fa-wpforms:before{content:\"\\f298\"}.fa-envira:before{content:\"\\f299\"}.fa-universal-access:before{content:\"\\f29a\"}.fa-wheelchair-alt:before{content:\"\\f29b\"}.fa-question-circle-o:before{content:\"\\f29c\"}.fa-blind:before{content:\"\\f29d\"}.fa-audio-description:before{content:\"\\f29e\"}.fa-volume-control-phone:before{content:\"\\f2a0\"}.fa-braille:before{content:\"\\f2a1\"}.fa-assistive-listening-systems:before{content:\"\\f2a2\"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:\"\\f2a3\"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:\"\\f2a4\"}.fa-glide:before{content:\"\\f2a5\"}.fa-glide-g:before{content:\"\\f2a6\"}.fa-signing:before,.fa-sign-language:before{content:\"\\f2a7\"}.fa-low-vision:before{content:\"\\f2a8\"}.fa-viadeo:before{content:\"\\f2a9\"}.fa-viadeo-square:before{content:\"\\f2aa\"}.fa-snapchat:before{content:\"\\f2ab\"}.fa-snapchat-ghost:before{content:\"\\f2ac\"}.fa-snapchat-square:before{content:\"\\f2ad\"}.fa-pied-piper:before{content:\"\\f2ae\"}.fa-first-order:before{content:\"\\f2b0\"}.fa-yoast:before{content:\"\\f2b1\"}.fa-themeisle:before{content:\"\\f2b2\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\"\\f2b3\"}.fa-fa:before,.fa-font-awesome:before{content:\"\\f2b4\"}.fa-handshake-o:before{content:\"\\f2b5\"}.fa-envelope-open:before{content:\"\\f2b6\"}.fa-envelope-open-o:before{content:\"\\f2b7\"}.fa-linode:before{content:\"\\f2b8\"}.fa-address-book:before{content:\"\\f2b9\"}.fa-address-book-o:before{content:\"\\f2ba\"}.fa-vcard:before,.fa-address-card:before{content:\"\\f2bb\"}.fa-vcard-o:before,.fa-address-card-o:before{content:\"\\f2bc\"}.fa-user-circle:before{content:\"\\f2bd\"}.fa-user-circle-o:before{content:\"\\f2be\"}.fa-user-o:before{content:\"\\f2c0\"}.fa-id-badge:before{content:\"\\f2c1\"}.fa-drivers-license:before,.fa-id-card:before{content:\"\\f2c2\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\"\\f2c3\"}.fa-quora:before{content:\"\\f2c4\"}.fa-free-code-camp:before{content:\"\\f2c5\"}.fa-telegram:before{content:\"\\f2c6\"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:\"\\f2c7\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\"\\f2c8\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\"\\f2c9\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\"\\f2ca\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\"\\f2cb\"}.fa-shower:before{content:\"\\f2cc\"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:\"\\f2cd\"}.fa-podcast:before{content:\"\\f2ce\"}.fa-window-maximize:before{content:\"\\f2d0\"}.fa-window-minimize:before{content:\"\\f2d1\"}.fa-window-restore:before{content:\"\\f2d2\"}.fa-times-rectangle:before,.fa-window-close:before{content:\"\\f2d3\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\"\\f2d4\"}.fa-bandcamp:before{content:\"\\f2d5\"}.fa-grav:before{content:\"\\f2d6\"}.fa-etsy:before{content:\"\\f2d7\"}.fa-imdb:before{content:\"\\f2d8\"}.fa-ravelry:before{content:\"\\f2d9\"}.fa-eercast:before{content:\"\\f2da\"}.fa-microchip:before{content:\"\\f2db\"}.fa-snowflake-o:before{content:\"\\f2dc\"}.fa-superpowers:before{content:\"\\f2dd\"}.fa-wpexplorer:before{content:\"\\f2de\"}.fa-meetup:before{content:\"\\f2e0\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}\n", "import './adminlte'\nimport './adminlte.css'\nimport './style.scss'\nimport './skin-blue.css'\nimport './skin-blue-light.css'\nimport './skin-yellow.css'\nimport './skin-yellow-light.css'\nimport './search.css'\nimport 'font-awesome/css/font-awesome.min.css'\n", "@font-face {\n  font-family: 'Source Sans Pro';\n  font-weight: 300;\n  font-style: normal;\n  src: url('Source-Sans-Pro-300/Source-Sans-Pro-300.eot');\n  src: url('Source-Sans-Pro-300/Source-Sans-Pro-300.eot?#iefix') format('embedded-opentype'),\n  local('Source Sans Pro Light'),\n  local('Source-Sans-Pro-300'),\n  url('Source-Sans-Pro-300/Source-Sans-Pro-300.woff2') format('woff2'),\n  url('Source-Sans-Pro-300/Source-Sans-Pro-300.woff') format('woff'),\n  url('Source-Sans-Pro-300/Source-Sans-Pro-300.ttf') format('truetype'),\n  url('Source-Sans-Pro-300/Source-Sans-Pro-300.svg#SourceSansPro') format('svg');\n}\n\n@font-face {\n  font-family: 'Source Sans Pro';\n  font-weight: 400;\n  font-style: normal;\n  src: url('Source-Sans-Pro-regular/Source-Sans-Pro-regular.eot');\n  src: url('Source-Sans-Pro-regular/Source-Sans-Pro-regular.eot?#iefix') format('embedded-opentype'),\n  local('Source Sans Pro'),\n  local('Source-Sans-Pro-regular'),\n  url('Source-Sans-Pro-regular/Source-Sans-Pro-regular.woff2') format('woff2'),\n  url('Source-Sans-Pro-regular/Source-Sans-Pro-regular.woff') format('woff'),\n  url('Source-Sans-Pro-regular/Source-Sans-Pro-regular.ttf') format('truetype'),\n  url('Source-Sans-Pro-regular/Source-Sans-Pro-regular.svg#SourceSansPro') format('svg');\n}\n\n@font-face {\n  font-family: 'Source Sans Pro';\n  font-weight: 600;\n  font-style: normal;\n  src: url('Source-Sans-Pro-600/Source-Sans-Pro-600.eot');\n  src: url('Source-Sans-Pro-600/Source-Sans-Pro-600.eot?#iefix') format('embedded-opentype'),\n  local('Source Sans Pro Semibold'),\n  local('Source-Sans-Pro-600'),\n  url('Source-Sans-Pro-600/Source-Sans-Pro-600.woff2') format('woff2'),\n  url('Source-Sans-Pro-600/Source-Sans-Pro-600.woff') format('woff'),\n  url('Source-Sans-Pro-600/Source-Sans-Pro-600.ttf') format('truetype'),\n  url('Source-Sans-Pro-600/Source-Sans-Pro-600.svg#SourceSansPro') format('svg');\n}\n\n@font-face {\n  font-family: 'Source Sans Pro';\n  font-weight: 700;\n  font-style: normal;\n  src: url('Source-Sans-Pro-700/Source-Sans-Pro-700.eot');\n  src: url('Source-Sans-Pro-700/Source-Sans-Pro-700.eot?#iefix') format('embedded-opentype'),\n  local('Source Sans Pro Bold'),\n  local('Source-Sans-Pro-700'),\n  url('Source-Sans-Pro-700/Source-Sans-Pro-700.woff2') format('woff2'),\n  url('Source-Sans-Pro-700/Source-Sans-Pro-700.woff') format('woff'),\n  url('Source-Sans-Pro-700/Source-Sans-Pro-700.ttf') format('truetype'),\n  url('Source-Sans-Pro-700/Source-Sans-Pro-700.svg#SourceSansPro') format('svg');\n}\n\n@font-face {\n  font-family: 'Source Sans Pro';\n  font-weight: 300;\n  font-style: italic;\n  src: url('Source-Sans-Pro-300italic/Source-Sans-Pro-300italic.eot');\n  src: url('Source-Sans-Pro-300italic/Source-Sans-Pro-300italic.eot?#iefix') format('embedded-opentype'),\n  local('Source Sans Pro Light Italic'),\n  local('Source-Sans-Pro-300italic'),\n  url('Source-Sans-Pro-300italic/Source-Sans-Pro-300italic.woff2') format('woff2'),\n  url('Source-Sans-Pro-300italic/Source-Sans-Pro-300italic.woff') format('woff'),\n  url('Source-Sans-Pro-300italic/Source-Sans-Pro-300italic.ttf') format('truetype'),\n  url('Source-Sans-Pro-300italic/Source-Sans-Pro-300italic.svg#SourceSansPro') format('svg');\n}\n\n@font-face {\n  font-family: 'Source Sans Pro';\n  font-weight: 400;\n  font-style: italic;\n  src: url('Source-Sans-Pro-italic/Source-Sans-Pro-italic.eot');\n  src: url('Source-Sans-Pro-italic/Source-Sans-Pro-italic.eot?#iefix') format('embedded-opentype'),\n  local('Source Sans Pro Italic'),\n  local('Source-Sans-Pro-italic'),\n  url('Source-Sans-Pro-italic/Source-Sans-Pro-italic.woff2') format('woff2'),\n  url('Source-Sans-Pro-italic/Source-Sans-Pro-italic.woff') format('woff'),\n  url('Source-Sans-Pro-italic/Source-Sans-Pro-italic.ttf') format('truetype'),\n  url('Source-Sans-Pro-italic/Source-Sans-Pro-italic.svg#SourceSansPro') format('svg');\n}\n\n@font-face {\n  font-family: 'Source Sans Pro';\n  font-weight: 600;\n  font-style: italic;\n  src: url('Source-Sans-Pro-600italic/Source-Sans-Pro-600italic.eot');\n  src: url('Source-Sans-Pro-600italic/Source-Sans-Pro-600italic.eot?#iefix') format('embedded-opentype'),\n  local('Source Sans Pro Semibold Italic'),\n  local('Source-Sans-Pro-600italic'),\n  url('Source-Sans-Pro-600italic/Source-Sans-Pro-600italic.woff2') format('woff2'),\n  url('Source-Sans-Pro-600italic/Source-Sans-Pro-600italic.woff') format('woff'),\n  url('Source-Sans-Pro-600italic/Source-Sans-Pro-600italic.ttf') format('truetype'),\n  url('Source-Sans-Pro-600italic/Source-Sans-Pro-600italic.svg#SourceSansPro') format('svg');\n}\n\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('Glyphicons-Halflings-Regular/glyphicons-halflings-regular.eot');\n  src: url('Glyphicons-Halflings-Regular/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('Glyphicons-Halflings-Regular/glyphicons-halflings-regular.woff2') format('woff2'), url('Glyphicons-Halflings-Regular/glyphicons-halflings-regular.woff') format('woff'), url('Glyphicons-Halflings-Regular/glyphicons-halflings-regular.ttf') format('truetype'), url('Glyphicons-Halflings-Regular/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n\n\n", "/*\n * Implements a user-facing modal confirmation when link has a\n * \"data-confirm\" attribute using bootstrap's modals. MIT license.\n *\n *   - vjt@openssl.it  Tue Jul  2 18:45:15 CEST 2013\n */\n(function ($) {\n\n    /**\n     * Builds the markup for a [Bootstrap modal](http://twitter.github.io/bootstrap/javascript.html#modals)\n     * for the given `element`. Uses the following `data-` parameters to\n     * customize it:\n     *\n     *  * `data-confirm`: Contains the modal body text. HTML is allowed.\n     *                    Separate multiple paragraphs using \\n\\n.\n     *  * `data-commit`:  The 'confirm' button text. \"Confirm\" by default.\n     *  * `data-cancel`:  The 'cancel' button text. \"Cancel\" by default.\n     *  * `data-verify`:  Adds a text input in which the user has to input\n     *                    the text in this attribute value for the 'confirm'\n     *                    button to be clickable. Optional.\n     *  * `data-verify-text`:  Adds a label for the data-verify input. Optional\n     *  * `data-focus`:   Define focused input. Supported values are\n     *                    'cancel' or 'commit', 'cancel' is default for\n     *                    data-method DELETE, 'commit' for all others.\n     *\n     * You can set global setting using `dataConfirmModal.setDefaults`, for example:\n     *\n     *    dataConfirmModal.setDefaults({\n   *      title: 'Confirm your action',\n   *      commit: 'Continue',\n   *      cancel: 'Cancel',\n   *      fade:   false,\n   *      verifyClass: 'form-control',\n   *    });\n     *\n     */\n\n    var defaults = {\n        title: 'Sind Sie Sicher?',\n        commit: 'OK',\n        commitClass: 'btn btn-danger',\n        cancel: 'Abbrechen',\n        cancelClass: 'btn btn-default',\n        fade: false,\n        verifyClass: 'form-control',\n        elements: ['a[data-confirm]', 'button[data-confirm]', 'input[type=submit][data-confirm]'],\n        focus: 'commit',\n        zIndex: 1050,\n        modalClass: false,\n        show: true\n    };\n\n    var settings;\n\n    window.dataConfirmModal = {\n        setDefaults: function (newSettings) {\n            settings = $.extend(settings, newSettings);\n        },\n\n        restoreDefaults: function () {\n            settings = $.extend({}, defaults);\n        },\n\n        confirm: function (options) {\n            // Build an ephemeral modal\n            //\n            var modal = buildModal(options);\n\n            modal.spawn();\n            modal.on('hidden.bs.modal', function () {\n                modal.remove();\n            });\n\n            modal.find('.commit').on('click', function () {\n                if (options.onConfirm && options.onConfirm.call)\n                    options.onConfirm.call();\n\n                modal.modal('hide');\n            });\n\n            modal.find('.cancel').on('click', function () {\n                if (options.onCancel && options.onCancel.call)\n                    options.onCancel.call();\n\n                modal.modal('hide');\n            });\n        }\n    };\n\n    dataConfirmModal.restoreDefaults();\n\n    var buildElementModal = function (element) {\n        var options = {\n            title:        element.data('title') || element.attr('title') || element.data('original-title'),\n            text:         element.data('confirm'),\n            focus:        element.data('focus'),\n            method:       element.data('method'),\n            modalClass:   element.data('modal-class'),\n            commit:       element.data('commit'),\n            commitClass:  element.data('commit-class'),\n            cancel:       element.data('cancel'),\n            cancelClass:  element.data('cancel-class'),\n            remote:       element.data('remote'),\n            verify:       element.data('verify'),\n            verifyRegexp: element.data('verify-regexp'),\n            verifyLabel:  element.data('verify-text'),\n            verifyRegexpCaseInsensitive: element.data('verify-regexp-caseinsensitive'),\n            backdrop:     element.data('backdrop'),\n            keyboard:     element.data('keyboard'),\n            show:         element.data('show')\n        };\n\n        var modal = buildModal(options);\n\n        modal.find('.commit').on('click', function () {\n            // Call the original event handler chain\n            element.get(0).click();\n\n            modal.modal('hide');\n        });\n\n        return modal;\n    }\n\n    var buildModal = function (options) {\n        var id = 'confirm-modal-' + String(Math.random()).slice(2, -1);\n        var fade = settings.fade ? 'fade' : '';\n        var modalClass = options.modalClass ? options.modalClass : settings.modalClass;\n\n        var modal = $(\n            '<div id=\"'+id+'\" class=\"modal '+modalClass+' '+fade+'\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"'+id+'Label\" aria-hidden=\"true\">' +\n            '<div class=\"modal-dialog\">' +\n            '<div class=\"modal-content\">' +\n            '<div class=\"modal-header\">' +\n            '<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>' +\n            '<h4 id=\"'+id+'Label\" class=\"modal-title\"></h4> ' +\n            '</div>' +\n            '<div class=\"modal-body\"></div>' +\n            '<div class=\"modal-footer\">' +\n            '<button class=\"btn cancel\" data-dismiss=\"modal\" aria-hidden=\"true\"></button>' +\n            '<button class=\"btn commit\"></button>' +\n            '</div>'+\n            '</div>'+\n            '</div>'+\n            '</div>'\n        );\n\n        // Make sure it's always the top zindex\n        var highest = current = settings.zIndex;\n        $('.modal.in').not('#'+id).each(function() {\n            current = parseInt($(this).css('z-index'), 10);\n            if(current > highest) {\n                highest = current\n            }\n        });\n        modal.css('z-index', parseInt(highest) + 1);\n\n        modal.find('.modal-title').text(options.title || settings.title);\n\n        var body = modal.find('.modal-body');\n\n        $.each((options.text||'').split(/\\n{2}/), function (i, piece) {\n            body.append($('<p/>').html(piece));\n        });\n\n        var commit = modal.find('.commit');\n        commit.text(options.commit || settings.commit);\n        commit.addClass(options.commitClass || settings.commitClass);\n\n        var cancel = modal.find('.cancel');\n        cancel.text(options.cancel || settings.cancel);\n        cancel.addClass(options.cancelClass || settings.cancelClass);\n\n        if (options.remote) {\n            commit.attr('data-dismiss', 'modal');\n        }\n\n        if (options.verify || options.verifyRegexp) {\n            commit.prop('disabled', true);\n\n            var isMatch;\n            if (options.verifyRegexp) {\n                var caseInsensitive = options.verifyRegexpCaseInsensitive;\n                var regexp = options.verifyRegexp;\n                var re = new RegExp(regexp, caseInsensitive ? 'i' : '');\n\n                isMatch = function (input) { return input.match(re) };\n            } else {\n                isMatch = function (input) { return options.verify == input };\n            }\n\n            var verification = $('<input/>', {\"type\": 'text', \"class\": settings.verifyClass}).on('keyup', function () {\n                commit.prop('disabled', !isMatch($(this).val()));\n            });\n\n            modal.on('shown.bs.modal', function () {\n                verification.focus();\n            });\n\n            modal.on('hidden.bs.modal', function () {\n                verification.val('').trigger('keyup');\n            });\n\n            if (options.verifyLabel)\n                body.append($('<p>', {text: options.verifyLabel}))\n\n            body.append(verification);\n        }\n\n        var focus_element;\n        if (options.focus) {\n            focus_element = options.focus;\n        } else if (options.method == 'delete') {\n            focus_element = 'cancel'\n        } else {\n            focus_element = settings.focus;\n        }\n        focus_element = modal.find('.' + focus_element);\n\n        modal.on('shown.bs.modal', function () {\n            focus_element.focus();\n        });\n\n        $('body').append(modal);\n\n        modal.spawn = function() {\n            return modal.modal({\n                backdrop: options.backdrop,\n                keyboard: options.keyboard,\n                show:     options.show\n            });\n        };\n\n        return modal;\n    };\n\n\n    /**\n     * Returns a modal already built for the given element or builds a new one,\n     * caching it into the element's `confirm-modal` data attribute.\n     */\n    var getModal = function (element) {\n        var modal = element.data('confirm-modal');\n\n        if (!modal) {\n            modal = buildElementModal(element);\n            element.data('confirm-modal', modal);\n        }\n\n        return modal;\n    };\n\n    $.fn.confirmModal = function () {\n        var modal = getModal($(this));\n\n        modal.spawn();\n\n        return modal;\n    };\n\n    if ($.rails) {\n        /**\n         * Attaches to Rails' UJS adapter's 'confirm' event, triggered on elements\n         * having a `data-confirm` attribute set.\n         *\n         * If the modal is not visible, then it is spawned and the default Rails\n         * confirmation dialog is canceled.\n         *\n         * If the modal is visible, it means the handler is being called by the\n         * modal commit button click handler, as such the user has successfully\n         * clicked on the confirm button. In this case Rails' confirm function\n         * is briefly overriden, and afterwards reset when the modal is closed.\n         *\n         */\n        var rails_confirm = $.rails.confirm;\n\n        $(document).delegate(settings.elements.join(', '), 'confirm', function() {\n            var element = $(this), modal = getModal(element);\n\n            if (!modal.is(':visible')) {\n                modal.spawn();\n\n                // Cancel Rails' confirmation\n                return false;\n\n            } else {\n                // Modal has been confirmed. Override Rails' handler\n                $.rails.confirm = function () {\n                    return true;\n                }\n\n                modal.one('hidden.bs.modal', function() {\n                    // Reset it after modal is closed.\n                    $.rails.confirm = rails_confirm;\n                });\n\n                // Proceed with Rails' handlers\n                return true;\n            }\n        });\n    }\n\n})(jQuery);\n", "$(window).on('load',function(){\n\n    function findBootstrapEnvironment() {\n        var envs = ['xs', 'sm', 'md', 'lg'];\n\n        var $el = $('<div>');\n        $el.appendTo($('body'));\n\n        for (var i = envs.length - 1; i >= 0; i--) {\n            var env = envs[i];\n\n            $el.addClass('hidden-'+env);\n            if ($el.is(':hidden')) {\n                $el.remove();\n                return env;\n            }\n        }\n    }\n\n    var $body   = $('body'), \n        $navtop = $('.content-header-fixed'),\n        offset  = $navtop.outerHeight();\n\n    // fix body padding (in case navbar size is different than the padding)\n    $(\"section.content\").css(\"margin-top\", offset);\n\n\t//$body.css('padding-top', offset);\n    // Enable scrollSpy with correct offset based on height of navbar\n    $body.scrollspy({target: '.content-header-fixed', offset: offset + 60 });\n\n    // function to do the tweaking\n    function fixSpy() {\n        // grab a copy the scrollspy data for the element\n        var data = $body.data('bs.scrollspy');\n        // if there is data, lets fiddle with the offset value\n        if (data) {\n            // get the current height of the navbar\n            offset = $navtop.outerHeight();\n            // adjust the body's padding top to match\n            //$body.css('padding-top', offset);\n            $(\"section.content\").css(\"margin-top\", offset);\n            // change the data's offset option to match\n            data.options.offset = offset + 60;\n            // now stick it back in the element\n            $body.data('bs.scrollspy', data);\n            // and finally refresh scrollspy\n            $body.scrollspy('refresh');\n        }\n    }\n\n    // Now monitor the resize events and make the tweaks\n    var resizeTimer;\n    $(window).resize(function() {\n        if ($('input').is(':focus')) {\n            // Nothing will happen\n        } else {\n            clearTimeout(resizeTimer);\n            resizeTimer = setTimeout(fixSpy, 200);\n        }\n    });\n\n    // recalculate body top on header size change\n    var domModifiedTimeout;\n    var observer = new MutationObserver(function() {\n        clearTimeout(domModifiedTimeout);\n        domModifiedTimeout = setTimeout(function() {\n            fixSpy();\n            setTimeout(fixSpy, 300);\n        }, 1);\n    });\n    observer.observe(document.querySelector('.content-header-fixed'), {childList: true, subtree: true});\n    setTimeout(fixSpy, 1);\n\n\n    var slideUp = false;\n    var scrollingThreshold = 10;\n\n    $(window).scroll(function() {\n        if (findBootstrapEnvironment() == \"xs\") {\n            if ($(window).scrollTop() > scrollingThreshold) {\n                $('.hide-on-scroll').stop().slideUp({\n                    queue: false, complete: function () {\n                        $(this).css(\"height\", \"auto\");\n                        fixSpy();\n                    }\n                });\n                slideUp = true;\n            }\n        }\n    });\n\n    $navtop.mouseenter(function() {\n            if (slideUp) {\n                $('.hide-on-scroll').stop().slideDown({\n                    queue: false, complete: function () {\n                        $(this).css(\"height\", \"auto\");\n                        fixSpy();\n                    }\n                });\n                slideUp = false;\n            }\n    });\n\n    $navtop.click(function() {\n            if (slideUp) {\n                $('.hide-on-scroll').stop().slideDown({\n                    queue: false, complete: function () {\n                        $(this).css(\"height\", \"auto\");\n                        fixSpy();\n                    }\n                });\n                slideUp = false;\n            }\n    });\n\n    $navtop.mouseleave(function(event) {\n        if (findBootstrapEnvironment() == \"xs\") {\n\n            if (!slideUp && $(window).scrollTop() > scrollingThreshold) {\n                $('.hide-on-scroll').stop().slideUp({\n                    queue: false, complete: function () {\n                        $(this).css(\"height\", \"auto\");\n                        fixSpy();\n                    }\n                });\n                slideUp = true;\n            }\n        }\n    })\n\n});\n\n\n// Add smooth scrolling on all links inside the navbar\ninitSmoothScrolling = function(div) {\n\t$(div).find(\".nav-tabs a[href*=\\'#\\']\").on('click', function(event) {\n\t\n\t  var tab = $(this);\n\t  var pane = $(tab.attr('href')).next();\n\t  // Make sure this.hash has a value before overriding default behavior\n\t  if (this.hash !== \"\") {\n\t  \t\n\t    // Prevent default anchor click behavior\n\t    event.preventDefault();\n\t\n\t    // Store hash\n\t    var hash = this.hash;\n\t\n\t    // Using jQuery's animate() method to add smooth page scroll\n\t    // The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area\n\t    $('html, body').animate({\n\t      scrollTop: $(hash).offset().top - ($(\".content-header-fixed\").height() + 40)\n\t    }, 300, function(){\n\t\n\t\t    // Add hash (#) to URL when done scrolling (default click behavior)\n\t\t    window.location.hash = hash;\n\t\t    \n\t\t\tif (pane.data('source-type') == 'lazy') {\n\t\t\t\tvar url = pane.data('source');\n\t\t\t\t$(pane).load(url, function(data, status, xhr) {\n\t\t\t\t\tif (status != 'error') {\n\t\t\t\t    \tpane.data('loaded', 1);\n\t\t\t\t    \treattachJSAfterAjax(pane);\n\t\t\t\t    \tpane.data('source-type', null);\n\t\t\t\t    \t$('html, body').animate({\n\t\t\t\t\t      scrollTop: $(hash).offset().top - ($(\".content-header-fixed\").height() + 40)\n\t\t\t\t\t    }, 300);\n\t\t\t\t  \t}\n\t\t\t\t});\n\t\t\t}\n\t\t    \n\t\t    window.scrollTo(0, $(hash).offset().top - ($(\".content-header-fixed\").height() + 40));\n\t\t    \n\t    });\n\t\n\t  } // End if\n\t\n\t});\n};\n", "$(document).ajaxError((event, xhr, options, exc) => {\n    handleAjaxError(xhr, exc)\n});\n\n$(document).on('ajax:error', (event) => {\n    const xhr = event.detail[2];\n    handleAjaxError(xhr, undefined)\n})\n\nfunction handleAjaxError(xhr, exc) {\n    function userAborted(xhr) {\n        return window.isPageBeingUnloaded || xhr.statusText == 'abort';\n    }\n\n    if (!userAborted(xhr)) {\n        var reasonTitle = xhr.getResponseHeader('ReasonTitle');\n        var reason = xhr.getResponseHeader('Reason');\n        switch (xhr.status) {\n            case 401:\n                if (reasonTitle && reason) {\n                    bootbox.alert({title: reasonTitle, message: reason});\n                } else {\n                    bootbox.alert('Sie sind nicht eingeloggt.');\n                }\n                break;\n            case 403:\n                if (reasonTitle && reason) {\n                    bootbox.alert({title: reasonTitle, message: reason});\n                } else {\n                    bootbox.alert('Keine Berechtigung f\u00FCr diese Aktion.');\n                }\n                break;\n            case 404:\n                if (reasonTitle && reason) {\n                    bootbox.alert({title: reasonTitle, message: reason});\n                } else {\n                    bootbox.alert('Dieses Objekt gibt es nicht.');\n                }\n                break;\n            default:\n                console.log(exc);\n                if (window._kurso_env !== \"production\") {\n                    var modalHeader = '<div class=\"modal-header\"><button class=\"close\" aria-label=\"Close\" data-dismiss=\"modal\" type=\"button\"><span aria-hidden=\"true\">\u00D7</span></button><h4 id=\"ModalLabel\" class=\"modal-title\">Fehler</h4></div>';\n                    createModalAndShow('error_modal', modalHeader + '<div class=\"modal-body\"><pre>' + xhr.responseText + '</pre></div>', null, null, true);\n                } else {\n                    bootbox.alert(\"Es ist ein Fehler aufgetreten. Das tut uns Leid.\");\n                }\n        }\n    }\n}\n\nwindow.isPageBeingUnloaded = false;\n\n$(window).on('beforeunload', function() {\n    window.isPageBeingUnloaded = true;\n});\n", "const body = $('body')\n$(document)\n\t.ajaxStart((e) => {\n\t\t$('body').addClass('loading')\n\t})\n\t.ajaxStop((e) => {\n\t\t$('body').removeClass('loading')\n\t})\n\t.on('ajax:beforeSend', (e) => {\n\t\t$('body').addClass('loading')\n\t})\n\t.on('ajax:stopped', (e) => {\n\t\t$('body').removeClass('loading')\n\t})\n\t.on('ajax:success', (e) => {\n\t\t$('body').removeClass('loading')\n\t})\n\t.on('ajax:error', (e) => {\n\t\t$('body').removeClass('loading')\n\t})\n\n// TODO: beforeunload fires on download links.\n// $(window).on('beforeunload', () => {\n// \t$('body').addClass('loading');\n// });\n\n\n", ".datepicker {\n  width: -moz-min-content;\n  width: min-content;\n}\n\n.datepicker:not(.active) {\n  display: none;\n}\n\n.datepicker-dropdown {\n  position: absolute;\n  z-index: 1000;\n  padding-top: 4px;\n}\n\n.datepicker-dropdown.datepicker-orient-top {\n  padding-top: 0;\n  padding-bottom: 4px;\n}\n\n.datepicker-picker {\n  display: flex;\n  flex-direction: column;\n  border-radius: 0.25rem;\n  background-color: #fff;\n}\n\n.datepicker-dropdown .datepicker-picker {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.175);\n}\n\n.datepicker-main {\n  flex: auto;\n  padding: 2px;\n}\n\n.datepicker-footer {\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);\n  background-color: #f8f9fa;\n}\n\n.datepicker-title {\n  box-shadow: inset 0 -1px 1px rgba(0, 0, 0, 0.1);\n  background-color: #f8f9fa;\n  padding: 0.375rem 0.75rem;\n  text-align: center;\n  font-weight: 700;\n}\n\n.datepicker-controls {\n  display: flex;\n}\n\n.datepicker-header .datepicker-controls {\n  padding: 2px 2px 0;\n}\n\n.datepicker-controls .btn {\n  border-color: #f8f9fa;\n  background-color: #fff;\n}\n\n.datepicker-controls .btn:hover {\n  border-color: #dbe0e5;\n  background-color: #e2e6ea;\n  color: #212529;\n}\n\n.datepicker-controls .btn:focus {\n  border-color: #dbe0e5;\n  box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n  background-color: #e2e6ea;\n  color: #212529;\n}\n\n.datepicker-controls .btn:disabled {\n  border-color: #f8f9fa;\n  background-color: #f8f9fa;\n  color: #212529;\n}\n\n.datepicker-controls .btn:not(:disabled):active {\n  border-color: #d4dae0;\n  background-color: #dbe0e5;\n  color: #212529;\n}\n\n.datepicker-controls .btn:not(:disabled):active:focus {\n  box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.datepicker-header .datepicker-controls .btn {\n  border-color: transparent;\n  font-weight: bold;\n}\n\n.datepicker-footer .datepicker-controls .btn {\n  flex: auto;\n  margin: calc(0.375rem - 1px) 0.375rem;\n  border-radius: 0.2rem;\n  font-size: 0.875rem;\n}\n\n.datepicker-controls .view-switch {\n  flex: auto;\n}\n\n.datepicker-controls .prev-button,\n.datepicker-controls .next-button {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n  flex: 0 0 14.2857142857%;\n}\n\n.datepicker-controls .prev-button.disabled,\n.datepicker-controls .next-button.disabled {\n  visibility: hidden;\n}\n\n.datepicker-view,\n.datepicker-grid {\n  display: flex;\n}\n\n.datepicker-view {\n  align-items: stretch;\n  width: 15.75rem;\n}\n\n.datepicker-grid {\n  flex-wrap: wrap;\n  flex: auto;\n}\n\n.datepicker .days {\n  display: flex;\n  flex-direction: column;\n  flex: auto;\n}\n\n.datepicker .days-of-week {\n  display: flex;\n}\n\n.datepicker .week-numbers {\n  display: flex;\n  flex-direction: column;\n  flex: 0 0 9.6774193548%;\n}\n\n.datepicker .weeks {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  flex: auto;\n}\n\n.datepicker span {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 0.25rem;\n  cursor: default;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n}\n\n.datepicker .dow {\n  height: 1.5rem;\n  font-size: 0.9375rem;\n  font-weight: 700;\n}\n\n.datepicker .week {\n  flex: auto;\n  color: #dee2e6;\n  font-size: 0.875rem;\n}\n\n.datepicker-cell,\n.datepicker .days .dow {\n  flex-basis: 14.2857142857%;\n}\n\n.datepicker-cell {\n  height: 2.25rem;\n}\n\n.datepicker-cell:not(.day) {\n  flex-basis: 25%;\n  height: 4.5rem;\n}\n\n.datepicker-cell:not(.disabled):hover {\n  background-color: #f9f9f9;\n  cursor: pointer;\n}\n\n.datepicker-cell.focused:not(.selected) {\n  background-color: #e2e6ea;\n}\n\n.datepicker-cell.selected,\n.datepicker-cell.selected:hover {\n  background-color: #007bff;\n  color: #fff;\n  font-weight: 600;\n}\n\n.datepicker-cell.disabled {\n  color: #adb5bd;\n}\n\n.datepicker-cell.prev:not(.disabled),\n.datepicker-cell.next:not(.disabled) {\n  color: #6c757d;\n}\n\n.datepicker-cell.prev.selected,\n.datepicker-cell.next.selected {\n  color: #e6e6e6;\n}\n\n.datepicker-cell.highlighted:not(.selected):not(.range):not(.today) {\n  border-radius: 0;\n  background-color: #f8f9fa;\n}\n\n.datepicker-cell.highlighted:not(.selected):not(.range):not(.today):not(.disabled):hover {\n  background-color: #f1f3f5;\n}\n\n.datepicker-cell.highlighted:not(.selected):not(.range):not(.today).focused {\n  background-color: #e2e6ea;\n}\n\n.datepicker-cell.today:not(.selected) {\n  background-color: #20c997;\n}\n\n.datepicker-cell.today:not(.selected):not(.disabled) {\n  color: #fff;\n}\n\n.datepicker-cell.today.focused:not(.selected) {\n  background-color: #1fc493;\n}\n\n.datepicker-cell.range-end:not(.selected),\n.datepicker-cell.range-start:not(.selected) {\n  background-color: #6c757d;\n  color: #fff;\n}\n\n.datepicker-cell.range-end.focused:not(.selected),\n.datepicker-cell.range-start.focused:not(.selected) {\n  background-color: #69727a;\n}\n\n.datepicker-cell.range-start:not(.range-end) {\n  border-radius: 0.25rem 0 0 0.25rem;\n}\n\n.datepicker-cell.range-end:not(.range-start) {\n  border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.datepicker-cell.range {\n  border-radius: 0;\n  background-color: #e9ecef;\n}\n\n.datepicker-cell.range:not(.disabled):not(.focused):not(.today):hover {\n  background-color: #e2e6ea;\n}\n\n.datepicker-cell.range.disabled {\n  color: #ced4db;\n}\n\n.datepicker-cell.range.focused {\n  background-color: #dbe0e5;\n}\n\n.datepicker-input.in-edit {\n  border-color: #6cb3ff;\n}\n\n.datepicker-input.in-edit:focus,\n.datepicker-input.in-edit:active {\n  box-shadow: 0 0 0.25em 0.25em rgba(108, 179, 255, 0.2);\n}\n\n.datepicker-grid, .datepicker-view {\n  width: 30rem;\n}\n\n.datepicker-dropdown {\n  z-index: 9999 !important;\n}\n\n.datepicker-footer .datepicker-controls .btn {\n  font-size: inherit;\n}\n\n.datepicker-view .dow {\n  font-size: inherit;\n  height: 2.3rem;\n}\n\n.datepicker-view .week, .datepicker-cell {\n  height: 3.5rem;\n  line-height: 3.5rem;\n}\n\n.datepicker-cell.today.focused:not(.selected), .datepicker-cell.today:not(.selected) {\n  background-color: #ffffcc;\n}\n\n.datepicker-cell.today:not(.selected):not(.disabled) {\n  color: #000000;\n}\n\n.datepicker-cell.selected, .datepicker-cell.selected:hover {\n  background-color: #008199;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUva3Vyc28vYXBwcy9rdXJzby9yZWxlYXNlcy8yMDI2MDMxOTIyNTU0MC9hcHAvamF2YXNjcmlwdC9jb21wb25lbnRzL2RhdGVwaWNrZXIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92YW5pbGxhanMtZGF0ZXBpY2tlci9kaXN0L2Nzcy9kYXRlcGlja2VyLWJzNC5jc3MiLCJjdXN0b20tYnMzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7QUFBQTtFQUVFO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUFHRjtBQUFBO0VBRUU7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRztFQUNLOzs7QUFHVjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7RUFFRTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0FBQUE7RUFFRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0FBQUE7RUFFRTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7OztBQUdGO0FBQUE7RUFFRTtFQUNBOzs7QUFHRjtBQUFBO0VBRUU7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUNsU0Y7RUFDSTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0kiLCJzb3VyY2VzQ29udGVudCI6WyIuZGF0ZXBpY2tlciB7XG4gIHdpZHRoOiAtbW96LW1pbi1jb250ZW50O1xuICB3aWR0aDogbWluLWNvbnRlbnQ7XG59XG5cbi5kYXRlcGlja2VyOm5vdCguYWN0aXZlKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kYXRlcGlja2VyLWRyb3Bkb3duIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDAwO1xuICBwYWRkaW5nLXRvcDogNHB4O1xufVxuXG4uZGF0ZXBpY2tlci1kcm9wZG93bi5kYXRlcGlja2VyLW9yaWVudC10b3Age1xuICBwYWRkaW5nLXRvcDogMDtcbiAgcGFkZGluZy1ib3R0b206IDRweDtcbn1cblxuLmRhdGVwaWNrZXItcGlja2VyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cblxuLmRhdGVwaWNrZXItZHJvcGRvd24gLmRhdGVwaWNrZXItcGlja2VyIHtcbiAgYm94LXNoYWRvdzogMCAwLjVyZW0gMXJlbSByZ2JhKDAsIDAsIDAsIDAuMTc1KTtcbn1cblxuLmRhdGVwaWNrZXItbWFpbiB7XG4gIGZsZXg6IGF1dG87XG4gIHBhZGRpbmc6IDJweDtcbn1cblxuLmRhdGVwaWNrZXItZm9vdGVyIHtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbn1cblxuLmRhdGVwaWNrZXItdGl0bGUge1xuICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4uZGF0ZXBpY2tlci1jb250cm9scyB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5kYXRlcGlja2VyLWhlYWRlciAuZGF0ZXBpY2tlci1jb250cm9scyB7XG4gIHBhZGRpbmc6IDJweCAycHggMDtcbn1cblxuLmRhdGVwaWNrZXItY29udHJvbHMgLmJ0biB7XG4gIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cblxuLmRhdGVwaWNrZXItY29udHJvbHMgLmJ0bjpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogI2RiZTBlNTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTZlYTtcbiAgY29sb3I6ICMyMTI1Mjk7XG59XG5cbi5kYXRlcGlja2VyLWNvbnRyb2xzIC5idG46Zm9jdXMge1xuICBib3JkZXItY29sb3I6ICNkYmUwZTU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIxNiwgMjE3LCAyMTksIDAuNSk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMmU2ZWE7XG4gIGNvbG9yOiAjMjEyNTI5O1xufVxuXG4uZGF0ZXBpY2tlci1jb250cm9scyAuYnRuOmRpc2FibGVkIHtcbiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBjb2xvcjogIzIxMjUyOTtcbn1cblxuLmRhdGVwaWNrZXItY29udHJvbHMgLmJ0bjpub3QoOmRpc2FibGVkKTphY3RpdmUge1xuICBib3JkZXItY29sb3I6ICNkNGRhZTA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYmUwZTU7XG4gIGNvbG9yOiAjMjEyNTI5O1xufVxuXG4uZGF0ZXBpY2tlci1jb250cm9scyAuYnRuOm5vdCg6ZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIxNiwgMjE3LCAyMTksIDAuNSk7XG59XG5cbi5kYXRlcGlja2VyLWhlYWRlciAuZGF0ZXBpY2tlci1jb250cm9scyAuYnRuIHtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5kYXRlcGlja2VyLWZvb3RlciAuZGF0ZXBpY2tlci1jb250cm9scyAuYnRuIHtcbiAgZmxleDogYXV0bztcbiAgbWFyZ2luOiBjYWxjKDAuMzc1cmVtIC0gMXB4KSAwLjM3NXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uZGF0ZXBpY2tlci1jb250cm9scyAudmlldy1zd2l0Y2gge1xuICBmbGV4OiBhdXRvO1xufVxuXG4uZGF0ZXBpY2tlci1jb250cm9scyAucHJldi1idXR0b24sXG4uZGF0ZXBpY2tlci1jb250cm9scyAubmV4dC1idXR0b24ge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjM3NXJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjM3NXJlbTtcbiAgZmxleDogMCAwIDE0LjI4NTcxNDI4NTclO1xufVxuXG4uZGF0ZXBpY2tlci1jb250cm9scyAucHJldi1idXR0b24uZGlzYWJsZWQsXG4uZGF0ZXBpY2tlci1jb250cm9scyAubmV4dC1idXR0b24uZGlzYWJsZWQge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5kYXRlcGlja2VyLXZpZXcsXG4uZGF0ZXBpY2tlci1ncmlkIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmRhdGVwaWNrZXItdmlldyB7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICB3aWR0aDogMTUuNzVyZW07XG59XG5cbi5kYXRlcGlja2VyLWdyaWQge1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGZsZXg6IGF1dG87XG59XG5cbi5kYXRlcGlja2VyIC5kYXlzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogYXV0bztcbn1cblxuLmRhdGVwaWNrZXIgLmRheXMtb2Ytd2VlayB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5kYXRlcGlja2VyIC53ZWVrLW51bWJlcnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4OiAwIDAgOS42Nzc0MTkzNTQ4JTtcbn1cblxuLmRhdGVwaWNrZXIgLndlZWtzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIGZsZXg6IGF1dG87XG59XG5cbi5kYXRlcGlja2VyIHNwYW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5kYXRlcGlja2VyIC5kb3cge1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbi5kYXRlcGlja2VyIC53ZWVrIHtcbiAgZmxleDogYXV0bztcbiAgY29sb3I6ICNkZWUyZTY7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5kYXRlcGlja2VyLWNlbGwsXG4uZGF0ZXBpY2tlciAuZGF5cyAuZG93IHtcbiAgZmxleC1iYXNpczogMTQuMjg1NzE0Mjg1NyU7XG59XG5cbi5kYXRlcGlja2VyLWNlbGwge1xuICBoZWlnaHQ6IDIuMjVyZW07XG59XG5cbi5kYXRlcGlja2VyLWNlbGw6bm90KC5kYXkpIHtcbiAgZmxleC1iYXNpczogMjUlO1xuICBoZWlnaHQ6IDQuNXJlbTtcbn1cblxuLmRhdGVwaWNrZXItY2VsbDpub3QoLmRpc2FibGVkKTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC5mb2N1c2VkOm5vdCguc2VsZWN0ZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTZlYTtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC5zZWxlY3RlZCxcbi5kYXRlcGlja2VyLWNlbGwuc2VsZWN0ZWQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC5kaXNhYmxlZCB7XG4gIGNvbG9yOiAjYWRiNWJkO1xufVxuXG4uZGF0ZXBpY2tlci1jZWxsLnByZXY6bm90KC5kaXNhYmxlZCksXG4uZGF0ZXBpY2tlci1jZWxsLm5leHQ6bm90KC5kaXNhYmxlZCkge1xuICBjb2xvcjogIzZjNzU3ZDtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC5wcmV2LnNlbGVjdGVkLFxuLmRhdGVwaWNrZXItY2VsbC5uZXh0LnNlbGVjdGVkIHtcbiAgY29sb3I6ICNlNmU2ZTY7XG59XG5cbi5kYXRlcGlja2VyLWNlbGwuaGlnaGxpZ2h0ZWQ6bm90KC5zZWxlY3RlZCk6bm90KC5yYW5nZSk6bm90KC50b2RheSkge1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4uZGF0ZXBpY2tlci1jZWxsLmhpZ2hsaWdodGVkOm5vdCguc2VsZWN0ZWQpOm5vdCgucmFuZ2UpOm5vdCgudG9kYXkpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjNmNTtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC5oaWdobGlnaHRlZDpub3QoLnNlbGVjdGVkKTpub3QoLnJhbmdlKTpub3QoLnRvZGF5KS5mb2N1c2VkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTZlYTtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC50b2RheTpub3QoLnNlbGVjdGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMGM5OTc7XG59XG5cbi5kYXRlcGlja2VyLWNlbGwudG9kYXk6bm90KC5zZWxlY3RlZCk6bm90KC5kaXNhYmxlZCkge1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC50b2RheS5mb2N1c2VkOm5vdCguc2VsZWN0ZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFmYzQ5Mztcbn1cblxuLmRhdGVwaWNrZXItY2VsbC5yYW5nZS1lbmQ6bm90KC5zZWxlY3RlZCksXG4uZGF0ZXBpY2tlci1jZWxsLnJhbmdlLXN0YXJ0Om5vdCguc2VsZWN0ZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5kYXRlcGlja2VyLWNlbGwucmFuZ2UtZW5kLmZvY3VzZWQ6bm90KC5zZWxlY3RlZCksXG4uZGF0ZXBpY2tlci1jZWxsLnJhbmdlLXN0YXJ0LmZvY3VzZWQ6bm90KC5zZWxlY3RlZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjk3MjdhO1xufVxuXG4uZGF0ZXBpY2tlci1jZWxsLnJhbmdlLXN0YXJ0Om5vdCgucmFuZ2UtZW5kKSB7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW0gMCAwIDAuMjVyZW07XG59XG5cbi5kYXRlcGlja2VyLWNlbGwucmFuZ2UtZW5kOm5vdCgucmFuZ2Utc3RhcnQpIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwLjI1cmVtIDAuMjVyZW0gMDtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC5yYW5nZSB7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5kYXRlcGlja2VyLWNlbGwucmFuZ2U6bm90KC5kaXNhYmxlZCk6bm90KC5mb2N1c2VkKTpub3QoLnRvZGF5KTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMmU2ZWE7XG59XG5cbi5kYXRlcGlja2VyLWNlbGwucmFuZ2UuZGlzYWJsZWQge1xuICBjb2xvcjogI2NlZDRkYjtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC5yYW5nZS5mb2N1c2VkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiZTBlNTtcbn1cblxuLmRhdGVwaWNrZXItaW5wdXQuaW4tZWRpdCB7XG4gIGJvcmRlci1jb2xvcjogIzZjYjNmZjtcbn1cblxuLmRhdGVwaWNrZXItaW5wdXQuaW4tZWRpdDpmb2N1cyxcbi5kYXRlcGlja2VyLWlucHV0LmluLWVkaXQ6YWN0aXZlIHtcbiAgYm94LXNoYWRvdzogMCAwIDAuMjVlbSAwLjI1ZW0gcmdiYSgxMDgsIDE3OSwgMjU1LCAwLjIpO1xufSIsIkBpbXBvcnQgJ3ZhbmlsbGFqcy1kYXRlcGlja2VyL2Rpc3QvY3NzL2RhdGVwaWNrZXItYnM0JztcblxuLmRhdGVwaWNrZXItZ3JpZCwgLmRhdGVwaWNrZXItdmlldyB7XG4gICAgd2lkdGg6IDMwcmVtO1xufVxuXG4uZGF0ZXBpY2tlci1kcm9wZG93biB7XG4gICAgei1pbmRleDogOTk5OSAhaW1wb3J0YW50O1xufVxuXG4uZGF0ZXBpY2tlci1mb290ZXIgLmRhdGVwaWNrZXItY29udHJvbHMgLmJ0biB7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG4uZGF0ZXBpY2tlci12aWV3IC5kb3cge1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBoZWlnaHQ6IDIuM3JlbTtcbn1cblxuLmRhdGVwaWNrZXItdmlldyAud2VlaywgLmRhdGVwaWNrZXItY2VsbCB7XG4gICAgaGVpZ2h0OiAzLjVyZW07XG4gICAgbGluZS1oZWlnaHQ6IDMuNXJlbTtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC50b2RheS5mb2N1c2VkOm5vdCguc2VsZWN0ZWQpLCAuZGF0ZXBpY2tlci1jZWxsLnRvZGF5Om5vdCguc2VsZWN0ZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmNjO1xufVxuXG4uZGF0ZXBpY2tlci1jZWxsLnRvZGF5Om5vdCguc2VsZWN0ZWQpOm5vdCguZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogIzAwMDAwMDtcbn1cblxuLmRhdGVwaWNrZXItY2VsbC5zZWxlY3RlZCwgLmRhdGVwaWNrZXItY2VsbC5zZWxlY3RlZDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwODE5OTtcbn1cbiJdfQ== */", "/*\nCopyright 2012 Igor Vaynberg\n\nVersion: @@ver@@ Timestamp: @@timestamp@@\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\n    http://www.apache.org/licenses/LICENSE-2.0\n    http://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the\nApache License or the GPL License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for\nthe specific language governing permissions and limitations under the Apache License and the GPL License.\n*/\n(function ($) {\n    if(typeof $.fn.each2 == \"undefined\") {\n        $.extend($.fn, {\n            /*\n            * 4-10 times faster .each replacement\n            * use it carefully, as it overrides jQuery context of element on each iteration\n            */\n            each2 : function (c) {\n                var j = $([0]), i = -1, l = this.length;\n                while (\n                    ++i < l\n                    && (j.context = j[0] = this[i])\n                    && c.call(j[0], i, j) !== false //\"this\"=DOM, i=index, j=jQuery object\n                );\n                return this;\n            }\n        });\n    }\n})(jQuery);\n\n(function ($, undefined) {\n    \"use strict\";\n    /*global document, window, jQuery, console */\n\n    if (window.Select2 !== undefined) {\n        return;\n    }\n\n    var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,\n        lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,\n\n    KEY = {\n        TAB: 9,\n        ENTER: 13,\n        ESC: 27,\n        SPACE: 32,\n        LEFT: 37,\n        UP: 38,\n        RIGHT: 39,\n        DOWN: 40,\n        SHIFT: 16,\n        CTRL: 17,\n        ALT: 18,\n        PAGE_UP: 33,\n        PAGE_DOWN: 34,\n        HOME: 36,\n        END: 35,\n        BACKSPACE: 8,\n        DELETE: 46,\n        isArrow: function (k) {\n            k = k.which ? k.which : k;\n            switch (k) {\n            case KEY.LEFT:\n            case KEY.RIGHT:\n            case KEY.UP:\n            case KEY.DOWN:\n                return true;\n            }\n            return false;\n        },\n        isControl: function (e) {\n            var k = e.which;\n            switch (k) {\n            case KEY.SHIFT:\n            case KEY.CTRL:\n            case KEY.ALT:\n                return true;\n            }\n\n            if (e.metaKey) return true;\n\n            return false;\n        },\n        isFunctionKey: function (k) {\n            k = k.which ? k.which : k;\n            return k >= 112 && k <= 123;\n        }\n    },\n    MEASURE_SCROLLBAR_TEMPLATE = \"<div class='select2-measure-scrollbar'></div>\",\n\n    DIACRITICS = {\"\\u24B6\":\"A\",\"\\uFF21\":\"A\",\"\\u00C0\":\"A\",\"\\u00C1\":\"A\",\"\\u00C2\":\"A\",\"\\u1EA6\":\"A\",\"\\u1EA4\":\"A\",\"\\u1EAA\":\"A\",\"\\u1EA8\":\"A\",\"\\u00C3\":\"A\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u1EB0\":\"A\",\"\\u1EAE\":\"A\",\"\\u1EB4\":\"A\",\"\\u1EB2\":\"A\",\"\\u0226\":\"A\",\"\\u01E0\":\"A\",\"\\u00C4\":\"A\",\"\\u01DE\":\"A\",\"\\u1EA2\":\"A\",\"\\u00C5\":\"A\",\"\\u01FA\":\"A\",\"\\u01CD\":\"A\",\"\\u0200\":\"A\",\"\\u0202\":\"A\",\"\\u1EA0\":\"A\",\"\\u1EAC\":\"A\",\"\\u1EB6\":\"A\",\"\\u1E00\":\"A\",\"\\u0104\":\"A\",\"\\u023A\":\"A\",\"\\u2C6F\":\"A\",\"\\uA732\":\"AA\",\"\\u00C6\":\"AE\",\"\\u01FC\":\"AE\",\"\\u01E2\":\"AE\",\"\\uA734\":\"AO\",\"\\uA736\":\"AU\",\"\\uA738\":\"AV\",\"\\uA73A\":\"AV\",\"\\uA73C\":\"AY\",\"\\u24B7\":\"B\",\"\\uFF22\":\"B\",\"\\u1E02\":\"B\",\"\\u1E04\":\"B\",\"\\u1E06\":\"B\",\"\\u0243\":\"B\",\"\\u0182\":\"B\",\"\\u0181\":\"B\",\"\\u24B8\":\"C\",\"\\uFF23\":\"C\",\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010A\":\"C\",\"\\u010C\":\"C\",\"\\u00C7\":\"C\",\"\\u1E08\":\"C\",\"\\u0187\":\"C\",\"\\u023B\":\"C\",\"\\uA73E\":\"C\",\"\\u24B9\":\"D\",\"\\uFF24\":\"D\",\"\\u1E0A\":\"D\",\"\\u010E\":\"D\",\"\\u1E0C\":\"D\",\"\\u1E10\":\"D\",\"\\u1E12\":\"D\",\"\\u1E0E\":\"D\",\"\\u0110\":\"D\",\"\\u018B\":\"D\",\"\\u018A\":\"D\",\"\\u0189\":\"D\",\"\\uA779\":\"D\",\"\\u01F1\":\"DZ\",\"\\u01C4\":\"DZ\",\"\\u01F2\":\"Dz\",\"\\u01C5\":\"Dz\",\"\\u24BA\":\"E\",\"\\uFF25\":\"E\",\"\\u00C8\":\"E\",\"\\u00C9\":\"E\",\"\\u00CA\":\"E\",\"\\u1EC0\":\"E\",\"\\u1EBE\":\"E\",\"\\u1EC4\":\"E\",\"\\u1EC2\":\"E\",\"\\u1EBC\":\"E\",\"\\u0112\":\"E\",\"\\u1E14\":\"E\",\"\\u1E16\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u00CB\":\"E\",\"\\u1EBA\":\"E\",\"\\u011A\":\"E\",\"\\u0204\":\"E\",\"\\u0206\":\"E\",\"\\u1EB8\":\"E\",\"\\u1EC6\":\"E\",\"\\u0228\":\"E\",\"\\u1E1C\":\"E\",\"\\u0118\":\"E\",\"\\u1E18\":\"E\",\"\\u1E1A\":\"E\",\"\\u0190\":\"E\",\"\\u018E\":\"E\",\"\\u24BB\":\"F\",\"\\uFF26\":\"F\",\"\\u1E1E\":\"F\",\"\\u0191\":\"F\",\"\\uA77B\":\"F\",\"\\u24BC\":\"G\",\"\\uFF27\":\"G\",\"\\u01F4\":\"G\",\"\\u011C\":\"G\",\"\\u1E20\":\"G\",\"\\u011E\":\"G\",\"\\u0120\":\"G\",\"\\u01E6\":\"G\",\"\\u0122\":\"G\",\"\\u01E4\":\"G\",\"\\u0193\":\"G\",\"\\uA7A0\":\"G\",\"\\uA77D\":\"G\",\"\\uA77E\":\"G\",\"\\u24BD\":\"H\",\"\\uFF28\":\"H\",\"\\u0124\":\"H\",\"\\u1E22\":\"H\",\"\\u1E26\":\"H\",\"\\u021E\":\"H\",\"\\u1E24\":\"H\",\"\\u1E28\":\"H\",\"\\u1E2A\":\"H\",\"\\u0126\":\"H\",\"\\u2C67\":\"H\",\"\\u2C75\":\"H\",\"\\uA78D\":\"H\",\"\\u24BE\":\"I\",\"\\uFF29\":\"I\",\"\\u00CC\":\"I\",\"\\u00CD\":\"I\",\"\\u00CE\":\"I\",\"\\u0128\":\"I\",\"\\u012A\":\"I\",\"\\u012C\":\"I\",\"\\u0130\":\"I\",\"\\u00CF\":\"I\",\"\\u1E2E\":\"I\",\"\\u1EC8\":\"I\",\"\\u01CF\":\"I\",\"\\u0208\":\"I\",\"\\u020A\":\"I\",\"\\u1ECA\":\"I\",\"\\u012E\":\"I\",\"\\u1E2C\":\"I\",\"\\u0197\":\"I\",\"\\u24BF\":\"J\",\"\\uFF2A\":\"J\",\"\\u0134\":\"J\",\"\\u0248\":\"J\",\"\\u24C0\":\"K\",\"\\uFF2B\":\"K\",\"\\u1E30\":\"K\",\"\\u01E8\":\"K\",\"\\u1E32\":\"K\",\"\\u0136\":\"K\",\"\\u1E34\":\"K\",\"\\u0198\":\"K\",\"\\u2C69\":\"K\",\"\\uA740\":\"K\",\"\\uA742\":\"K\",\"\\uA744\":\"K\",\"\\uA7A2\":\"K\",\"\\u24C1\":\"L\",\"\\uFF2C\":\"L\",\"\\u013F\":\"L\",\"\\u0139\":\"L\",\"\\u013D\":\"L\",\"\\u1E36\":\"L\",\"\\u1E38\":\"L\",\"\\u013B\":\"L\",\"\\u1E3C\":\"L\",\"\\u1E3A\":\"L\",\"\\u0141\":\"L\",\"\\u023D\":\"L\",\"\\u2C62\":\"L\",\"\\u2C60\":\"L\",\"\\uA748\":\"L\",\"\\uA746\":\"L\",\"\\uA780\":\"L\",\"\\u01C7\":\"LJ\",\"\\u01C8\":\"Lj\",\"\\u24C2\":\"M\",\"\\uFF2D\":\"M\",\"\\u1E3E\":\"M\",\"\\u1E40\":\"M\",\"\\u1E42\":\"M\",\"\\u2C6E\":\"M\",\"\\u019C\":\"M\",\"\\u24C3\":\"N\",\"\\uFF2E\":\"N\",\"\\u01F8\":\"N\",\"\\u0143\":\"N\",\"\\u00D1\":\"N\",\"\\u1E44\":\"N\",\"\\u0147\":\"N\",\"\\u1E46\":\"N\",\"\\u0145\":\"N\",\"\\u1E4A\":\"N\",\"\\u1E48\":\"N\",\"\\u0220\":\"N\",\"\\u019D\":\"N\",\"\\uA790\":\"N\",\"\\uA7A4\":\"N\",\"\\u01CA\":\"NJ\",\"\\u01CB\":\"Nj\",\"\\u24C4\":\"O\",\"\\uFF2F\":\"O\",\"\\u00D2\":\"O\",\"\\u00D3\":\"O\",\"\\u00D4\":\"O\",\"\\u1ED2\":\"O\",\"\\u1ED0\":\"O\",\"\\u1ED6\":\"O\",\"\\u1ED4\":\"O\",\"\\u00D5\":\"O\",\"\\u1E4C\":\"O\",\"\\u022C\":\"O\",\"\\u1E4E\":\"O\",\"\\u014C\":\"O\",\"\\u1E50\":\"O\",\"\\u1E52\":\"O\",\"\\u014E\":\"O\",\"\\u022E\":\"O\",\"\\u0230\":\"O\",\"\\u00D6\":\"O\",\"\\u022A\":\"O\",\"\\u1ECE\":\"O\",\"\\u0150\":\"O\",\"\\u01D1\":\"O\",\"\\u020C\":\"O\",\"\\u020E\":\"O\",\"\\u01A0\":\"O\",\"\\u1EDC\":\"O\",\"\\u1EDA\":\"O\",\"\\u1EE0\":\"O\",\"\\u1EDE\":\"O\",\"\\u1EE2\":\"O\",\"\\u1ECC\":\"O\",\"\\u1ED8\":\"O\",\"\\u01EA\":\"O\",\"\\u01EC\":\"O\",\"\\u00D8\":\"O\",\"\\u01FE\":\"O\",\"\\u0186\":\"O\",\"\\u019F\":\"O\",\"\\uA74A\":\"O\",\"\\uA74C\":\"O\",\"\\u01A2\":\"OI\",\"\\uA74E\":\"OO\",\"\\u0222\":\"OU\",\"\\u24C5\":\"P\",\"\\uFF30\":\"P\",\"\\u1E54\":\"P\",\"\\u1E56\":\"P\",\"\\u01A4\":\"P\",\"\\u2C63\":\"P\",\"\\uA750\":\"P\",\"\\uA752\":\"P\",\"\\uA754\":\"P\",\"\\u24C6\":\"Q\",\"\\uFF31\":\"Q\",\"\\uA756\":\"Q\",\"\\uA758\":\"Q\",\"\\u024A\":\"Q\",\"\\u24C7\":\"R\",\"\\uFF32\":\"R\",\"\\u0154\":\"R\",\"\\u1E58\":\"R\",\"\\u0158\":\"R\",\"\\u0210\":\"R\",\"\\u0212\":\"R\",\"\\u1E5A\":\"R\",\"\\u1E5C\":\"R\",\"\\u0156\":\"R\",\"\\u1E5E\":\"R\",\"\\u024C\":\"R\",\"\\u2C64\":\"R\",\"\\uA75A\":\"R\",\"\\uA7A6\":\"R\",\"\\uA782\":\"R\",\"\\u24C8\":\"S\",\"\\uFF33\":\"S\",\"\\u1E9E\":\"S\",\"\\u015A\":\"S\",\"\\u1E64\":\"S\",\"\\u015C\":\"S\",\"\\u1E60\":\"S\",\"\\u0160\":\"S\",\"\\u1E66\":\"S\",\"\\u1E62\":\"S\",\"\\u1E68\":\"S\",\"\\u0218\":\"S\",\"\\u015E\":\"S\",\"\\u2C7E\":\"S\",\"\\uA7A8\":\"S\",\"\\uA784\":\"S\",\"\\u24C9\":\"T\",\"\\uFF34\":\"T\",\"\\u1E6A\":\"T\",\"\\u0164\":\"T\",\"\\u1E6C\":\"T\",\"\\u021A\":\"T\",\"\\u0162\":\"T\",\"\\u1E70\":\"T\",\"\\u1E6E\":\"T\",\"\\u0166\":\"T\",\"\\u01AC\":\"T\",\"\\u01AE\":\"T\",\"\\u023E\":\"T\",\"\\uA786\":\"T\",\"\\uA728\":\"TZ\",\"\\u24CA\":\"U\",\"\\uFF35\":\"U\",\"\\u00D9\":\"U\",\"\\u00DA\":\"U\",\"\\u00DB\":\"U\",\"\\u0168\":\"U\",\"\\u1E78\":\"U\",\"\\u016A\":\"U\",\"\\u1E7A\":\"U\",\"\\u016C\":\"U\",\"\\u00DC\":\"U\",\"\\u01DB\":\"U\",\"\\u01D7\":\"U\",\"\\u01D5\":\"U\",\"\\u01D9\":\"U\",\"\\u1EE6\":\"U\",\"\\u016E\":\"U\",\"\\u0170\":\"U\",\"\\u01D3\":\"U\",\"\\u0214\":\"U\",\"\\u0216\":\"U\",\"\\u01AF\":\"U\",\"\\u1EEA\":\"U\",\"\\u1EE8\":\"U\",\"\\u1EEE\":\"U\",\"\\u1EEC\":\"U\",\"\\u1EF0\":\"U\",\"\\u1EE4\":\"U\",\"\\u1E72\":\"U\",\"\\u0172\":\"U\",\"\\u1E76\":\"U\",\"\\u1E74\":\"U\",\"\\u0244\":\"U\",\"\\u24CB\":\"V\",\"\\uFF36\":\"V\",\"\\u1E7C\":\"V\",\"\\u1E7E\":\"V\",\"\\u01B2\":\"V\",\"\\uA75E\":\"V\",\"\\u0245\":\"V\",\"\\uA760\":\"VY\",\"\\u24CC\":\"W\",\"\\uFF37\":\"W\",\"\\u1E80\":\"W\",\"\\u1E82\":\"W\",\"\\u0174\":\"W\",\"\\u1E86\":\"W\",\"\\u1E84\":\"W\",\"\\u1E88\":\"W\",\"\\u2C72\":\"W\",\"\\u24CD\":\"X\",\"\\uFF38\":\"X\",\"\\u1E8A\":\"X\",\"\\u1E8C\":\"X\",\"\\u24CE\":\"Y\",\"\\uFF39\":\"Y\",\"\\u1EF2\":\"Y\",\"\\u00DD\":\"Y\",\"\\u0176\":\"Y\",\"\\u1EF8\":\"Y\",\"\\u0232\":\"Y\",\"\\u1E8E\":\"Y\",\"\\u0178\":\"Y\",\"\\u1EF6\":\"Y\",\"\\u1EF4\":\"Y\",\"\\u01B3\":\"Y\",\"\\u024E\":\"Y\",\"\\u1EFE\":\"Y\",\"\\u24CF\":\"Z\",\"\\uFF3A\":\"Z\",\"\\u0179\":\"Z\",\"\\u1E90\":\"Z\",\"\\u017B\":\"Z\",\"\\u017D\":\"Z\",\"\\u1E92\":\"Z\",\"\\u1E94\":\"Z\",\"\\u01B5\":\"Z\",\"\\u0224\":\"Z\",\"\\u2C7F\":\"Z\",\"\\u2C6B\":\"Z\",\"\\uA762\":\"Z\",\"\\u24D0\":\"a\",\"\\uFF41\":\"a\",\"\\u1E9A\":\"a\",\"\\u00E0\":\"a\",\"\\u00E1\":\"a\",\"\\u00E2\":\"a\",\"\\u1EA7\":\"a\",\"\\u1EA5\":\"a\",\"\\u1EAB\":\"a\",\"\\u1EA9\":\"a\",\"\\u00E3\":\"a\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u1EB1\":\"a\",\"\\u1EAF\":\"a\",\"\\u1EB5\":\"a\",\"\\u1EB3\":\"a\",\"\\u0227\":\"a\",\"\\u01E1\":\"a\",\"\\u00E4\":\"a\",\"\\u01DF\":\"a\",\"\\u1EA3\":\"a\",\"\\u00E5\":\"a\",\"\\u01FB\":\"a\",\"\\u01CE\":\"a\",\"\\u0201\":\"a\",\"\\u0203\":\"a\",\"\\u1EA1\":\"a\",\"\\u1EAD\":\"a\",\"\\u1EB7\":\"a\",\"\\u1E01\":\"a\",\"\\u0105\":\"a\",\"\\u2C65\":\"a\",\"\\u0250\":\"a\",\"\\uA733\":\"aa\",\"\\u00E6\":\"ae\",\"\\u01FD\":\"ae\",\"\\u01E3\":\"ae\",\"\\uA735\":\"ao\",\"\\uA737\":\"au\",\"\\uA739\":\"av\",\"\\uA73B\":\"av\",\"\\uA73D\":\"ay\",\"\\u24D1\":\"b\",\"\\uFF42\":\"b\",\"\\u1E03\":\"b\",\"\\u1E05\":\"b\",\"\\u1E07\":\"b\",\"\\u0180\":\"b\",\"\\u0183\":\"b\",\"\\u0253\":\"b\",\"\\u24D2\":\"c\",\"\\uFF43\":\"c\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010B\":\"c\",\"\\u010D\":\"c\",\"\\u00E7\":\"c\",\"\\u1E09\":\"c\",\"\\u0188\":\"c\",\"\\u023C\":\"c\",\"\\uA73F\":\"c\",\"\\u2184\":\"c\",\"\\u24D3\":\"d\",\"\\uFF44\":\"d\",\"\\u1E0B\":\"d\",\"\\u010F\":\"d\",\"\\u1E0D\":\"d\",\"\\u1E11\":\"d\",\"\\u1E13\":\"d\",\"\\u1E0F\":\"d\",\"\\u0111\":\"d\",\"\\u018C\":\"d\",\"\\u0256\":\"d\",\"\\u0257\":\"d\",\"\\uA77A\":\"d\",\"\\u01F3\":\"dz\",\"\\u01C6\":\"dz\",\"\\u24D4\":\"e\",\"\\uFF45\":\"e\",\"\\u00E8\":\"e\",\"\\u00E9\":\"e\",\"\\u00EA\":\"e\",\"\\u1EC1\":\"e\",\"\\u1EBF\":\"e\",\"\\u1EC5\":\"e\",\"\\u1EC3\":\"e\",\"\\u1EBD\":\"e\",\"\\u0113\":\"e\",\"\\u1E15\":\"e\",\"\\u1E17\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u00EB\":\"e\",\"\\u1EBB\":\"e\",\"\\u011B\":\"e\",\"\\u0205\":\"e\",\"\\u0207\":\"e\",\"\\u1EB9\":\"e\",\"\\u1EC7\":\"e\",\"\\u0229\":\"e\",\"\\u1E1D\":\"e\",\"\\u0119\":\"e\",\"\\u1E19\":\"e\",\"\\u1E1B\":\"e\",\"\\u0247\":\"e\",\"\\u025B\":\"e\",\"\\u01DD\":\"e\",\"\\u24D5\":\"f\",\"\\uFF46\":\"f\",\"\\u1E1F\":\"f\",\"\\u0192\":\"f\",\"\\uA77C\":\"f\",\"\\u24D6\":\"g\",\"\\uFF47\":\"g\",\"\\u01F5\":\"g\",\"\\u011D\":\"g\",\"\\u1E21\":\"g\",\"\\u011F\":\"g\",\"\\u0121\":\"g\",\"\\u01E7\":\"g\",\"\\u0123\":\"g\",\"\\u01E5\":\"g\",\"\\u0260\":\"g\",\"\\uA7A1\":\"g\",\"\\u1D79\":\"g\",\"\\uA77F\":\"g\",\"\\u24D7\":\"h\",\"\\uFF48\":\"h\",\"\\u0125\":\"h\",\"\\u1E23\":\"h\",\"\\u1E27\":\"h\",\"\\u021F\":\"h\",\"\\u1E25\":\"h\",\"\\u1E29\":\"h\",\"\\u1E2B\":\"h\",\"\\u1E96\":\"h\",\"\\u0127\":\"h\",\"\\u2C68\":\"h\",\"\\u2C76\":\"h\",\"\\u0265\":\"h\",\"\\u0195\":\"hv\",\"\\u24D8\":\"i\",\"\\uFF49\":\"i\",\"\\u00EC\":\"i\",\"\\u00ED\":\"i\",\"\\u00EE\":\"i\",\"\\u0129\":\"i\",\"\\u012B\":\"i\",\"\\u012D\":\"i\",\"\\u00EF\":\"i\",\"\\u1E2F\":\"i\",\"\\u1EC9\":\"i\",\"\\u01D0\":\"i\",\"\\u0209\":\"i\",\"\\u020B\":\"i\",\"\\u1ECB\":\"i\",\"\\u012F\":\"i\",\"\\u1E2D\":\"i\",\"\\u0268\":\"i\",\"\\u0131\":\"i\",\"\\u24D9\":\"j\",\"\\uFF4A\":\"j\",\"\\u0135\":\"j\",\"\\u01F0\":\"j\",\"\\u0249\":\"j\",\"\\u24DA\":\"k\",\"\\uFF4B\":\"k\",\"\\u1E31\":\"k\",\"\\u01E9\":\"k\",\"\\u1E33\":\"k\",\"\\u0137\":\"k\",\"\\u1E35\":\"k\",\"\\u0199\":\"k\",\"\\u2C6A\":\"k\",\"\\uA741\":\"k\",\"\\uA743\":\"k\",\"\\uA745\":\"k\",\"\\uA7A3\":\"k\",\"\\u24DB\":\"l\",\"\\uFF4C\":\"l\",\"\\u0140\":\"l\",\"\\u013A\":\"l\",\"\\u013E\":\"l\",\"\\u1E37\":\"l\",\"\\u1E39\":\"l\",\"\\u013C\":\"l\",\"\\u1E3D\":\"l\",\"\\u1E3B\":\"l\",\"\\u017F\":\"l\",\"\\u0142\":\"l\",\"\\u019A\":\"l\",\"\\u026B\":\"l\",\"\\u2C61\":\"l\",\"\\uA749\":\"l\",\"\\uA781\":\"l\",\"\\uA747\":\"l\",\"\\u01C9\":\"lj\",\"\\u24DC\":\"m\",\"\\uFF4D\":\"m\",\"\\u1E3F\":\"m\",\"\\u1E41\":\"m\",\"\\u1E43\":\"m\",\"\\u0271\":\"m\",\"\\u026F\":\"m\",\"\\u24DD\":\"n\",\"\\uFF4E\":\"n\",\"\\u01F9\":\"n\",\"\\u0144\":\"n\",\"\\u00F1\":\"n\",\"\\u1E45\":\"n\",\"\\u0148\":\"n\",\"\\u1E47\":\"n\",\"\\u0146\":\"n\",\"\\u1E4B\":\"n\",\"\\u1E49\":\"n\",\"\\u019E\":\"n\",\"\\u0272\":\"n\",\"\\u0149\":\"n\",\"\\uA791\":\"n\",\"\\uA7A5\":\"n\",\"\\u01CC\":\"nj\",\"\\u24DE\":\"o\",\"\\uFF4F\":\"o\",\"\\u00F2\":\"o\",\"\\u00F3\":\"o\",\"\\u00F4\":\"o\",\"\\u1ED3\":\"o\",\"\\u1ED1\":\"o\",\"\\u1ED7\":\"o\",\"\\u1ED5\":\"o\",\"\\u00F5\":\"o\",\"\\u1E4D\":\"o\",\"\\u022D\":\"o\",\"\\u1E4F\":\"o\",\"\\u014D\":\"o\",\"\\u1E51\":\"o\",\"\\u1E53\":\"o\",\"\\u014F\":\"o\",\"\\u022F\":\"o\",\"\\u0231\":\"o\",\"\\u00F6\":\"o\",\"\\u022B\":\"o\",\"\\u1ECF\":\"o\",\"\\u0151\":\"o\",\"\\u01D2\":\"o\",\"\\u020D\":\"o\",\"\\u020F\":\"o\",\"\\u01A1\":\"o\",\"\\u1EDD\":\"o\",\"\\u1EDB\":\"o\",\"\\u1EE1\":\"o\",\"\\u1EDF\":\"o\",\"\\u1EE3\":\"o\",\"\\u1ECD\":\"o\",\"\\u1ED9\":\"o\",\"\\u01EB\":\"o\",\"\\u01ED\":\"o\",\"\\u00F8\":\"o\",\"\\u01FF\":\"o\",\"\\u0254\":\"o\",\"\\uA74B\":\"o\",\"\\uA74D\":\"o\",\"\\u0275\":\"o\",\"\\u01A3\":\"oi\",\"\\u0223\":\"ou\",\"\\uA74F\":\"oo\",\"\\u24DF\":\"p\",\"\\uFF50\":\"p\",\"\\u1E55\":\"p\",\"\\u1E57\":\"p\",\"\\u01A5\":\"p\",\"\\u1D7D\":\"p\",\"\\uA751\":\"p\",\"\\uA753\":\"p\",\"\\uA755\":\"p\",\"\\u24E0\":\"q\",\"\\uFF51\":\"q\",\"\\u024B\":\"q\",\"\\uA757\":\"q\",\"\\uA759\":\"q\",\"\\u24E1\":\"r\",\"\\uFF52\":\"r\",\"\\u0155\":\"r\",\"\\u1E59\":\"r\",\"\\u0159\":\"r\",\"\\u0211\":\"r\",\"\\u0213\":\"r\",\"\\u1E5B\":\"r\",\"\\u1E5D\":\"r\",\"\\u0157\":\"r\",\"\\u1E5F\":\"r\",\"\\u024D\":\"r\",\"\\u027D\":\"r\",\"\\uA75B\":\"r\",\"\\uA7A7\":\"r\",\"\\uA783\":\"r\",\"\\u24E2\":\"s\",\"\\uFF53\":\"s\",\"\\u00DF\":\"s\",\"\\u015B\":\"s\",\"\\u1E65\":\"s\",\"\\u015D\":\"s\",\"\\u1E61\":\"s\",\"\\u0161\":\"s\",\"\\u1E67\":\"s\",\"\\u1E63\":\"s\",\"\\u1E69\":\"s\",\"\\u0219\":\"s\",\"\\u015F\":\"s\",\"\\u023F\":\"s\",\"\\uA7A9\":\"s\",\"\\uA785\":\"s\",\"\\u1E9B\":\"s\",\"\\u24E3\":\"t\",\"\\uFF54\":\"t\",\"\\u1E6B\":\"t\",\"\\u1E97\":\"t\",\"\\u0165\":\"t\",\"\\u1E6D\":\"t\",\"\\u021B\":\"t\",\"\\u0163\":\"t\",\"\\u1E71\":\"t\",\"\\u1E6F\":\"t\",\"\\u0167\":\"t\",\"\\u01AD\":\"t\",\"\\u0288\":\"t\",\"\\u2C66\":\"t\",\"\\uA787\":\"t\",\"\\uA729\":\"tz\",\"\\u24E4\":\"u\",\"\\uFF55\":\"u\",\"\\u00F9\":\"u\",\"\\u00FA\":\"u\",\"\\u00FB\":\"u\",\"\\u0169\":\"u\",\"\\u1E79\":\"u\",\"\\u016B\":\"u\",\"\\u1E7B\":\"u\",\"\\u016D\":\"u\",\"\\u00FC\":\"u\",\"\\u01DC\":\"u\",\"\\u01D8\":\"u\",\"\\u01D6\":\"u\",\"\\u01DA\":\"u\",\"\\u1EE7\":\"u\",\"\\u016F\":\"u\",\"\\u0171\":\"u\",\"\\u01D4\":\"u\",\"\\u0215\":\"u\",\"\\u0217\":\"u\",\"\\u01B0\":\"u\",\"\\u1EEB\":\"u\",\"\\u1EE9\":\"u\",\"\\u1EEF\":\"u\",\"\\u1EED\":\"u\",\"\\u1EF1\":\"u\",\"\\u1EE5\":\"u\",\"\\u1E73\":\"u\",\"\\u0173\":\"u\",\"\\u1E77\":\"u\",\"\\u1E75\":\"u\",\"\\u0289\":\"u\",\"\\u24E5\":\"v\",\"\\uFF56\":\"v\",\"\\u1E7D\":\"v\",\"\\u1E7F\":\"v\",\"\\u028B\":\"v\",\"\\uA75F\":\"v\",\"\\u028C\":\"v\",\"\\uA761\":\"vy\",\"\\u24E6\":\"w\",\"\\uFF57\":\"w\",\"\\u1E81\":\"w\",\"\\u1E83\":\"w\",\"\\u0175\":\"w\",\"\\u1E87\":\"w\",\"\\u1E85\":\"w\",\"\\u1E98\":\"w\",\"\\u1E89\":\"w\",\"\\u2C73\":\"w\",\"\\u24E7\":\"x\",\"\\uFF58\":\"x\",\"\\u1E8B\":\"x\",\"\\u1E8D\":\"x\",\"\\u24E8\":\"y\",\"\\uFF59\":\"y\",\"\\u1EF3\":\"y\",\"\\u00FD\":\"y\",\"\\u0177\":\"y\",\"\\u1EF9\":\"y\",\"\\u0233\":\"y\",\"\\u1E8F\":\"y\",\"\\u00FF\":\"y\",\"\\u1EF7\":\"y\",\"\\u1E99\":\"y\",\"\\u1EF5\":\"y\",\"\\u01B4\":\"y\",\"\\u024F\":\"y\",\"\\u1EFF\":\"y\",\"\\u24E9\":\"z\",\"\\uFF5A\":\"z\",\"\\u017A\":\"z\",\"\\u1E91\":\"z\",\"\\u017C\":\"z\",\"\\u017E\":\"z\",\"\\u1E93\":\"z\",\"\\u1E95\":\"z\",\"\\u01B6\":\"z\",\"\\u0225\":\"z\",\"\\u0240\":\"z\",\"\\u2C6C\":\"z\",\"\\uA763\":\"z\",\"\\u0386\":\"\\u0391\",\"\\u0388\":\"\\u0395\",\"\\u0389\":\"\\u0397\",\"\\u038A\":\"\\u0399\",\"\\u03AA\":\"\\u0399\",\"\\u038C\":\"\\u039F\",\"\\u038E\":\"\\u03A5\",\"\\u03AB\":\"\\u03A5\",\"\\u038F\":\"\\u03A9\",\"\\u03AC\":\"\\u03B1\",\"\\u03AD\":\"\\u03B5\",\"\\u03AE\":\"\\u03B7\",\"\\u03AF\":\"\\u03B9\",\"\\u03CA\":\"\\u03B9\",\"\\u0390\":\"\\u03B9\",\"\\u03CC\":\"\\u03BF\",\"\\u03CD\":\"\\u03C5\",\"\\u03CB\":\"\\u03C5\",\"\\u03B0\":\"\\u03C5\",\"\\u03C9\":\"\\u03C9\",\"\\u03C2\":\"\\u03C3\"};\n\n    $document = $(document);\n\n    nextUid=(function() { var counter=1; return function() { return counter++; }; }());\n\n\n    function reinsertElement(element) {\n        var placeholder = $(document.createTextNode(''));\n\n        element.before(placeholder);\n        placeholder.before(element);\n        placeholder.remove();\n    }\n\n    function stripDiacritics(str) {\n        // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n        function match(a) {\n            return DIACRITICS[a] || a;\n        }\n\n        return str.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function indexOf(value, array) {\n        var i = 0, l = array.length;\n        for (; i < l; i = i + 1) {\n            if (equal(value, array[i])) return i;\n        }\n        return -1;\n    }\n\n    function measureScrollbar () {\n        var $template = $( MEASURE_SCROLLBAR_TEMPLATE );\n        $template.appendTo('body');\n\n        var dim = {\n            width: $template.width() - $template[0].clientWidth,\n            height: $template.height() - $template[0].clientHeight\n        };\n        $template.remove();\n\n        return dim;\n    }\n\n    /**\n     * Compares equality of a and b\n     * @param a\n     * @param b\n     */\n    function equal(a, b) {\n        if (a === b) return true;\n        if (a === undefined || b === undefined) return false;\n        if (a === null || b === null) return false;\n        // Check whether 'a' or 'b' is a string (primitive or object).\n        // The concatenation of an empty string (+'') converts its argument to a string's primitive.\n        if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object\n        if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object\n        return false;\n    }\n\n    /**\n     * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty\n     * strings\n     * @param string\n     * @param separator\n     */\n    function splitVal(string, separator) {\n        var val, i, l;\n        if (string === null || string.length < 1) return [];\n        val = string.split(separator);\n        for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);\n        return val;\n    }\n\n    function getSideBorderPadding(element) {\n        return element.outerWidth(false) - element.width();\n    }\n\n    function installKeyUpChangeEvent(element) {\n        var key=\"keyup-change-value\";\n        element.on(\"keydown\", function () {\n            if ($.data(element, key) === undefined) {\n                $.data(element, key, element.val());\n            }\n        });\n        element.on(\"keyup\", function () {\n            var val= $.data(element, key);\n            if (val !== undefined && element.val() !== val) {\n                $.removeData(element, key);\n                element.trigger(\"keyup-change\");\n            }\n        });\n    }\n\n\n    /**\n     * filters mouse events so an event is fired only if the mouse moved.\n     *\n     * filters out mouse events that occur when mouse is stationary but\n     * the elements under the pointer are scrolled.\n     */\n    function installFilteredMouseMove(element) {\n        element.on(\"mousemove\", function (e) {\n            var lastpos = lastMousePosition;\n            if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {\n                $(e.target).trigger(\"mousemove-filtered\", e);\n            }\n        });\n    }\n\n    /**\n     * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made\n     * within the last quietMillis milliseconds.\n     *\n     * @param quietMillis number of milliseconds to wait before invoking fn\n     * @param fn function to be debounced\n     * @param ctx object to be used as this reference within fn\n     * @return debounced version of fn\n     */\n    function debounce(quietMillis, fn, ctx) {\n        ctx = ctx || undefined;\n        var timeout;\n        return function () {\n            var args = arguments;\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function() {\n                fn.apply(ctx, args);\n            }, quietMillis);\n        };\n    }\n\n    function installDebouncedScroll(threshold, element) {\n        var notify = debounce(threshold, function (e) { element.trigger(\"scroll-debounced\", e);});\n        element.on(\"scroll\", function (e) {\n            if (indexOf(e.target, element.get()) >= 0) notify(e);\n        });\n    }\n\n    function focus($el) {\n        if ($el[0] === document.activeElement) return;\n\n        /* set the focus in a 0 timeout - that way the focus is set after the processing\n            of the current event has finished - which seems like the only reliable way\n            to set focus */\n        window.setTimeout(function() {\n            var el=$el[0], pos=$el.val().length, range;\n\n            $el.focus();\n\n            /* make sure el received focus so we do not error out when trying to manipulate the caret.\n                sometimes modals or others listeners may steal it after its set */\n            var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0);\n            if (isVisible && el === document.activeElement) {\n\n                /* after the focus is set move the caret to the end, necessary when we val()\n                    just before setting focus */\n                if(el.setSelectionRange)\n                {\n                    el.setSelectionRange(pos, pos);\n                }\n                else if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                }\n            }\n        }, 0);\n    }\n\n    function getCursorInfo(el) {\n        el = $(el)[0];\n        var offset = 0;\n        var length = 0;\n        if ('selectionStart' in el) {\n            offset = el.selectionStart;\n            length = el.selectionEnd - offset;\n        } else if ('selection' in document) {\n            el.focus();\n            var sel = document.selection.createRange();\n            length = document.selection.createRange().text.length;\n            sel.moveStart('character', -el.value.length);\n            offset = sel.text.length - length;\n        }\n        return { offset: offset, length: length };\n    }\n\n    function killEvent(event) {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n    function killEventImmediately(event) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n    }\n\n    function measureTextWidth(e) {\n        if (!sizer){\n            var style = e[0].currentStyle || window.getComputedStyle(e[0], null);\n            sizer = $(document.createElement(\"div\")).css({\n                position: \"absolute\",\n                left: \"-10000px\",\n                top: \"-10000px\",\n                display: \"none\",\n                fontSize: style.fontSize,\n                fontFamily: style.fontFamily,\n                fontStyle: style.fontStyle,\n                fontWeight: style.fontWeight,\n                letterSpacing: style.letterSpacing,\n                textTransform: style.textTransform,\n                whiteSpace: \"nowrap\"\n            });\n            sizer.attr(\"class\",\"select2-sizer\");\n            $(\"body\").append(sizer);\n        }\n        sizer.text(e.val());\n        return sizer.width();\n    }\n\n    function syncCssClasses(dest, src, adapter) {\n        var classes, replacements = [], adapted;\n\n        classes = $.trim(dest.attr(\"class\"));\n\n        if (classes) {\n            classes = '' + classes; // for IE which returns object\n\n            $(classes.split(/\\s+/)).each2(function() {\n                if (this.indexOf(\"select2-\") === 0) {\n                    replacements.push(this);\n                }\n            });\n        }\n\n        classes = $.trim(src.attr(\"class\"));\n\n        if (classes) {\n            classes = '' + classes; // for IE which returns object\n\n            $(classes.split(/\\s+/)).each2(function() {\n                if (this.indexOf(\"select2-\") !== 0) {\n                    adapted = adapter(this);\n\n                    if (adapted) {\n                        replacements.push(adapted);\n                    }\n                }\n            });\n        }\n\n        dest.attr(\"class\", replacements.join(\" \"));\n    }\n\n\n    function markMatch(text, term, markup, escapeMarkup) {\n        var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),\n            tl=term.length;\n\n        if (match<0) {\n            markup.push(escapeMarkup(text));\n            return;\n        }\n\n        markup.push(escapeMarkup(text.substring(0, match)));\n        markup.push(\"<span class='select2-match'>\");\n        markup.push(escapeMarkup(text.substring(match, match + tl)));\n        markup.push(\"</span>\");\n        markup.push(escapeMarkup(text.substring(match + tl, text.length)));\n    }\n\n    function defaultEscapeMarkup(markup) {\n        var replace_map = {\n            '\\\\': '&#92;',\n            '&': '&amp;',\n            '<': '&lt;',\n            '>': '&gt;',\n            '\"': '&quot;',\n            \"'\": '&#39;',\n            \"/\": '&#47;'\n        };\n\n        return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n            return replace_map[match];\n        });\n    }\n\n    /**\n     * Produces an ajax-based query function\n     *\n     * @param options object containing configuration parameters\n     * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax\n     * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax\n     * @param options.url url for the data\n     * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.\n     * @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified\n     * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often\n     * @param options.results a function(remoteData, pageNumber, query) that converts data returned form the remote request to the format expected by Select2.\n     *      The expected format is an object containing the following keys:\n     *      results array of objects that will be used as choices\n     *      more (optional) boolean indicating whether there are more results available\n     *      Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}\n     */\n    function ajax(options) {\n        var timeout, // current scheduled but not yet executed request\n            handler = null,\n            quietMillis = options.quietMillis || 100,\n            ajaxUrl = options.url,\n            self = this;\n\n        return function (query) {\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function () {\n                var data = options.data, // ajax data function\n                    url = ajaxUrl, // ajax url string or function\n                    transport = options.transport || $.fn.select2.ajaxDefaults.transport,\n                    // deprecated - to be removed in 4.0  - use params instead\n                    deprecated = {\n                        type: options.type || 'GET', // set type of request (GET or POST)\n                        cache: options.cache || false,\n                        jsonpCallback: options.jsonpCallback||undefined,\n                        dataType: options.dataType||\"json\"\n                    },\n                    params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);\n\n                data = data ? data.call(self, query.term, query.page, query.context) : null;\n                url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;\n\n                if (handler && typeof handler.abort === \"function\") { handler.abort(); }\n\n                if (options.params) {\n                    if ($.isFunction(options.params)) {\n                        $.extend(params, options.params.call(self));\n                    } else {\n                        $.extend(params, options.params);\n                    }\n                }\n\n                $.extend(params, {\n                    url: url,\n                    dataType: options.dataType,\n                    data: data,\n                    success: function (data) {\n                        // TODO - replace query.page with query so users have access to term, page, etc.\n                        // added query as third paramter to keep backwards compatibility\n                        var results = options.results(data, query.page, query);\n                        query.callback(results);\n                    },\n                    error: function(jqXHR, textStatus, errorThrown){\n                        var results = {\n                            hasError: true,\n                            jqXHR: jqXHR,\n                            textStatus: textStatus,\n                            errorThrown: errorThrown,\n                        };\n\n                        query.callback(results);\n                    }\n                });\n                handler = transport.call(self, params);\n            }, quietMillis);\n        };\n    }\n\n    /**\n     * Produces a query function that works with a local array\n     *\n     * @param options object containing configuration parameters. The options parameter can either be an array or an\n     * object.\n     *\n     * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.\n     *\n     * If the object form is used it is assumed that it contains 'data' and 'text' keys. The 'data' key should contain\n     * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'\n     * key can either be a String in which case it is expected that each element in the 'data' array has a key with the\n     * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract\n     * the text.\n     */\n    function local(options) {\n        var data = options, // data elements\n            dataText,\n            tmp,\n            text = function (item) { return \"\"+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search\n\n         if ($.isArray(data)) {\n            tmp = data;\n            data = { results: tmp };\n        }\n\n         if ($.isFunction(data) === false) {\n            tmp = data;\n            data = function() { return tmp; };\n        }\n\n        var dataItem = data();\n        if (dataItem.text) {\n            text = dataItem.text;\n            // if text is not a function we assume it to be a key name\n            if (!$.isFunction(text)) {\n                dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available\n                text = function (item) { return item[dataText]; };\n            }\n        }\n\n        return function (query) {\n            var t = query.term, filtered = { results: [] }, process;\n            if (t === \"\") {\n                query.callback(data());\n                return;\n            }\n\n            process = function(datum, collection) {\n                var group, attr;\n                datum = datum[0];\n                if (datum.children) {\n                    group = {};\n                    for (attr in datum) {\n                        if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];\n                    }\n                    group.children=[];\n                    $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });\n                    if (group.children.length || query.matcher(t, text(group), datum)) {\n                        collection.push(group);\n                    }\n                } else {\n                    if (query.matcher(t, text(datum), datum)) {\n                        collection.push(datum);\n                    }\n                }\n            };\n\n            $(data().results).each2(function(i, datum) { process(datum, filtered.results); });\n            query.callback(filtered);\n        };\n    }\n\n    // TODO javadoc\n    function tags(data) {\n        var isFunc = $.isFunction(data);\n        return function (query) {\n            var t = query.term, filtered = {results: []};\n            var result = isFunc ? data(query) : data;\n            if ($.isArray(result)) {\n                $(result).each(function () {\n                    var isObject = this.text !== undefined,\n                        text = isObject ? this.text : this;\n                    if (t === \"\" || query.matcher(t, text)) {\n                        filtered.results.push(isObject ? this : {id: this, text: this});\n                    }\n                });\n                query.callback(filtered);\n            }\n        };\n    }\n\n    /**\n     * Checks if the formatter function should be used.\n     *\n     * Throws an error if it is not a function. Returns true if it should be used,\n     * false if no formatting should be performed.\n     *\n     * @param formatter\n     */\n    function checkFormatter(formatter, formatterName) {\n        if ($.isFunction(formatter)) return true;\n        if (!formatter) return false;\n        if (typeof(formatter) === 'string') return true;\n        throw new Error(formatterName +\" must be a string, function, or falsy value\");\n    }\n\n  /**\n   * Returns a given value\n   * If given a function, returns its output\n   *\n   * @param val string|function\n   * @param context value of \"this\" to be passed to function\n   * @returns {*}\n   */\n    function evaluate(val, context) {\n        if ($.isFunction(val)) {\n            var args = Array.prototype.slice.call(arguments, 2);\n            return val.apply(context, args);\n        }\n        return val;\n    }\n\n    function countResults(results) {\n        var count = 0;\n        $.each(results, function(i, item) {\n            if (item.children) {\n                count += countResults(item.children);\n            } else {\n                count++;\n            }\n        });\n        return count;\n    }\n\n    /**\n     * Default tokenizer. This function uses breaks the input on substring match of any string from the\n     * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those\n     * two options have to be defined in order for the tokenizer to work.\n     *\n     * @param input text user has typed so far or pasted into the search field\n     * @param selection currently selected choices\n     * @param selectCallback function(choice) callback tho add the choice to selection\n     * @param opts select2's opts\n     * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value\n     */\n    function defaultTokenizer(input, selection, selectCallback, opts) {\n        var original = input, // store the original so we can compare and know if we need to tell the search to update its text\n            dupe = false, // check for whether a token we extracted represents a duplicate selected choice\n            token, // token\n            index, // position at which the separator was found\n            i, l, // looping variables\n            separator; // the matched separator\n\n        if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;\n\n        while (true) {\n            index = -1;\n\n            for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {\n                separator = opts.tokenSeparators[i];\n                index = input.indexOf(separator);\n                if (index >= 0) break;\n            }\n\n            if (index < 0) break; // did not find any token separator in the input string, bail\n\n            token = input.substring(0, index);\n            input = input.substring(index + separator.length);\n\n            if (token.length > 0) {\n                token = opts.createSearchChoice.call(this, token, selection);\n                if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {\n                    dupe = false;\n                    for (i = 0, l = selection.length; i < l; i++) {\n                        if (equal(opts.id(token), opts.id(selection[i]))) {\n                            dupe = true; break;\n                        }\n                    }\n\n                    if (!dupe) selectCallback(token);\n                }\n            }\n        }\n\n        if (original!==input) return input;\n    }\n\n    function cleanupJQueryElements() {\n        var self = this;\n\n        $.each(arguments, function (i, element) {\n            self[element].remove();\n            self[element] = null;\n        });\n    }\n\n    /**\n     * Creates a new class\n     *\n     * @param superClass\n     * @param methods\n     */\n    function clazz(SuperClass, methods) {\n        var constructor = function () {};\n        constructor.prototype = new SuperClass;\n        constructor.prototype.constructor = constructor;\n        constructor.prototype.parent = SuperClass.prototype;\n        constructor.prototype = $.extend(constructor.prototype, methods);\n        return constructor;\n    }\n\n    AbstractSelect2 = clazz(Object, {\n\n        // abstract\n        bind: function (func) {\n            var self = this;\n            return function () {\n                func.apply(self, arguments);\n            };\n        },\n\n        // abstract\n        init: function (opts) {\n            var results, search, resultsSelector = \".select2-results\";\n\n            // prepare options\n            this.opts = opts = this.prepareOpts(opts);\n\n            this.id=opts.id;\n\n            // destroy if called on an existing component\n            if (opts.element.data(\"select2\") !== undefined &&\n                opts.element.data(\"select2\") !== null) {\n                opts.element.data(\"select2\").destroy();\n            }\n\n            this.container = this.createContainer();\n\n            this.liveRegion = $(\"<span>\", {\n                    role: \"status\",\n                    \"aria-live\": \"polite\"\n                })\n                .addClass(\"select2-hidden-accessible\")\n                .appendTo(document.body);\n\n            this.containerId=\"s2id_\"+(opts.element.attr(\"id\") || \"autogen\"+nextUid());\n            this.containerEventName= this.containerId\n                .replace(/([.])/g, '_')\n                .replace(/([;&,\\-\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1');\n            this.container.attr(\"id\", this.containerId);\n\n            this.container.attr(\"title\", opts.element.attr(\"title\"));\n\n            this.body = $(\"body\");\n\n            syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n\n            this.container.attr(\"style\", opts.element.attr(\"style\"));\n            this.container.css(evaluate(opts.containerCss, this.opts.element));\n            this.container.addClass(evaluate(opts.containerCssClass, this.opts.element));\n\n            this.elementTabIndex = this.opts.element.attr(\"tabindex\");\n\n            // swap container for the element\n            this.opts.element\n                .data(\"select2\", this)\n                .attr(\"tabindex\", \"-1\")\n                .before(this.container)\n                .on(\"click.select2\", killEvent); // do not leak click events\n\n            this.container.data(\"select2\", this);\n\n            this.dropdown = this.container.find(\".select2-drop\");\n\n            syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n\n            this.dropdown.addClass(evaluate(opts.dropdownCssClass, this.opts.element));\n            this.dropdown.data(\"select2\", this);\n            this.dropdown.on(\"click\", killEvent);\n\n            this.results = results = this.container.find(resultsSelector);\n            this.search = search = this.container.find(\"input.select2-input\");\n\n            this.queryCount = 0;\n            this.resultsPage = 0;\n            this.context = null;\n\n            // initialize the container\n            this.initContainer();\n\n            this.container.on(\"click\", killEvent);\n\n            installFilteredMouseMove(this.results);\n\n            this.dropdown.on(\"mousemove-filtered\", resultsSelector, this.bind(this.highlightUnderEvent));\n            this.dropdown.on(\"touchstart touchmove touchend\", resultsSelector, this.bind(function (event) {\n                this._touchEvent = true;\n                this.highlightUnderEvent(event);\n            }));\n            this.dropdown.on(\"touchmove\", resultsSelector, this.bind(this.touchMoved));\n            this.dropdown.on(\"touchstart touchend\", resultsSelector, this.bind(this.clearTouchMoved));\n\n            // Waiting for a click event on touch devices to select option and hide dropdown\n            // otherwise click will be triggered on an underlying element\n            this.dropdown.on('click', this.bind(function (event) {\n                if (this._touchEvent) {\n                    this._touchEvent = false;\n                    this.selectHighlighted();\n                }\n            }));\n\n            installDebouncedScroll(80, this.results);\n            this.dropdown.on(\"scroll-debounced\", resultsSelector, this.bind(this.loadMoreIfNeeded));\n\n            // do not propagate change event from the search field out of the component\n            $(this.container).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n            $(this.dropdown).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n\n            // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel\n            if ($.fn.mousewheel) {\n                results.mousewheel(function (e, delta, deltaX, deltaY) {\n                    var top = results.scrollTop();\n                    if (deltaY > 0 && top - deltaY <= 0) {\n                        results.scrollTop(0);\n                        killEvent(e);\n                    } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {\n                        results.scrollTop(results.get(0).scrollHeight - results.height());\n                        killEvent(e);\n                    }\n                });\n            }\n\n            installKeyUpChangeEvent(search);\n            search.on(\"keyup-change input paste\", this.bind(this.updateResults));\n            search.on(\"focus\", function () { search.addClass(\"select2-focused\"); });\n            search.on(\"blur\", function () { search.removeClass(\"select2-focused\");});\n\n            this.dropdown.on(\"mouseup\", resultsSelector, this.bind(function (e) {\n                if ($(e.target).closest(\".select2-result-selectable\").length > 0) {\n                    this.highlightUnderEvent(e);\n                    this.selectHighlighted(e);\n                }\n            }));\n\n            // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening\n            // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's\n            // dom it will trigger the popup close, which is not what we want\n            // focusin can cause focus wars between modals and select2 since the dropdown is outside the modal.\n            this.dropdown.on(\"click mouseup mousedown touchstart touchend focusin\", function (e) { e.stopPropagation(); });\n\n            this.nextSearchTerm = undefined;\n\n            if ($.isFunction(this.opts.initSelection)) {\n                // initialize selection based on the current value of the source element\n                this.initSelection();\n\n                // if the user has provided a function that can set selection based on the value of the source element\n                // we monitor the change event on the element and trigger it, allowing for two way synchronization\n                this.monitorSource();\n            }\n\n            if (opts.maximumInputLength !== null) {\n                this.search.attr(\"maxlength\", opts.maximumInputLength);\n            }\n\n            var disabled = opts.element.prop(\"disabled\");\n            if (disabled === undefined) disabled = false;\n            this.enable(!disabled);\n\n            var readonly = opts.element.prop(\"readonly\");\n            if (readonly === undefined) readonly = false;\n            this.readonly(readonly);\n\n            // Calculate size of scrollbar\n            scrollBarDimensions = scrollBarDimensions || measureScrollbar();\n\n            this.autofocus = opts.element.prop(\"autofocus\");\n            opts.element.prop(\"autofocus\", false);\n            if (this.autofocus) this.focus();\n\n            this.search.attr(\"placeholder\", opts.searchInputPlaceholder);\n        },\n\n        // abstract\n        destroy: function () {\n            var element=this.opts.element, select2 = element.data(\"select2\"), self = this;\n\n            this.close();\n\n            if (element.length && element[0].detachEvent) {\n                element.each(function () {\n                    this.detachEvent(\"onpropertychange\", self._sync);\n                });\n            }\n            if (this.propertyObserver) {\n                this.propertyObserver.disconnect();\n                this.propertyObserver = null;\n            }\n            this._sync = null;\n\n            if (select2 !== undefined) {\n                select2.container.remove();\n                select2.liveRegion.remove();\n                select2.dropdown.remove();\n                element\n                    .removeClass(\"select2-offscreen\")\n                    .removeData(\"select2\")\n                    .off(\".select2\")\n                    .prop(\"autofocus\", this.autofocus || false);\n                if (this.elementTabIndex) {\n                    element.attr({tabindex: this.elementTabIndex});\n                } else {\n                    element.removeAttr(\"tabindex\");\n                }\n                element.show();\n            }\n\n            cleanupJQueryElements.call(this,\n                \"container\",\n                \"liveRegion\",\n                \"dropdown\",\n                \"results\",\n                \"search\"\n            );\n        },\n\n        // abstract\n        optionToData: function(element) {\n            if (element.is(\"option\")) {\n                return {\n                    id:element.prop(\"value\"),\n                    text:element.text(),\n                    element: element.get(),\n                    css: element.attr(\"class\"),\n                    disabled: element.prop(\"disabled\"),\n                    locked: equal(element.attr(\"locked\"), \"locked\") || equal(element.data(\"locked\"), true)\n                };\n            } else if (element.is(\"optgroup\")) {\n                return {\n                    text:element.attr(\"label\"),\n                    children:[],\n                    element: element.get(),\n                    css: element.attr(\"class\")\n                };\n            }\n        },\n\n        // abstract\n        prepareOpts: function (opts) {\n            var element, select, idKey, ajaxUrl, self = this;\n\n            element = opts.element;\n\n            if (element.get(0).tagName.toLowerCase() === \"select\") {\n                this.select = select = opts.element;\n            }\n\n            if (select) {\n                // these options are not allowed when attached to a select because they are picked up off the element itself\n                $.each([\"id\", \"multiple\", \"ajax\", \"query\", \"createSearchChoice\", \"initSelection\", \"data\", \"tags\"], function () {\n                    if (this in opts) {\n                        throw new Error(\"Option '\" + this + \"' is not allowed for Select2 when attached to a <select> element.\");\n                    }\n                });\n            }\n\n            opts = $.extend({}, {\n                populateResults: function(container, results, query) {\n                    var populate, id=this.opts.id, liveRegion=this.liveRegion;\n\n                    populate=function(results, container, depth) {\n\n                        var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;\n\n                        results = opts.sortResults(results, container, query);\n\n                        // collect the created nodes for bulk append\n                        var nodes = [];\n                        for (i = 0, l = results.length; i < l; i = i + 1) {\n\n                            result=results[i];\n\n                            disabled = (result.disabled === true);\n                            selectable = (!disabled) && (id(result) !== undefined);\n\n                            compound=result.children && result.children.length > 0;\n\n                            node=$(\"<li></li>\");\n                            node.addClass(\"select2-results-dept-\"+depth);\n                            node.addClass(\"select2-result\");\n                            node.addClass(selectable ? \"select2-result-selectable\" : \"select2-result-unselectable\");\n                            if (disabled) { node.addClass(\"select2-disabled\"); }\n                            if (compound) { node.addClass(\"select2-result-with-children\"); }\n                            node.addClass(self.opts.formatResultCssClass(result));\n                            node.attr(\"role\", \"presentation\");\n\n                            label=$(document.createElement(\"div\"));\n                            label.addClass(\"select2-result-label\");\n                            label.attr(\"id\", \"select2-result-label-\" + nextUid());\n                            label.attr(\"role\", \"option\");\n\n                            formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);\n                            if (formatted!==undefined) {\n                                label.html(formatted);\n                                node.append(label);\n                            }\n\n\n                            if (compound) {\n\n                                innerContainer=$(\"<ul></ul>\");\n                                innerContainer.addClass(\"select2-result-sub\");\n                                populate(result.children, innerContainer, depth+1);\n                                node.append(innerContainer);\n                            }\n\n                            node.data(\"select2-data\", result);\n                            nodes.push(node[0]);\n                        }\n\n                        // bulk append the created nodes\n                        container.append(nodes);\n                        liveRegion.text(opts.formatMatches(results.length));\n                    };\n\n                    populate(results, container, 0);\n                }\n            }, $.fn.select2.defaults, opts);\n\n            if (typeof(opts.id) !== \"function\") {\n                idKey = opts.id;\n                opts.id = function (e) { return e[idKey]; };\n            }\n\n            if ($.isArray(opts.element.data(\"select2Tags\"))) {\n                if (\"tags\" in opts) {\n                    throw \"tags specified as both an attribute 'data-select2-tags' and in options of Select2 \" + opts.element.attr(\"id\");\n                }\n                opts.tags=opts.element.data(\"select2Tags\");\n            }\n\n            if (select) {\n                opts.query = this.bind(function (query) {\n                    var data = { results: [], more: false },\n                        term = query.term,\n                        children, placeholderOption, process;\n\n                    process=function(element, collection) {\n                        var group;\n                        if (element.is(\"option\")) {\n                            if (query.matcher(term, element.text(), element)) {\n                                collection.push(self.optionToData(element));\n                            }\n                        } else if (element.is(\"optgroup\")) {\n                            group=self.optionToData(element);\n                            element.children().each2(function(i, elm) { process(elm, group.children); });\n                            if (group.children.length>0) {\n                                collection.push(group);\n                            }\n                        }\n                    };\n\n                    children=element.children();\n\n                    // ignore the placeholder option if there is one\n                    if (this.getPlaceholder() !== undefined && children.length > 0) {\n                        placeholderOption = this.getPlaceholderOption();\n                        if (placeholderOption) {\n                            children=children.not(placeholderOption);\n                        }\n                    }\n\n                    children.each2(function(i, elm) { process(elm, data.results); });\n\n                    query.callback(data);\n                });\n                // this is needed because inside val() we construct choices from options and their id is hardcoded\n                opts.id=function(e) { return e.id; };\n            } else {\n                if (!(\"query\" in opts)) {\n\n                    if (\"ajax\" in opts) {\n                        ajaxUrl = opts.element.data(\"ajax-url\");\n                        if (ajaxUrl && ajaxUrl.length > 0) {\n                            opts.ajax.url = ajaxUrl;\n                        }\n                        opts.query = ajax.call(opts.element, opts.ajax);\n                    } else if (\"data\" in opts) {\n                        opts.query = local(opts.data);\n                    } else if (\"tags\" in opts) {\n                        opts.query = tags(opts.tags);\n                        if (opts.createSearchChoice === undefined) {\n                            opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; };\n                        }\n                        if (opts.initSelection === undefined) {\n                            opts.initSelection = function (element, callback) {\n                                var data = [];\n                                $(splitVal(element.val(), opts.separator)).each(function () {\n                                    var obj = { id: this, text: this },\n                                        tags = opts.tags;\n                                    if ($.isFunction(tags)) tags=tags();\n                                    $(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } });\n                                    data.push(obj);\n                                });\n\n                                callback(data);\n                            };\n                        }\n                    }\n                }\n            }\n            if (typeof(opts.query) !== \"function\") {\n                throw \"query function not defined for Select2 \" + opts.element.attr(\"id\");\n            }\n\n            if (opts.createSearchChoicePosition === 'top') {\n                opts.createSearchChoicePosition = function(list, item) { list.unshift(item); };\n            }\n            else if (opts.createSearchChoicePosition === 'bottom') {\n                opts.createSearchChoicePosition = function(list, item) { list.push(item); };\n            }\n            else if (typeof(opts.createSearchChoicePosition) !== \"function\")  {\n                throw \"invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function\";\n            }\n\n            return opts;\n        },\n\n        /**\n         * Monitor the original element for changes and update select2 accordingly\n         */\n        // abstract\n        monitorSource: function () {\n            var el = this.opts.element, observer, self = this;\n\n            el.on(\"change.select2\", this.bind(function (e) {\n                if (this.opts.element.data(\"select2-change-triggered\") !== true) {\n                    this.initSelection();\n                }\n            }));\n\n            this._sync = this.bind(function () {\n\n                // sync enabled state\n                var disabled = el.prop(\"disabled\");\n                if (disabled === undefined) disabled = false;\n                this.enable(!disabled);\n\n                var readonly = el.prop(\"readonly\");\n                if (readonly === undefined) readonly = false;\n                this.readonly(readonly);\n\n                syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n                this.container.addClass(evaluate(this.opts.containerCssClass, this.opts.element));\n\n                syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n                this.dropdown.addClass(evaluate(this.opts.dropdownCssClass, this.opts.element));\n\n            });\n\n            // IE8-10 (IE9/10 won't fire propertyChange via attachEventListener)\n            if (el.length && el[0].attachEvent) {\n                el.each(function() {\n                    this.attachEvent(\"onpropertychange\", self._sync);\n                });\n            }\n\n            // safari, chrome, firefox, IE11\n            observer = window.MutationObserver || window.WebKitMutationObserver|| window.MozMutationObserver;\n            if (observer !== undefined) {\n                if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\n                this.propertyObserver = new observer(function (mutations) {\n                    $.each(mutations, self._sync);\n                });\n                this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });\n            }\n        },\n\n        // abstract\n        triggerSelect: function(data) {\n            var evt = $.Event(\"select2-selecting\", { val: this.id(data), object: data, choice: data });\n            this.opts.element.trigger(evt);\n            return !evt.isDefaultPrevented();\n        },\n\n        /**\n         * Triggers the change event on the source element\n         */\n        // abstract\n        triggerChange: function (details) {\n\n            details = details || {};\n            details= $.extend({}, details, { type: \"change\", val: this.val() });\n            // prevents recursive triggering\n            this.opts.element.data(\"select2-change-triggered\", true);\n            this.opts.element.trigger(details);\n            this.opts.element.data(\"select2-change-triggered\", false);\n\n            // some validation frameworks ignore the change event and listen instead to keyup, click for selects\n            // so here we trigger the click event manually\n            this.opts.element.click();\n\n            // ValidationEngine ignores the change event and listens instead to blur\n            // so here we trigger the blur event manually if so desired\n            if (this.opts.blurOnChange)\n                this.opts.element.blur();\n        },\n\n        //abstract\n        isInterfaceEnabled: function()\n        {\n            return this.enabledInterface === true;\n        },\n\n        // abstract\n        enableInterface: function() {\n            var enabled = this._enabled && !this._readonly,\n                disabled = !enabled;\n\n            if (enabled === this.enabledInterface) return false;\n\n            this.container.toggleClass(\"select2-container-disabled\", disabled);\n            this.close();\n            this.enabledInterface = enabled;\n\n            return true;\n        },\n\n        // abstract\n        enable: function(enabled) {\n            if (enabled === undefined) enabled = true;\n            if (this._enabled === enabled) return;\n            this._enabled = enabled;\n\n            this.opts.element.prop(\"disabled\", !enabled);\n            this.enableInterface();\n        },\n\n        // abstract\n        disable: function() {\n            this.enable(false);\n        },\n\n        // abstract\n        readonly: function(enabled) {\n            if (enabled === undefined) enabled = false;\n            if (this._readonly === enabled) return;\n            this._readonly = enabled;\n\n            this.opts.element.prop(\"readonly\", enabled);\n            this.enableInterface();\n        },\n\n        // abstract\n        opened: function () {\n            return (this.container) ? this.container.hasClass(\"select2-dropdown-open\") : false;\n        },\n\n        // abstract\n        positionDropdown: function() {\n            var $dropdown = this.dropdown,\n                offset = this.container.offset(),\n                height = this.container.outerHeight(false),\n                width = this.container.outerWidth(false),\n                dropHeight = $dropdown.outerHeight(false),\n                $window = $(window),\n                windowWidth = $window.width(),\n                windowHeight = $window.height(),\n                viewPortRight = $window.scrollLeft() + windowWidth,\n                viewportBottom = $window.scrollTop() + windowHeight,\n                dropTop = offset.top + height,\n                dropLeft = offset.left,\n                enoughRoomBelow = dropTop + dropHeight <= viewportBottom,\n                enoughRoomAbove = (offset.top - dropHeight) >= $window.scrollTop(),\n                dropWidth = $dropdown.outerWidth(false),\n                enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight,\n                aboveNow = $dropdown.hasClass(\"select2-drop-above\"),\n                bodyOffset,\n                above,\n                changeDirection,\n                css,\n                resultsListNode;\n\n            // always prefer the current above/below alignment, unless there is not enough room\n            if (aboveNow) {\n                above = true;\n                if (!enoughRoomAbove && enoughRoomBelow) {\n                    changeDirection = true;\n                    above = false;\n                }\n            } else {\n                above = false;\n                if (!enoughRoomBelow && enoughRoomAbove) {\n                    changeDirection = true;\n                    above = true;\n                }\n            }\n\n            //if we are changing direction we need to get positions when dropdown is hidden;\n            if (changeDirection) {\n                $dropdown.hide();\n                offset = this.container.offset();\n                height = this.container.outerHeight(false);\n                width = this.container.outerWidth(false);\n                dropHeight = $dropdown.outerHeight(false);\n                viewPortRight = $window.scrollLeft() + windowWidth;\n                viewportBottom = $window.scrollTop() + windowHeight;\n                dropTop = offset.top + height;\n                dropLeft = offset.left;\n                dropWidth = $dropdown.outerWidth(false);\n                enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;\n                $dropdown.show();\n\n                // fix so the cursor does not move to the left within the search-textbox in IE\n                this.focusSearch();\n            }\n\n            if (this.opts.dropdownAutoWidth) {\n                resultsListNode = $('.select2-results', $dropdown)[0];\n                $dropdown.addClass('select2-drop-auto-width');\n                $dropdown.css('width', '');\n                // Add scrollbar width to dropdown if vertical scrollbar is present\n                dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width);\n                dropWidth > width ? width = dropWidth : dropWidth = width;\n                dropHeight = $dropdown.outerHeight(false);\n                enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;\n            }\n            else {\n                this.container.removeClass('select2-drop-auto-width');\n            }\n\n            //console.log(\"below/ droptop:\", dropTop, \"dropHeight\", dropHeight, \"sum\", (dropTop+dropHeight)+\" viewport bottom\", viewportBottom, \"enough?\", enoughRoomBelow);\n            //console.log(\"above/ offset.top\", offset.top, \"dropHeight\", dropHeight, \"top\", (offset.top-dropHeight), \"scrollTop\", this.body.scrollTop(), \"enough?\", enoughRoomAbove);\n\n            // fix positioning when body has an offset and is not position: static\n            if (this.body.css('position') !== 'static') {\n                bodyOffset = this.body.offset();\n                dropTop -= bodyOffset.top;\n                dropLeft -= bodyOffset.left;\n            }\n\n            if (!enoughRoomOnRight) {\n                dropLeft = offset.left + this.container.outerWidth(false) - dropWidth;\n            }\n\n            css =  {\n                left: dropLeft,\n                width: width\n            };\n\n            if (above) {\n                css.top = offset.top - dropHeight;\n                css.bottom = 'auto';\n                this.container.addClass(\"select2-drop-above\");\n                $dropdown.addClass(\"select2-drop-above\");\n            }\n            else {\n                css.top = dropTop;\n                css.bottom = 'auto';\n                this.container.removeClass(\"select2-drop-above\");\n                $dropdown.removeClass(\"select2-drop-above\");\n            }\n            css = $.extend(css, evaluate(this.opts.dropdownCss, this.opts.element));\n\n            $dropdown.css(css);\n        },\n\n        // abstract\n        shouldOpen: function() {\n            var event;\n\n            if (this.opened()) return false;\n\n            if (this._enabled === false || this._readonly === true) return false;\n\n            event = $.Event(\"select2-opening\");\n            this.opts.element.trigger(event);\n            return !event.isDefaultPrevented();\n        },\n\n        // abstract\n        clearDropdownAlignmentPreference: function() {\n            // clear the classes used to figure out the preference of where the dropdown should be opened\n            this.container.removeClass(\"select2-drop-above\");\n            this.dropdown.removeClass(\"select2-drop-above\");\n        },\n\n        /**\n         * Opens the dropdown\n         *\n         * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,\n         * the dropdown is already open, or if the 'open' event listener on the element called preventDefault().\n         */\n        // abstract\n        open: function () {\n\n            if (!this.shouldOpen()) return false;\n\n            this.opening();\n\n            // Only bind the document mousemove when the dropdown is visible\n            $document.on(\"mousemove.select2Event\", function (e) {\n                lastMousePosition.x = e.pageX;\n                lastMousePosition.y = e.pageY;\n            });\n\n            return true;\n        },\n\n        /**\n         * Performs the opening of the dropdown\n         */\n        // abstract\n        opening: function() {\n            var cid = this.containerEventName,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid,\n                mask;\n\n            this.container.addClass(\"select2-dropdown-open\").addClass(\"select2-container-active\");\n\n            this.clearDropdownAlignmentPreference();\n\n            if(this.dropdown[0] !== this.body.children().last()[0]) {\n                this.dropdown.detach().appendTo(this.body);\n            }\n\n            // create the dropdown mask if doesn't already exist\n            mask = $(\"#select2-drop-mask\");\n            if (mask.length == 0) {\n                mask = $(document.createElement(\"div\"));\n                mask.attr(\"id\",\"select2-drop-mask\").attr(\"class\",\"select2-drop-mask\");\n                mask.hide();\n                mask.appendTo(this.body);\n                mask.on(\"mousedown touchstart click\", function (e) {\n                    // Prevent IE from generating a click event on the body\n                    reinsertElement(mask);\n\n                    var dropdown = $(\"#select2-drop\"), self;\n                    if (dropdown.length > 0) {\n                        self=dropdown.data(\"select2\");\n                        if (self.opts.selectOnBlur) {\n                            self.selectHighlighted({noFocus: true});\n                        }\n                        self.close();\n                        e.preventDefault();\n                        e.stopPropagation();\n                    }\n                });\n            }\n\n            // ensure the mask is always right before the dropdown\n            if (this.dropdown.prev()[0] !== mask[0]) {\n                this.dropdown.before(mask);\n            }\n\n            // move the global id to the correct dropdown\n            $(\"#select2-drop\").removeAttr(\"id\");\n            this.dropdown.attr(\"id\", \"select2-drop\");\n\n            // show the elements\n            mask.show();\n\n            this.positionDropdown();\n            this.dropdown.show();\n            this.positionDropdown();\n\n            this.dropdown.addClass(\"select2-drop-active\");\n\n            // attach listeners to events that can change the position of the container and thus require\n            // the position of the dropdown to be updated as well so it does not come unglued from the container\n            var that = this;\n            this.container.parents().add(window).each(function () {\n                $(this).on(resize+\" \"+scroll+\" \"+orient, function (e) {\n                    if (that.opened()) that.positionDropdown();\n                });\n            });\n\n\n        },\n\n        // abstract\n        close: function () {\n            if (!this.opened()) return;\n\n            var cid = this.containerEventName,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid;\n\n            // unbind event listeners\n            this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); });\n\n            this.clearDropdownAlignmentPreference();\n\n            $(\"#select2-drop-mask\").hide();\n            this.dropdown.removeAttr(\"id\"); // only the active dropdown has the select2-drop id\n            this.dropdown.hide();\n            this.container.removeClass(\"select2-dropdown-open\").removeClass(\"select2-container-active\");\n            this.results.empty();\n\n            // Now that the dropdown is closed, unbind the global document mousemove event\n            $document.off(\"mousemove.select2Event\");\n\n            this.clearSearch();\n            this.search.removeClass(\"select2-active\");\n            this.opts.element.trigger($.Event(\"select2-close\"));\n        },\n\n        /**\n         * Opens control, sets input value, and updates results.\n         */\n        // abstract\n        externalSearch: function (term) {\n            this.open();\n            this.search.val(term);\n            this.updateResults(false);\n        },\n\n        // abstract\n        clearSearch: function () {\n\n        },\n\n        //abstract\n        getMaximumSelectionSize: function() {\n            return evaluate(this.opts.maximumSelectionSize, this.opts.element);\n        },\n\n        // abstract\n        ensureHighlightVisible: function () {\n            var results = this.results, children, index, child, hb, rb, y, more, topOffset;\n\n            index = this.highlight();\n\n            if (index < 0) return;\n\n            if (index == 0) {\n\n                // if the first element is highlighted scroll all the way to the top,\n                // that way any unselectable headers above it will also be scrolled\n                // into view\n\n                results.scrollTop(0);\n                return;\n            }\n\n            children = this.findHighlightableChoices().find('.select2-result-label');\n\n            child = $(children[index]);\n\n            topOffset = (child.offset() || {}).top || 0;\n\n            hb = topOffset + child.outerHeight(true);\n\n            // if this is the last child lets also make sure select2-more-results is visible\n            if (index === children.length - 1) {\n                more = results.find(\"li.select2-more-results\");\n                if (more.length > 0) {\n                    hb = more.offset().top + more.outerHeight(true);\n                }\n            }\n\n            rb = results.offset().top + results.outerHeight(true);\n            if (hb > rb) {\n                results.scrollTop(results.scrollTop() + (hb - rb));\n            }\n            y = topOffset - results.offset().top;\n\n            // make sure the top of the element is visible\n            if (y < 0 && child.css('display') != 'none' ) {\n                results.scrollTop(results.scrollTop() + y); // y is negative\n            }\n        },\n\n        // abstract\n        findHighlightableChoices: function() {\n            return this.results.find(\".select2-result-selectable:not(.select2-disabled):not(.select2-selected)\");\n        },\n\n        // abstract\n        moveHighlight: function (delta) {\n            var choices = this.findHighlightableChoices(),\n                index = this.highlight();\n\n            while (index > -1 && index < choices.length) {\n                index += delta;\n                var choice = $(choices[index]);\n                if (choice.hasClass(\"select2-result-selectable\") && !choice.hasClass(\"select2-disabled\") && !choice.hasClass(\"select2-selected\")) {\n                    this.highlight(index);\n                    break;\n                }\n            }\n        },\n\n        // abstract\n        highlight: function (index) {\n            var choices = this.findHighlightableChoices(),\n                choice,\n                data;\n\n            if (arguments.length === 0) {\n                return indexOf(choices.filter(\".select2-highlighted\")[0], choices.get());\n            }\n\n            if (index >= choices.length) index = choices.length - 1;\n            if (index < 0) index = 0;\n\n            this.removeHighlight();\n\n            choice = $(choices[index]);\n            choice.addClass(\"select2-highlighted\");\n\n            // ensure assistive technology can determine the active choice\n            this.search.attr(\"aria-activedescendant\", choice.find(\".select2-result-label\").attr(\"id\"));\n\n            this.ensureHighlightVisible();\n\n            this.liveRegion.text(choice.text());\n\n            data = choice.data(\"select2-data\");\n            if (data) {\n                this.opts.element.trigger({ type: \"select2-highlight\", val: this.id(data), choice: data });\n            }\n        },\n\n        removeHighlight: function() {\n            this.results.find(\".select2-highlighted\").removeClass(\"select2-highlighted\");\n        },\n\n        touchMoved: function() {\n            this._touchMoved = true;\n        },\n\n        clearTouchMoved: function() {\n          this._touchMoved = false;\n        },\n\n        // abstract\n        countSelectableResults: function() {\n            return this.findHighlightableChoices().length;\n        },\n\n        // abstract\n        highlightUnderEvent: function (event) {\n            var el = $(event.target).closest(\".select2-result-selectable\");\n            if (el.length > 0 && !el.is(\".select2-highlighted\")) {\n                var choices = this.findHighlightableChoices();\n                this.highlight(choices.index(el));\n            } else if (el.length == 0) {\n                // if we are over an unselectable item remove all highlights\n                this.removeHighlight();\n            }\n        },\n\n        // abstract\n        loadMoreIfNeeded: function () {\n            var results = this.results,\n                more = results.find(\"li.select2-more-results\"),\n                below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible\n                page = this.resultsPage + 1,\n                self=this,\n                term=this.search.val(),\n                context=this.context;\n\n            if (more.length === 0) return;\n            below = more.offset().top - results.offset().top - results.height();\n\n            if (below <= this.opts.loadMorePadding) {\n                more.addClass(\"select2-active\");\n                this.opts.query({\n                        element: this.opts.element,\n                        term: term,\n                        page: page,\n                        context: context,\n                        matcher: this.opts.matcher,\n                        callback: this.bind(function (data) {\n\n                    // ignore a response if the select2 has been closed before it was received\n                    if (!self.opened()) return;\n\n\n                    self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});\n                    self.postprocessResults(data, false, false);\n\n                    if (data.more===true) {\n                        more.detach().appendTo(results).text(evaluate(self.opts.formatLoadMore, self.opts.element, page+1));\n                        window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                    } else {\n                        more.remove();\n                    }\n                    self.positionDropdown();\n                    self.resultsPage = page;\n                    self.context = data.context;\n                    this.opts.element.trigger({ type: \"select2-loaded\", items: data });\n                })});\n            }\n        },\n\n        /**\n         * Default tokenizer function which does nothing\n         */\n        tokenize: function() {\n\n        },\n\n        /**\n         * @param initial whether or not this is the call to this method right after the dropdown has been opened\n         */\n        // abstract\n        updateResults: function (initial) {\n            var search = this.search,\n                results = this.results,\n                opts = this.opts,\n                data,\n                self = this,\n                input,\n                term = search.val(),\n                lastTerm = $.data(this.container, \"select2-last-term\"),\n                // sequence number used to drop out-of-order responses\n                queryNumber;\n\n            // prevent duplicate queries against the same term\n            if (initial !== true && lastTerm && equal(term, lastTerm)) return;\n\n            $.data(this.container, \"select2-last-term\", term);\n\n            // if the search is currently hidden we do not alter the results\n            if (initial !== true && (this.showSearchInput === false || !this.opened())) {\n                return;\n            }\n\n            function postRender() {\n                search.removeClass(\"select2-active\");\n                self.positionDropdown();\n                if (results.find('.select2-no-results,.select2-selection-limit,.select2-searching').length) {\n                    self.liveRegion.text(results.text());\n                }\n                else {\n                    self.liveRegion.text(self.opts.formatMatches(results.find('.select2-result-selectable').length));\n                }\n            }\n\n            function render(html) {\n                results.html(html);\n                postRender();\n            }\n\n            queryNumber = ++this.queryCount;\n\n            var maxSelSize = this.getMaximumSelectionSize();\n            if (maxSelSize >=1) {\n                data = this.data();\n                if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, \"formatSelectionTooBig\")) {\n                    render(\"<li class='select2-selection-limit'>\" + evaluate(opts.formatSelectionTooBig, opts.element, maxSelSize) + \"</li>\");\n                    return;\n                }\n            }\n\n            if (search.val().length < opts.minimumInputLength) {\n                if (checkFormatter(opts.formatInputTooShort, \"formatInputTooShort\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatInputTooShort, opts.element, search.val(), opts.minimumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                if (initial && this.showSearch) this.showSearch(true);\n                return;\n            }\n\n            if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {\n                if (checkFormatter(opts.formatInputTooLong, \"formatInputTooLong\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatInputTooLong, opts.element, search.val(), opts.maximumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                return;\n            }\n\n            if (opts.formatSearching && this.findHighlightableChoices().length === 0) {\n                render(\"<li class='select2-searching'>\" + evaluate(opts.formatSearching, opts.element) + \"</li>\");\n            }\n\n            search.addClass(\"select2-active\");\n\n            this.removeHighlight();\n\n            // give the tokenizer a chance to pre-process the input\n            input = this.tokenize();\n            if (input != undefined && input != null) {\n                search.val(input);\n            }\n\n            this.resultsPage = 1;\n\n            opts.query({\n                element: opts.element,\n                    term: search.val(),\n                    page: this.resultsPage,\n                    context: null,\n                    matcher: opts.matcher,\n                    callback: this.bind(function (data) {\n                var def; // default choice\n\n                // ignore old responses\n                if (queryNumber != this.queryCount) {\n                  return;\n                }\n\n                // ignore a response if the select2 has been closed before it was received\n                if (!this.opened()) {\n                    this.search.removeClass(\"select2-active\");\n                    return;\n                }\n\n                // handle ajax error\n                if(data.hasError !== undefined && checkFormatter(opts.formatAjaxError, \"formatAjaxError\")) {\n                    render(\"<li class='select2-ajax-error'>\" + evaluate(opts.formatAjaxError, opts.element, data.jqXHR, data.textStatus, data.errorThrown) + \"</li>\");\n                    return;\n                }\n\n                // save context, if any\n                this.context = (data.context===undefined) ? null : data.context;\n                // create a default choice and prepend it to the list\n                if (this.opts.createSearchChoice && search.val() !== \"\") {\n                    def = this.opts.createSearchChoice.call(self, search.val(), data.results);\n                    if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {\n                        if ($(data.results).filter(\n                            function () {\n                                return equal(self.id(this), self.id(def));\n                            }).length === 0) {\n                            this.opts.createSearchChoicePosition(data.results, def);\n                        }\n                    }\n                }\n\n                if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, \"formatNoMatches\")) {\n                    render(\"<li class='select2-no-results'>\" + evaluate(opts.formatNoMatches, opts.element, search.val()) + \"</li>\");\n                    return;\n                }\n\n                results.empty();\n                self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});\n\n                if (data.more === true && checkFormatter(opts.formatLoadMore, \"formatLoadMore\")) {\n                    results.append(\"<li class='select2-more-results'>\" + opts.escapeMarkup(evaluate(opts.formatLoadMore, opts.element, this.resultsPage)) + \"</li>\");\n                    window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                }\n\n                this.postprocessResults(data, initial);\n\n                postRender();\n\n                this.opts.element.trigger({ type: \"select2-loaded\", items: data });\n            })});\n        },\n\n        // abstract\n        cancel: function () {\n            this.close();\n        },\n\n        // abstract\n        blur: function () {\n            // if selectOnBlur == true, select the currently highlighted option\n            if (this.opts.selectOnBlur)\n                this.selectHighlighted({noFocus: true});\n\n            this.close();\n            this.container.removeClass(\"select2-container-active\");\n            // synonymous to .is(':focus'), which is available in jquery >= 1.6\n            if (this.search[0] === document.activeElement) { this.search.blur(); }\n            this.clearSearch();\n            this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n        },\n\n        // abstract\n        focusSearch: function () {\n            focus(this.search);\n        },\n\n        // abstract\n        selectHighlighted: function (options) {\n            if (this._touchMoved) {\n              this.clearTouchMoved();\n              return;\n            }\n            var index=this.highlight(),\n                highlighted=this.results.find(\".select2-highlighted\"),\n                data = highlighted.closest('.select2-result').data(\"select2-data\");\n\n            if (data) {\n                this.highlight(index);\n                this.onSelect(data, options);\n            } else if (options && options.noFocus) {\n                this.close();\n            }\n        },\n\n        // abstract\n        getPlaceholder: function () {\n            var placeholderOption;\n            return this.opts.element.attr(\"placeholder\") ||\n                this.opts.element.attr(\"data-placeholder\") || // jquery 1.4 compat\n                this.opts.element.data(\"placeholder\") ||\n                this.opts.placeholder ||\n                ((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined);\n        },\n\n        // abstract\n        getPlaceholderOption: function() {\n            if (this.select) {\n                var firstOption = this.select.children('option').first();\n                if (this.opts.placeholderOption !== undefined ) {\n                    //Determine the placeholder option based on the specified placeholderOption setting\n                    return (this.opts.placeholderOption === \"first\" && firstOption) ||\n                           (typeof this.opts.placeholderOption === \"function\" && this.opts.placeholderOption(this.select));\n                } else if ($.trim(firstOption.text()) === \"\" && firstOption.val() === \"\") {\n                    //No explicit placeholder option specified, use the first if it's blank\n                    return firstOption;\n                }\n            }\n        },\n\n        /**\n         * Get the desired width for the container element.  This is\n         * derived first from option `width` passed to select2, then\n         * the inline 'style' on the original element, and finally\n         * falls back to the jQuery calculated element width.\n         */\n        // abstract\n        initContainerWidth: function () {\n            function resolveContainerWidth() {\n                var style, attrs, matches, i, l, attr;\n\n                if (this.opts.width === \"off\") {\n                    return null;\n                } else if (this.opts.width === \"element\"){\n                    return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';\n                } else if (this.opts.width === \"copy\" || this.opts.width === \"resolve\") {\n                    // check if there is inline style on the element that contains width\n                    style = this.opts.element.attr('style');\n                    if (style !== undefined) {\n                        attrs = style.split(';');\n                        for (i = 0, l = attrs.length; i < l; i = i + 1) {\n                            attr = attrs[i].replace(/\\s/g, '');\n                            matches = attr.match(/^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);\n                            if (matches !== null && matches.length >= 1)\n                                return matches[1];\n                        }\n                    }\n\n                    if (this.opts.width === \"resolve\") {\n                        // next check if css('width') can resolve a width that is percent based, this is sometimes possible\n                        // when attached to input type=hidden or elements hidden via css\n                        style = this.opts.element.css('width');\n                        if (style.indexOf(\"%\") > 0) return style;\n\n                        // finally, fallback on the calculated width of the element\n                        return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');\n                    }\n\n                    return null;\n                } else if ($.isFunction(this.opts.width)) {\n                    return this.opts.width();\n                } else {\n                    return this.opts.width;\n               }\n            };\n\n            var width = resolveContainerWidth.call(this);\n            if (width !== null) {\n                this.container.css(\"width\", width);\n            }\n        }\n    });\n\n    SingleSelect2 = clazz(AbstractSelect2, {\n\n        // single\n\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container\"\n            }).html([\n                \"<a href='javascript:void(0)' class='select2-choice' tabindex='-1'>\",\n                \"   <span class='select2-chosen'>&#160;</span><abbr class='select2-search-choice-close'></abbr>\",\n                \"   <span class='select2-arrow' role='presentation'><b role='presentation'></b></span>\",\n                \"</a>\",\n                \"<label for='' class='select2-offscreen'></label>\",\n                \"<input class='select2-focusser select2-offscreen' type='text' aria-haspopup='true' role='button' />\",\n                \"<div class='select2-drop select2-display-none'>\",\n                \"   <div class='select2-search'>\",\n                \"       <label for='' class='select2-offscreen'></label>\",\n                \"       <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input' role='combobox' aria-expanded='true'\",\n                \"       aria-autocomplete='list' />\",\n                \"   </div>\",\n                \"   <ul class='select2-results' role='listbox'>\",\n                \"   </ul>\",\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // single\n        enableInterface: function() {\n            if (this.parent.enableInterface.apply(this, arguments)) {\n                this.focusser.prop(\"disabled\", !this.isInterfaceEnabled());\n            }\n        },\n\n        // single\n        opening: function () {\n            var el, range, len;\n\n            if (this.opts.minimumResultsForSearch >= 0) {\n                this.showSearch(true);\n            }\n\n            this.parent.opening.apply(this, arguments);\n\n            if (this.showSearchInput !== false) {\n                // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range\n                // all other browsers handle this just fine\n\n                this.search.val(this.focusser.val());\n            }\n            if (this.opts.shouldFocusInput(this)) {\n                this.search.focus();\n                // move the cursor to the end after focussing, otherwise it will be at the beginning and\n                // new text will appear *before* focusser.val()\n                el = this.search.get(0);\n                if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                } else if (el.setSelectionRange) {\n                    len = this.search.val().length;\n                    el.setSelectionRange(len, len);\n                }\n            }\n\n            // initializes search's value with nextSearchTerm (if defined by user)\n            // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter\n            if(this.search.val() === \"\") {\n                if(this.nextSearchTerm != undefined){\n                    this.search.val(this.nextSearchTerm);\n                    this.search.select();\n                }\n            }\n\n            this.focusser.prop(\"disabled\", true).val(\"\");\n            this.updateResults(true);\n            this.opts.element.trigger($.Event(\"select2-open\"));\n        },\n\n        // single\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n\n            this.focusser.prop(\"disabled\", false);\n\n            if (this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        focus: function () {\n            if (this.opened()) {\n                this.close();\n            } else {\n                this.focusser.prop(\"disabled\", false);\n                if (this.opts.shouldFocusInput(this)) {\n                    this.focusser.focus();\n                }\n            }\n        },\n\n        // single\n        isFocused: function () {\n            return this.container.hasClass(\"select2-container-active\");\n        },\n\n        // single\n        cancel: function () {\n            this.parent.cancel.apply(this, arguments);\n            this.focusser.prop(\"disabled\", false);\n\n            if (this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        destroy: function() {\n            $(\"label[for='\" + this.focusser.attr('id') + \"']\")\n                .attr('for', this.opts.element.attr(\"id\"));\n            this.parent.destroy.apply(this, arguments);\n\n            cleanupJQueryElements.call(this,\n                \"selection\",\n                \"focusser\"\n            );\n        },\n\n        // single\n        initContainer: function () {\n\n            var selection,\n                container = this.container,\n                dropdown = this.dropdown,\n                idSuffix = nextUid(),\n                elementLabel;\n\n            if (this.opts.minimumResultsForSearch < 0) {\n                this.showSearch(false);\n            } else {\n                this.showSearch(true);\n            }\n\n            this.selection = selection = container.find(\".select2-choice\");\n\n            this.focusser = container.find(\".select2-focusser\");\n\n            // add aria associations\n            selection.find(\".select2-chosen\").attr(\"id\", \"select2-chosen-\"+idSuffix);\n            this.focusser.attr(\"aria-labelledby\", \"select2-chosen-\"+idSuffix);\n            this.results.attr(\"id\", \"select2-results-\"+idSuffix);\n            this.search.attr(\"aria-owns\", \"select2-results-\"+idSuffix);\n\n            // rewrite labels from original element to focusser\n            this.focusser.attr(\"id\", \"s2id_autogen\"+idSuffix);\n\n            elementLabel = $(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\");\n\n            this.focusser.prev()\n                .text(elementLabel.text())\n                .attr('for', this.focusser.attr('id'));\n\n            // Ensure the original element retains an accessible name\n            var originalTitle = this.opts.element.attr(\"title\");\n            this.opts.element.attr(\"title\", (originalTitle || elementLabel.text()));\n\n            this.focusser.attr(\"tabindex\", this.elementTabIndex);\n\n            // write label for search field using the label from the focusser element\n            this.search.attr(\"id\", this.focusser.attr('id') + '_search');\n\n            this.search.prev()\n                .text($(\"label[for='\" + this.focusser.attr('id') + \"']\").text())\n                .attr('for', this.search.attr('id'));\n\n            this.search.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                // filter 229 keyCodes (input method editor is processing key input)\n                if (229 == e.keyCode) return;\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                    return;\n                }\n\n                switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                        this.selectHighlighted({noFocus: true});\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                }\n            }));\n\n            this.search.on(\"blur\", this.bind(function(e) {\n                // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.\n                // without this the search field loses focus which is annoying\n                if (document.activeElement === this.body.get(0)) {\n                    window.setTimeout(this.bind(function() {\n                        if (this.opened()) {\n                            this.search.focus();\n                        }\n                    }), 0);\n                }\n            }));\n\n            this.focusser.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DOWN || e.which == KEY.UP\n                    || (e.which == KEY.ENTER && this.opts.openOnEnter)) {\n\n                    if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;\n\n                    this.open();\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {\n                    if (this.opts.allowClear) {\n                        this.clear();\n                    }\n                    killEvent(e);\n                    return;\n                }\n            }));\n\n\n            installKeyUpChangeEvent(this.focusser);\n            this.focusser.on(\"keyup-change input\", this.bind(function(e) {\n                if (this.opts.minimumResultsForSearch >= 0) {\n                    e.stopPropagation();\n                    if (this.opened()) return;\n                    this.open();\n                }\n            }));\n\n            selection.on(\"mousedown touchstart\", \"abbr\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n                this.clear();\n                killEventImmediately(e);\n                this.close();\n                this.selection.focus();\n            }));\n\n            selection.on(\"mousedown touchstart\", this.bind(function (e) {\n                // Prevent IE from generating a click event on the body\n                reinsertElement(selection);\n\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n\n                if (this.opened()) {\n                    this.close();\n                } else if (this.isInterfaceEnabled()) {\n                    this.open();\n                }\n\n                killEvent(e);\n            }));\n\n            dropdown.on(\"mousedown touchstart\", this.bind(function() {\n                if (this.opts.shouldFocusInput(this)) {\n                    this.search.focus();\n                }\n            }));\n\n            selection.on(\"focus\", this.bind(function(e) {\n                killEvent(e);\n            }));\n\n            this.focusser.on(\"focus\", this.bind(function(){\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n            })).on(\"blur\", this.bind(function() {\n                if (!this.opened()) {\n                    this.container.removeClass(\"select2-container-active\");\n                    this.opts.element.trigger($.Event(\"select2-blur\"));\n                }\n            }));\n            this.search.on(\"focus\", this.bind(function(){\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n            }));\n\n            this.initContainerWidth();\n            this.opts.element.addClass(\"select2-offscreen\");\n            this.setPlaceholder();\n\n        },\n\n        // single\n        clear: function(triggerChange) {\n            var data=this.selection.data(\"select2-data\");\n            if (data) { // guard against queued quick consecutive clicks\n                var evt = $.Event(\"select2-clearing\");\n                this.opts.element.trigger(evt);\n                if (evt.isDefaultPrevented()) {\n                    return;\n                }\n                var placeholderOption = this.getPlaceholderOption();\n                this.opts.element.val(placeholderOption ? placeholderOption.val() : \"\");\n                this.selection.find(\".select2-chosen\").empty();\n                this.selection.removeData(\"select2-data\");\n                this.setPlaceholder();\n\n                if (triggerChange !== false){\n                    this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n                    this.triggerChange({removed:data});\n                }\n            }\n        },\n\n        /**\n         * Sets selection based on source element's value\n         */\n        // single\n        initSelection: function () {\n            var selected;\n            if (this.isPlaceholderOptionSelected()) {\n                this.updateSelection(null);\n                this.close();\n                this.setPlaceholder();\n            } else {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(selected){\n                    if (selected !== undefined && selected !== null) {\n                        self.updateSelection(selected);\n                        self.close();\n                        self.setPlaceholder();\n                        self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val());\n                    }\n                });\n            }\n        },\n\n        isPlaceholderOptionSelected: function() {\n            var placeholderOption;\n            if (this.getPlaceholder() === undefined) return false; // no placeholder specified so no option should be considered\n            return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop(\"selected\"))\n                || (this.opts.element.val() === \"\")\n                || (this.opts.element.val() === undefined)\n                || (this.opts.element.val() === null);\n        },\n\n        // single\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments),\n                self=this;\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n                    var selected = element.find(\"option\").filter(function() { return this.selected && !this.disabled });\n                    // a single select box always has a value, no need to null check 'selected'\n                    callback(self.optionToData(selected));\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var id = element.val();\n                    //search in data by id, storing the actual matching item\n                    var match = null;\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = equal(id, opts.id(el));\n                            if (is_match) {\n                                match = el;\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            callback(match);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // single\n        getPlaceholder: function() {\n            // if a placeholder is specified on a single select without a valid placeholder option ignore it\n            if (this.select) {\n                if (this.getPlaceholderOption() === undefined) {\n                    return undefined;\n                }\n            }\n\n            return this.parent.getPlaceholder.apply(this, arguments);\n        },\n\n        // single\n        setPlaceholder: function () {\n            var placeholder = this.getPlaceholder();\n\n            if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {\n\n                // check for a placeholder option if attached to a select\n                if (this.select && this.getPlaceholderOption() === undefined) return;\n\n                this.selection.find(\".select2-chosen\").html(this.opts.escapeMarkup(placeholder));\n\n                this.selection.addClass(\"select2-default\");\n\n                this.container.removeClass(\"select2-allowclear\");\n            }\n        },\n\n        // single\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var selected = 0, self = this, showSearchInput = true;\n\n            // find the selected element in the result list\n\n            this.findHighlightableChoices().each2(function (i, elm) {\n                if (equal(self.id(elm.data(\"select2-data\")), self.opts.element.val())) {\n                    selected = i;\n                    return false;\n                }\n            });\n\n            // and highlight it\n            if (noHighlightUpdate !== false) {\n                if (initial === true && selected >= 0) {\n                    this.highlight(selected);\n                } else {\n                    this.highlight(0);\n                }\n            }\n\n            // hide the search box if this is the first we got the results and there are enough of them for search\n\n            if (initial === true) {\n                var min = this.opts.minimumResultsForSearch;\n                if (min >= 0) {\n                    this.showSearch(countResults(data.results) >= min);\n                }\n            }\n        },\n\n        // single\n        showSearch: function(showSearchInput) {\n            if (this.showSearchInput === showSearchInput) return;\n\n            this.showSearchInput = showSearchInput;\n\n            this.dropdown.find(\".select2-search\").toggleClass(\"select2-search-hidden\", !showSearchInput);\n            this.dropdown.find(\".select2-search\").toggleClass(\"select2-offscreen\", !showSearchInput);\n            //add \"select2-with-searchbox\" to the container if search box is shown\n            $(this.dropdown, this.container).toggleClass(\"select2-with-searchbox\", showSearchInput);\n        },\n\n        // single\n        onSelect: function (data, options) {\n\n            if (!this.triggerSelect(data)) { return; }\n\n            var old = this.opts.element.val(),\n                oldData = this.data();\n\n            this.opts.element.val(this.id(data));\n            this.updateSelection(data);\n\n            this.opts.element.trigger({ type: \"select2-selected\", val: this.id(data), choice: data });\n\n            this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());\n            this.close();\n\n            if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) {\n                this.focusser.focus();\n            }\n\n            if (!equal(old, this.id(data))) {\n                this.triggerChange({ added: data, removed: oldData });\n            }\n        },\n\n        // single\n        updateSelection: function (data) {\n\n            var container=this.selection.find(\".select2-chosen\"), formatted, cssClass;\n\n            this.selection.data(\"select2-data\", data);\n\n            container.empty();\n            if (data !== null) {\n                formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);\n            }\n            if (formatted !== undefined) {\n                container.append(formatted);\n            }\n            cssClass=this.opts.formatSelectionCssClass(data, container);\n            if (cssClass !== undefined) {\n                container.addClass(cssClass);\n            }\n\n            this.selection.removeClass(\"select2-default\");\n\n            if (this.opts.allowClear && this.getPlaceholder() !== undefined) {\n                this.container.addClass(\"select2-allowclear\");\n            }\n        },\n\n        // single\n        val: function () {\n            var val,\n                triggerChange = false,\n                data = null,\n                self = this,\n                oldData = this.data();\n\n            if (arguments.length === 0) {\n                return this.opts.element.val();\n            }\n\n            val = arguments[0];\n\n            if (arguments.length > 1) {\n                triggerChange = arguments[1];\n            }\n\n            if (this.select) {\n                this.select\n                    .val(val)\n                    .find(\"option\").filter(function() { return this.selected }).each2(function (i, elm) {\n                        data = self.optionToData(elm);\n                        return false;\n                    });\n                this.updateSelection(data);\n                this.setPlaceholder();\n                if (triggerChange) {\n                    this.triggerChange({added: data, removed:oldData});\n                }\n            } else {\n                // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n                if (!val && val !== 0) {\n                    this.clear(triggerChange);\n                    return;\n                }\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"cannot call val() if initSelection() is not defined\");\n                }\n                this.opts.element.val(val);\n                this.opts.initSelection(this.opts.element, function(data){\n                    self.opts.element.val(!data ? \"\" : self.id(data));\n                    self.updateSelection(data);\n                    self.setPlaceholder();\n                    if (triggerChange) {\n                        self.triggerChange({added: data, removed:oldData});\n                    }\n                });\n            }\n        },\n\n        // single\n        clearSearch: function () {\n            this.search.val(\"\");\n            this.focusser.val(\"\");\n        },\n\n        // single\n        data: function(value) {\n            var data,\n                triggerChange = false;\n\n            if (arguments.length === 0) {\n                data = this.selection.data(\"select2-data\");\n                if (data == undefined) data = null;\n                return data;\n            } else {\n                if (arguments.length > 1) {\n                    triggerChange = arguments[1];\n                }\n                if (!value) {\n                    this.clear(triggerChange);\n                } else {\n                    data = this.data();\n                    this.opts.element.val(!value ? \"\" : this.id(value));\n                    this.updateSelection(value);\n                    if (triggerChange) {\n                        this.triggerChange({added: value, removed:data});\n                    }\n                }\n            }\n        }\n    });\n\n    MultiSelect2 = clazz(AbstractSelect2, {\n\n        // multi\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container select2-container-multi\"\n            }).html([\n                \"<ul class='select2-choices'>\",\n                \"  <li class='select2-search-field'>\",\n                \"    <label for='' class='select2-offscreen'></label>\",\n                \"    <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>\",\n                \"  </li>\",\n                \"</ul>\",\n                \"<div class='select2-drop select2-drop-multi select2-display-none'>\",\n                \"   <ul class='select2-results'>\",\n                \"   </ul>\",\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // multi\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments),\n                self=this;\n\n            // TODO validate placeholder is a string if specified\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n\n                    var data = [];\n\n                    element.find(\"option\").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) {\n                        data.push(self.optionToData(elm));\n                    });\n                    callback(data);\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var ids = splitVal(element.val(), opts.separator);\n                    //search in data by array of ids, storing matching items in a list\n                    var matches = [];\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = $.grep(ids, function(id) {\n                                return equal(id, opts.id(el));\n                            }).length;\n                            if (is_match) {\n                                matches.push(el);\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            // reorder matches based on the order they appear in the ids array because right now\n                            // they are in the order in which they appear in data array\n                            var ordered = [];\n                            for (var i = 0; i < ids.length; i++) {\n                                var id = ids[i];\n                                for (var j = 0; j < matches.length; j++) {\n                                    var match = matches[j];\n                                    if (equal(id, opts.id(match))) {\n                                        ordered.push(match);\n                                        matches.splice(j, 1);\n                                        break;\n                                    }\n                                }\n                            }\n                            callback(ordered);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // multi\n        selectChoice: function (choice) {\n\n            var selected = this.container.find(\".select2-search-choice-focus\");\n            if (selected.length && choice && choice[0] == selected[0]) {\n\n            } else {\n                if (selected.length) {\n                    this.opts.element.trigger(\"choice-deselected\", selected);\n                }\n                selected.removeClass(\"select2-search-choice-focus\");\n                if (choice && choice.length) {\n                    this.close();\n                    choice.addClass(\"select2-search-choice-focus\");\n                    this.opts.element.trigger(\"choice-selected\", choice);\n                }\n            }\n        },\n\n        // multi\n        destroy: function() {\n            $(\"label[for='\" + this.search.attr('id') + \"']\")\n                .attr('for', this.opts.element.attr(\"id\"));\n            this.parent.destroy.apply(this, arguments);\n\n            cleanupJQueryElements.call(this,\n                \"searchContainer\",\n                \"selection\"\n            );\n        },\n\n        // multi\n        initContainer: function () {\n\n            var selector = \".select2-choices\", selection;\n\n            this.searchContainer = this.container.find(\".select2-search-field\");\n            this.selection = selection = this.container.find(selector);\n\n            var _this = this;\n            this.selection.on(\"click\", \".select2-search-choice:not(.select2-locked)\", function (e) {\n                //killEvent(e);\n                _this.search[0].focus();\n                _this.selectChoice($(this));\n            });\n\n            // rewrite labels from original element to focusser\n            this.search.attr(\"id\", \"s2id_autogen\"+nextUid());\n\n            this.search.prev()\n                .text($(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\").text())\n                .attr('for', this.search.attr('id'));\n\n            this.search.on(\"input paste\", this.bind(function() {\n                if (this.search.attr('placeholder') && this.search.val().length == 0) return;\n                if (!this.isInterfaceEnabled()) return;\n                if (!this.opened()) {\n                    this.open();\n                }\n            }));\n\n            this.search.attr(\"tabindex\", this.elementTabIndex);\n\n            this.keydowns = 0;\n            this.search.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                ++this.keydowns;\n                var selected = selection.find(\".select2-search-choice-focus\");\n                var prev = selected.prev(\".select2-search-choice:not(.select2-locked)\");\n                var next = selected.next(\".select2-search-choice:not(.select2-locked)\");\n                var pos = getCursorInfo(this.search);\n\n                if (selected.length &&\n                    (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {\n                    var selectedChoice = selected;\n                    if (e.which == KEY.LEFT && prev.length) {\n                        selectedChoice = prev;\n                    }\n                    else if (e.which == KEY.RIGHT) {\n                        selectedChoice = next.length ? next : null;\n                    }\n                    else if (e.which === KEY.BACKSPACE) {\n                        if (this.unselect(selected.first())) {\n                            this.search.width(10);\n                            selectedChoice = prev.length ? prev : next;\n                        }\n                    } else if (e.which == KEY.DELETE) {\n                        if (this.unselect(selected.first())) {\n                            this.search.width(10);\n                            selectedChoice = next.length ? next : null;\n                        }\n                    } else if (e.which == KEY.ENTER) {\n                        selectedChoice = null;\n                    }\n\n                    this.selectChoice(selectedChoice);\n                    killEvent(e);\n                    if (!selectedChoice || !selectedChoice.length) {\n                        this.open();\n                    }\n                    return;\n                } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)\n                    || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {\n\n                    this.selectChoice(selection.find(\".select2-search-choice:not(.select2-locked)\").last());\n                    killEvent(e);\n                    return;\n                } else {\n                    this.selectChoice(null);\n                }\n\n                if (this.opened()) {\n                    switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                        this.selectHighlighted({noFocus:true});\n                        this.close();\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                    }\n                }\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)\n                 || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (e.which === KEY.ENTER) {\n                    if (this.opts.openOnEnter === false) {\n                        return;\n                    } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {\n                        return;\n                    }\n                }\n\n                this.open();\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                }\n\n                if (e.which === KEY.ENTER) {\n                    // prevent form from being submitted\n                    killEvent(e);\n                }\n\n            }));\n\n            this.search.on(\"keyup\", this.bind(function (e) {\n                this.keydowns = 0;\n                this.resizeSearch();\n            })\n            );\n\n            this.search.on(\"blur\", this.bind(function(e) {\n                this.container.removeClass(\"select2-container-active\");\n                this.search.removeClass(\"select2-focused\");\n                this.selectChoice(null);\n                if (!this.opened()) this.clearSearch();\n                e.stopImmediatePropagation();\n                this.opts.element.trigger($.Event(\"select2-blur\"));\n            }));\n\n            this.container.on(\"click\", selector, this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n                if ($(e.target).closest(\".select2-search-choice\").length > 0) {\n                    // clicked inside a select2 search choice, do not open\n                    return;\n                }\n                this.selectChoice(null);\n                this.clearPlaceholder();\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.open();\n                this.focusSearch();\n                e.preventDefault();\n            }));\n\n            this.container.on(\"focus\", selector, this.bind(function () {\n                if (!this.isInterfaceEnabled()) return;\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n                this.dropdown.addClass(\"select2-drop-active\");\n                this.clearPlaceholder();\n            }));\n\n            this.initContainerWidth();\n            this.opts.element.addClass(\"select2-offscreen\");\n\n            // set the placeholder if necessary\n            this.clearSearch();\n        },\n\n        // multi\n        enableInterface: function() {\n            if (this.parent.enableInterface.apply(this, arguments)) {\n                this.search.prop(\"disabled\", !this.isInterfaceEnabled());\n            }\n        },\n\n        // multi\n        initSelection: function () {\n            var data;\n            if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\n                this.updateSelection([]);\n                this.close();\n                // set the placeholder if necessary\n                this.clearSearch();\n            }\n            if (this.select || this.opts.element.val() !== \"\") {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(data){\n                    if (data !== undefined && data !== null) {\n                        self.updateSelection(data);\n                        self.close();\n                        // set the placeholder if necessary\n                        self.clearSearch();\n                    }\n                });\n            }\n        },\n\n        // multi\n        clearSearch: function () {\n            var placeholder = this.getPlaceholder(),\n                maxWidth = this.getMaxSearchWidth();\n\n            if (placeholder !== undefined  && this.getVal().length === 0 && this.search.hasClass(\"select2-focused\") === false) {\n                this.search.val(placeholder).addClass(\"select2-default\");\n                // stretch the search box to full width of the container so as much of the placeholder is visible as possible\n                // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944\n                this.search.width(maxWidth > 0 ? maxWidth : this.container.css(\"width\"));\n            } else {\n                this.search.val(\"\").width(10);\n            }\n        },\n\n        // multi\n        clearPlaceholder: function () {\n            if (this.search.hasClass(\"select2-default\")) {\n                this.search.val(\"\").removeClass(\"select2-default\");\n            }\n        },\n\n        // multi\n        opening: function () {\n            this.clearPlaceholder(); // should be done before super so placeholder is not used to search\n            this.resizeSearch();\n\n            this.parent.opening.apply(this, arguments);\n\n            this.focusSearch();\n\n            // initializes search's value with nextSearchTerm (if defined by user)\n            // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter\n            if(this.search.val() === \"\") {\n                if(this.nextSearchTerm != undefined){\n                    this.search.val(this.nextSearchTerm);\n                    this.search.select();\n                }\n            }\n\n            this.updateResults(true);\n            if (this.opts.shouldFocusInput(this)) {\n                this.search.focus();\n            }\n            this.opts.element.trigger($.Event(\"select2-open\"));\n        },\n\n        // multi\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n        },\n\n        // multi\n        focus: function () {\n            this.close();\n            this.search.focus();\n        },\n\n        // multi\n        isFocused: function () {\n            return this.search.hasClass(\"select2-focused\");\n        },\n\n        // multi\n        updateSelection: function (data) {\n            var ids = [], filtered = [], self = this;\n\n            // filter out duplicates\n            $(data).each(function () {\n                if (indexOf(self.id(this), ids) < 0) {\n                    ids.push(self.id(this));\n                    filtered.push(this);\n                }\n            });\n            data = filtered;\n\n            this.selection.find(\".select2-search-choice\").remove();\n            $(data).each(function () {\n                self.addSelectedChoice(this);\n            });\n            self.postprocessResults();\n        },\n\n        // multi\n        tokenize: function() {\n            var input = this.search.val();\n            input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);\n            if (input != null && input != undefined) {\n                this.search.val(input);\n                if (input.length > 0) {\n                    this.open();\n                }\n            }\n\n        },\n\n        // multi\n        onSelect: function (data, options) {\n\n            if (!this.triggerSelect(data) || data.text === \"\") { return; }\n\n            this.addSelectedChoice(data);\n\n            this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\n\n            // keep track of the search's value before it gets cleared\n            this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());\n\n            this.clearSearch();\n            this.updateResults();\n\n            if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);\n\n            if (this.opts.closeOnSelect) {\n                this.close();\n                this.search.width(10);\n            } else {\n                if (this.countSelectableResults()>0) {\n                    this.search.width(10);\n                    this.resizeSearch();\n                    if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {\n                        // if we reached max selection size repaint the results so choices\n                        // are replaced with the max selection reached message\n                        this.updateResults(true);\n                    } else {\n                        // initializes search's value with nextSearchTerm and update search result\n                        if(this.nextSearchTerm != undefined){\n                            this.search.val(this.nextSearchTerm);\n                            this.updateResults();\n                            this.search.select();\n                        }\n                    }\n                    this.positionDropdown();\n                } else {\n                    // if nothing left to select close\n                    this.close();\n                    this.search.width(10);\n                }\n            }\n\n            // since its not possible to select an element that has already been\n            // added we do not need to check if this is a new element before firing change\n            this.triggerChange({ added: data });\n\n            if (!options || !options.noFocus)\n                this.focusSearch();\n        },\n\n        // multi\n        cancel: function () {\n            this.close();\n            this.focusSearch();\n        },\n\n        addSelectedChoice: function (data) {\n            var enableChoice = !data.locked,\n                enabledItem = $(\n                    \"<li class='select2-search-choice'>\" +\n                    \"    <div></div>\" +\n                    \"    <a href='#' class='select2-search-choice-close' tabindex='-1'></a>\" +\n                    \"</li>\"),\n                disabledItem = $(\n                    \"<li class='select2-search-choice select2-locked'>\" +\n                    \"<div></div>\" +\n                    \"</li>\");\n            var choice = enableChoice ? enabledItem : disabledItem,\n                id = this.id(data),\n                val = this.getVal(),\n                formatted,\n                cssClass;\n\n            formatted=this.opts.formatSelection(data, choice.find(\"div\"), this.opts.escapeMarkup);\n            if (formatted != undefined) {\n                choice.find(\"div\").replaceWith(\"<div>\"+formatted+\"</div>\");\n            }\n            cssClass=this.opts.formatSelectionCssClass(data, choice.find(\"div\"));\n            if (cssClass != undefined) {\n                choice.addClass(cssClass);\n            }\n\n            if(enableChoice){\n              choice.find(\".select2-search-choice-close\")\n                  .on(\"mousedown\", killEvent)\n                  .on(\"click dblclick\", this.bind(function (e) {\n                  if (!this.isInterfaceEnabled()) return;\n\n                  this.unselect($(e.target));\n                  this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n                  killEvent(e);\n                  this.close();\n                  this.focusSearch();\n              })).on(\"focus\", this.bind(function () {\n                  if (!this.isInterfaceEnabled()) return;\n                  this.container.addClass(\"select2-container-active\");\n                  this.dropdown.addClass(\"select2-drop-active\");\n              }));\n            }\n\n            choice.data(\"select2-data\", data);\n            choice.insertBefore(this.searchContainer);\n\n            val.push(id);\n            this.setVal(val);\n        },\n\n        // multi\n        unselect: function (selected) {\n            var val = this.getVal(),\n                data,\n                index;\n            selected = selected.closest(\".select2-search-choice\");\n\n            if (selected.length === 0) {\n                throw \"Invalid argument: \" + selected + \". Must be .select2-search-choice\";\n            }\n\n            data = selected.data(\"select2-data\");\n\n            if (!data) {\n                // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued\n                // and invoked on an element already removed\n                return;\n            }\n\n            var evt = $.Event(\"select2-removing\");\n            evt.val = this.id(data);\n            evt.choice = data;\n            this.opts.element.trigger(evt);\n\n            if (evt.isDefaultPrevented()) {\n                return false;\n            }\n\n            while((index = indexOf(this.id(data), val)) >= 0) {\n                val.splice(index, 1);\n                this.setVal(val);\n                if (this.select) this.postprocessResults();\n            }\n\n            selected.remove();\n\n            this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n            this.triggerChange({ removed: data });\n\n            return true;\n        },\n\n        // multi\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var val = this.getVal(),\n                choices = this.results.find(\".select2-result\"),\n                compound = this.results.find(\".select2-result-with-children\"),\n                self = this;\n\n            choices.each2(function (i, choice) {\n                var id = self.id(choice.data(\"select2-data\"));\n                if (indexOf(id, val) >= 0) {\n                    choice.addClass(\"select2-selected\");\n                    // mark all children of the selected parent as selected\n                    choice.find(\".select2-result-selectable\").addClass(\"select2-selected\");\n                }\n            });\n\n            compound.each2(function(i, choice) {\n                // hide an optgroup if it doesn't have any selectable children\n                if (!choice.is('.select2-result-selectable')\n                    && choice.find(\".select2-result-selectable:not(.select2-selected)\").length === 0) {\n                    choice.addClass(\"select2-selected\");\n                }\n            });\n\n            if (this.highlight() == -1 && noHighlightUpdate !== false){\n                self.highlight(0);\n            }\n\n            //If all results are chosen render formatNoMatches\n            if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){\n                if(!data || data && !data.more && this.results.find(\".select2-no-results\").length === 0) {\n                    if (checkFormatter(self.opts.formatNoMatches, \"formatNoMatches\")) {\n                        this.results.append(\"<li class='select2-no-results'>\" + evaluate(self.opts.formatNoMatches, self.opts.element, self.search.val()) + \"</li>\");\n                    }\n                }\n            }\n\n        },\n\n        // multi\n        getMaxSearchWidth: function() {\n            return this.selection.width() - getSideBorderPadding(this.search);\n        },\n\n        // multi\n        resizeSearch: function () {\n            var minimumWidth, left, maxWidth, containerLeft, searchWidth,\n                sideBorderPadding = getSideBorderPadding(this.search);\n\n            minimumWidth = measureTextWidth(this.search) + 10;\n\n            left = this.search.offset().left;\n\n            maxWidth = this.selection.width();\n            containerLeft = this.selection.offset().left;\n\n            searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;\n\n            if (searchWidth < minimumWidth) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth < 40) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth <= 0) {\n              searchWidth = minimumWidth;\n            }\n\n            this.search.width(Math.floor(searchWidth));\n        },\n\n        // multi\n        getVal: function () {\n            var val;\n            if (this.select) {\n                val = this.select.val();\n                return val === null ? [] : val;\n            } else {\n                val = this.opts.element.val();\n                return splitVal(val, this.opts.separator);\n            }\n        },\n\n        // multi\n        setVal: function (val) {\n            var unique;\n            if (this.select) {\n                this.select.val(val);\n            } else {\n                unique = [];\n                // filter out duplicates\n                $(val).each(function () {\n                    if (indexOf(this, unique) < 0) unique.push(this);\n                });\n                this.opts.element.val(unique.length === 0 ? \"\" : unique.join(this.opts.separator));\n            }\n        },\n\n        // multi\n        buildChangeDetails: function (old, current) {\n            var current = current.slice(0),\n                old = old.slice(0);\n\n            // remove intersection from each array\n            for (var i = 0; i < current.length; i++) {\n                for (var j = 0; j < old.length; j++) {\n                    if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {\n                        current.splice(i, 1);\n                        if(i>0){\n                        \ti--;\n                        }\n                        old.splice(j, 1);\n                        j--;\n                    }\n                }\n            }\n\n            return {added: current, removed: old};\n        },\n\n\n        // multi\n        val: function (val, triggerChange) {\n            var oldData, self=this;\n\n            if (arguments.length === 0) {\n                return this.getVal();\n            }\n\n            oldData=this.data();\n            if (!oldData.length) oldData=[];\n\n            // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n            if (!val && val !== 0) {\n                this.opts.element.val(\"\");\n                this.updateSelection([]);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange({added: this.data(), removed: oldData});\n                }\n                return;\n            }\n\n            // val is a list of ids\n            this.setVal(val);\n\n            if (this.select) {\n                this.opts.initSelection(this.select, this.bind(this.updateSelection));\n                if (triggerChange) {\n                    this.triggerChange(this.buildChangeDetails(oldData, this.data()));\n                }\n            } else {\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"val() cannot be called if initSelection() is not defined\");\n                }\n\n                this.opts.initSelection(this.opts.element, function(data){\n                    var ids=$.map(data, self.id);\n                    self.setVal(ids);\n                    self.updateSelection(data);\n                    self.clearSearch();\n                    if (triggerChange) {\n                        self.triggerChange(self.buildChangeDetails(oldData, self.data()));\n                    }\n                });\n            }\n            this.clearSearch();\n        },\n\n        // multi\n        onSortStart: function() {\n            if (this.select) {\n                throw new Error(\"Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.\");\n            }\n\n            // collapse search field into 0 width so its container can be collapsed as well\n            this.search.width(0);\n            // hide the container\n            this.searchContainer.hide();\n        },\n\n        // multi\n        onSortEnd:function() {\n\n            var val=[], self=this;\n\n            // show search and move it to the end of the list\n            this.searchContainer.show();\n            // make sure the search container is the last item in the list\n            this.searchContainer.appendTo(this.searchContainer.parent());\n            // since we collapsed the width in dragStarted, we resize it here\n            this.resizeSearch();\n\n            // update selection\n            this.selection.find(\".select2-search-choice\").each(function() {\n                val.push(self.opts.id($(this).data(\"select2-data\")));\n            });\n            this.setVal(val);\n            this.triggerChange();\n        },\n\n        // multi\n        data: function(values, triggerChange) {\n            var self=this, ids, old;\n            if (arguments.length === 0) {\n                 return this.selection\n                     .children(\".select2-search-choice\")\n                     .map(function() { return $(this).data(\"select2-data\"); })\n                     .get();\n            } else {\n                old = this.data();\n                if (!values) { values = []; }\n                ids = $.map(values, function(e) { return self.opts.id(e); });\n                this.setVal(ids);\n                this.updateSelection(values);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange(this.buildChangeDetails(old, this.data()));\n                }\n            }\n        }\n    });\n\n    $.fn.select2 = function () {\n\n        var args = Array.prototype.slice.call(arguments, 0),\n            opts,\n            select2,\n            method, value, multiple,\n            allowedMethods = [\"val\", \"destroy\", \"opened\", \"open\", \"close\", \"focus\", \"isFocused\", \"container\", \"dropdown\", \"onSortStart\", \"onSortEnd\", \"enable\", \"disable\", \"readonly\", \"positionDropdown\", \"data\", \"search\"],\n            valueMethods = [\"opened\", \"isFocused\", \"container\", \"dropdown\"],\n            propertyMethods = [\"val\", \"data\"],\n            methodsMap = { search: \"externalSearch\" };\n\n        this.each(function () {\n            if (args.length === 0 || typeof(args[0]) === \"object\") {\n                opts = args.length === 0 ? {} : $.extend({}, args[0]);\n                opts.element = $(this);\n\n                if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                    multiple = opts.element.prop(\"multiple\");\n                } else {\n                    multiple = opts.multiple || false;\n                    if (\"tags\" in opts) {opts.multiple = multiple = true;}\n                }\n\n                select2 = multiple ? new window.Select2[\"class\"].multi() : new window.Select2[\"class\"].single();\n                select2.init(opts);\n            } else if (typeof(args[0]) === \"string\") {\n\n                if (indexOf(args[0], allowedMethods) < 0) {\n                    throw \"Unknown method: \" + args[0];\n                }\n\n                value = undefined;\n                select2 = $(this).data(\"select2\");\n                if (select2 === undefined) return;\n\n                method=args[0];\n\n                if (method === \"container\") {\n                    value = select2.container;\n                } else if (method === \"dropdown\") {\n                    value = select2.dropdown;\n                } else {\n                    if (methodsMap[method]) method = methodsMap[method];\n\n                    value = select2[method].apply(select2, args.slice(1));\n                }\n                if (indexOf(args[0], valueMethods) >= 0\n                    || (indexOf(args[0], propertyMethods) >= 0 && args.length == 1)) {\n                    return false; // abort the iteration, ready to return first matched value\n                }\n            } else {\n                throw \"Invalid arguments to select2 plugin: \" + args;\n            }\n        });\n        return (value === undefined) ? this : value;\n    };\n\n    // plugin defaults, accessible to users\n    $.fn.select2.defaults = {\n        width: \"copy\",\n        loadMorePadding: 0,\n        closeOnSelect: true,\n        openOnEnter: true,\n        containerCss: {},\n        dropdownCss: {},\n        containerCssClass: \"\",\n        dropdownCssClass: \"\",\n        formatResult: function(result, container, query, escapeMarkup) {\n            var markup=[];\n            markMatch(result.text, query.term, markup, escapeMarkup);\n            return markup.join(\"\");\n        },\n        formatSelection: function (data, container, escapeMarkup) {\n            return data ? escapeMarkup(data.text) : undefined;\n        },\n        sortResults: function (results, container, query) {\n            return results;\n        },\n        formatResultCssClass: function(data) {return data.css;},\n        formatSelectionCssClass: function(data, container) {return undefined;},\n        minimumResultsForSearch: 0,\n        minimumInputLength: 0,\n        maximumInputLength: null,\n        maximumSelectionSize: 0,\n        id: function (e) { return e == undefined ? null : e.id; },\n        matcher: function(term, text) {\n            return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;\n        },\n        separator: \",\",\n        tokenSeparators: [],\n        tokenizer: defaultTokenizer,\n        escapeMarkup: defaultEscapeMarkup,\n        blurOnChange: false,\n        selectOnBlur: false,\n        adaptContainerCssClass: function(c) { return c; },\n        adaptDropdownCssClass: function(c) { return null; },\n        nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; },\n        searchInputPlaceholder: '',\n        createSearchChoicePosition: 'top',\n        shouldFocusInput: function (instance) {\n            // Attempt to detect touch devices\n            var supportsTouchEvents = (('ontouchstart' in window) ||\n                                       (navigator.msMaxTouchPoints > 0));\n\n            // Only devices which support touch events should be special cased\n            if (!supportsTouchEvents) {\n                return true;\n            }\n\n            // Never focus the input if search is disabled\n            if (instance.opts.minimumResultsForSearch < 0) {\n                return false;\n            }\n\n            return true;\n        }\n    };\n\n    $.fn.select2.locales = [];\n\n    $.fn.select2.locales['en'] = {\n         formatMatches: function (matches) { if (matches === 1) { return \"One result is available, press enter to select it.\"; } return matches + \" results are available, use up and down arrow keys to navigate.\"; },\n         formatNoMatches: function () { return \"No matches found\"; },\n         formatAjaxError: function (jqXHR, textStatus, errorThrown) { return \"Loading failed\"; },\n         formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" or more character\" + (n == 1 ? \"\" : \"s\"); },\n         formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please delete \" + n + \" character\" + (n == 1 ? \"\" : \"s\"); },\n         formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n         formatLoadMore: function (pageNumber) { return \"Loading more results\u2026\"; },\n         formatSearching: function () { return \"Searching\u2026\"; },\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['en']);\n\n    $.fn.select2.ajaxDefaults = {\n        transport: $.ajax,\n        params: {\n            type: \"GET\",\n            cache: false,\n            dataType: \"json\"\n        }\n    };\n\n    // exports\n    window.Select2 = {\n        query: {\n            ajax: ajax,\n            local: local,\n            tags: tags\n        }, util: {\n            debounce: debounce,\n            markMatch: markMatch,\n            escapeMarkup: defaultEscapeMarkup,\n            stripDiacritics: stripDiacritics\n        }, \"class\": {\n            \"abstract\": AbstractSelect2,\n            \"single\": SingleSelect2,\n            \"multi\": MultiSelect2\n        }\n    };\n\n}(jQuery));\n", "(function($) {\n\n    function getSortableUl($select) {\n        return $select.prev('.select2-container').find('ul.select2-choices');\n    };\n\n    function initSortableUl($ul, options) {\n\n        $ul.sortable({\n            forcePlaceholderSize: true,\n            items: 'li.select2-search-choice',\n            placeholder : '<li>&nbsp;</li>'\n        });\n\n        // Only bind event at initialization\n        if (options && options.bindSortEvent && options.$select) {\n            $ul.bind('sortupdate', function(e, ui) {\n                $($ul.find('li.select2-search-choice').get().reverse()).each(function() {\n                    var id = $(this).data('select2Data').id,\n                        $option = options.$select.find('option[value=\"' + id + '\"]')[0];\n\n                    options.$select.prepend($option);\n                });\n            });\n        }\n    };\n\n    function initSelect2Sortable($select) {\n\n        var observer,\n            $ul;\n\n        $select.select2({ closeOnSelect: false });\n        $ul = getSortableUl($select);\n\n        observer = new MutationObserver(function(mutations) {\n            initSortableUl($ul);\n            observer.disconnect();\n        });\n\n        $select.on('select2-selecting', function() {\n            observer.observe($ul.get(0), { subtree: false, childList: true, attributes: false });\n        });\n\n        initSortableUl($ul, { bindSortEvent: true, $select: $select });\n\n        $select.data('hasSelect2Sortable', true);\n    };\n\n\n    function sortSelect2Sortable($select, val) {\n        var $ul = getSortableUl($select),\n                $lis = $ul.find('.select2-search-choice');\n        if (val) {\n            $.each(val, function(i, id) {\n                $lis.each(function() {\n                    if (id == $(this).data('select2Data').id) {\n                        $(this).insertBefore($ul.find('.select2-search-field'));\n                    }\n                });\n            });\n            $ul.trigger('sortupdate');\n        }\n    }\n\n    $.fn.extend({\n\n        select2Sortable: function(val) {\n\n            this.each(function() {\n\n                var $select = $(this);\n\n                if (!$select.prop('multiple')) {\n                    return;\n                }\n\n                if (!$select.data('hasSelect2Sortable')) {\n                    initSelect2Sortable($select);\n\n                    var values = $select.attr('data-order');\n\n                    if (values) {\n                        sortSelect2Sortable($select, values.split(','));\n                    }\n                }\n\n                if (val && Array.isArray(val)) {\n                    sortSelect2Sortable($select, val);\n                }\n            });\n\n            return this;\n        }\n    });\n}(window.jQuery));\n", "/**\n * Select2 German translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.fn.select2.locales['de'] = {\n        formatNoMatches: function () { return \"Keine \u00DCbereinstimmungen gefunden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Bitte \" + n + \" Zeichen mehr eingeben\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Bitte \" + n + \" Zeichen weniger eingeben\"; },\n        formatSelectionTooBig: function (limit) { return \"Sie k\u00F6nnen nur \" + limit + \" Eintr\" + (limit === 1 ? \"ag\" : \"\u00E4ge\") + \" ausw\u00E4hlen\"; },\n        formatLoadMore: function (pageNumber) { return \"Lade mehr Ergebnisse\u2026\"; },\n        formatSearching: function () { return \"Suche\u2026\"; },\n        formatMatches: function (matches) { return matches + \" Ergebnis \" + (matches > 1 ? \"se\" : \"\") + \" verf\u00FCgbar, zum Navigieren die Hoch-/Runter-Pfeiltasten verwenden.\"; }\n    };\n\n    $.extend($.fn.select2.defaults, $.fn.select2.locales['de']);\n})(jQuery);", "/*\nVersion: @@ver@@ Timestamp: @@timestamp@@\n*/\n.select2-container {\n    margin: 0;\n    position: relative;\n    display: inline-block;\n    /* inline-block for ie7 */\n    zoom: 1;\n    *display: inline;\n    vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n  /*\n    Force border-box so that % widths fit the parent\n    container without overlap because of margin/padding.\n    More Info : http://www.quirksmode.org/css/box.html\n  */\n  -webkit-box-sizing: border-box; /* webkit */\n     -moz-box-sizing: border-box; /* firefox */\n          box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n    display: block;\n    height: 26px;\n    padding: 0 0 0 8px;\n    overflow: hidden;\n    position: relative;\n\n    border: 1px solid #aaa;\n    white-space: nowrap;\n    line-height: 26px;\n    color: #444;\n    text-decoration: none;\n\n    border-radius: 4px;\n\n    background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\n    background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\n    background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n    background-image: linear-gradient(to top, #eee 0%, #fff 50%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice {\n    padding: 0 8px 0 0;\n}\n\n.select2-container.select2-drop-above .select2-choice {\n    border-bottom-color: #aaa;\n\n    border-radius: 0 0 4px 4px;\n\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\n    background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\n    background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\n    background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n    margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n    margin-right: 26px;\n    display: block;\n    overflow: hidden;\n\n    white-space: nowrap;\n\n    text-overflow: ellipsis;\n    float: none;\n    width: auto;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice > .select2-chosen {\n    margin-left: 26px;\n    margin-right: 0;\n}\n\n.select2-container .select2-choice abbr {\n    display: none;\n    width: 12px;\n    height: 12px;\n    position: absolute;\n    right: 24px;\n    top: 8px;\n\n    font-size: 1px;\n    text-decoration: none;\n\n    border: 0;\n    background: url('select2.png') right top no-repeat;\n    cursor: pointer;\n    outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n    display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n    background-position: right -11px;\n    cursor: pointer;\n}\n\n.select2-drop-mask {\n    border: 0;\n    margin: 0;\n    padding: 0;\n    position: fixed;\n    left: 0;\n    top: 0;\n    min-height: 100%;\n    min-width: 100%;\n    height: auto;\n    width: auto;\n    opacity: 0;\n    z-index: 9998;\n    /* styles required for IE to work */\n    background-color: #fff;\n    filter: alpha(opacity=0);\n}\n\n.select2-drop {\n    width: 100%;\n    margin-top: -1px;\n    position: absolute;\n    z-index: 9999;\n    top: 100%;\n\n    background: #fff;\n    color: #000;\n    border: 1px solid #aaa;\n    border-top: 0;\n\n    border-radius: 0 0 4px 4px;\n\n    -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n    margin-top: 1px;\n    border-top: 1px solid #aaa;\n    border-bottom: 0;\n\n    border-radius: 4px 4px 0 0;\n\n    -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-active {\n    border: 1px solid #5897fb;\n    border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n    border-top: 1px solid #5897fb;\n}\n\n.select2-drop-auto-width {\n    border-top: 1px solid #aaa;\n    width: auto;\n}\n\n.select2-drop-auto-width .select2-search {\n    padding-top: 4px;\n}\n\n.select2-container .select2-choice .select2-arrow {\n    display: inline-block;\n    width: 18px;\n    height: 100%;\n    position: absolute;\n    right: 0;\n    top: 0;\n\n    border-left: 1px solid #aaa;\n    border-radius: 0 4px 4px 0;\n\n    background-clip: padding-box;\n\n    background: #ccc;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n    background-image: linear-gradient(to top, #ccc 0%, #eee 60%);\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow {\n    left: 0;\n    right: auto;\n\n    border-left: none;\n    border-right: 1px solid #aaa;\n    border-radius: 4px 0 0 4px;\n}\n\n.select2-container .select2-choice .select2-arrow b {\n    display: block;\n    width: 100%;\n    height: 100%;\n    background: url('select2.png') no-repeat 0 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-container .select2-choice .select2-arrow b {\n    background-position: 2px 1px;\n}\n\n.select2-search {\n    display: inline-block;\n    width: 100%;\n    min-height: 26px;\n    margin: 0;\n    padding-left: 4px;\n    padding-right: 4px;\n\n    position: relative;\n    z-index: 10000;\n\n    white-space: nowrap;\n}\n\n.select2-search input {\n    width: 100%;\n    height: auto !important;\n    min-height: 26px;\n    padding: 4px 20px 4px 5px;\n    margin: 0;\n\n    outline: 0;\n    font-family: sans-serif;\n    font-size: 1em;\n\n    border: 1px solid #aaa;\n    border-radius: 0;\n\n    -webkit-box-shadow: none;\n            box-shadow: none;\n\n    background: #fff url('select2.png') no-repeat 100% -22px;\n    background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\nhtml[dir=\"rtl\"] .select2-search input {\n    padding: 4px 5px 4px 20px;\n\n    background: #fff url('select2.png') no-repeat -37px -22px;\n    background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n    margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100%;\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n            box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n\n.select2-dropdown-open .select2-choice {\n    border-bottom-color: transparent;\n    -webkit-box-shadow: 0 1px 0 #fff inset;\n            box-shadow: 0 1px 0 #fff inset;\n\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n\n    background-color: #eee;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\n    background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n    background-image: linear-gradient(to top, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n    border: 1px solid #5897fb;\n    border-top-color: transparent;\n\n    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\n    background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\n    background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n    background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n    background: transparent;\n    border-left: none;\n    filter: none;\n}\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow {\n    border-right: none;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b {\n    background-position: -18px 1px;\n}\n\nhtml[dir=\"rtl\"] .select2-dropdown-open .select2-choice .select2-arrow b {\n    background-position: -16px 1px;\n}\n\n.select2-hidden-accessible {\n    border: 0;\n    clip: rect(0 0 0 0);\n    height: 1px;\n    margin: -1px;\n    overflow: hidden;\n    padding: 0;\n    position: absolute;\n    width: 1px;\n}\n\n/* results */\n.select2-results {\n    max-height: 200px;\n    padding: 0 0 0 4px;\n    margin: 4px 4px 4px 0;\n    position: relative;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhtml[dir=\"rtl\"] .select2-results {\n    padding: 0 4px 0 0;\n    margin: 4px 0 4px 4px;\n}\n\n.select2-results ul.select2-result-sub {\n    margin: 0;\n    padding-left: 0;\n}\n\n.select2-results li {\n    list-style: none;\n    display: list-item;\n    background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n    font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n    padding: 3px 7px 4px;\n    margin: 0;\n    cursor: pointer;\n\n    min-height: 1em;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n}\n\n.select2-results-dept-1 .select2-result-label { padding-left: 20px }\n.select2-results-dept-2 .select2-result-label { padding-left: 40px }\n.select2-results-dept-3 .select2-result-label { padding-left: 60px }\n.select2-results-dept-4 .select2-result-label { padding-left: 80px }\n.select2-results-dept-5 .select2-result-label { padding-left: 100px }\n.select2-results-dept-6 .select2-result-label { padding-left: 110px }\n.select2-results-dept-7 .select2-result-label { padding-left: 120px }\n\n.select2-results .select2-highlighted {\n    background: #3875d7;\n    color: #fff;\n}\n\n.select2-results li em {\n    background: #feffde;\n    font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n    background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n    background: #fff;\n    color: #000;\n}\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-ajax-error,\n.select2-results .select2-selection-limit {\n    background: #f4f4f4;\n    display: list-item;\n    padding-left: 5px;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n    color: #666;\n    background: #f4f4f4;\n    display: list-item;\n    cursor: default;\n}\n.select2-results .select2-disabled {\n  background: #f4f4f4;\n  display: list-item;\n  cursor: default;\n}\n\n.select2-results .select2-selected {\n    display: none;\n}\n\n.select2-more-results.select2-active {\n    background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\n}\n\n.select2-results .select2-ajax-error {\n    background: rgba(255, 50, 50, .2);\n}\n\n.select2-more-results {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n    background-color: #f4f4f4;\n    background-image: none;\n    border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n    display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n    height: auto !important;\n    height: 1%;\n    margin: 0;\n    padding: 0 5px 0 0;\n    position: relative;\n\n    border: 1px solid #aaa;\n    cursor: text;\n    overflow: hidden;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\n    background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\n    background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\n    background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices {\n    padding: 0 0 0 5px;\n}\n\n.select2-locked {\n  padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n    min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n            box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n.select2-container-multi .select2-choices li {\n    float: left;\n    list-style: none;\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices li\n{\n    float: right;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n    margin: 0;\n    padding: 0;\n    white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n    padding: 5px;\n    margin: 1px 0;\n\n    font-family: sans-serif;\n    font-size: 100%;\n    color: #666;\n    outline: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n    background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100% !important;\n}\n\n.select2-default {\n    color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 18px;\n    margin: 3px 0 3px 5px;\n    position: relative;\n\n    line-height: 13px;\n    color: #333;\n    cursor: default;\n    border: 1px solid #aaaaaa;\n\n    border-radius: 3px;\n\n    -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n            box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n\n    background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #e4e4e4;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\n    background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n    background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n    background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n}\nhtml[dir=\"rtl\"] .select2-container-multi .select2-choices .select2-search-choice\n{\n    margin: 3px 5px 3px 0;\n    padding: 3px 18px 3px 5px;\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n    cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n    background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n    display: block;\n    width: 12px;\n    height: 13px;\n    position: absolute;\n    right: 3px;\n    top: 4px;\n\n    font-size: 1px;\n    outline: none;\n    background: url('select2.png') right top no-repeat;\n}\nhtml[dir=\"rtl\"] .select2-search-choice-close {\n    right: auto;\n    left: 3px;\n}\n\n.select2-container-multi .select2-search-choice-close {\n    left: 3px;\n}\n\nhtml[dir=\"rtl\"] .select2-container-multi .select2-search-choice-close {\n    left: auto;\n    right: 2px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n  background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n    background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 5px;\n    border: 1px solid #ddd;\n    background-image: none;\n    background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {    display: none;\n    background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n    text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n    clip: rect(0 0 0 0) !important;\n    width: 1px !important;\n    height: 1px !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    overflow: hidden !important;\n    position: absolute !important;\n    outline: 0 !important;\n    left: 0px !important;\n    top: 0px !important;\n}\n\n.select2-display-none {\n    display: none;\n}\n\n.select2-measure-scrollbar {\n    position: absolute;\n    top: -10000px;\n    left: -10000px;\n    width: 100px;\n    height: 100px;\n    overflow: scroll;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx)  {\n    .select2-search input,\n    .select2-search-choice-close,\n    .select2-container .select2-choice abbr,\n    .select2-container .select2-choice .select2-arrow b {\n        background-image: url('select2x2.png') !important;\n        background-repeat: no-repeat !important;\n        background-size: 60px 40px !important;\n    }\n\n    .select2-search input {\n        background-position: 100% -21px !important;\n    }\n}\n", "/**\n * Select2 Bootstrap 3 CSS v1.4.1\n * Tested with Bootstrap v3.2.0 and Select2 v3.3.2, v3.4.1-v3.4.5, v3.5.1, master\n * in latest Chrome, Safari, Firefox, Opera (Mac) and IE8-IE11\n * MIT License\n */\n/**\n * Reset Bootstrap 3 .form-control styles which - if applied to the\n * original <select>-element the Select2-plugin may be run against -\n * are copied to the .select2-container.\n *\n * 1. Overwrite .select2-container's original display:inline-block\n *    with Bootstrap 3's default for .form-control, display:block;\n *    courtesy of @juristr (@see https://github.com/fk/select2-bootstrap-css/pull/1)\n */\n.select2-container.form-control {\n    background: transparent;\n    border: none;\n    display: block;\n    /* 1 */\n    margin: 0;\n    padding: 0;\n}\n\n/**\n * Adjust Select2 inputs to fit Bootstrap 3 default .form-control appearance.\n */\n.select2-container .select2-choices .select2-search-field input,\n.select2-container .select2-choice,\n.select2-container .select2-choices {\n    background: none;\n    padding: 0;\n    border-color: #cccccc;\n    border-radius: 4px;\n    color: #555555;\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    background-color: white;\n    filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n\n.select2-search input {\n    border-color: #cccccc;\n    border-radius: 4px;\n    color: #555555;\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    background-color: white;\n    filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n\n.select2-container .select2-choices .select2-search-field input {\n    -webkit-box-shadow: none;\n    box-shadow: none;\n}\n\n/**\n * Adjust Select2 input heights to match the Bootstrap default.\n */\n.select2-container .select2-choice {\n    height: 34px;\n    line-height: 1.42857;\n}\n\n/**\n * Address Multi Select2's height which - depending on how many elements have been selected -\n * may grown higher than their initial size.\n */\n.select2-container.select2-container-multi.form-control {\n    height: auto;\n}\n\n/**\n * Address Bootstrap 3 control sizing classes\n * @see http://getbootstrap.com/css/#forms-control-sizes\n */\n.select2-container.input-sm .select2-choice,\n.input-group-sm .select2-container .select2-choice {\n    height: 30px;\n    line-height: 1.5;\n    border-radius: 3px;\n}\n\n.select2-container.input-lg .select2-choice,\n.input-group-lg .select2-container .select2-choice {\n    height: 46px;\n    line-height: 1.33;\n    border-radius: 6px;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n    height: 32px;\n}\n\n.select2-container-multi.input-sm .select2-choices .select2-search-field input,\n.input-group-sm .select2-container-multi .select2-choices .select2-search-field input {\n    height: 28px;\n}\n\n.select2-container-multi.input-lg .select2-choices .select2-search-field input,\n.input-group-lg .select2-container-multi .select2-choices .select2-search-field input {\n    height: 44px;\n}\n\n/**\n * Adjust height and line-height for .select2-search-field amd multi-select Select2 widgets.\n *\n * 1. Class repetition to address missing .select2-chosen in Select2 < 3.3.2.\n */\n.select2-container-multi .select2-choices .select2-search-field input {\n    margin: 0;\n}\n\n.select2-chosen,\n.select2-choice > span:first-child,\n.select2-container .select2-choices .select2-search-field input {\n    padding: 6px 12px;\n}\n\n.input-sm .select2-chosen,\n.input-group-sm .select2-chosen,\n.input-sm .select2-choice > span:first-child,\n.input-group-sm .select2-choice > span:first-child,\n.input-sm .select2-choices .select2-search-field input,\n.input-group-sm .select2-choices .select2-search-field input {\n    padding: 5px 10px;\n}\n\n.input-lg .select2-chosen,\n.input-group-lg .select2-chosen,\n.input-lg .select2-choice > span:first-child,\n.input-group-lg .select2-choice > span:first-child,\n.input-lg .select2-choices .select2-search-field input,\n.input-group-lg .select2-choices .select2-search-field input {\n    padding: 10px 16px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n    margin-top: 5px;\n    margin-bottom: 3px;\n}\n\n.select2-container-multi.input-sm .select2-choices .select2-search-choice,\n.input-group-sm .select2-container-multi .select2-choices .select2-search-choice {\n    margin-top: 3px;\n    margin-bottom: 2px;\n}\n\n.select2-container-multi.input-lg .select2-choices .select2-search-choice,\n.input-group-lg .select2-container-multi .select2-choices .select2-search-choice {\n    line-height: 24px;\n}\n\n/**\n * Adjust the single Select2's dropdown arrow button appearance.\n *\n * 1. For Select2 v.3.3.2.\n */\n.select2-container .select2-choice .select2-arrow,\n.select2-container .select2-choice div {\n    border-left: 1px solid #cccccc;\n    background: none;\n    filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow,\n.select2-dropdown-open .select2-choice div {\n    border-left-color: transparent;\n    background: none;\n    filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n\n/**\n * Adjust the dropdown arrow button icon position for the single-select Select2 elements\n * to make it line up vertically now that we increased the height of .select2-container.\n *\n * 1. Class repetition to address missing .select2-chosen in Select2 v.3.3.2.\n */\n.select2-container .select2-choice .select2-arrow b,\n.select2-container .select2-choice div b {\n    background-position: 0 3px;\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow b,\n.select2-dropdown-open .select2-choice div b {\n    background-position: -18px 3px;\n}\n\n.select2-container.input-sm .select2-choice .select2-arrow b,\n.input-group-sm .select2-container .select2-choice .select2-arrow b,\n.select2-container.input-sm .select2-choice div b,\n.input-group-sm .select2-container .select2-choice div b {\n    background-position: 0 1px;\n}\n\n.select2-dropdown-open.input-sm .select2-choice .select2-arrow b,\n.input-group-sm .select2-dropdown-open .select2-choice .select2-arrow b,\n.select2-dropdown-open.input-sm .select2-choice div b,\n.input-group-sm .select2-dropdown-open .select2-choice div b {\n    background-position: -18px 1px;\n}\n\n.select2-container.input-lg .select2-choice .select2-arrow b,\n.input-group-lg .select2-container .select2-choice .select2-arrow b,\n.select2-container.input-lg .select2-choice div b,\n.input-group-lg .select2-container .select2-choice div b {\n    background-position: 0 9px;\n}\n\n.select2-dropdown-open.input-lg .select2-choice .select2-arrow b,\n.input-group-lg .select2-dropdown-open .select2-choice .select2-arrow b,\n.select2-dropdown-open.input-lg .select2-choice div b,\n.input-group-lg .select2-dropdown-open .select2-choice div b {\n    background-position: -18px 9px;\n}\n\n/**\n * Address Bootstrap's validation states and change Select2's border colors and focus states.\n * Apply .has-warning, .has-danger or .has-succes to #select2-drop to match Bootstraps' colors.\n */\n.has-warning .select2-choice,\n.has-warning .select2-choices {\n    border-color: #8a6d3b;\n}\n.has-warning .select2-container-active .select2-choice,\n.has-warning .select2-container-multi.select2-container-active .select2-choices {\n    border-color: #66512c;\n    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning.select2-drop-active {\n    border-color: #66512c;\n}\n.has-warning.select2-drop-active.select2-drop.select2-drop-above {\n    border-top-color: #66512c;\n}\n\n.has-error .select2-choice,\n.has-error .select2-choices {\n    border-color: #a94442;\n}\n.has-error .select2-container-active .select2-choice,\n.has-error .select2-container-multi.select2-container-active .select2-choices {\n    border-color: #843534;\n    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error.select2-drop-active {\n    border-color: #843534;\n}\n.has-error.select2-drop-active.select2-drop.select2-drop-above {\n    border-top-color: #843534;\n}\n\n.has-success .select2-choice,\n.has-success .select2-choices {\n    border-color: #3c763d;\n}\n.has-success .select2-container-active .select2-choice,\n.has-success .select2-container-multi.select2-container-active .select2-choices {\n    border-color: #2b542c;\n    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success.select2-drop-active {\n    border-color: #2b542c;\n}\n.has-success.select2-drop-active.select2-drop.select2-drop-above {\n    border-top-color: #2b542c;\n}\n\n/**\n * Make Select2's active-styles - applied to .select2-container when the widget receives focus -\n * fit Bootstrap 3's .form-element:focus appearance.\n */\n.select2-container-active .select2-choice,\n.select2-container-multi.select2-container-active .select2-choices {\n    border-color: #66afe9;\n    outline: none;\n    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n    -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n    -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n    transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.select2-drop-active {\n    border-color: #66afe9;\n}\n\n.select2-drop-auto-width,\n.select2-drop.select2-drop-above.select2-drop-active {\n    border-top-color: #66afe9;\n}\n\n/**\n * Select2 widgets in Bootstrap Input Groups\n *\n * When Select2 widgets are combined with other elements using Bootstrap 3's\n * \"Input Group\" component, we don't want specific edges of the Select2 container\n * to have a border-radius.\n *\n * In Bootstrap 2, input groups required a markup where these style adjustments\n * could be bound to a CSS-class identifying if the additional elements are appended,\n * prepended or both.\n *\n * Bootstrap 3 doesn't rely on these classes anymore, so we have to use our own.\n * Use .select2-bootstrap-prepend and .select2-bootstrap-append on a Bootstrap 3 .input-group\n * to let the contained Select2 widget know which edges should not be rounded as they are\n * directly followed by another element.\n *\n * @see http://getbootstrap.com/components/#input-groups\n */\n.input-group.select2-bootstrap-prepend [class^=\"select2-choice\"] {\n    border-bottom-left-radius: 0 !important;\n    border-top-left-radius: 0 !important;\n}\n\n.input-group.select2-bootstrap-append [class^=\"select2-choice\"] {\n    border-bottom-right-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n}\n\n.select2-dropdown-open [class^=\"select2-choice\"] {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n}\n\n.select2-dropdown-open.select2-drop-above [class^=\"select2-choice\"] {\n    border-top-right-radius: 0 !important;\n    border-top-left-radius: 0 !important;\n    border-bottom-right-radius: 4px !important;\n    border-bottom-left-radius: 4px !important;\n}\n.input-group.select2-bootstrap-prepend .select2-dropdown-open.select2-drop-above [class^=\"select2-choice\"] {\n    border-bottom-left-radius: 0 !important;\n    border-top-left-radius: 0 !important;\n}\n.input-group.select2-bootstrap-append .select2-dropdown-open.select2-drop-above [class^=\"select2-choice\"] {\n    border-bottom-right-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n}\n.input-group.input-group-sm.select2-bootstrap-prepend .select2-dropdown-open.select2-drop-above [class^=\"select2-choice\"] {\n    border-bottom-right-radius: 3px !important;\n}\n.input-group.input-group-lg.select2-bootstrap-prepend .select2-dropdown-open.select2-drop-above [class^=\"select2-choice\"] {\n    border-bottom-right-radius: 6px !important;\n}\n.input-group.input-group-sm.select2-bootstrap-append .select2-dropdown-open.select2-drop-above [class^=\"select2-choice\"] {\n    border-bottom-left-radius: 3px !important;\n}\n.input-group.input-group-lg.select2-bootstrap-append .select2-dropdown-open.select2-drop-above [class^=\"select2-choice\"] {\n    border-bottom-left-radius: 6px !important;\n}\n\n/**\n * Adjust Select2's choices hover and selected styles to match Bootstrap 3's default dropdown styles.\n */\n.select2-results .select2-highlighted {\n    color: white;\n    background-color: #428bca;\n}\n\n/**\n * Adjust alignment of Bootstrap 3 buttons in Bootstrap 3 Input Groups to address\n * Multi Select2's height which - depending on how many elements have been selected -\n * may grown higher than their initial size.\n */\n.select2-bootstrap-append .select2-container-multiple,\n.select2-bootstrap-append .input-group-btn,\n.select2-bootstrap-append .input-group-btn .btn,\n.select2-bootstrap-prepend .select2-container-multiple,\n.select2-bootstrap-prepend .input-group-btn,\n.select2-bootstrap-prepend .input-group-btn .btn {\n    vertical-align: top;\n}\n\n/**\n * Make Multi Select2's choices match Bootstrap 3's default button styles.\n */\n.select2-container-multi .select2-choices .select2-search-choice {\n    color: #555555;\n    background: white;\n    border-color: #cccccc;\n    filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n    -webkit-box-shadow: none;\n    box-shadow: none;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n    background: #ebebeb;\n    border-color: #adadad;\n    color: #333333;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n}\n\n/**\n * Address Multi Select2's choice close-button vertical alignment.\n */\n.select2-search-choice-close {\n    margin-top: -7px;\n    top: 50%;\n}\n\n/**\n * Adjust the single Select2's clear button position (used to reset the select box\n * back to the placeholder value and visible once a selection is made\n * activated by Select2's \"allowClear\" option).\n */\n.select2-container .select2-choice abbr {\n    top: 50%;\n}\n\n/**\n * Adjust \"no results\" and \"selection limit\" messages to make use\n * of Bootstrap 3's default \"Alert\" style.\n *\n * @see http://getbootstrap.com/components/#alerts-default\n */\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-selection-limit {\n    background-color: #fcf8e3;\n    color: #8a6d3b;\n}\n\n/**\n * Address disabled Select2 styles.\n *\n * 1. For Select2 v.3.3.2.\n * 2. Revert border-left:0 inherited from Select2's CSS to prevent the arrow\n *    from jumping when switching from disabled to enabled state and vice versa.\n */\n.select2-container.select2-container-disabled .select2-choice,\n.select2-container.select2-container-disabled .select2-choices {\n    cursor: not-allowed;\n    background-color: #eeeeee;\n    border-color: #cccccc;\n}\n.select2-container.select2-container-disabled .select2-choice .select2-arrow,\n.select2-container.select2-container-disabled .select2-choice div,\n.select2-container.select2-container-disabled .select2-choices .select2-arrow,\n.select2-container.select2-container-disabled .select2-choices div {\n    background-color: transparent;\n    border-left: 1px solid transparent;\n    /* 2 */\n}\n\n/**\n * Address Select2's loading indicator position - which should not stick\n * to the right edge of Select2's search input.\n *\n * 1. in .select2-search input\n * 2. in Multi Select2's .select2-search-field input\n * 3. in the status-message of infinite-scroll with remote data (@see http://ivaynberg.github.io/select2/#infinite)\n *\n * These styles alter Select2's default background-position of 100%\n * and supply the new background-position syntax to browsers which support it:\n *\n * 1. Android, Safari < 6/Mobile, IE<9: change to a relative background-position of 99%\n * 2. Chrome 25+, Firefox 13+, IE 9+, Opera 10.5+: use the new CSS3-background-position syntax\n *\n * @see http://www.w3.org/TR/css3-background/#background-position\n *\n * @todo Since both Select2 and Bootstrap 3 only support IE8 and above,\n * we could use the :after-pseudo-element to display the loading indicator.\n * Alternatively, we could supply an altered loading indicator image which already\n * contains an offset to the right.\n */\n.select2-search input.select2-active,\n.select2-container-multi .select2-choices .select2-search-field input.select2-active,\n.select2-more-results.select2-active {\n    background-position: 99%;\n    /* 4 */\n    background-position: right 4px center;\n    /* 5 */\n}\n\n/**\n * To support Select2 pre v3.4.2 in combination with Bootstrap v3.2.0,\n * ensure that .select2-offscreen width, height and position can not be overwritten.\n *\n * This adresses changes in Bootstrap somewhere after the initial v3.0.0 which -\n * in combination with Select2's pre-v3.4.2 CSS missing the \"!important\" after\n * the following rules - allow Bootstrap to overwrite the latter, which results in\n * the original <select> element Select2 is replacing not be properly being hidden\n * when used in a \"Bootstrap Input Group with Addon\".\n **/\n.select2-offscreen,\n.select2-offscreen:focus {\n    width: 1px !important;\n    height: 1px !important;\n    position: absolute !important;\n}\n", ".select2-container .select2-choices {\n  font-family: inherit;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n  background: none;\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n  background: none;\n}\n\n.select2-container .select2-choices .select2-search-field input, .select2-container .select2-choice, .select2-container .select2-choices {\n  -webkit-border-radius: 0 !important;\n  -moz-border-radius: 0 !important;\n  border-radius: 0 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n  -webkit-border-radius: 0 !important;\n  -moz-border-radius: 0 !important;\n  border-radius: 0 !important;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUva3Vyc28vYXBwcy9rdXJzby9yZWxlYXNlcy8yMDI2MDMxOTIyNTU0MC9hcHAvamF2YXNjcmlwdC9jb21wb25lbnRzL3NlbGVjdDIiLCJzb3VyY2VzIjpbInNlbGVjdDIta3Vyc28uc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtBQUFBO0VBRUk7OztBQUdKO0VBQ0k7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2VzIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbn1cblxuLnNlbGVjdDItY29udGFpbmVyLW11bHRpIC5zZWxlY3QyLWNob2ljZXMgLnNlbGVjdDItc2VhcmNoLWNob2ljZS1mb2N1cyB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbn1cblxuLnNlbGVjdDItZHJvcGRvd24tb3Blbi5zZWxlY3QyLWRyb3AtYWJvdmUgLnNlbGVjdDItY2hvaWNlLFxuLnNlbGVjdDItZHJvcGRvd24tb3Blbi5zZWxlY3QyLWRyb3AtYWJvdmUgLnNlbGVjdDItY2hvaWNlcyB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbn1cblxuLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZXMgLnNlbGVjdDItc2VhcmNoLWZpZWxkIGlucHV0LCAuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItY2hvaWNlLCAuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItY2hvaWNlcyB7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xufVxuXG4uc2VsZWN0Mi1jb250YWluZXItbXVsdGkgLnNlbGVjdDItY2hvaWNlcyAuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlIHtcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG59XG4iXX0= */", ".select2-container-multi.sortable .select2-choices .select2-search-choice {\n    cursor: move;\n}\n\n/*.select2-container {*/\n/*    display: block;*/\n/*    width: 100%;*/\n/*}*/\n\n/*.select2-choices {*/\n/*    border-radius: 0px;*/\n/*    border-color: #d0d0d0;*/\n/*}*/\n\n/*.select2-container-multi .select2-choices {*/\n/*    border-color: #d0d0d0;*/\n/*    padding: 0px;*/\n/*}*/\n\n/*.select2-drop {*/\n/*    border-radius: 0px;*/\n/*}*/\n\n/*.select2-container-multi.select2-container-active {*/\n/*    border-color: #646464;*/\n/*}*/\n\n/*.select2-container-multi.select2-container-active .select2-choices {*/\n/*    border-color: #646464;*/\n/*}*/\n\n/*.select2-drop-active {*/\n/*    border-color: #646464;*/\n/*}*/\n\n.select2-container-multi.sortable .select2-choices {\n    padding: 4px 4px 4px 4px;\n    border-radius: 0;\n}\n\n.select2-container-multi.sortable .select2-choices .select2-search-choice {\n    /*background: #646464;*/\n    /*color: #fdfdfd;*/\n    /*width: 90%;*/\n    /*margin: 0 0 2px 0;*/\n    /*border: 0px;*/\n    /*border-radius: 0px;*/\n    /*padding: 10px 10px 10px 30px;*/\n    /*box-shadow: 0 0 0px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);*/\n    border-radius: 2px;\n    background: #f4f4f4;\n    margin: 0 0 3px 0;\n    padding: 10px 10px 10px 25px;\n    border: none;\n    border-left: 2px solid #e6e7e8;\n    color: #444;\n    float: none;\n}\n\n.select2-container-multi.sortable .select2-search-choice-close {\n    left: 10px;\n    top: 10px;\n    margin: 0;\n}\n\n/*.select2-results .select2-highlighted {*/\n/*    background: #2f73b6;*/\n/*}*/\n", "require('select2');\nrequire('./select2_sortable');\nrequire('select2/select2_locale_de');\nrequire('select2/select2.css');\nrequire('./select2-bootstrap.css');\nrequire('select2/')\nrequire('./select2-kurso.scss');\nrequire('./select2-sortable.css');\n", "const bootbox = require('bootbox');\n\nbootbox.setDefaults({\n    /**\n     * @optional String\n     * @default: en\n     * which locale settings to use to translate the three\n     * standard button labels: OK, CONFIRM, CANCEL\n     */\n    locale: \"de\",\n\n    /**\n     * @optional Boolean\n     * @default: true\n     * whether the dialog should be shown immediately\n     */\n    show: true,\n\n    /**\n     * @optional Boolean\n     * @default: true\n     * whether the dialog should be have a backdrop or not\n     */\n    backdrop: true,\n\n    /**\n     * @optional Boolean\n     * @default: true\n     * show a close button\n     */\n    closeButton: true,\n\n    /**\n     * @optional Boolean\n     * @default: true\n     * animate the dialog in and out (not supported in < IE 10)\n     */\n    animate: false,\n\n    /**\n     * @optional String\n     * @default: null\n     * an additional class to apply to the dialog wrapper\n     */\n    className: \"bootbox-modal\"\n\n});\n\nexport { bootbox };\n", "@-webkit-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-moz-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-webkit-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-moz-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-moz-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:2px solid rgba(0,0,0,.3);background:#fff;padding:20px 20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-message{text-align:center;margin:2em 0}.dropzone .dz-message .dz-button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom, #eee, #ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;-ms-transition:opacity 0.2s linear;-o-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:rgba(0,0,0,.9);line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:rgba(255,255,255,.8)}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:rgba(255,255,255,.4);padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{-webkit-transform:scale(1.05, 1.05);-moz-transform:scale(1.05, 1.05);-ms-transform:scale(1.05, 1.05);-o-transform:scale(1.05, 1.05);transform:scale(1.05, 1.05);-webkit-filter:blur(8px);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{-webkit-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;-webkit-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;-webkit-transition:all 0.2s linear;-moz-transition:all 0.2s linear;-ms-transition:all 0.2s linear;-o-transition:all 0.2s linear;transition:all 0.2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;-webkit-transition:opacity 0.4s ease-in;-moz-transition:opacity 0.4s ease-in;-ms-transition:opacity 0.4s ease-in;-o-transition:opacity 0.4s ease-in;transition:opacity 0.4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{-webkit-animation:pulse 6s ease infinite;-moz-animation:pulse 6s ease infinite;-ms-animation:pulse 6s ease infinite;-o-animation:pulse 6s ease infinite;animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:16px;left:50%;top:50%;margin-top:-8px;width:80px;margin-left:-40px;background:rgba(255,255,255,.9);-webkit-transform:scale(1);border-radius:8px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#333;background:linear-gradient(to bottom, #666, #444);position:absolute;top:0;left:0;bottom:0;width:0;-webkit-transition:width 300ms ease-in-out;-moz-transition:width 300ms ease-in-out;-ms-transition:width 300ms ease-in-out;-o-transition:width 300ms ease-in-out;transition:width 300ms ease-in-out}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;-webkit-transition:opacity 0.3s ease;-moz-transition:opacity 0.3s ease;-ms-transition:opacity 0.3s ease;-o-transition:opacity 0.3s ease;transition:opacity 0.3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#be2626;background:linear-gradient(to bottom, #be2626, #a92222);padding:.5em 1.2em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:\"\";position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #be2626}", ".dropzone,.dropzone *{box-sizing:border-box}.dropzone{position:relative}.dropzone .dz-preview{position:relative;display:inline-block;width:120px;margin:.5em}.dropzone .dz-preview .dz-progress{display:block;height:15px;border:1px solid #aaa}.dropzone .dz-preview .dz-progress .dz-upload{display:block;height:100%;width:0;background:green}.dropzone .dz-preview .dz-error-message{color:red;display:none}.dropzone .dz-preview.dz-error .dz-error-message,.dropzone .dz-preview.dz-error .dz-error-mark{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{display:block}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{position:absolute;display:none;left:30px;top:30px;width:54px;height:58px;left:50%;margin-left:-27px}", "body .dropzone {\n  min-height: 130px;\n  border: 2px dashed rgba(0, 0, 0, 0.3);\n  padding: 5px 5px;\n}\nbody .dropzone .dz-message {\n  margin-top: 20px;\n  margin-bottom: 20px;\n}\nbody .dropzone .dz-preview {\n  width: 100px;\n}\nbody .dropzone .dz-preview .dz-image {\n  width: 100px;\n  height: 100px;\n  border-radius: 10px;\n  border: solid thin lightgray;\n  opacity: 90%;\n}\nbody .dropzone .dz-preview .dz-details {\n  padding-top: 15px;\n  padding-left: 7px;\n  padding-right: 7px;\n}\nbody .dropzone .dz-preview .dz-details .dz-size {\n  margin-bottom: 5px;\n}\nbody .dropzone .dz-preview .dz-details:not(:hover) a {\n  visibility: hidden;\n  opacity: 0;\n  transition: visibility 0s linear 300ms, opacity 300ms;\n}\nbody .dropzone .dz-preview .dz-buttons a:not(:first-child) {\n  margin-left: 10px;\n}\nbody .dropzone .dz-preview .dz-buttons {\n  margin-top: 6px;\n}\nbody .dropzone .dz-preview .dz-buttons a {\n  font-size: x-large;\n  filter: drop-shadow(0 0 4px white);\n}\nbody .dropzone .dz-preview .dz-error-mark {\n  filter: invert(50%) sepia(100%) saturate(2000%) hue-rotate(-25deg) brightness(93%) drop-shadow(8px 8px 10px white);\n}\nbody .dropzone .dz-preview .dz-error-message, body .dropzone .dz-preview .dz-error-mark, body .dropzone .dz-preview .dz-success-mark {\n  top: 45%;\n}\nbody .dropzone .dz-preview .dz-error-message {\n  color: white;\n}\nbody .dropzone .dz-preview .dz-success-mark {\n  filter: drop-shadow(8px 8px 10px #00a65a);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUva3Vyc28vYXBwcy9rdXJzby9yZWxlYXNlcy8yMDI2MDMxOTIyNTU0MC9hcHAvamF2YXNjcmlwdC9jb21wb25lbnRzL2Ryb3B6b25lIiwic291cmNlcyI6WyJkcm9wem9uZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTs7QUFHRjtFQUVFOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFDQTtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFDQTtFQUNFO0VBQ0E7O0FBSUo7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRSIsInNvdXJjZXNDb250ZW50IjpbImJvZHkgLmRyb3B6b25lIHtcbiAgbWluLWhlaWdodDogMTMwcHg7XG4gIGJvcmRlcjogMnB4IGRhc2hlZCByZ2JhKDAsMCwwLC4zKTtcbiAgcGFkZGluZzogNXB4IDVweDtcblxuICAuZHotbWVzc2FnZSB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB9XG5cbiAgLmR6LXByZXZpZXcge1xuXG4gICAgd2lkdGg6IDEwMHB4O1xuXG4gICAgLmR6LWltYWdlIHtcbiAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgIGhlaWdodDogMTAwcHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgYm9yZGVyOiBzb2xpZCB0aGluIGxpZ2h0Z3JheTtcbiAgICAgIG9wYWNpdHk6IDkwJTtcbiAgICB9XG5cbiAgICAuZHotZGV0YWlscyB7XG4gICAgICBwYWRkaW5nLXRvcDogMTVweDtcbiAgICAgIHBhZGRpbmctbGVmdDogN3B4O1xuICAgICAgcGFkZGluZy1yaWdodDogN3B4O1xuICAgICAgLmR6LXNpemUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmR6LWRldGFpbHM6bm90KDpob3ZlcikgYSB7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAwcyBsaW5lYXIgMzAwbXMsIG9wYWNpdHkgMzAwbXM7XG4gICAgfVxuXG4gICAgLmR6LWJ1dHRvbnMgYTpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICB9XG5cbiAgICAuZHotYnV0dG9ucyB7XG4gICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICBhIHtcbiAgICAgICAgZm9udC1zaXplOiB4LWxhcmdlO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCA0cHggd2hpdGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5kei1lcnJvci1tYXJrIHtcbiAgICAgIGZpbHRlcjogaW52ZXJ0KDUwJSkgc2VwaWEoMTAwJSkgc2F0dXJhdGUoMjAwMCUpIGh1ZS1yb3RhdGUoLTI1ZGVnKSBicmlnaHRuZXNzKDkzJSkgZHJvcC1zaGFkb3coOHB4IDhweCAxMHB4IHdoaXRlKTtcbiAgICB9XG4gICAgLmR6LWVycm9yLW1lc3NhZ2UsIC5kei1lcnJvci1tYXJrLCAuZHotc3VjY2Vzcy1tYXJrIHtcbiAgICAgIHRvcDogNDUlO1xuICAgIH1cbiAgICAuZHotZXJyb3ItbWVzc2FnZSB7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxuICAgIC5kei1zdWNjZXNzLW1hcmsge1xuICAgICAgZmlsdGVyOmRyb3Atc2hhZG93KDhweCA4cHggMTBweCAjMDBhNjVhKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cbiJdfQ== */", "import { Dropzone } from 'dropzone';\nDropzone.autoDiscover = false;\n\n// Dropzone.options\nimport(\"dropzone/dist/min/dropzone.min.css\");\nimport(\"dropzone/dist/min/basic.min.css\");\n\nimport('./dropzone.scss')\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 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[2];\n    let keyFilter = matches[3];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName,\n        eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n        identifier: matches[5],\n        methodName: matches[6],\n        keyFilter: matches[1] || 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\nfunction isSomething(object) {\n    return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n    return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\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    shouldIgnoreKeyboardEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = this.keyFilter.split(\"+\");\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!hasProperty(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    shouldIgnoreMouseEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = [this.keyFilter];\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        return false;\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    keyFilterDissatisfied(event, filters) {\n        const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n        return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\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        const actionEvent = this.prepareActionEvent(event);\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n            this.invokeWithEvent(actionEvent);\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        const { controller } = this.context;\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, controller });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    prepareActionEvent(event) {\n        return Object.assign(event, { params: this.action.params });\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            this.method.call(this.controller, event);\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.shouldIgnoreKeyboardEvent(event)) {\n            return false;\n        }\n        if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(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(element, attributeName) {\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    get selector() {\n        return this._selector;\n    }\n    set selector(selector) {\n        this._selector = selector;\n        this.refresh();\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 { selector } = this;\n        if (selector) {\n            const matches = element.matches(selector);\n            if (this.delegate.selectorMatchElement) {\n                return matches && this.delegate.selectorMatchElement(element, this.details);\n            }\n            return matches;\n        }\n        else {\n            return false;\n        }\n    }\n    matchElementsInTree(tree) {\n        const { selector } = this;\n        if (selector) {\n            const match = this.matchElement(tree) ? [tree] : [];\n            const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n            return match.concat(matches);\n        }\n        else {\n            return [];\n        }\n    }\n    elementMatched(element) {\n        const { selector } = this;\n        if (selector) {\n            this.selectorMatched(element, selector);\n        }\n    }\n    elementUnmatched(element) {\n        const selectors = this.matchesByElement.getKeysForValue(element);\n        for (const selector of selectors) {\n            this.selectorUnmatched(element, selector);\n        }\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const { selector } = this;\n        if (selector) {\n            const matches = this.matchElement(element);\n            const matchedBefore = this.matchesByElement.has(selector, element);\n            if (matches && !matchedBefore) {\n                this.selectorMatched(element, selector);\n            }\n            else if (!matches && matchedBefore) {\n                this.selectorUnmatched(element, selector);\n            }\n        }\n    }\n    selectorMatched(element, selector) {\n        this.delegate.selectorMatched(element, selector, this.details);\n        this.matchesByElement.add(selector, element);\n    }\n    selectorUnmatched(element, selector) {\n        this.delegate.selectorUnmatched(element, selector, this.details);\n        this.matchesByElement.delete(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.started = false;\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n        this.attributeObserverMap = new Map();\n    }\n    start() {\n        if (!this.started) {\n            this.outletDefinitions.forEach((outletName) => {\n                this.setupSelectorObserverForOutlet(outletName);\n                this.setupAttributeObserverForOutlet(outletName);\n            });\n            this.started = true;\n            this.dependentContexts.forEach((context) => context.refresh());\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n        this.attributeObserverMap.forEach((observer) => observer.refresh());\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.disconnectAllOutlets();\n            this.stopSelectorObservers();\n            this.stopAttributeObservers();\n        }\n    }\n    stopSelectorObservers() {\n        if (this.selectorObserverMap.size > 0) {\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    stopAttributeObservers() {\n        if (this.attributeObserverMap.size > 0) {\n            this.attributeObserverMap.forEach((observer) => observer.stop());\n            this.attributeObserverMap.clear();\n        }\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        const selector = this.selector(outletName);\n        const hasOutlet = this.hasOutlet(element, outletName);\n        const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n        if (selector) {\n            return hasOutlet && hasOutletController && element.matches(selector);\n        }\n        else {\n            return false;\n        }\n    }\n    elementMatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementAttributeValueChanged(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementUnmatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\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    updateSelectorObserverForOutlet(outletName) {\n        const observer = this.selectorObserverMap.get(outletName);\n        if (observer) {\n            observer.selector = this.selector(outletName);\n        }\n    }\n    setupSelectorObserverForOutlet(outletName) {\n        const selector = this.selector(outletName);\n        const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n        this.selectorObserverMap.set(outletName, selectorObserver);\n        selectorObserver.start();\n    }\n    setupAttributeObserverForOutlet(outletName) {\n        const attributeName = this.attributeNameForOutletName(outletName);\n        const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n        this.attributeObserverMap.set(outletName, attributeObserver);\n        attributeObserver.start();\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    attributeNameForOutletName(outletName) {\n        return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n    }\n    getOutletNameFromOutletAttributeName(attributeName) {\n        return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\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 schema() {\n        return this.context.schema;\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        return this.parseValueForElementAndIdentifier(element, identifier);\n    }\n    parseValueForElementAndIdentifier(element, identifier) {\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.call(definition.controllerConstructor, 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    proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n        const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n        if (scope) {\n            this.scopeObserver.elementMatchedValue(scope.element, scope);\n        }\n        else {\n            console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and 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\", page_up: \"PageUp\", page_down: \"PageDown\" }, 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 getOutletController(controller, element, identifier) {\n    return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n    let outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n    controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n    outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                    if (outletController)\n                        return outletController;\n                    throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n                }\n                throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outletElement) => {\n                        const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                        if (outletController)\n                            return outletController;\n                        console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    return outletElement;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\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 { controller, token, typeObject } = payload;\n    const hasType = isSomething(typeObject.type);\n    const hasDefault = isSomething(typeObject.default);\n    const fullObject = hasType && hasDefault;\n    const onlyType = hasType && !hasDefault;\n    const onlyDefault = !hasType && hasDefault;\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n    if (onlyType)\n        return typeFromObject;\n    if (onlyDefault)\n        return typeFromDefaultValue;\n    if (typeFromObject !== typeFromDefaultValue) {\n        const propertyPath = controller ? `${controller}.${token}` : 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 \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n    }\n    if (fullObject)\n        return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const { controller, token, typeDefinition } = payload;\n    const typeObject = { controller, token, typeObject: typeDefinition };\n    const typeFromObject = parseValueTypeObject(typeObject);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const hasDefault = hasProperty(typeDefinition, \"default\");\n    const hasType = hasProperty(typeDefinition, \"type\");\n    const typeObject = typeDefinition;\n    if (hasDefault)\n        return typeObject.default;\n    if (hasType) {\n        const { type } = typeObject;\n        const constantFromType = parseValueTypeConstant(type);\n        if (constantFromType)\n            return defaultValuesByType[constantFromType];\n    }\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const { token, typeDefinition } = payload;\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(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.replace(/_/g, \"\"));\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';\nimport {loadStripe} from '@stripe/stripe-js/pure';\nimport {alert} from 'bootbox';\nimport {getMetaValue} from \"../helpers\";\n\nconst APPEARANCE = {\n    theme: 'stripe',\n};\n\nexport class StripeController extends Controller {\n\n    static values = {\n        pubkey: String,\n        clientSecretUrl: String,\n        returnUrl: String,\n    }\n\n    static targets = ['element', 'message', 'form', 'submit', 'paymentMethodInfo', 'change']\n\n    connect() {\n        this.connectAsync().then()\n    }\n\n    async connectAsync() {\n        this.stripe = await loadStripe(this.pubkeyValue, { locale: document.documentElement.lang });\n        if (this.paymentMethodInfoTargets.length === 0) {\n            await this.updatePaymentMethod();\n        } else {\n            this.formTarget.hidden = true;\n            this.submitTarget.hidden = true;\n            this.changeTargets.forEach(t => t.hidden = false)\n        }\n    }\n\n    async updatePaymentMethod() {\n        if (!this.elements) {\n            this.elements = this.stripe.elements({ appearance: APPEARANCE, clientSecret: await this.getClientSecret() });\n            const paymentElement = this.elements.create('payment');\n            paymentElement.mount(this.elementTarget);\n        }\n        this.formTarget.hidden = false;\n        this.submitTarget.hidden = false;\n        this.paymentMethodInfoTargets.forEach(t => t.hidden = true)\n        this.changeTargets.forEach(t => t.hidden = true)\n    }\n\n    async cancelUpdatePaymentMethod() {\n        this.formTarget.hidden = true;\n        this.submitTarget.hidden = true;\n        this.paymentMethodInfoTargets.forEach(t => t.hidden = false)\n        this.changeTargets.forEach(t => t.hidden = false)\n    }\n\n    async handleSubmit(e) {\n        e.preventDefault();\n        this.setLoading(true);\n\n        const { error } = await this.stripe.confirmSetup({\n            elements: this.elements,\n            confirmParams: {\n                // Make sure to change this to your payment completion page\n                return_url: this.returnUrlValue,\n            },\n        });\n\n        console.log(error)\n\n        // This point will only be reached if there is an immediate error when\n        // confirming the payment. Otherwise, your customer will be redirected to\n        // your `return_url`. For some payment methods like iDEAL, your customer will\n        // be redirected to an intermediate site first to authorize the payment, then\n        // redirected to the `return_url`.\n        if (error.type === 'card_error' || error.type === 'validation_error') {\n            alert(error.message);\n        } else {\n            alert('An unexpected error occurred.');\n        }\n\n        this.setLoading(false);\n    }\n    async getClientSecret() {\n        const response = await fetch(this.clientSecretUrlValue, {\n            method: 'POST',\n            headers: this.headers\n        });\n        return await response.text();\n    }\n\n    setLoading(isLoading) {\n        this.submitTarget.disabled = !!isLoading;\n    }\n\n    get headers() {\n        return { 'X-CSRF-Token': getMetaValue('csrf-token') };\n    }\n\n}\n\n", "export function getMetaValue(name) {\n    const element = findElement(document.head, `meta[name=\"${name}\"]`);\n    if (element) {\n        return element.getAttribute(\"content\");\n    }\n}\n\nexport function findElement(root, selector) {\n    if (typeof root == \"string\") {\n        selector = root;\n        root = document;\n    }\n    return root.querySelector(selector);\n}\n\nexport function toArray(value) {\n    if (Array.isArray(value)) {\n        return value;\n    } else if (Array.from) {\n        return Array.from(value);\n    } else {\n        return [].slice.call(value);\n    }\n}\n\nexport function removeElement(el) {\n    if (el && el.parentNode) {\n        el.parentNode.removeChild(el);\n    }\n}\n\nexport function insertAfter(el, referenceNode) {\n    return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);\n}\n", "import {Controller} from '@hotwired/stimulus';\nexport class EmailAddressController extends Controller {\n    // static targets = [\"span\"];\n    static values = {\n        address: String\n    }\n\n    connect() {\n        this.validate(this.addressValue);\n    }\n\n    addressValueChanged() {\n        this.validate(this.addressValue);\n    }\n\n    validate(email) {\n        if (!email) {\n            this.element.classList.add(\"text-red\");\n            this.element.innerHTML = 'E-Mail-Adresse fehlt';\n            return;\n        }\n        this.element.innerHTML = email.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');\n        if (this.validateEmail(email)) {\n            this.element.classList.remove(\"text-yellow\");\n        } else {\n            this.element.classList.add(\"text-yellow\");\n        }\n        return false;\n    }\n\n    validateEmail(email) {\n        var re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n        return re.test(email);\n    }\n\n}\n\n", "import Dropzone from 'dropzone';\nimport {Controller} from '@hotwired/stimulus';\nimport {DirectUpload} from '@rails/activestorage';\nimport {findElement, getMetaValue, insertAfter, removeElement} from '../helpers';\nimport {alert} from 'bootbox';\n\nexport class DropzoneController extends Controller {\n\n    static targets = ['input'];\n\n    connect() {\n        this.dropZone = createDropZone(this);\n        this.hideFileInput();\n        this.bindEvents();\n        this.addStoredFiles();\n    }\n\n    // Private\n    hideFileInput() {\n        if (!this.inputTarget.getAttribute('multiple')) {\n            this.inputTarget.disabled = true;\n        }\n        this.inputTarget.style.display = 'none';\n    }\n\n    bindEvents() {\n        this.dropZone.on(\"addedfile\", file => {\n            setTimeout(() => {\n                (file.accepted || file.signed_id) && createDirectUploadController(this, file).start();\n            }, 500);\n        });\n\n        this.dropZone.on('removedfile', file => {\n            file.controller && removeElement(file.controller.hiddenInput);\n        });\n\n        this.dropZone.on('canceled', file => {\n            file.controller && file.controller.xhr.abort();\n        });\n\n        this.dropZone.on('success', (file) => {\n            if (!file.signed_id && !file.download_url) {\n                return;\n            }\n            const url = file.download_url ? file.download_url : `/rails/active_storage/blobs/${file.signed_id}/${encodeURI(file.name)}`;\n\n            findElement(\n                file.previewTemplate,\n                '.dz-download'\n            ).setAttribute('href', url);\n        })\n\n    }\n\n    addStoredFiles() {\n        const storedFilesJSON = this.data.get('storedFiles')\n        if (storedFilesJSON) {\n            const files = JSON.parse(storedFilesJSON);\n            // data-dropzone-stored-files='[{\"name\":\"Teilnahmebestaetigung Bamf 01-11-Vorlage-Gaeste.odt\",\"size\":108}]'\n            files.forEach(mockFile => {\n                const file = { ...mockFile, accepted: true };\n                this.dropZone.files.push(file);\n                this.dropZone.emit('addedfile', file);\n                // if (mockFile.url) {\n                //     this.createThumbnailFromUrl(mockFile, mockFile.url);\n                // }\n            });\n        }\n    }\n\n    get headers() {\n        return { 'X-CSRF-Token': getMetaValue('csrf-token') };\n    }\n\n    get url() {\n        return this.inputTarget.getAttribute('data-direct-upload-url');\n    }\n\n    get maxFiles() {\n        return this.data.get('maxFiles') || 1;\n    }\n\n    get maxFileSize() {\n        return this.data.get('maxFileSize') || 1;\n    }\n\n    get acceptedFiles() {\n        return this.data.get('acceptedFiles');\n    }\n\n    get addRemoveLinks() {\n        return this.data.get('addRemoveLink') || true;\n    }\n}\n\nclass DirectUploadController {\n    constructor(source, file) {\n        this.source = source;\n        this.file = file;\n    }\n\n    start() {\n        this.file.controller = this;\n        this.hiddenInput = this.createHiddenInput();\n        if (this.file.signed_id) {\n            // existing file, no need to upload, but initialize hidden field etc.\n            this.hiddenInput.value = this.file.signed_id;\n            this.emitDropzoneSuccess();\n            return;\n        }\n        const directUpload = createDirectUpload(this.file, this.source.url, this);\n        directUpload.create((error, attributes) => {\n            if (error) {\n                removeElement(this.hiddenInput);\n                this.emitDropzoneError(error);\n            } else {\n                this.hiddenInput.value = attributes.signed_id;\n                this.file.signed_id = attributes.signed_id;\n                this.emitDropzoneSuccess();\n            }\n        });\n    }\n\n    createHiddenInput() {\n        const input = document.createElement('input');\n        input.type = 'hidden';\n        input.name = this.source.inputTarget.name;\n        insertAfter(input, this.source.inputTarget);\n        return input;\n    }\n\n    directUploadWillStoreFileWithXHR(xhr) {\n        this.bindProgressEvent(xhr);\n        this.emitDropzoneUploading();\n    }\n\n    bindProgressEvent(xhr) {\n        this.xhr = xhr;\n        this.xhr.upload.addEventListener('progress', event =>\n            this.uploadRequestDidProgress(event)\n        );\n    }\n\n    uploadRequestDidProgress(event) {\n        const element = this.source.element;\n        const progress = (event.loaded / event.total) * 100;\n        findElement(\n            this.file.previewTemplate,\n            '.dz-upload'\n        ).style.width = `${progress}%`;\n    }\n\n    emitDropzoneUploading() {\n        this.file.status = Dropzone.UPLOADING;\n        this.source.dropZone.emit('processing', this.file);\n    }\n\n    emitDropzoneError(error) {\n        this.file.status = Dropzone.ERROR;\n        this.source.dropZone.emit('error', this.file, error);\n        this.source.dropZone.emit('complete', this.file);\n    }\n\n    emitDropzoneSuccess() {\n        this.file.status = Dropzone.SUCCESS;\n        this.source.dropZone.emit('success', this.file);\n        this.source.dropZone.emit('complete', this.file);\n    }\n}\n\nfunction createDirectUploadController(source, file) {\n    return new DirectUploadController(source, file);\n}\n\nfunction createDirectUpload(file, url, controller) {\n    return new DirectUpload(file, url, controller);\n}\n\nfunction createDropZone(controller) {\n\n    const template = '<div class=\"dz-preview dz-file-preview\"> <div class=\"dz-image\"><img data-dz-thumbnail/></div> <div class=\"dz-details\"> <div class=\"dz-size\"><span data-dz-size></span></div> <div class=\"dz-filename\"><span data-dz-name></span></div><div class=\"dz-buttons\" data-dz-buttons><a target=\"_blank\" href=\"#\" class=\"dz-download\" data-dz-download><i class=\"fa fa-eye\"></i></a> <a href=\"#\"><i class=\"fa fa-trash\" data-dz-remove></i></a></div> </div> <div class=\"dz-progress\"> <span class=\"dz-upload\" data-dz-uploadprogress></span> </div> <div class=\"dz-error-message\"><span data-dz-errormessage></span></div> <div class=\"dz-success-mark\"> <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"> <title>Check</title> <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"> <path d=\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" stroke-opacity=\"0.198794158\" stroke=\"#747474\" fill-opacity=\"0.816519475\" fill=\"#FFFFFF\"></path> </g> </svg> </div> <div class=\"dz-error-mark\"> <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"> <title>Error</title> <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"> <g stroke=\"#747474\" stroke-opacity=\"0.198794158\" fill=\"#FFFFFF\" fill-opacity=\"0.816519475\"> <path d=\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\"></path> </g> </g> </svg> </div> </div>';\n\n    const dropzone = new Dropzone(controller.element, {\n        url: controller.url,\n        headers: controller.headers,\n        maxFiles: controller.maxFiles,\n        maxFilesize: controller.maxFileSize,\n        acceptedFiles: controller.acceptedFiles,\n        addRemoveLinks: false,\n        autoQueue: false,\n        createImageThumbnails: false,\n        dictFallbackMessage: 'Ihr Browser unterst\u00FCtzt Drag&Drop Dateiuploads nicht.',\n        dictFallbackText: 'Benutzen Sie das Formular um Ihre Dateien hochzuladen.',\n        dictFileTooBig: 'Die gew\u00E4hlte Datei ist zu gro\u00DF. Die maximale Dateigr\u00F6\u00DFe betr\u00E4gt '+ controller.maxFileSize +'MB.',\n        dictInvalidFileType: 'Eine Datei dieses Typs kann nicht hochgeladen werden.',\n        dictResponseError: 'Der Server hat ihre Anfrage abgelehnt.',\n        dictCancelUpload: 'Hochladen abbrechen',\n        dictCancelUploadConfirmation: null,\n        dictRemoveFile: 'Entfernen',\n        dictMaxFilesExceeded: 'Sie k\u00F6nnen keine weiteren Dateien mehr hochladen.',\n        previewTemplate: template\n    });\n    dropzone.on('error', (file, error, __) => {\n        alert(error);\n        dropzone.removeFile(file);\n    });\n    return dropzone;\n}\n\n", "import {Controller} from '@hotwired/stimulus';\n\nexport class SelectToggleController extends Controller {\n\n    static targets = [\"element\", \"select\"]\n\n    connect() {\n        for (let element of this.elementTargets) {\n            this.toggle(element, this.selectTarget.value);\n            this.selectTarget.addEventListener('change', event => {\n                for (let element of this.elementTargets) {\n                    this.toggle(element, event.target.value);\n                }\n            })\n        }\n    }\n\n    toggle(element, selectValue) {\n        const visibleValues = element.dataset.values;\n        if (element && visibleValues != undefined) {\n            let hidden;\n            switch (visibleValues) {\n                case '*':\n                    hidden = !selectValue;\n                    break;\n                case '':\n                    hidden = true;\n                    break;\n                default:\n                    hidden = !visibleValues.split(',').includes(selectValue);\n            }\n            element.hidden = hidden;\n            if (['INPUT', 'SELECT'].includes(element.tagName)) {\n                element.disabled = hidden;\n            }\n        }\n    }\n\n}\n", "export function lastItemOf(arr) {\n  return arr[arr.length - 1];\n}\n\n// push only the items not included in the array\nexport function pushUnique(arr, ...items) {\n  items.forEach((item) => {\n    if (arr.includes(item)) {\n      return;\n    }\n    arr.push(item);\n  });\n  return arr;\n}\n\nexport function stringToArray(str, separator) {\n  // convert empty string to an empty array\n  return str ? str.split(separator) : [];\n}\n\nexport function isInRange(testVal, min, max) {\n  const minOK = min === undefined || testVal >= min;\n  const maxOK = max === undefined || testVal <= max;\n  return minOK && maxOK;\n}\n\nexport function limitToRange(val, min, max) {\n  if (val < min) {\n    return min;\n  }\n  if (val > max) {\n    return max;\n  }\n  return val;\n}\n\nexport function createTagRepeat(tagName, repeat, attributes = {}, index = 0, html = '') {\n  const openTagSrc = Object.keys(attributes).reduce((src, attr) => {\n    let val = attributes[attr];\n    if (typeof val === 'function') {\n      val = val(index);\n    }\n    return `${src} ${attr}=\"${val}\"`;\n  }, tagName);\n  html += `<${openTagSrc}></${tagName}>`;\n\n  const next = index + 1;\n  return next < repeat\n    ? createTagRepeat(tagName, repeat, attributes, next, html)\n    : html;\n}\n\n// Remove the spacing surrounding tags for HTML parser not to create text nodes\n// before/after elements\nexport function optimizeTemplateHTML(html) {\n  return html.replace(/>\\s+/g, '>').replace(/\\s+</, '<');\n}\n", "export function stripTime(timeValue) {\n  return new Date(timeValue).setHours(0, 0, 0, 0);\n}\n\nexport function today() {\n  return new Date().setHours(0, 0, 0, 0);\n}\n\n// Get the time value of the start of given date or year, month and day\nexport function dateValue(...args) {\n  switch (args.length) {\n    case 0:\n      return today();\n    case 1:\n      return stripTime(args[0]);\n  }\n\n  // use setFullYear() to keep 2-digit year from being mapped to 1900-1999\n  const newDate = new Date(0);\n  newDate.setFullYear(...args);\n  return newDate.setHours(0, 0, 0, 0);\n}\n\nexport function addDays(date, amount) {\n  const newDate = new Date(date);\n  return newDate.setDate(newDate.getDate() + amount);\n}\n\nexport function addWeeks(date, amount) {\n  return addDays(date, amount * 7);\n}\n\nexport function addMonths(date, amount) {\n  // If the day of the date is not in the new month, the last day of the new\n  // month will be returned. e.g. Jan 31 + 1 month \u2192 Feb 28 (not Mar 03)\n  const newDate = new Date(date);\n  const monthsToSet = newDate.getMonth() + amount;\n  let expectedMonth = monthsToSet % 12;\n  if (expectedMonth < 0) {\n    expectedMonth += 12;\n  }\n\n  const time = newDate.setMonth(monthsToSet);\n  return newDate.getMonth() !== expectedMonth ? newDate.setDate(0) : time;\n}\n\nexport function addYears(date, amount) {\n  // If the date is Feb 29 and the new year is not a leap year, Feb 28 of the\n  // new year will be returned.\n  const newDate = new Date(date);\n  const expectedMonth = newDate.getMonth();\n  const time = newDate.setFullYear(newDate.getFullYear() + amount);\n  return expectedMonth === 1 && newDate.getMonth() === 2 ? newDate.setDate(0) : time;\n}\n\n// Calculate the distance bettwen 2 days of the week\nfunction dayDiff(day, from) {\n  return (day - from + 7) % 7;\n}\n\n// Get the date of the specified day of the week of given base date\nexport function dayOfTheWeekOf(baseDate, dayOfWeek, weekStart = 0) {\n  const baseDay = new Date(baseDate).getDay();\n  return addDays(baseDate, dayDiff(dayOfWeek, weekStart) - dayDiff(baseDay, weekStart));\n}\n\nfunction calcWeekNum(dayOfTheWeek, sameDayOfFirstWeek) {\n  return Math.round((dayOfTheWeek - sameDayOfFirstWeek) / 604800000) + 1;\n}\n\n// Get the ISO week number of a date\nexport function getIsoWeek(date) {\n  // - Start of ISO week is Monday\n  // - Use Thursday for culculation because the first Thursday of ISO week is\n  //   always in January\n  const thuOfTheWeek = dayOfTheWeekOf(date, 4, 1);\n  // - Week 1 in ISO week is the week including Jan 04\n  // - Use the Thu of given date's week (instead of given date itself) to\n  //   calculate week 1 of the year so that Jan 01 - 03 won't be miscalculated\n  //   as week 0 when Jan 04 is Mon - Wed\n  const firstThu = dayOfTheWeekOf(new Date(thuOfTheWeek).setMonth(0, 4), 4, 1);\n  // return Math.round((thuOfTheWeek - firstThu) / 604800000) + 1;\n  return calcWeekNum(thuOfTheWeek, firstThu);\n}\n\n// Calculate week number in traditional week number system\n// @see https://en.wikipedia.org/wiki/Week#Other_week_numbering_systems\nfunction calcTraditionalWeekNumber(date, weekStart) {\n  // - Week 1 of traditional week is the week including the Jan 01\n  // - Use Jan 01 of given date's year to calculate the start of week 1\n  const startOfFirstWeek = dayOfTheWeekOf(new Date(date).setMonth(0, 1), weekStart, weekStart);\n  const startOfTheWeek = dayOfTheWeekOf(date, weekStart, weekStart);\n  const weekNum = calcWeekNum(startOfTheWeek, startOfFirstWeek);\n  if (weekNum < 53) {\n    return weekNum;\n  }\n  // If the 53rd week includes Jan 01, it's actually next year's week 1\n  const weekOneOfNextYear = dayOfTheWeekOf(new Date(date).setDate(32), weekStart, weekStart);\n  return startOfTheWeek === weekOneOfNextYear ? 1 : weekNum;\n}\n\n// Get the Western traditional week number of a date\nexport function getWesternTradWeek(date) {\n  // Start of Western traditionl week is Sunday\n  return calcTraditionalWeekNumber(date, 0);\n}\n\n// Get the Middle Eastern week number of a date\nexport function getMidEasternWeek(date) {\n  // Start of Middle Eastern week is Saturday\n  return calcTraditionalWeekNumber(date, 6);\n}\n\n// Get the start year of the period of years that includes given date\n// years: length of the year period\nexport function startOfYearPeriod(date, years) {\n  /* @see https://en.wikipedia.org/wiki/Year_zero#ISO_8601 */\n  const year = new Date(date).getFullYear();\n  return Math.floor(year / years) * years;\n}\n\n// Convert date to the first/last date of the month/year of the date\nexport function regularizeDate(date, timeSpan, useLastDate) {\n  if (timeSpan !== 1 && timeSpan !== 2) {\n    return date;\n  }\n  const newDate = new Date(date);\n  if (timeSpan === 1) {\n    useLastDate\n      ? newDate.setMonth(newDate.getMonth() + 1, 0)\n      : newDate.setDate(1);\n  } else {\n    useLastDate\n      ? newDate.setFullYear(newDate.getFullYear() + 1, 0, 0)\n      : newDate.setMonth(0, 1);\n  }\n  return newDate.setHours(0, 0, 0, 0);\n}\n", "import {stripTime, today} from './date.js';\nimport {lastItemOf} from './utils.js';\n\n// pattern for format parts\nexport const reFormatTokens = /dd?|DD?|mm?|MM?|yy?(?:yy)?/;\n// pattern for non date parts\nexport const reNonDateParts = /[\\s!-/:-@[-`{-~\u5E74\u6708\u65E5]+/;\n// cache for persed formats\nlet knownFormats = {};\n// parse funtions for date parts\nconst parseFns = {\n  y(date, year) {\n    return new Date(date).setFullYear(parseInt(year, 10));\n  },\n  m(date, month, locale) {\n    const newDate = new Date(date);\n    let monthIndex = parseInt(month, 10) - 1;\n\n    if (isNaN(monthIndex)) {\n      if (!month) {\n        return NaN;\n      }\n\n      const monthName = month.toLowerCase();\n      const compareNames = name => name.toLowerCase().startsWith(monthName);\n      // compare with both short and full names because some locales have periods\n      // in the short names (not equal to the first X letters of the full names)\n      monthIndex = locale.monthsShort.findIndex(compareNames);\n      if (monthIndex < 0) {\n        monthIndex = locale.months.findIndex(compareNames);\n      }\n      if (monthIndex < 0) {\n        return NaN;\n      }\n    }\n\n    newDate.setMonth(monthIndex);\n    return newDate.getMonth() !== normalizeMonth(monthIndex)\n      ? newDate.setDate(0)\n      : newDate.getTime();\n  },\n  d(date, day) {\n    return new Date(date).setDate(parseInt(day, 10));\n  },\n};\n// format functions for date parts\nconst formatFns = {\n  d(date) {\n    return date.getDate();\n  },\n  dd(date) {\n    return padZero(date.getDate(), 2);\n  },\n  D(date, locale) {\n    return locale.daysShort[date.getDay()];\n  },\n  DD(date, locale) {\n    return locale.days[date.getDay()];\n  },\n  m(date) {\n    return date.getMonth() + 1;\n  },\n  mm(date) {\n    return padZero(date.getMonth() + 1, 2);\n  },\n  M(date, locale) {\n    return locale.monthsShort[date.getMonth()];\n  },\n  MM(date, locale) {\n    return locale.months[date.getMonth()];\n  },\n  y(date) {\n    return date.getFullYear();\n  },\n  yy(date) {\n    return padZero(date.getFullYear(), 2).slice(-2);\n  },\n  yyyy(date) {\n    return padZero(date.getFullYear(), 4);\n  },\n};\n\n// get month index in normal range (0 - 11) from any number\nfunction normalizeMonth(monthIndex) {\n  return monthIndex > -1 ? monthIndex % 12 : normalizeMonth(monthIndex + 12);\n}\n\nfunction padZero(num, length) {\n  return num.toString().padStart(length, '0');\n}\n\nfunction parseFormatString(format) {\n  if (typeof format !== 'string') {\n    throw new Error(\"Invalid date format.\");\n  }\n  if (format in knownFormats) {\n    return knownFormats[format];\n  }\n\n  // sprit the format string into parts and seprators\n  const separators = format.split(reFormatTokens);\n  const parts = format.match(new RegExp(reFormatTokens, 'g'));\n  if (separators.length === 0 || !parts) {\n    throw new Error(\"Invalid date format.\");\n  }\n\n  // collect format functions used in the format\n  const partFormatters = parts.map(token => formatFns[token]);\n\n  // collect parse function keys used in the format\n  // iterate over parseFns' keys in order to keep the order of the keys.\n  const partParserKeys = Object.keys(parseFns).reduce((keys, key) => {\n    const token = parts.find(part => part[0] !== 'D' && part[0].toLowerCase() === key);\n    if (token) {\n      keys.push(key);\n    }\n    return keys;\n  }, []);\n\n  return knownFormats[format] = {\n    parser(dateStr, locale) {\n      const dateParts = dateStr.split(reNonDateParts).reduce((dtParts, part, index) => {\n        if (part.length > 0 && parts[index]) {\n          const token = parts[index][0];\n          if (token === 'M') {\n            dtParts.m = part;\n          } else if (token !== 'D') {\n            dtParts[token] = part;\n          }\n        }\n        return dtParts;\n      }, {});\n\n      // iterate over partParserkeys so that the parsing is made in the oder\n      // of year, month and day to prevent the day parser from correcting last\n      // day of month wrongly\n      return partParserKeys.reduce((origDate, key) => {\n        const newDate = parseFns[key](origDate, dateParts[key], locale);\n        // ingnore the part failed to parse\n        return isNaN(newDate) ? origDate : newDate;\n      }, today());\n    },\n    formatter(date, locale) {\n      let dateStr = partFormatters.reduce((str, fn, index) => {\n        return str += `${separators[index]}${fn(date, locale)}`;\n      }, '');\n      // separators' length is always parts' length + 1,\n      return dateStr += lastItemOf(separators);\n    },\n  };\n}\n\nexport function parseDate(dateStr, format, locale) {\n  if (dateStr instanceof Date || typeof dateStr === 'number') {\n    const date = stripTime(dateStr);\n    return isNaN(date) ? undefined : date;\n  }\n  if (!dateStr) {\n    return undefined;\n  }\n  if (dateStr === 'today') {\n    return today();\n  }\n\n  if (format && format.toValue) {\n    const date = format.toValue(dateStr, format, locale);\n    return isNaN(date) ? undefined : stripTime(date);\n  }\n\n  return parseFormatString(format).parser(dateStr, locale);\n}\n\nexport function formatDate(date, format, locale) {\n  if (isNaN(date) || (!date && date !== 0)) {\n    return '';\n  }\n\n  const dateObj = typeof date === 'number' ? new Date(date) : date;\n\n  if (format.toDisplay) {\n    return format.toDisplay(dateObj, format, locale);\n  }\n\n  return parseFormatString(format).formatter(dateObj, locale);\n}\n", "const range = document.createRange();\n\nexport function parseHTML(html) {\n  return range.createContextualFragment(html);\n}\n\nexport function getParent(el) {\n  return el.parentElement\n    || (el.parentNode instanceof ShadowRoot ? el.parentNode.host : undefined);\n}\n\nexport function isActiveElement(el) {\n  return el.getRootNode().activeElement === el;\n}\n\n// equivalent to jQuery's :visble\nexport function isVisible(el) {\n  return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function hideElement(el) {\n  if (el.style.display === 'none') {\n    return;\n  }\n  // back up the existing display setting in data-style-display\n  if (el.style.display) {\n    el.dataset.styleDisplay = el.style.display;\n  }\n  el.style.display = 'none';\n}\n\nexport function showElement(el) {\n  if (el.style.display !== 'none') {\n    return;\n  }\n  if (el.dataset.styleDisplay) {\n    // restore backed-up dispay property\n    el.style.display = el.dataset.styleDisplay;\n    delete el.dataset.styleDisplay;\n  } else {\n    el.style.display = '';\n  }\n}\n\nexport function emptyChildNodes(el) {\n  if (el.firstChild) {\n    el.removeChild(el.firstChild);\n    emptyChildNodes(el);\n  }\n}\n\nexport function replaceChildNodes(el, newChildNodes) {\n  emptyChildNodes(el);\n  if (newChildNodes instanceof DocumentFragment) {\n    el.appendChild(newChildNodes);\n  } else if (typeof newChildNodes === 'string') {\n    el.appendChild(parseHTML(newChildNodes));\n  } else if (typeof newChildNodes.forEach === 'function') {\n    newChildNodes.forEach((node) => {\n      el.appendChild(node);\n    });\n  }\n}\n", "const listenerRegistry = new WeakMap();\nconst {addEventListener, removeEventListener} = EventTarget.prototype;\n\n// Register event listeners to a key object\n// listeners: array of listener definitions;\n//   - each definition must be a flat array of event target and the arguments\n//     used to call addEventListener() on the target\nexport function registerListeners(keyObj, listeners) {\n  let registered = listenerRegistry.get(keyObj);\n  if (!registered) {\n    registered = [];\n    listenerRegistry.set(keyObj, registered);\n  }\n  listeners.forEach((listener) => {\n    addEventListener.call(...listener);\n    registered.push(listener);\n  });\n}\n\nexport function unregisterListeners(keyObj) {\n  let listeners = listenerRegistry.get(keyObj);\n  if (!listeners) {\n    return;\n  }\n  listeners.forEach((listener) => {\n    removeEventListener.call(...listener);\n  });\n  listenerRegistry.delete(keyObj);\n}\n\n// Event.composedPath() polyfill for Edge\n// based on https://gist.github.com/kleinfreund/e9787d73776c0e3750dcfcdc89f100ec\nif (!Event.prototype.composedPath) {\n  const getComposedPath = (node, path = []) => {\n    path.push(node);\n\n    let parent;\n    if (node.parentNode) {\n      parent = node.parentNode;\n    } else if (node.host) { // ShadowRoot\n      parent = node.host;\n    } else if (node.defaultView) {  // Document\n      parent = node.defaultView;\n    }\n    return parent ? getComposedPath(parent, path) : path;\n  };\n\n  Event.prototype.composedPath = function () {\n    return getComposedPath(this.target);\n  };\n}\n\nfunction findFromPath(path, criteria, currentTarget) {\n  const [node, ...rest] = path;\n  if (criteria(node)) {\n    return node;\n  }\n  if (node === currentTarget || node.tagName === 'HTML' || rest.length === 0) {\n    // stop when reaching currentTarget or <html>\n    return;\n  }\n  return findFromPath(rest, criteria, currentTarget);\n}\n\n// Search for the actual target of a delegated event\nexport function findElementInEventPath(ev, selector) {\n  const criteria = typeof selector === 'function'\n    ? selector\n    : el => el instanceof Element && el.matches(selector);\n  return findFromPath(ev.composedPath(), criteria, ev.currentTarget);\n}\n", "// default locales\nexport default {\n  en: {\n    days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n    daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n    daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n    months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n    monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n    today: \"Today\",\n    clear: \"Clear\",\n    titleFormat: \"MM y\"\n  }\n};\n", "// config options updatable by setOptions() and their default values\nexport default {\n  autohide: false,\n  beforeShowDay: null,\n  beforeShowDecade: null,\n  beforeShowMonth: null,\n  beforeShowYear: null,\n  clearButton: false,\n  dateDelimiter: ',',\n  datesDisabled: [],\n  daysOfWeekDisabled: [],\n  daysOfWeekHighlighted: [],\n  defaultViewDate: undefined, // placeholder, defaults to today() by the program\n  disableTouchKeyboard: false,\n  enableOnReadonly: true,\n  format: 'mm/dd/yyyy',\n  language: 'en',\n  maxDate: null,\n  maxNumberOfDates: 1,\n  maxView: 3,\n  minDate: null,\n  nextArrow: '\u00BB',\n  orientation: 'auto',\n  pickLevel: 0,\n  prevArrow: '\u00AB',\n  showDaysOfWeek: true,\n  showOnClick: true,\n  showOnFocus: true,\n  startView: 0,\n  title: '',\n  todayButton: false,\n  todayButtonMode: 0,\n  todayHighlight: false,\n  updateOnBlur: true,\n  weekNumbers: 0,\n  weekStart: 0,\n};\n", "import {pushUnique} from '../lib/utils.js';\nimport {\n  dateValue,\n  regularizeDate,\n  getIsoWeek,\n  getWesternTradWeek,\n  getMidEasternWeek,\n} from '../lib/date.js';\nimport {reFormatTokens, parseDate} from '../lib/date-format.js';\nimport {parseHTML} from '../lib/dom.js';\nimport defaultOptions from './defaultOptions.js';\n\nconst {\n  language: defaultLang,\n  format: defaultFormat,\n  weekStart: defaultWeekStart,\n} = defaultOptions;\n\n// Reducer function to filter out invalid day-of-week from the input\nfunction sanitizeDOW(dow, day) {\n  return dow.length < 6 && day >= 0 && day < 7\n    ? pushUnique(dow, day)\n    : dow;\n}\n\nfunction determineGetWeekMethod(numberingMode, weekStart) {\n  const methodId = numberingMode === 4\n    ? (weekStart === 6 ? 3 : !weekStart + 1)\n    : numberingMode;\n  switch (methodId) {\n    case 1:\n      return getIsoWeek;\n    case 2:\n      return getWesternTradWeek;\n    case 3:\n      return getMidEasternWeek;\n  }\n}\n\nfunction updateWeekStart(newValue, config, weekNumbers) {\n  config.weekStart = newValue;\n  config.weekEnd = (newValue + 6) % 7;\n  if (weekNumbers === 4) {\n    config.getWeekNumber = determineGetWeekMethod(4, newValue);\n  }\n  return newValue;\n}\n\n// validate input date. if invalid, fallback to the original value\nfunction validateDate(value, format, locale, origValue) {\n  const date = parseDate(value, format, locale);\n  return date !== undefined ? date : origValue;\n}\n\n// Validate viewId. if invalid, fallback to the original value\nfunction validateViewId(value, origValue, max = 3) {\n  const viewId = parseInt(value, 10);\n  return viewId >= 0 && viewId <= max ? viewId : origValue;\n}\n\nfunction replaceOptions(options, from, to, convert = undefined) {\n  if (from in options) {\n    if (!(to in options)) {\n      options[to] = convert ? convert(options[from]) : options[from];\n    }\n    delete options[from];\n  }\n}\n\n// Create Datepicker configuration to set\nexport default function processOptions(options, datepicker) {\n  const inOpts = Object.assign({}, options);\n  const config = {};\n  const locales = datepicker.constructor.locales;\n  const rangeEnd = !!datepicker.rangeSideIndex;\n  let {\n    datesDisabled,\n    format,\n    language,\n    locale,\n    maxDate,\n    maxView,\n    minDate,\n    pickLevel,\n    startView,\n    weekNumbers,\n    weekStart,\n  } = datepicker.config || {};\n\n  // for backword compatibility\n  replaceOptions(inOpts, 'calendarWeeks', 'weekNumbers', val => val ? 1 : 0);\n  replaceOptions(inOpts, 'clearBtn', 'clearButton');\n  replaceOptions(inOpts, 'todayBtn', 'todayButton');\n  replaceOptions(inOpts, 'todayBtnMode', 'todayButtonMode');\n\n  if (inOpts.language) {\n    let lang;\n    if (inOpts.language !== language) {\n      if (locales[inOpts.language]) {\n        lang = inOpts.language;\n      } else {\n        // Check if langauge + region tag can fallback to the one without\n        // region (e.g. fr-CA \u2192 fr)\n        lang = inOpts.language.split('-')[0];\n        if (!locales[lang]) {\n          lang = false;\n        }\n      }\n    }\n    delete inOpts.language;\n    if (lang) {\n      language = config.language = lang;\n\n      // update locale as well when updating language\n      const origLocale = locale || locales[defaultLang];\n      // use default language's properties for the fallback\n      locale = Object.assign({\n        format: defaultFormat,\n        weekStart: defaultWeekStart\n      }, locales[defaultLang]);\n      if (language !== defaultLang) {\n        Object.assign(locale, locales[language]);\n      }\n      config.locale = locale;\n      // if format and/or weekStart are the same as old locale's defaults,\n      // update them to new locale's defaults\n      if (format === origLocale.format) {\n        format = config.format = locale.format;\n      }\n      if (weekStart === origLocale.weekStart) {\n        weekStart = updateWeekStart(locale.weekStart, config, weekNumbers);\n      }\n    }\n  }\n\n  if (inOpts.format) {\n    const hasToDisplay = typeof inOpts.format.toDisplay === 'function';\n    const hasToValue = typeof inOpts.format.toValue === 'function';\n    const validFormatString = reFormatTokens.test(inOpts.format);\n    if ((hasToDisplay && hasToValue) || validFormatString) {\n      format = config.format = inOpts.format;\n    }\n    delete inOpts.format;\n  }\n\n  //*** pick level ***//\n  let newPickLevel = pickLevel;\n  if ('pickLevel' in inOpts) {\n    newPickLevel = validateViewId(inOpts.pickLevel, pickLevel, 2);\n    delete inOpts.pickLevel;\n  }\n  if (newPickLevel !== pickLevel) {\n    if (newPickLevel > pickLevel) {\n      // complement current minDate/madDate so that the existing range will be\n      // expanded to fit the new level later\n      if (!('minDate' in inOpts)) {\n        inOpts.minDate = minDate;\n      }\n      if (!('maxDate' in inOpts)) {\n        inOpts.maxDate = maxDate;\n      }\n    }\n    // complement datesDisabled so that it will be reset later\n    if (datesDisabled && !inOpts.datesDisabled) {\n      inOpts.datesDisabled = [];\n    }\n    pickLevel = config.pickLevel = newPickLevel;\n  }\n\n  //*** dates ***//\n  // while min and maxDate for \"no limit\" in the options are better to be null\n  // (especially when updating), the ones in the config have to be undefined\n  // because null is treated as 0 (= unix epoch) when comparing with time value\n  let minDt = minDate;\n  let maxDt = maxDate;\n  if ('minDate' in inOpts) {\n    const defaultMinDt = dateValue(0, 0, 1);\n    minDt = inOpts.minDate === null\n      ? defaultMinDt  // set 0000-01-01 to prevent negative values for year\n      : validateDate(inOpts.minDate, format, locale, minDt);\n    if (minDt !== defaultMinDt) {\n      minDt = regularizeDate(minDt, pickLevel, false);\n    }\n    delete inOpts.minDate;\n  }\n  if ('maxDate' in inOpts) {\n    maxDt = inOpts.maxDate === null\n      ? undefined\n      : validateDate(inOpts.maxDate, format, locale, maxDt);\n    if (maxDt !== undefined) {\n      maxDt = regularizeDate(maxDt, pickLevel, true);\n    }\n    delete inOpts.maxDate;\n  }\n  if (maxDt < minDt) {\n    minDate = config.minDate = maxDt;\n    maxDate = config.maxDate = minDt;\n  } else {\n    if (minDate !== minDt) {\n      minDate = config.minDate = minDt;\n    }\n    if (maxDate !== maxDt) {\n      maxDate = config.maxDate = maxDt;\n    }\n  }\n\n  if (inOpts.datesDisabled) {\n    const dtsDisabled = inOpts.datesDisabled;\n    if (typeof dtsDisabled === 'function') {\n      config.datesDisabled = null;\n      config.checkDisabled = (timeValue, viewId) => dtsDisabled(\n        new Date(timeValue),\n        viewId,\n        rangeEnd\n      );\n    } else {\n      const disabled = config.datesDisabled = dtsDisabled.reduce((dates, dt) => {\n        const date = parseDate(dt, format, locale);\n        return date !== undefined\n          ? pushUnique(dates, regularizeDate(date, pickLevel, rangeEnd))\n          : dates;\n      }, []);\n      config.checkDisabled = timeValue => disabled.includes(timeValue);\n    }\n    delete inOpts.datesDisabled;\n  }\n  if ('defaultViewDate' in inOpts) {\n    const viewDate = parseDate(inOpts.defaultViewDate, format, locale);\n    if (viewDate !== undefined) {\n      config.defaultViewDate = viewDate;\n    }\n    delete inOpts.defaultViewDate;\n  }\n\n  //*** days of week ***//\n  if ('weekStart' in inOpts) {\n    const wkStart = Number(inOpts.weekStart) % 7;\n    if (!isNaN(wkStart)) {\n      weekStart = updateWeekStart(wkStart, config, weekNumbers);\n    }\n    delete inOpts.weekStart;\n  }\n  if (inOpts.daysOfWeekDisabled) {\n    config.daysOfWeekDisabled = inOpts.daysOfWeekDisabled.reduce(sanitizeDOW, []);\n    delete inOpts.daysOfWeekDisabled;\n  }\n  if (inOpts.daysOfWeekHighlighted) {\n    config.daysOfWeekHighlighted = inOpts.daysOfWeekHighlighted.reduce(sanitizeDOW, []);\n    delete inOpts.daysOfWeekHighlighted;\n  }\n\n  //*** week numbers ***//\n  if ('weekNumbers' in inOpts) {\n    let method = inOpts.weekNumbers;\n    if (method) {\n      const getWeekNumber = typeof method === 'function'\n        ? (timeValue, startOfWeek) => method(new Date(timeValue), startOfWeek)\n        : determineGetWeekMethod((method = parseInt(method, 10)), weekStart);\n      if (getWeekNumber) {\n        weekNumbers = config.weekNumbers = method;\n        config.getWeekNumber = getWeekNumber;\n      }\n    } else {\n      weekNumbers = config.weekNumbers = 0;\n      config.getWeekNumber = null;\n    }\n    delete inOpts.weekNumbers;\n  }\n\n  //*** multi date ***//\n  if ('maxNumberOfDates' in inOpts) {\n    const maxNumberOfDates = parseInt(inOpts.maxNumberOfDates, 10);\n    if (maxNumberOfDates >= 0) {\n      config.maxNumberOfDates = maxNumberOfDates;\n      config.multidate = maxNumberOfDates !== 1;\n    }\n    delete inOpts.maxNumberOfDates;\n  }\n  if (inOpts.dateDelimiter) {\n    config.dateDelimiter = String(inOpts.dateDelimiter);\n    delete inOpts.dateDelimiter;\n  }\n\n  //*** view ***//\n  let newMaxView = maxView;\n  if ('maxView' in inOpts) {\n    newMaxView = validateViewId(inOpts.maxView, maxView);\n    delete inOpts.maxView;\n  }\n  // ensure max view >= pick level\n  newMaxView = pickLevel > newMaxView ? pickLevel : newMaxView;\n  if (newMaxView !== maxView) {\n    maxView = config.maxView = newMaxView;\n  }\n\n  let newStartView = startView;\n  if ('startView' in inOpts) {\n    newStartView = validateViewId(inOpts.startView, newStartView);\n    delete inOpts.startView;\n  }\n  // ensure pick level <= start view <= max view\n  if (newStartView < pickLevel) {\n    newStartView = pickLevel;\n  } else if (newStartView > maxView) {\n    newStartView = maxView;\n  }\n  if (newStartView !== startView) {\n    config.startView = newStartView;\n  }\n\n  //*** template ***//\n  if (inOpts.prevArrow) {\n    const prevArrow = parseHTML(inOpts.prevArrow);\n    if (prevArrow.childNodes.length > 0) {\n      config.prevArrow = prevArrow.childNodes;\n    }\n    delete inOpts.prevArrow;\n  }\n  if (inOpts.nextArrow) {\n    const nextArrow = parseHTML(inOpts.nextArrow);\n    if (nextArrow.childNodes.length > 0) {\n      config.nextArrow = nextArrow.childNodes;\n    }\n    delete inOpts.nextArrow;\n  }\n\n  //*** misc ***//\n  if ('disableTouchKeyboard' in inOpts) {\n    config.disableTouchKeyboard = 'ontouchstart' in document && !!inOpts.disableTouchKeyboard;\n    delete inOpts.disableTouchKeyboard;\n  }\n  if (inOpts.orientation) {\n    const orientation = inOpts.orientation.toLowerCase().split(/\\s+/g);\n    config.orientation = {\n      x: orientation.find(x => (x === 'left' || x === 'right')) || 'auto',\n      y: orientation.find(y => (y === 'top' || y === 'bottom')) || 'auto',\n    };\n    delete inOpts.orientation;\n  }\n  if ('todayButtonMode' in inOpts) {\n    switch(inOpts.todayButtonMode) {\n      case 0:\n      case 1:\n        config.todayButtonMode = inOpts.todayButtonMode;\n    }\n    delete inOpts.todayButtonMode;\n  }\n\n  //*** copy the rest ***//\n  Object.entries(inOpts).forEach(([key, value]) => {\n    if (value !== undefined && key in defaultOptions) {\n      config[key] = value;\n    }\n  });\n\n  return config;\n}\n", "const defaultShortcutKeys = {\n  show: {key: 'ArrowDown'},\n  hide: null,\n  toggle: {key: 'Escape'},\n  prevButton: {key: 'ArrowLeft', ctrlOrMetaKey: true},\n  nextButton: {key: 'ArrowRight', ctrlOrMetaKey: true},\n  viewSwitch: {key: 'ArrowUp', ctrlOrMetaKey: true},\n  clearButton: {key: 'Backspace', ctrlOrMetaKey: true},\n  todayButton: {key: '.', ctrlOrMetaKey: true},\n  exitEditMode: {key: 'ArrowDown', ctrlOrMetaKey: true},\n};\n\nexport default function createShortcutKeyConfig(options) {\n  return Object.keys(defaultShortcutKeys).reduce((keyDefs, shortcut) => {\n    const keyDef = options[shortcut] === undefined\n      ? defaultShortcutKeys[shortcut]\n      : options[shortcut];\n    const key = keyDef && keyDef.key;\n    if (!key || typeof key !== 'string') {\n      return keyDefs;\n    }\n\n    const normalizedDef = {\n      key,\n      ctrlOrMetaKey: !!(keyDef.ctrlOrMetaKey || keyDef.ctrlKey || keyDef.metaKey),\n    };\n    if (key.length > 1) {\n      normalizedDef.altKey = !!keyDef.altKey;\n      normalizedDef.shiftKey = !!keyDef.shiftKey;\n    }\n    keyDefs[shortcut] = normalizedDef;\n    return keyDefs;\n  }, {});\n}\n", "import {optimizeTemplateHTML} from '../../lib/utils.js';\n\nconst getButtons = buttonList => buttonList\n  .map(classes => `<button type=\"button\" class=\"%buttonClass% ${classes}\" tabindex=\"-1\"></button>`)\n  .join('');\n\nexport default optimizeTemplateHTML(`<div class=\"datepicker\">\n  <div class=\"datepicker-picker\">\n    <div class=\"datepicker-header\">\n      <div class=\"datepicker-title\"></div>\n      <div class=\"datepicker-controls\">\n        ${getButtons([\n          'prev-button prev-btn',\n          'view-switch',\n          'next-button next-btn',\n        ])}\n      </div>\n    </div>\n    <div class=\"datepicker-main\"></div>\n    <div class=\"datepicker-footer\">\n      <div class=\"datepicker-controls\">\n        ${getButtons([\n          'today-button today-btn',\n          'clear-button clear-btn',\n        ])}\n      </div>\n    </div>\n  </div>\n</div>`);\n", "import {createTagRepeat, optimizeTemplateHTML} from '../../lib/utils.js';\n\nexport default optimizeTemplateHTML(`<div class=\"days\">\n  <div class=\"days-of-week\">${createTagRepeat('span', 7, {class: 'dow'})}</div>\n  <div class=\"datepicker-grid\">${createTagRepeat('span', 42)}</div>\n</div>`);\n", "import {createTagRepeat, optimizeTemplateHTML} from '../../lib/utils.js';\n\nexport default optimizeTemplateHTML(`<div class=\"week-numbers calendar-weeks\">\n  <div class=\"days-of-week\"><span class=\"dow\"></span></div>\n  <div class=\"weeks\">${createTagRepeat('span', 6, {class: 'week'})}</div>\n</div>`);\n\n", "import {pushUnique} from '../../lib/utils.js';\nimport {parseHTML, replaceChildNodes} from '../../lib/dom.js';\n\n// Base class of the view classes\nexport default class View {\n  constructor(picker, config) {\n    Object.assign(this, config, {\n      picker,\n      element: parseHTML(`<div class=\"datepicker-view\"></div>`).firstChild,\n      selected: [],\n      isRangeEnd: !!picker.datepicker.rangeSideIndex,\n    });\n    this.init(this.picker.datepicker.config);\n  }\n\n  init(options) {\n    if ('pickLevel' in options) {\n      this.isMinView = this.id === options.pickLevel;\n    }\n    this.setOptions(options);\n    this.updateFocus();\n    this.updateSelection();\n  }\n\n  prepareForRender(switchLabel, prevButtonDisabled, nextButtonDisabled) {\n    // refresh disabled years on every render in order to clear the ones added\n    // by beforeShow hook at previous render\n    this.disabled = [];\n\n    const picker = this.picker;\n    picker.setViewSwitchLabel(switchLabel);\n    picker.setPrevButtonDisabled(prevButtonDisabled);\n    picker.setNextButtonDisabled(nextButtonDisabled);\n  }\n\n  setDisabled(date, classList) {\n    classList.add('disabled');\n    pushUnique(this.disabled, date);\n  }\n\n  // Execute beforeShow() callback and apply the result to the element\n  // args:\n  performBeforeHook(el, timeValue) {\n    let result = this.beforeShow(new Date(timeValue));\n    switch (typeof result) {\n      case 'boolean':\n        result = {enabled: result};\n        break;\n      case 'string':\n        result = {classes: result};\n    }\n\n    if (result) {\n      const classList = el.classList;\n      if (result.enabled === false) {\n        this.setDisabled(timeValue, classList);\n      }\n      if (result.classes) {\n        const extraClasses = result.classes.split(/\\s+/);\n        classList.add(...extraClasses);\n        if (extraClasses.includes('disabled')) {\n          this.setDisabled(timeValue, classList);\n        }\n      }\n      if (result.content) {\n        replaceChildNodes(el, result.content);\n      }\n    }\n  }\n\n  renderCell(el, content, cellVal, date, {selected, range}, outOfScope, extraClasses = []) {\n    el.textContent = content;\n    if (this.isMinView) {\n      el.dataset.date = date;\n    }\n\n    const classList = el.classList;\n    el.className = `datepicker-cell ${this.cellClass}`;\n    if (cellVal < this.first) {\n      classList.add('prev');\n    } else if (cellVal > this.last) {\n      classList.add('next');\n    }\n    classList.add(...extraClasses);\n    if (outOfScope || this.checkDisabled(date, this.id)) {\n      this.setDisabled(date, classList);\n    }\n    if (range) {\n      const [rangeStart, rangeEnd] = range;\n      if (cellVal > rangeStart && cellVal < rangeEnd) {\n        classList.add('range');\n      }\n      if (cellVal === rangeStart) {\n        classList.add('range-start');\n      }\n      if (cellVal === rangeEnd) {\n        classList.add('range-end');\n      }\n    }\n    if (selected.includes(cellVal)) {\n      classList.add('selected');\n    }\n    if (cellVal === this.focused) {\n      classList.add('focused');\n    }\n\n    if (this.beforeShow) {\n      this.performBeforeHook(el, date);\n    }\n  }\n\n  refreshCell(el, cellVal, selected, [rangeStart, rangeEnd]) {\n    const classList = el.classList;\n    classList.remove('range', 'range-start', 'range-end', 'selected', 'focused');\n    if (cellVal > rangeStart && cellVal < rangeEnd) {\n      classList.add('range');\n    }\n    if (cellVal === rangeStart) {\n      classList.add('range-start');\n    }\n    if (cellVal === rangeEnd) {\n      classList.add('range-end');\n    }\n    if (selected.includes(cellVal)) {\n      classList.add('selected');\n    }\n    if (cellVal === this.focused) {\n      classList.add('focused');\n    }\n  }\n\n  changeFocusedCell(cellIndex) {\n    this.grid.querySelectorAll('.focused').forEach((el) => {\n      el.classList.remove('focused');\n    });\n    this.grid.children[cellIndex].classList.add('focused');\n  }\n}\n", "import {today, dateValue, addDays, addWeeks, dayOfTheWeekOf} from '../../lib/date.js';\nimport {formatDate} from '../../lib/date-format.js';\nimport {parseHTML, showElement, hideElement} from '../../lib/dom.js';\nimport daysTemplate from '../templates/daysTemplate.js';\nimport weekNumbersTemplate from '../templates/weekNumbersTemplate.js';\nimport View from './View.js';\n\nexport default class DaysView extends View {\n  constructor(picker) {\n    super(picker, {\n      id: 0,\n      name: 'days',\n      cellClass: 'day',\n    });\n  }\n\n  init(options, onConstruction = true) {\n    if (onConstruction) {\n      const inner = parseHTML(daysTemplate).firstChild;\n      this.dow = inner.firstChild;\n      this.grid = inner.lastChild;\n      this.element.appendChild(inner);\n    }\n    super.init(options);\n  }\n\n  setOptions(options) {\n    let updateDOW;\n\n    if ('minDate' in options) {\n      this.minDate = options.minDate;\n    }\n    if ('maxDate' in options) {\n      this.maxDate = options.maxDate;\n    }\n    if (options.checkDisabled) {\n      this.checkDisabled = options.checkDisabled;\n    }\n    if (options.daysOfWeekDisabled) {\n      this.daysOfWeekDisabled = options.daysOfWeekDisabled;\n      updateDOW = true;\n    }\n    if (options.daysOfWeekHighlighted) {\n      this.daysOfWeekHighlighted = options.daysOfWeekHighlighted;\n    }\n    if ('todayHighlight' in options) {\n      this.todayHighlight = options.todayHighlight;\n    }\n    if ('weekStart' in options) {\n      this.weekStart = options.weekStart;\n      this.weekEnd = options.weekEnd;\n      updateDOW = true;\n    }\n    if (options.locale) {\n      const locale = this.locale = options.locale;\n      this.dayNames = locale.daysMin;\n      this.switchLabelFormat = locale.titleFormat;\n      updateDOW = true;\n    }\n    if ('beforeShowDay' in options) {\n      this.beforeShow = typeof options.beforeShowDay === 'function'\n        ? options.beforeShowDay\n        : undefined;\n    }\n\n    if ('weekNumbers' in options) {\n      if (options.weekNumbers && !this.weekNumbers) {\n        const weeksElem = parseHTML(weekNumbersTemplate).firstChild;\n        this.weekNumbers = {\n          element: weeksElem,\n          dow: weeksElem.firstChild,\n          weeks: weeksElem.lastChild,\n        };\n        this.element.insertBefore(weeksElem, this.element.firstChild);\n      } else if (this.weekNumbers && !options.weekNumbers) {\n        this.element.removeChild(this.weekNumbers.element);\n        this.weekNumbers = null;\n      }\n    }\n\n    if ('getWeekNumber' in options) {\n      this.getWeekNumber = options.getWeekNumber;\n    }\n\n    if ('showDaysOfWeek' in options) {\n      if (options.showDaysOfWeek) {\n        showElement(this.dow);\n        if (this.weekNumbers) {\n          showElement(this.weekNumbers.dow);\n        }\n      } else {\n        hideElement(this.dow);\n        if (this.weekNumbers) {\n          hideElement(this.weekNumbers.dow);\n        }\n      }\n    }\n\n    // update days-of-week when locale, daysOfweekDisabled or weekStart is changed\n    if (updateDOW) {\n      Array.from(this.dow.children).forEach((el, index) => {\n        const dow = (this.weekStart + index) % 7;\n        el.textContent = this.dayNames[dow];\n        el.className = this.daysOfWeekDisabled.includes(dow) ? 'dow disabled' : 'dow';\n      });\n    }\n  }\n\n  // Apply update on the focused date to view's settings\n  updateFocus() {\n    const viewDate = new Date(this.picker.viewDate);\n    const viewYear = viewDate.getFullYear();\n    const viewMonth = viewDate.getMonth();\n    const firstOfMonth = dateValue(viewYear, viewMonth, 1);\n    const start = dayOfTheWeekOf(firstOfMonth, this.weekStart, this.weekStart);\n\n    this.first = firstOfMonth;\n    this.last = dateValue(viewYear, viewMonth + 1, 0);\n    this.start = start;\n    this.focused = this.picker.viewDate;\n  }\n\n  // Apply update on the selected dates to view's settings\n  updateSelection() {\n    const {dates, rangepicker} = this.picker.datepicker;\n    this.selected = dates;\n    if (rangepicker) {\n      this.range = rangepicker.dates;\n    }\n  }\n\n   // Update the entire view UI\n  render() {\n    // update today marker on ever render\n    this.today = this.todayHighlight ? today() : undefined;\n\n    this.prepareForRender(\n      formatDate(this.focused, this.switchLabelFormat, this.locale),\n      this.first <= this.minDate,\n      this.last >= this.maxDate\n    );\n\n    if (this.weekNumbers) {\n      const weekStart = this.weekStart;\n      const startOfWeek = dayOfTheWeekOf(this.first, weekStart, weekStart);\n      Array.from(this.weekNumbers.weeks.children).forEach((el, index) => {\n        const dateOfWeekStart = addWeeks(startOfWeek, index);\n        el.textContent = this.getWeekNumber(dateOfWeekStart, weekStart);\n        if (index > 3) {\n          el.classList[dateOfWeekStart > this.last ? 'add' : 'remove']('next');\n        }\n      });\n    }\n    Array.from(this.grid.children).forEach((el, index) => {\n      const current = addDays(this.start, index);\n      const dateObj = new Date(current);\n      const day = dateObj.getDay();\n      const extraClasses = [];\n\n      if (this.today === current) {\n        extraClasses.push('today');\n      }\n      if (this.daysOfWeekHighlighted.includes(day)) {\n        extraClasses.push('highlighted');\n      }\n\n      this.renderCell(\n        el,\n        dateObj.getDate(),\n        current,\n        current,\n        this,\n        current < this.minDate\n          || current > this.maxDate\n          || this.daysOfWeekDisabled.includes(day),\n        extraClasses\n      );\n    });\n  }\n\n  // Update the view UI by applying the changes of selected and focused items\n  refresh() {\n    const range = this.range || [];\n    Array.from(this.grid.children).forEach((el) => {\n      this.refreshCell(el, Number(el.dataset.date), this.selected, range);\n    });\n  }\n\n  // Update the view UI by applying the change of focused item\n  refreshFocus() {\n    this.changeFocusedCell(Math.round((this.focused - this.start) / 86400000));\n  }\n}\n", "import {pushUnique, createTagRepeat} from '../../lib/utils.js';\nimport {dateValue, regularizeDate} from '../../lib/date.js';\nimport {parseHTML} from '../../lib/dom.js';\nimport View from './View.js';\n\nfunction computeMonthRange(range, thisYear) {\n  if (!range || !range[0] || !range[1]) {\n    return;\n  }\n\n  const [[startY, startM], [endY, endM]] = range;\n  if (startY > thisYear || endY < thisYear) {\n    return;\n  }\n  return [\n    startY === thisYear ? startM : -1,\n    endY === thisYear ? endM : 12,\n  ];\n}\n\nexport default class MonthsView extends View {\n  constructor(picker) {\n    super(picker, {\n      id: 1,\n      name: 'months',\n      cellClass: 'month',\n    });\n  }\n\n  init(options, onConstruction = true) {\n    if (onConstruction) {\n      this.grid = this.element;\n      this.element.classList.add('months', 'datepicker-grid');\n      this.grid.appendChild(parseHTML(createTagRepeat('span', 12, {'data-month': ix => ix})));\n      this.first = 0;\n      this.last = 11;\n    }\n    super.init(options);\n  }\n\n  setOptions(options) {\n    if (options.locale) {\n      this.monthNames = options.locale.monthsShort;\n    }\n    if ('minDate' in options) {\n      if (options.minDate === undefined) {\n        this.minYear = this.minMonth = this.minDate = undefined;\n      } else {\n        const minDateObj = new Date(options.minDate);\n        this.minYear = minDateObj.getFullYear();\n        this.minMonth = minDateObj.getMonth();\n        this.minDate = minDateObj.setDate(1);\n      }\n    }\n    if ('maxDate' in options) {\n      if (options.maxDate === undefined) {\n        this.maxYear = this.maxMonth = this.maxDate = undefined;\n      } else {\n        const maxDateObj = new Date(options.maxDate);\n        this.maxYear = maxDateObj.getFullYear();\n        this.maxMonth = maxDateObj.getMonth();\n        this.maxDate = dateValue(this.maxYear, this.maxMonth + 1, 0);\n      }\n    }\n    if (options.checkDisabled) {\n      this.checkDisabled = this.isMinView || options.datesDisabled === null\n        ? options.checkDisabled\n        : () => false;\n    }\n    if ('beforeShowMonth' in options) {\n      this.beforeShow = typeof options.beforeShowMonth === 'function'\n        ? options.beforeShowMonth\n        : undefined;\n    }\n  }\n\n  // Update view's settings to reflect the viewDate set on the picker\n  updateFocus() {\n    const viewDate = new Date(this.picker.viewDate);\n    this.year = viewDate.getFullYear();\n    this.focused = viewDate.getMonth();\n  }\n\n  // Update view's settings to reflect the selected dates\n  updateSelection() {\n    const {dates, rangepicker} = this.picker.datepicker;\n    this.selected = dates.reduce((selected, timeValue) => {\n      const date = new Date(timeValue);\n      const year = date.getFullYear();\n      const month = date.getMonth();\n      if (selected[year] === undefined) {\n        selected[year] = [month];\n      } else {\n        pushUnique(selected[year], month);\n      }\n      return selected;\n    }, {});\n    if (rangepicker && rangepicker.dates) {\n      this.range = rangepicker.dates.map(timeValue => {\n        const date = new Date(timeValue);\n        return isNaN(date) ? undefined : [date.getFullYear(), date.getMonth()];\n      });\n    }\n  }\n\n  // Update the entire view UI\n  render() {\n    this.prepareForRender(\n      this.year,\n      this.year <= this.minYear,\n      this.year >= this.maxYear\n    );\n\n    const selected = this.selected[this.year] || [];\n    const yrOutOfRange = this.year < this.minYear || this.year > this.maxYear;\n    const isMinYear = this.year === this.minYear;\n    const isMaxYear = this.year === this.maxYear;\n    const range = computeMonthRange(this.range, this.year);\n\n    Array.from(this.grid.children).forEach((el, index) => {\n      const date = regularizeDate(new Date(this.year, index, 1), 1, this.isRangeEnd);\n\n      this.renderCell(\n        el,\n        this.monthNames[index],\n        index,\n        date,\n        {selected, range},\n        yrOutOfRange\n          || isMinYear && index < this.minMonth\n          || isMaxYear && index > this.maxMonth\n      );\n    });\n  }\n\n  // Update the view UI by applying the changes of selected and focused items\n  refresh() {\n    const selected = this.selected[this.year] || [];\n    const range = computeMonthRange(this.range, this.year) || [];\n    Array.from(this.grid.children).forEach((el, index) => {\n      this.refreshCell(el, index, selected, range);\n    });\n  }\n\n  // Update the view UI by applying the change of focused item\n  refreshFocus() {\n    this.changeFocusedCell(this.focused);\n  }\n}", "import {pushUnique, createTagRepeat} from '../../lib/utils.js';\nimport {dateValue, regularizeDate, startOfYearPeriod} from '../../lib/date.js';\nimport {parseHTML} from '../../lib/dom.js';\nimport View from './View.js';\n\nfunction toTitleCase(word) {\n  return [...word].reduce((str, ch, ix) => str += ix ? ch : ch.toUpperCase(), '');\n}\n\n// Class representing the years and decades view elements\nexport default class YearsView extends View {\n  constructor(picker, config) {\n    super(picker, config);\n  }\n\n  init(options, onConstruction = true) {\n    if (onConstruction) {\n      this.navStep = this.step * 10;\n      this.beforeShowOption = `beforeShow${toTitleCase(this.cellClass)}`;\n      this.grid = this.element;\n      this.element.classList.add(this.name, 'datepicker-grid');\n      this.grid.appendChild(parseHTML(createTagRepeat('span', 12)));\n    }\n    super.init(options);\n  }\n\n  setOptions(options) {\n    if ('minDate' in options) {\n      if (options.minDate === undefined) {\n        this.minYear = this.minDate = undefined;\n      } else {\n        this.minYear = startOfYearPeriod(options.minDate, this.step);\n        this.minDate = dateValue(this.minYear, 0, 1);\n      }\n    }\n    if ('maxDate' in options) {\n      if (options.maxDate === undefined) {\n        this.maxYear = this.maxDate = undefined;\n      } else {\n        this.maxYear = startOfYearPeriod(options.maxDate, this.step);\n        this.maxDate = dateValue(this.maxYear, 11, 31);\n      }\n    }\n    if (options.checkDisabled) {\n      this.checkDisabled = this.isMinView || options.datesDisabled === null\n        ? options.checkDisabled\n        : () => false;\n    }\n    if (this.beforeShowOption in options) {\n      const beforeShow = options[this.beforeShowOption];\n      this.beforeShow = typeof beforeShow === 'function' ? beforeShow : undefined;\n    }\n  }\n\n  // Update view's settings to reflect the viewDate set on the picker\n  updateFocus() {\n    const viewDate = new Date(this.picker.viewDate);\n    const first = startOfYearPeriod(viewDate, this.navStep);\n    const last = first + 9 * this.step;\n\n    this.first = first;\n    this.last = last;\n    this.start = first - this.step;\n    this.focused = startOfYearPeriod(viewDate, this.step);\n  }\n\n  // Update view's settings to reflect the selected dates\n  updateSelection() {\n    const {dates, rangepicker} = this.picker.datepicker;\n    this.selected = dates.reduce((years, timeValue) => {\n      return pushUnique(years, startOfYearPeriod(timeValue, this.step));\n    }, []);\n    if (rangepicker && rangepicker.dates) {\n      this.range = rangepicker.dates.map(timeValue => {\n        if (timeValue !== undefined) {\n          return startOfYearPeriod(timeValue, this.step);\n        }\n      });\n    }\n  }\n\n  // Update the entire view UI\n  render() {\n    this.prepareForRender(\n      `${this.first}-${this.last}`,\n      this.first <= this.minYear,\n      this.last >= this.maxYear\n    );\n\n    Array.from(this.grid.children).forEach((el, index) => {\n      const current = this.start + (index * this.step);\n      const date = regularizeDate(new Date(current, 0, 1), 2, this.isRangeEnd);\n\n      el.dataset.year = current;\n      this.renderCell(\n        el,\n        current,\n        current,\n        date,\n        this,\n        current < this.minYear || current > this.maxYear\n      );\n    });\n  }\n\n  // Update the view UI by applying the changes of selected and focused items\n  refresh() {\n    const range = this.range || [];\n    Array.from(this.grid.children).forEach((el) => {\n      this.refreshCell(el, Number(el.textContent), this.selected, range);\n    });\n  }\n\n  // Update the view UI by applying the change of focused item\n  refreshFocus() {\n    this.changeFocusedCell(Math.round((this.focused - this.start) / this.step));\n  }\n}\n", "import {limitToRange} from '../lib/utils.js';\nimport {today, addMonths, addYears} from '../lib/date.js';\nimport {isActiveElement} from '../lib/dom.js';\n\nexport function triggerDatepickerEvent(datepicker, type) {\n  const options = {\n    bubbles: true,\n    cancelable: true,\n    detail: {\n      date: datepicker.getDate(),\n      viewDate: new Date(datepicker.picker.viewDate),\n      viewId: datepicker.picker.currentView.id,\n      datepicker,\n    },\n  };\n  datepicker.element.dispatchEvent(new CustomEvent(type, options));\n}\n\n// direction: -1 (to previous), 1 (to next)\nexport function goToPrevOrNext(datepicker, direction) {\n  const {config, picker} = datepicker;\n  const {currentView, viewDate} = picker;\n  let newViewDate;\n  switch (currentView.id) {\n    case 0:\n      newViewDate = addMonths(viewDate, direction);\n      break;\n    case 1:\n      newViewDate = addYears(viewDate, direction);\n      break;\n    default:\n      newViewDate = addYears(viewDate, direction * currentView.navStep);\n  }\n  newViewDate = limitToRange(newViewDate, config.minDate, config.maxDate);\n  picker.changeFocus(newViewDate).render();\n}\n\nexport function switchView(datepicker) {\n  const viewId = datepicker.picker.currentView.id;\n  if (viewId === datepicker.config.maxView) {\n    return;\n  }\n  datepicker.picker.changeView(viewId + 1).render();\n}\n\nexport function clearSelection(datepicker) {\n  datepicker.setDate({clear: true});\n}\n\nexport function goToOrSelectToday(datepicker) {\n  const currentDate = today();\n  if (datepicker.config.todayButtonMode === 1) {\n    datepicker.setDate(currentDate, {forceRefresh: true, viewDate: currentDate});\n  } else {\n    datepicker.setFocusedDate(currentDate, true);\n  }\n}\n\nexport function unfocus(datepicker) {\n  const onBlur = () => {\n    if (datepicker.config.updateOnBlur) {\n      datepicker.update({revert: true});\n    } else {\n      datepicker.refresh('input');\n    }\n    datepicker.hide();\n  };\n  const element = datepicker.element;\n\n  if (isActiveElement(element)) {\n    element.addEventListener('blur', onBlur, {once: true});\n  } else {\n    onBlur();\n  }\n}\n", "import {addMonths, addYears} from '../lib/date.js';\nimport {findElementInEventPath} from '../lib/event.js';\nimport {goToPrevOrNext, switchView} from './functions.js';\n\nfunction goToSelectedMonthOrYear(datepicker, selection) {\n  const picker = datepicker.picker;\n  const viewDate = new Date(picker.viewDate);\n  const viewId = picker.currentView.id;\n  const newDate = viewId === 1\n    ? addMonths(viewDate, selection - viewDate.getMonth())\n    : addYears(viewDate, selection - viewDate.getFullYear());\n\n  picker.changeFocus(newDate).changeView(viewId - 1).render();\n}\n\nexport function onClickViewSwitch(datepicker) {\n  switchView(datepicker);\n}\n\nexport function onClickPrevButton(datepicker) {\n  goToPrevOrNext(datepicker, -1);\n}\n\nexport function onClickNextButton(datepicker) {\n  goToPrevOrNext(datepicker, 1);\n}\n\n// For the picker's main block to delegete the events from `datepicker-cell`s\nexport function onClickView(datepicker, ev) {\n  const target = findElementInEventPath(ev, '.datepicker-cell');\n  if (!target || target.classList.contains('disabled')) {\n    return;\n  }\n\n  const {id, isMinView} = datepicker.picker.currentView;\n  const data = target.dataset;\n  if (isMinView) {\n    datepicker.setDate(Number(data.date));\n  } else if (id === 1) {\n    goToSelectedMonthOrYear(datepicker, Number(data.month));\n  } else {\n    goToSelectedMonthOrYear(datepicker, Number(data.year));\n  }\n}\n\nexport function onMousedownPicker(ev) {\n  ev.preventDefault();\n}\n", "import {lastItemOf, isInRange, limitToRange} from '../lib/utils.js';\nimport {today, regularizeDate} from '../lib/date.js';\nimport {\n  parseHTML,\n  getParent,\n  showElement,\n  hideElement,\n  emptyChildNodes,\n} from '../lib/dom.js';\nimport {registerListeners} from '../lib/event.js';\nimport pickerTemplate from './templates/pickerTemplate.js';\nimport DaysView from './views/DaysView.js';\nimport MonthsView from './views/MonthsView.js';\nimport YearsView from './views/YearsView.js';\nimport {\n  triggerDatepickerEvent,\n  clearSelection,\n  goToOrSelectToday,\n} from '../events/functions.js';\nimport {\n  onClickViewSwitch,\n  onClickPrevButton,\n  onClickNextButton,\n  onClickView,\n  onMousedownPicker,\n} from '../events/pickerListeners.js';\n\nconst orientClasses = ['left', 'top', 'right', 'bottom'].reduce((obj, key) => {\n  obj[key] = `datepicker-orient-${key}`;\n  return obj;\n}, {});\nconst toPx = num => num ? `${num}px` : num;\n\nfunction processPickerOptions(picker, options) {\n  if ('title' in options) {\n    if (options.title) {\n      picker.controls.title.textContent = options.title;\n      showElement(picker.controls.title);\n    } else {\n      picker.controls.title.textContent = '';\n      hideElement(picker.controls.title);\n    }\n  }\n  if (options.prevArrow) {\n    const prevButton = picker.controls.prevButton;\n    emptyChildNodes(prevButton);\n    options.prevArrow.forEach((node) => {\n      prevButton.appendChild(node.cloneNode(true));\n    });\n  }\n  if (options.nextArrow) {\n    const nextButton = picker.controls.nextButton;\n    emptyChildNodes(nextButton);\n    options.nextArrow.forEach((node) => {\n      nextButton.appendChild(node.cloneNode(true));\n    });\n  }\n  if (options.locale) {\n    picker.controls.todayButton.textContent = options.locale.today;\n    picker.controls.clearButton.textContent = options.locale.clear;\n  }\n  if ('todayButton' in options) {\n    if (options.todayButton) {\n      showElement(picker.controls.todayButton);\n    } else {\n      hideElement(picker.controls.todayButton);\n    }\n  }\n  if ('minDate' in options || 'maxDate' in options) {\n    const {minDate, maxDate} = picker.datepicker.config;\n    picker.controls.todayButton.disabled = !isInRange(today(), minDate, maxDate);\n  }\n  if ('clearButton' in options) {\n    if (options.clearButton) {\n      showElement(picker.controls.clearButton);\n    } else {\n      hideElement(picker.controls.clearButton);\n    }\n  }\n}\n\n// Compute view date to reset, which will be...\n// - the last item of the selected dates or defaultViewDate if no selection\n// - limitted to minDate or maxDate if it exceeds the range\nfunction computeResetViewDate(datepicker) {\n  const {dates, config, rangeSideIndex} = datepicker;\n  const viewDate = dates.length > 0\n    ? lastItemOf(dates)\n    : regularizeDate(config.defaultViewDate, config.pickLevel, rangeSideIndex);\n  return limitToRange(viewDate, config.minDate, config.maxDate);\n}\n\n// Change current view's view date\nfunction setViewDate(picker, newDate) {\n  if (!('_oldViewDate' in picker) && newDate !== picker.viewDate) {\n    picker._oldViewDate = picker.viewDate;\n  }\n  picker.viewDate = newDate;\n\n  // return whether the new date is in different period on time from the one\n  // displayed in the current view\n  // when true, the view needs to be re-rendered on the next UI refresh.\n  const {id, year, first, last} = picker.currentView;\n  const viewYear = new Date(newDate).getFullYear();\n  switch (id) {\n    case 0:\n      return newDate < first || newDate > last;\n    case 1:\n      return viewYear !== year;\n    default:\n      return viewYear < first || viewYear > last;\n  }\n}\n\nfunction getTextDirection(el) {\n  return window.getComputedStyle(el).direction;\n}\n\n// find the closet scrollable ancestor elemnt under the body\nfunction findScrollParents(el) {\n  const parent = getParent(el);\n  if (parent === document.body || !parent) {\n    return;\n  }\n\n  // checking overflow only is enough because computed overflow cannot be\n  // visible or a combination of visible and other when either axis is set\n  // to other than visible.\n  // (Setting one axis to other than 'visible' while the other is 'visible'\n  // results in the other axis turning to 'auto')\n  return window.getComputedStyle(parent).overflow !== 'visible'\n    ? parent\n    : findScrollParents(parent);\n}\n\n// Class representing the picker UI\nexport default class Picker {\n  constructor(datepicker) {\n    const {config, inputField} = this.datepicker = datepicker;\n\n    const template = pickerTemplate.replace(/%buttonClass%/g, config.buttonClass);\n    const element = this.element = parseHTML(template).firstChild;\n    const [header, main, footer] = element.firstChild.children;\n    const title = header.firstElementChild;\n    const [prevButton, viewSwitch, nextButton] = header.lastElementChild.children;\n    const [todayButton, clearButton] = footer.firstChild.children;\n    const controls = {\n      title,\n      prevButton,\n      viewSwitch,\n      nextButton,\n      todayButton,\n      clearButton,\n    };\n    this.main = main;\n    this.controls = controls;\n\n    const elementClass = inputField ? 'dropdown' : 'inline';\n    element.classList.add(`datepicker-${elementClass}`);\n\n    processPickerOptions(this, config);\n    this.viewDate = computeResetViewDate(datepicker);\n\n    // set up event listeners\n    registerListeners(datepicker, [\n      [element, 'mousedown', onMousedownPicker],\n      [main, 'click', onClickView.bind(null, datepicker)],\n      [controls.viewSwitch, 'click', onClickViewSwitch.bind(null, datepicker)],\n      [controls.prevButton, 'click', onClickPrevButton.bind(null, datepicker)],\n      [controls.nextButton, 'click', onClickNextButton.bind(null, datepicker)],\n      [controls.todayButton, 'click', goToOrSelectToday.bind(null, datepicker)],\n      [controls.clearButton, 'click', clearSelection.bind(null, datepicker)],\n    ]);\n\n    // set up views\n    this.views = [\n      new DaysView(this),\n      new MonthsView(this),\n      new YearsView(this, {id: 2, name: 'years', cellClass: 'year', step: 1}),\n      new YearsView(this, {id: 3, name: 'decades', cellClass: 'decade', step: 10}),\n    ];\n    this.currentView = this.views[config.startView];\n\n    this.currentView.render();\n    this.main.appendChild(this.currentView.element);\n    if (config.container) {\n      config.container.appendChild(this.element);\n    } else {\n      inputField.after(this.element);\n    }\n  }\n\n  setOptions(options) {\n    processPickerOptions(this, options);\n    this.views.forEach((view) => {\n      view.init(options, false);\n    });\n    this.currentView.render();\n  }\n\n  detach() {\n    this.element.remove();\n  }\n\n  show() {\n    if (this.active) {\n      return;\n    }\n\n    const {datepicker, element} = this;\n    const inputField = datepicker.inputField;\n    if (inputField) {\n      // ensure picker's direction matches input's\n      const inputDirection = getTextDirection(inputField);\n      if (inputDirection !== getTextDirection(getParent(element))) {\n        element.dir = inputDirection;\n      } else if (element.dir) {\n        element.removeAttribute('dir');\n      }\n\n      // Determine the picker's position first to prevent `orientation: 'auto'`\n      // from being miscalculated to 'bottom' after the picker temporarily\n      // shown below the input field expands the document height if the field\n      // is at the bottom edge of the document\n      this.place();\n      element.classList.add('active');\n\n      if (datepicker.config.disableTouchKeyboard) {\n        inputField.blur();\n      }\n    } else {\n      element.classList.add('active');\n    }\n    this.active = true;\n    triggerDatepickerEvent(datepicker, 'show');\n  }\n\n  hide() {\n    if (!this.active) {\n      return;\n    }\n    this.datepicker.exitEditMode();\n    this.element.classList.remove('active');\n    this.active = false;\n    triggerDatepickerEvent(this.datepicker, 'hide');\n  }\n\n  place() {\n    const {classList, style} = this.element;\n    // temporarily display the picker to get its size and offset parent\n    style.display = 'block';\n\n    const {\n      width: calendarWidth,\n      height: calendarHeight,\n    } = this.element.getBoundingClientRect();\n    const offsetParent = this.element.offsetParent;\n    // turn the picker back to hidden so that the position is determined with\n    // the state before it is shown.\n    style.display = '';\n\n    const {config, inputField} = this.datepicker;\n    const {\n      left: inputLeft,\n      top: inputTop,\n      right: inputRight,\n      bottom: inputBottom,\n      width: inputWidth,\n      height: inputHeight\n    } = inputField.getBoundingClientRect();\n    let {x: orientX, y: orientY} = config.orientation;\n    let left = inputLeft;\n    let top = inputTop;\n\n    // caliculate offsetLeft/Top of inputField\n    if (offsetParent === document.body || !offsetParent) {\n      left += window.scrollX;\n      top += window.scrollY;\n    } else {\n      const offsetParentRect = offsetParent.getBoundingClientRect();\n      left -= offsetParentRect.left - offsetParent.scrollLeft;\n      top -= offsetParentRect.top - offsetParent.scrollTop;\n    }\n\n    // caliculate the boundaries of the visible area that contains inputField\n    const scrollParent = findScrollParents(inputField);\n    let scrollAreaLeft = 0;\n    let scrollAreaTop = 0;\n    let {\n      clientWidth: scrollAreaRight,\n      clientHeight: scrollAreaBottom,\n    } = document.documentElement;\n\n    if (scrollParent) {\n      const scrollParentRect = scrollParent.getBoundingClientRect();\n      if (scrollParentRect.top > 0) {\n        scrollAreaTop = scrollParentRect.top;\n      }\n      if (scrollParentRect.left > 0) {\n        scrollAreaLeft = scrollParentRect.left;\n      }\n      if (scrollParentRect.right < scrollAreaRight) {\n        scrollAreaRight = scrollParentRect.right;\n      }\n      if (scrollParentRect.bottom < scrollAreaBottom) {\n        scrollAreaBottom = scrollParentRect.bottom;\n      }\n    }\n\n    // determine the horizontal orientation and left position\n    let adjustment = 0;\n    if (orientX === 'auto') {\n      if (inputLeft < scrollAreaLeft) {\n        orientX = 'left';\n        adjustment = scrollAreaLeft - inputLeft;\n      } else if (inputLeft + calendarWidth > scrollAreaRight) {\n        orientX = 'right';\n        if (scrollAreaRight < inputRight) {\n          adjustment = scrollAreaRight - inputRight;\n        }\n      } else if (getTextDirection(inputField) === 'rtl') {\n        orientX = inputRight - calendarWidth < scrollAreaLeft ? 'left' : 'right';\n      } else {\n        orientX = 'left';\n      }\n    }\n    if (orientX === 'right') {\n      left += inputWidth - calendarWidth;\n    }\n    left += adjustment;\n\n    // determine the vertical orientation and top position\n    if (orientY === 'auto') {\n      if (inputTop - calendarHeight > scrollAreaTop) {\n        orientY = inputBottom + calendarHeight > scrollAreaBottom ? 'top' : 'bottom';\n      } else {\n        orientY = 'bottom';\n      }\n    }\n    if (orientY === 'top') {\n      top -= calendarHeight;\n    } else {\n      top += inputHeight;\n    }\n\n    classList.remove(...Object.values(orientClasses));\n    classList.add(orientClasses[orientX], orientClasses[orientY]);\n\n    style.left = toPx(left);\n    style.top = toPx(top);\n  }\n\n  setViewSwitchLabel(labelText) {\n    this.controls.viewSwitch.textContent = labelText;\n  }\n\n  setPrevButtonDisabled(disabled) {\n    this.controls.prevButton.disabled = disabled;\n  }\n\n  setNextButtonDisabled(disabled) {\n    this.controls.nextButton.disabled = disabled;\n  }\n\n  changeView(viewId) {\n    const currentView = this.currentView;\n    if (viewId !== currentView.id) {\n      if (!this._oldView) {\n        this._oldView = currentView;\n      }\n      this.currentView = this.views[viewId];\n      this._renderMethod = 'render';\n    }\n    return this;\n  }\n\n  // Change the focused date (view date)\n  changeFocus(newViewDate) {\n    this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refreshFocus';\n    this.views.forEach((view) => {\n      view.updateFocus();\n    });\n    return this;\n  }\n\n  // Apply the change of the selected dates\n  update(viewDate = undefined) {\n    const newViewDate = viewDate === undefined\n      ? computeResetViewDate(this.datepicker)\n      : viewDate;\n    this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refresh';\n    this.views.forEach((view) => {\n      view.updateFocus();\n      view.updateSelection();\n    });\n    return this;\n  }\n\n  // Refresh the picker UI\n  render(quickRender = true) {\n    const {currentView, datepicker, _oldView: oldView} = this;\n    const oldViewDate = new Date(this._oldViewDate);\n    const renderMethod = (quickRender && this._renderMethod) || 'render';\n    delete this._oldView;\n    delete this._oldViewDate;\n    delete this._renderMethod;\n\n    currentView[renderMethod]();\n    if (oldView) {\n      this.main.replaceChild(currentView.element, oldView.element);\n      triggerDatepickerEvent(datepicker, 'changeView');\n    }\n    if (!isNaN(oldViewDate)) {\n      const newViewDate = new Date(this.viewDate);\n      if (newViewDate.getFullYear() !== oldViewDate.getFullYear()) {\n        triggerDatepickerEvent(datepicker, 'changeYear');\n      }\n      if (newViewDate.getMonth() !== oldViewDate.getMonth()) {\n        triggerDatepickerEvent(datepicker, 'changeMonth');\n      }\n    }\n  }\n}\n", "import {isInRange} from '../lib/utils.js';\nimport {isActiveElement} from '../lib/dom.js';\nimport {addDays, addMonths, addYears} from '../lib/date.js';\nimport {\n  goToPrevOrNext,\n  switchView,\n  clearSelection,\n  goToOrSelectToday,\n  unfocus,\n} from './functions.js';\n\n// Find the closest date that doesn't meet the condition for unavailable date\n// Returns undefined if no available date is found\n// addFn: function to calculate the next date\n//   - args: time value, amount\n// increase: amount to pass to addFn\n// testFn: function to test the unavailability of the date\n//   - args: time value; return: true if unavailable\nfunction findNextAvailableOne(date, addFn, increase, testFn, min, max) {\n  if (!isInRange(date, min, max)) {\n    return;\n  }\n  if (testFn(date)) {\n    const newDate = addFn(date, increase);\n    return findNextAvailableOne(newDate, addFn, increase, testFn, min, max);\n  }\n  return date;\n}\n\n// direction: -1 (left/up), 1 (right/down)\n// vertical: true for up/down, false for left/right\nfunction moveByArrowKey(datepicker, direction, vertical) {\n  const picker = datepicker.picker;\n  const currentView = picker.currentView;\n  const step = currentView.step || 1;\n  let viewDate = picker.viewDate;\n  let addFn;\n  switch (currentView.id) {\n    case 0:\n      viewDate = addDays(viewDate, vertical ? direction * 7 : direction);\n      addFn = addDays;\n      break;\n    case 1:\n      viewDate = addMonths(viewDate, vertical ? direction * 4 : direction);\n      addFn = addMonths;\n      break;\n    default:\n      viewDate = addYears(viewDate, direction * (vertical ? 4 : 1) * step);\n      addFn = addYears;\n  }\n  viewDate = findNextAvailableOne(\n    viewDate,\n    addFn,\n    direction < 0 ? -step : step,\n    (date) => currentView.disabled.includes(date),\n    currentView.minDate,\n    currentView.maxDate\n  );\n  if (viewDate !== undefined) {\n    picker.changeFocus(viewDate).render();\n  }\n}\n\nexport function onKeydown(datepicker, ev) {\n  const {config, picker, editMode} = datepicker;\n  const active = picker.active;\n  const {key, altKey, shiftKey} = ev;\n  const ctrlOrMetaKey = ev.ctrlKey || ev.metaKey;\n  const cancelEvent = () => {\n    ev.preventDefault();\n    ev.stopPropagation();\n  };\n\n  // tab/enter keys should not be taken by shortcut keys\n  if (key === 'Tab') {\n    unfocus(datepicker);\n    return;\n  }\n  if (key === 'Enter') {\n    if (!active) {\n      datepicker.update();\n    } else if (editMode) {\n      datepicker.exitEditMode({update: true, autohide: config.autohide});\n    } else {\n      const currentView = picker.currentView;\n      if (currentView.isMinView) {\n        datepicker.setDate(picker.viewDate);\n      } else {\n        picker.changeView(currentView.id - 1).render();\n        cancelEvent();\n      }\n    }\n    return;\n  }\n\n  const shortcutKeys = config.shortcutKeys;\n  const keyInfo = {key, ctrlOrMetaKey, altKey, shiftKey};\n  const shortcut = Object.keys(shortcutKeys).find((item) => {\n    const keyDef = shortcutKeys[item];\n    return !Object.keys(keyDef).find(prop => keyDef[prop] !== keyInfo[prop]);\n  });\n  if (shortcut) {\n    let action;\n    if (shortcut === 'toggle') {\n      action = shortcut;\n    } else if (editMode) {\n      if (shortcut === 'exitEditMode') {\n        action = shortcut;\n      }\n    } else if (active) {\n      if (shortcut === 'hide') {\n        action = shortcut;\n      } else if (shortcut === 'prevButton') {\n        action = [goToPrevOrNext, [datepicker, -1]];\n      } else if (shortcut === 'nextButton') {\n        action = [goToPrevOrNext, [datepicker, 1]];\n      } else if (shortcut === 'viewSwitch') {\n        action = [switchView, [datepicker]];\n      } else if (config.clearButton && shortcut === 'clearButton') {\n        action = [clearSelection, [datepicker]];\n      } else if (config.todayButton && shortcut === 'todayButton') {\n        action = [goToOrSelectToday, [datepicker]];\n      }\n    } else if (shortcut === 'show') {\n      action = shortcut;\n    }\n    if (action) {\n      if (Array.isArray(action)) {\n        action[0].apply(null, action[1]);\n      } else {\n        datepicker[action]();\n      }\n      cancelEvent();\n      return;\n    }\n  }\n\n  // perform as a regular <input> when picker in hidden or in edit mode\n  if (!active || editMode) {\n    return;\n  }\n\n  const handleArrowKeyPress = (direction, vertical) => {\n    if (shiftKey || ctrlOrMetaKey || altKey) {\n      datepicker.enterEditMode();\n    } else {\n      moveByArrowKey(datepicker, direction, vertical);\n      ev.preventDefault();\n    }\n  };\n\n  if (key === 'ArrowLeft') {\n    handleArrowKeyPress(-1, false);\n  } else if (key === 'ArrowRight') {\n    handleArrowKeyPress(1, false);\n  } else if (key === 'ArrowUp') {\n    handleArrowKeyPress(-1, true);\n  } else if (key === 'ArrowDown') {\n    handleArrowKeyPress(1, true);\n  } else if (\n    key === 'Backspace'\n    || key === 'Delete'\n      // When autofill is performed, Chromium-based browsers trigger fake\n      // keydown/keyup events that don't have the `key` property (on Edge,\n      // keyup only) in addition to the input event. Therefore, we need to\n      // check the existence of `key`'s value before checking the length.\n      // (issue #144)\n    || (key && key.length === 1 && !ctrlOrMetaKey)\n  ) {\n    datepicker.enterEditMode();\n  }\n}\n\nexport function onFocus(datepicker) {\n  if (datepicker.config.showOnFocus && !datepicker._showing) {\n    datepicker.show();\n  }\n}\n\n// for the prevention for entering edit mode while getting focus on click\nexport function onMousedown(datepicker, ev) {\n  const el = ev.target;\n  if (datepicker.picker.active || datepicker.config.showOnClick) {\n    el._active = isActiveElement(el);\n    el._clicking = setTimeout(() => {\n      delete el._active;\n      delete el._clicking;\n    }, 2000);\n  }\n}\n\nexport function onClickInput(datepicker, ev) {\n  const el = ev.target;\n  if (!el._clicking) {\n    return;\n  }\n  clearTimeout(el._clicking);\n  delete el._clicking;\n\n  if (el._active) {\n    datepicker.enterEditMode();\n  }\n  delete el._active;\n\n  if (datepicker.config.showOnClick) {\n    datepicker.show();\n  }\n}\n\nexport function onPaste(datepicker, ev) {\n  if (ev.clipboardData.types.includes('text/plain')) {\n    datepicker.enterEditMode();\n  }\n}\n", "import {isActiveElement} from '../lib/dom.js';\nimport {findElementInEventPath} from '../lib/event.js';\nimport {unfocus} from './functions.js';\n\n// for the `document` to delegate the events from outside the picker/input field\nexport function onClickOutside(datepicker, ev) {\n  const {element, picker} = datepicker;\n  // check both picker's and input's activeness to make updateOnBlur work in\n  // the cases where...\n  // - picker is hidden by ESC key press \u2192 input stays focused\n  // - input is unfocused by closing mobile keyboard \u2192 piker is kept shown\n  if (!picker.active && !isActiveElement(element)) {\n    return;\n  }\n  const pickerElem = picker.element;\n  if (findElementInEventPath(ev, el => el === element || el === pickerElem)) {\n    return;\n  }\n  unfocus(datepicker);\n}\n", "import {lastItemOf, stringToArray, isInRange} from './lib/utils.js';\nimport {today, regularizeDate} from './lib/date.js';\nimport {parseDate, formatDate} from './lib/date-format.js';\nimport {isActiveElement} from './lib/dom.js';\nimport {registerListeners, unregisterListeners} from './lib/event.js';\nimport locales from './i18n/base-locales.js';\nimport defaultOptions from './options/defaultOptions.js';\nimport processOptions from './options/processOptions.js';\nimport createShortcutKeyConfig from './options/shortcutKeys.js';\nimport Picker from './picker/Picker.js';\nimport {triggerDatepickerEvent} from './events/functions.js';\nimport {\n  onKeydown,\n  onFocus,\n  onMousedown,\n  onClickInput,\n  onPaste,\n} from './events/elementListeners.js';\nimport {onClickOutside} from './events/otherListeners.js';\n\nfunction stringifyDates(dates, config) {\n  return dates\n    .map(dt => formatDate(dt, config.format, config.locale))\n    .join(config.dateDelimiter);\n}\n\n// parse input dates and create an array of time values for selection\n// returns undefined if there are no valid dates in inputDates\n// when origDates (current selection) is passed, the function works to mix\n// the input dates into the current selection\nfunction processInputDates(datepicker, inputDates, clear = false) {\n  if (inputDates.length === 0) {\n    // empty input is considered valid unless origiDates is passed\n    return clear ? [] : undefined;\n  }\n\n  const {config, dates: origDates, rangeSideIndex} = datepicker;\n  const {pickLevel, maxNumberOfDates} = config;\n  let newDates = inputDates.reduce((dates, dt) => {\n    let date = parseDate(dt, config.format, config.locale);\n    if (date === undefined) {\n      return dates;\n    }\n    // adjust to 1st of the month/Jan 1st of the year\n    // or to the last day of the monh/Dec 31st of the year if the datepicker\n    // is the range-end picker of a rangepicker\n    date = regularizeDate(date, pickLevel, rangeSideIndex);\n    if (\n      isInRange(date, config.minDate, config.maxDate)\n      && !dates.includes(date)\n      && !config.checkDisabled(date, pickLevel)\n      && (pickLevel > 0 || !config.daysOfWeekDisabled.includes(new Date(date).getDay()))\n    ) {\n      dates.push(date);\n    }\n    return dates;\n  }, []);\n  if (newDates.length === 0) {\n    return;\n  }\n  if (config.multidate && !clear) {\n    // get the synmetric difference between origDates and newDates\n    newDates = newDates.reduce((dates, date) => {\n      if (!origDates.includes(date)) {\n        dates.push(date);\n      }\n      return dates;\n    }, origDates.filter(date => !newDates.includes(date)));\n  }\n  // do length check always because user can input multiple dates regardless of the mode\n  return maxNumberOfDates && newDates.length > maxNumberOfDates\n    ? newDates.slice(maxNumberOfDates * -1)\n    : newDates;\n}\n\n// refresh the UI elements\n// modes: 1: input only, 2, picker only, 3 both\nfunction refreshUI(datepicker, mode = 3, quickRender = true, viewDate = undefined) {\n  const {config, picker, inputField} = datepicker;\n  if (mode & 2) {\n    const newView = picker.active ? config.pickLevel : config.startView;\n    picker.update(viewDate).changeView(newView).render(quickRender);\n  }\n  if (mode & 1 && inputField) {\n    inputField.value = stringifyDates(datepicker.dates, config);\n  }\n}\n\nfunction setDate(datepicker, inputDates, options) {\n  const config = datepicker.config;\n  let {clear, render, autohide, revert, forceRefresh, viewDate} = options;\n  if (render === undefined) {\n    render = true;\n  }\n  if (!render) {\n    autohide = forceRefresh = false;\n  } else if (autohide === undefined) {\n    autohide = config.autohide;\n  }\n  viewDate = parseDate(viewDate, config.format, config.locale);\n\n  const newDates = processInputDates(datepicker, inputDates, clear);\n  if (!newDates && !revert) {\n    return;\n  }\n  if (newDates && newDates.toString() !== datepicker.dates.toString()) {\n    datepicker.dates = newDates;\n    refreshUI(datepicker, render ? 3 : 1, true, viewDate);\n    triggerDatepickerEvent(datepicker, 'changeDate');\n  } else {\n    refreshUI(datepicker, forceRefresh ? 3 : 1, true, viewDate);\n  }\n\n  if (autohide) {\n    datepicker.hide();\n  }\n}\n\nfunction getOutputConverter(datepicker, format) {\n  return format\n    ? date => formatDate(date, format, datepicker.config.locale)\n    : date => new Date(date);\n}\n\n/**\n * Class representing a date picker\n */\nexport default class Datepicker {\n  /**\n   * Create a date picker\n   * @param  {Element} element - element to bind a date picker\n   * @param  {Object} [options] - config options\n   * @param  {DateRangePicker} [rangepicker] - DateRangePicker instance the\n   * date picker belongs to. Use this only when creating date picker as a part\n   * of date range picker\n   */\n  constructor(element, options = {}, rangepicker = undefined) {\n    element.datepicker = this;\n    this.element = element;\n    this.dates = [];\n\n    // initialize config\n    const config = this.config = Object.assign({\n      buttonClass: (options.buttonClass && String(options.buttonClass)) || 'button',\n      container: null,\n      defaultViewDate: today(),\n      maxDate: undefined,\n      minDate: undefined,\n    }, processOptions(defaultOptions, this));\n\n    // configure by type\n    let inputField;\n    if (element.tagName === 'INPUT') {\n      inputField = this.inputField = element;\n      inputField.classList.add('datepicker-input');\n      if (options.container) {\n        // omit string type check because it doesn't guarantee to avoid errors\n        // (invalid selector string causes abend with sytax error)\n        config.container = options.container instanceof HTMLElement\n          ? options.container\n          : document.querySelector(options.container);\n      }\n    } else {\n      config.container = element;\n    }\n    if (rangepicker) {\n      // check validiry\n      const index = rangepicker.inputs.indexOf(inputField);\n      const datepickers = rangepicker.datepickers;\n      if (index < 0 || index > 1 || !Array.isArray(datepickers)) {\n        throw Error('Invalid rangepicker object.');\n      }\n      // attach itaelf to the rangepicker here so that processInputDates() can\n      // determine if this is the range-end picker of the rangepicker while\n      // setting inital values when pickLevel > 0\n      datepickers[index] = this;\n      this.rangepicker = rangepicker;\n      this.rangeSideIndex = index;\n    }\n\n    // set up config\n    this._options = options;\n    Object.assign(config, processOptions(options, this));\n    config.shortcutKeys = createShortcutKeyConfig(options.shortcutKeys || {});\n\n    // process initial value\n    const initialDates = stringToArray(\n      element.value || element.dataset.date,\n      config.dateDelimiter\n    );\n    delete element.dataset.date;\n    const inputDateValues = processInputDates(this, initialDates);\n    if (inputDateValues && inputDateValues.length > 0) {\n      this.dates = inputDateValues;\n    }\n    if (inputField) {\n      inputField.value = stringifyDates(this.dates, config);\n    }\n\n    // set up picekr element\n    const picker = this.picker = new Picker(this);\n\n    const keydownListener = [element, 'keydown', onKeydown.bind(null, this)];\n    if (inputField) {\n      registerListeners(this, [\n        keydownListener,\n        [inputField, 'focus', onFocus.bind(null, this)],\n        [inputField, 'mousedown', onMousedown.bind(null, this)],\n        [inputField, 'click', onClickInput.bind(null, this)],\n        [inputField, 'paste', onPaste.bind(null, this)],\n        // To detect a click on outside, just listening to mousedown is enough,\n        // no need to listen to touchstart.\n        // Actually, listening to touchstart can be a problem because, while\n        // mousedown is fired only on tapping but not on swiping/pinching,\n        // touchstart is fired on swiping/pinching as well.\n        // (issue #95)\n        [document, 'mousedown', onClickOutside.bind(null, this)],\n        [window, 'resize', picker.place.bind(picker)]\n      ]);\n    } else {\n      registerListeners(this, [keydownListener]);\n      this.show();\n    }\n  }\n\n  /**\n   * Format Date object or time value in given format and language\n   * @param  {Date|Number} date - date or time value to format\n   * @param  {String|Object} format - format string or object that contains\n   * toDisplay() custom formatter, whose signature is\n   * - args:\n   *   - date: {Date} - Date instance of the date passed to the method\n   *   - format: {Object} - the format object passed to the method\n   *   - locale: {Object} - locale for the language specified by `lang`\n   * - return:\n   *     {String} formatted date\n   * @param  {String} [lang=en] - language code for the locale to use\n   * @return {String} formatted date\n   */\n  static formatDate(date, format, lang) {\n    return formatDate(date, format, lang && locales[lang] || locales.en);\n  }\n\n  /**\n   * Parse date string\n   * @param  {String|Date|Number} dateStr - date string, Date object or time\n   * value to parse\n   * @param  {String|Object} format - format string or object that contains\n   * toValue() custom parser, whose signature is\n   * - args:\n   *   - dateStr: {String|Date|Number} - the dateStr passed to the method\n   *   - format: {Object} - the format object passed to the method\n   *   - locale: {Object} - locale for the language specified by `lang`\n   * - return:\n   *     {Date|Number} parsed date or its time value\n   * @param  {String} [lang=en] - language code for the locale to use\n   * @return {Number} time value of parsed date\n   */\n  static parseDate(dateStr, format, lang) {\n    return parseDate(dateStr, format, lang && locales[lang] || locales.en);\n  }\n\n  /**\n   * @type {Object} - Installed locales in `[languageCode]: localeObject` format\n   * en`:_English (US)_ is pre-installed.\n   */\n  static get locales() {\n    return locales;\n  }\n\n  /**\n   * @type {Boolean} - Whether the picker element is shown. `true` whne shown\n   */\n  get active() {\n    return !!(this.picker && this.picker.active);\n  }\n\n  /**\n   * @type {HTMLDivElement} - DOM object of picker element\n   */\n  get pickerElement() {\n    return this.picker ? this.picker.element : undefined;\n  }\n\n  /**\n   * Set new values to the config options\n   * @param {Object} options - config options to update\n   */\n  setOptions(options) {\n    const newOptions = processOptions(options, this);\n    Object.assign(this._options, options);\n    Object.assign(this.config, newOptions);\n    this.picker.setOptions(newOptions);\n\n    refreshUI(this, 3);\n  }\n\n  /**\n   * Show the picker element\n   */\n  show() {\n    if (this.inputField) {\n      const {config, inputField} = this;\n      if (inputField.disabled || (inputField.readOnly && !config.enableOnReadonly)) {\n        return;\n      }\n      if (!isActiveElement(inputField) && !config.disableTouchKeyboard) {\n        this._showing = true;\n        inputField.focus();\n        delete this._showing;\n      }\n    }\n    this.picker.show();\n  }\n\n  /**\n   * Hide the picker element\n   * Not available on inline picker\n   */\n  hide() {\n    if (!this.inputField) {\n      return;\n    }\n    this.picker.hide();\n    this.picker.update().changeView(this.config.startView).render();\n  }\n\n  /**\n   * Toggle the display of the picker element\n   * Not available on inline picker\n   *\n   * Unlike hide(), the picker does not return to the start view when hiding.\n   */\n  toggle() {\n    if (!this.picker.active) {\n      this.show();\n    } else if (this.inputField) {\n      this.picker.hide();\n    }\n  }\n\n  /**\n   * Destroy the Datepicker instance\n   * @return {Detepicker} - the instance destroyed\n   */\n  destroy() {\n    this.hide();\n    unregisterListeners(this);\n    this.picker.detach();\n    const element = this.element;\n    element.classList.remove('datepicker-input');\n    delete element.datepicker;\n    return this;\n  }\n\n  /**\n   * Get the selected date(s)\n   *\n   * The method returns a Date object of selected date by default, and returns\n   * an array of selected dates in multidate mode. If format string is passed,\n   * it returns date string(s) formatted in given format.\n   *\n   * @param  {String} [format] - format string to stringify the date(s)\n   * @return {Date|String|Date[]|String[]} - selected date(s), or if none is\n   * selected, empty array in multidate mode and undefined in sigledate mode\n   */\n  getDate(format = undefined) {\n    const callback = getOutputConverter(this, format);\n\n    if (this.config.multidate) {\n      return this.dates.map(callback);\n    }\n    if (this.dates.length > 0) {\n      return callback(this.dates[0]);\n    }\n  }\n\n  /**\n   * Set selected date(s)\n   *\n   * In multidate mode, you can pass multiple dates as a series of arguments\n   * or an array. (Since each date is parsed individually, the type of the\n   * dates doesn't have to be the same.)\n   * The given dates are used to toggle the select status of each date. The\n   * number of selected dates is kept from exceeding the length set to\n   * maxNumberOfDates.\n   *\n   * With clear: true option, the method can be used to clear the selection\n   * and to replace the selection instead of toggling in multidate mode.\n   * If the option is passed with no date arguments or an empty dates array,\n   * it works as \"clear\" (clear the selection then set nothing), and if the\n   * option is passed with new dates to select, it works as \"replace\" (clear\n   * the selection then set the given dates)\n   *\n   * When render: false option is used, the method omits re-rendering the\n   * picker element. In this case, you need to call refresh() method later in\n   * order for the picker element to reflect the changes. The input field is\n   * refreshed always regardless of this option.\n   *\n   * When invalid (unparsable, repeated, disabled or out-of-range) dates are\n   * passed, the method ignores them and applies only valid ones. In the case\n   * that all the given dates are invalid, which is distinguished from passing\n   * no dates, the method considers it as an error and leaves the selection\n   * untouched. (The input field also remains untouched unless revert: true\n   * option is used.)\n   * Replacing the selection with the same date(s) also causes a similar\n   * situation. In both cases, the method does not refresh the picker element\n   * unless forceRefresh: true option is used.\n   *\n   * If viewDate option is used, the method changes the focused date to the\n   * specified date instead of the last item of the selection.\n   *\n   * @param {...(Date|Number|String)|Array} [dates] - Date strings, Date\n   * objects, time values or mix of those for new selection\n   * @param {Object} [options] - function options\n   * - clear: {boolean} - Whether to clear the existing selection\n   *     defualt: false\n   * - render: {boolean} - Whether to re-render the picker element\n   *     default: true\n   * - autohide: {boolean} - Whether to hide the picker element after re-render\n   *     Ignored when used with render: false\n   *     default: config.autohide\n   * - revert: {boolean} - Whether to refresh the input field when all the\n   *     passed dates are invalid\n   *     default: false\n   * - forceRefresh: {boolean} - Whether to refresh the picker element when\n   *     passed dates don't change the existing selection\n   *     default: false\n   * - viewDate: {Date|Number|String} - Date to be focused after setiing date(s)\n   *     default: The last item of the resulting selection, or defaultViewDate\n   *     config option if none is selected\n   */\n  setDate(...args) {\n    const dates = [...args];\n    const opts = {};\n    const lastArg = lastItemOf(args);\n    if (\n      lastArg\n      && typeof lastArg === 'object'\n      && !Array.isArray(lastArg)\n      && !(lastArg instanceof Date)\n    ) {\n      Object.assign(opts, dates.pop());\n    }\n\n    const inputDates = Array.isArray(dates[0]) ? dates[0] : dates;\n    setDate(this, inputDates, opts);\n  }\n\n  /**\n   * Update the selected date(s) with input field's value\n   * Not available on inline picker\n   *\n   * The input field will be refreshed with properly formatted date string.\n   *\n   * In the case that all the entered dates are invalid (unparsable, repeated,\n   * disabled or out-of-range), which is distinguished from empty input field,\n   * the method leaves the input field untouched as well as the selection by\n   * default. If revert: true option is used in this case, the input field is\n   * refreshed with the existing selection.\n   * The method also doesn't refresh the picker element in this case and when\n   * the entered dates are the same as the existing selection. If\n   * forceRefresh: true option is used, the picker element is refreshed in\n   * these cases too.\n   *\n   * @param  {Object} [options] - function options\n   * - autohide: {boolean} - whether to hide the picker element after refresh\n   *     default: false\n   * - revert: {boolean} - Whether to refresh the input field when all the\n   *     passed dates are invalid\n   *     default: false\n   * - forceRefresh: {boolean} - Whether to refresh the picer element when\n   *     input field's value doesn't change the existing selection\n   *     default: false\n   */\n  update(options = undefined) {\n    if (!this.inputField) {\n      return;\n    }\n\n    const opts = Object.assign(options || {}, {clear: true, render: true, viewDate: undefined});\n    const inputDates = stringToArray(this.inputField.value, this.config.dateDelimiter);\n    setDate(this, inputDates, opts);\n  }\n\n  /**\n   * Get the focused date\n   *\n   * The method returns a Date object of focused date by default. If format\n   * string is passed, it returns date string formatted in given format.\n   *\n   * @param  {String} [format] - format string to stringify the date\n   * @return {Date|String} - focused date (viewDate)\n   */\n  getFocusedDate(format = undefined) {\n    return getOutputConverter(this, format)(this.picker.viewDate);\n  }\n\n  /**\n   * Set focused date\n   *\n   * By default, the method updates the focus on the view shown at the time,\n   * or the one set to the startView config option if the picker is hidden.\n   * When resetView: true is passed, the view displayed is changed to the\n   * pickLevel config option's if the picker is shown.\n   *\n   * @param {Date|Number|String} viewDate - date string, Date object, time\n   * values of the date to focus\n   * @param {Boolean} [resetView] - whether to change the view to pickLevel\n   * config option's when the picker is shown. Ignored when the picker is\n   * hidden\n   */\n  setFocusedDate(viewDate, resetView = false) {\n    const {config, picker, active, rangeSideIndex} = this;\n    const pickLevel = config.pickLevel;\n    const newViewDate = parseDate(viewDate, config.format, config.locale);\n    if (newViewDate === undefined) {\n      return;\n    }\n\n    picker.changeFocus(regularizeDate(newViewDate, pickLevel, rangeSideIndex));\n    if (active && resetView) {\n      picker.changeView(pickLevel);\n    }\n    picker.render();\n  }\n\n  /**\n   * Refresh the picker element and the associated input field\n   * @param {String} [target] - target item when refreshing one item only\n   * 'picker' or 'input'\n   * @param {Boolean} [forceRender] - whether to re-render the picker element\n   * regardless of its state instead of optimized refresh\n   */\n  refresh(target = undefined, forceRender = false) {\n    if (target && typeof target !== 'string') {\n      forceRender = target;\n      target = undefined;\n    }\n\n    let mode;\n    if (target === 'picker') {\n      mode = 2;\n    } else if (target === 'input') {\n      mode = 1;\n    } else {\n      mode = 3;\n    }\n    refreshUI(this, mode, !forceRender);\n  }\n\n  /**\n   * Enter edit mode\n   * Not available on inline picker or when the picker element is hidden\n   */\n  enterEditMode() {\n    const inputField = this.inputField;\n    if (!inputField || inputField.readOnly || !this.picker.active || this.editMode) {\n      return;\n    }\n    this.editMode = true;\n    inputField.classList.add('in-edit');\n  }\n\n  /**\n   * Exit from edit mode\n   * Not available on inline picker\n   * @param  {Object} [options] - function options\n   * - update: {boolean} - whether to call update() after exiting\n   *     If false, input field is revert to the existing selection\n   *     default: false\n   */\n  exitEditMode(options = undefined) {\n    if (!this.inputField || !this.editMode) {\n      return;\n    }\n    const opts = Object.assign({update: false}, options);\n    delete this.editMode;\n    this.inputField.classList.remove('in-edit');\n    if (opts.update) {\n      this.update(opts);\n    }\n  }\n}\n", "/**\n * German translation for bootstrap-datepicker\n * Sam Zurcher <sam@orelias.ch>\n */\nexport default {\n  de: {\n    days: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"],\n    daysShort: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n    daysMin: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n    months: [\"Januar\", \"Februar\", \"M\u00E4rz\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n    monthsShort: [\"Jan\", \"Feb\", \"M\u00E4r\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\n    today: \"Heute\",\n    monthsTitle: \"Monate\",\n    clear: \"L\u00F6schen\",\n    weekStart: 1,\n    format: \"dd.mm.yyyy\"\n  }\n};\n", "/**\n * Canadian English translation for bootstrap-datepicker\n * Mike Nacey <mnacey@gmail.com>\n */\nexport default {\n  'en-CA': {\n    days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n    daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n    daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n    months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n    monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n    today: \"Today\",\n    monthsTitle: \"Months\",\n    clear: \"Clear\",\n    weekStart: 0,\n    format: \"yyyy-mm-dd\"\n  }\n};\n", "import {Controller} from '@hotwired/stimulus';\nimport {Datepicker} from 'vanillajs-datepicker';\nimport de from 'vanillajs-datepicker/locales/de';\nimport en from 'vanillajs-datepicker/locales/en-CA';\n\nObject.assign(Datepicker.locales, en, de);\n\nexport class DatepickerController extends Controller {\n\n    static values = {\n        openerId: String,\n        pickLevel: Number,\n        maxDate: String,\n        minDate: String,\n        locale: String,\n        minDateFor: String,\n        maxDateFor: String,\n        setDateFor: String,\n        setDateForOffset: { type: Number, default: 0 }\n    }\n\n    static targets = [\n        'input'\n    ]\n\n    connect() {\n        this.config = this.loadConfig();\n        // this.datepickerElement.setAttribute('type', 'text');\n        this.datepickerElement.setAttribute('autocomplete', 'off');\n        // register before datepicker because of event order\n        this.registerDateFixer();\n        this.datepicker = new Datepicker(this.datepickerElement, {\n            ...this.config\n        });\n        this.registerCalButtons();\n        this.registerRestrictors();\n    }\n\n    disconnect() {\n        this.datepicker.destroy();\n    }\n\n    loadConfig() {\n        return {\n            pickLevel: this.hasPickLevelValue ? this.pickLevelValue : undefined,\n            language: this.hasLocaleValue ? this.mapLocale(this.localeValue) : undefined,\n            minDate: this.minDateValue,\n            maxDate: this.maxDateValue,\n            buttonClass: 'btn',\n            showOnClick: false,\n            showOnFocus: false,\n            autohide: true,\n            orientation: 'auto right',\n            todayBtn: true,\n            // clearBtn: true,\n            todayHighlight: true\n        };\n    }\n\n    mapLocale(locale) {\n        switch (locale) {\n            case 'en':\n                return 'en-CA';\n            default:\n                return locale;\n        }\n    }\n\n    minDateValueChanged() {\n        if (this.config && this.datepicker) {\n            this.config.minDate = this.minDateValue;\n            this.datepicker.setOptions(this.config)\n        }\n    }\n\n    maxDateValueChanged() {\n        if (this.config && this.datepicker) {\n            this.config.maxDate = this.maxDateValue;\n            this.datepicker.setOptions(this.config)\n        }\n    }\n\n    registerCalButtons() {\n        if (this.hasOpenerIdValue) {\n            document.getElementById(this.openerIdValue).addEventListener('click', () => this.datepicker.show());\n        }\n    }\n\n    registerRestrictors() {\n        if (this.hasMinDateForValue) {\n            this.updateMinDate();\n            this.datepicker.element.addEventListener('changeDate', () => this.updateMinDate());\n        }\n        if (this.hasMaxDateForValue) {\n            this.updateMaxDate();\n            this.datepicker.element.addEventListener('changeDate', () => this.updateMaxDate());\n        }\n        if (this.hasSetDateForValue) {\n            this.datepicker.element.addEventListener('changeDate', () => this.setDateFor());\n        }\n    }\n\n    registerDateFixer() {\n        this.datepickerElement.addEventListener('focusout', (event) => {\n            this.fixDate();\n        });\n    }\n\n    fixDate() {\n        const dateMs = Datepicker.parseDate(this.datepickerElement.value, Datepicker.locales[this.datepicker.config.language].format);\n        const date = dateMs ? new Date(dateMs) : undefined;\n        if (date && date.getFullYear() < 100) {\n            let year = date.getFullYear() + 1900\n            if (year < new Date().getFullYear() - 90) {\n                year += 100;\n            }\n            date.setFullYear(year);\n        }\n        this.datepicker.element.value = Datepicker.formatDate(date, Datepicker.locales[this.datepicker.config.language].format);\n        this.datepicker.setDate(date);\n    }\n\n    updateMinDate() {\n        const elements = this.findElements(this.minDateForValue);\n        elements.forEach(e => {\n            const date = this.datepicker.getDate(Datepicker.locales[this.datepicker.config.language].format);\n            if (date) {\n                e.setAttribute('data-datepicker-min-date-value', date)\n            } else {\n                if (e.hasAttribute('data-datepicker-min-date-value')) {\n                    e.removeAttribute('data-datepicker-min-date-value')\n                }\n            }\n        })\n    }\n\n    updateMaxDate() {\n        const elements = this.findElements(this.maxDateForValue);\n        elements.forEach(e => {\n            const date = this.datepicker.getDate(Datepicker.locales[this.datepicker.config.language].format);\n            if (date) {\n                e.setAttribute('data-datepicker-max-date-value', date)\n            } else {\n                if (e.hasAttribute('data-datepicker-max-date-value')) {\n                    e.removeAttribute('data-datepicker-max-date-value')\n                }\n            }\n        })\n    }\n\n    setDateFor() {\n        const date = this.datepicker.getDate();\n        if (!date) {\n            return;\n        }\n        const elements = this.findElements(this.setDateForValue);\n        elements.forEach(e => {\n            var offsetDate = new Date(date);\n            offsetDate.setDate(offsetDate.getDate() + this.setDateForOffsetValue);\n            e.datepicker.setDate(offsetDate);\n        })\n    }\n\n    findElements(pattern) {\n        if (!pattern) {\n            return [];\n        }\n        // the form is a performance optimization. In general we don't expect to connect inputs across forms.\n        const form = this.datepickerElement.closest('form');\n        let elements;\n        let i;\n        switch (pattern) {\n            case ':next':\n                elements = Array.prototype.slice.call((form || document).querySelectorAll('input.date, input.date_picker'));\n                i = elements.indexOf(this.datepickerElement);\n                return elements[i + 1] ? [elements[i + 1]] : []\n            case ':previous':\n                elements = Array.prototype.slice.call((form || document).querySelectorAll('input.date, input.date_picker'));\n                i = elements.indexOf(this.datepickerElement);\n                return elements[i - 1] ? [elements[i - 1]] : []\n            default:\n                return (form || document).querySelectorAll(pattern)\n        }\n\n    }\n\n    get datepickerElement() {\n        return (this.hasInputTarget && this.inputTarget) || this.element\n    }\n\n}\n", "import {Controller} from '@hotwired/stimulus';\n\nexport class RemovableController extends Controller {\n\n    static targets = ['removable']\n\n    static values = { confirmation: String }\n\n    get removableElement() {\n        return (this.hasRemovableTarget && this.removableTarget) || this.element\n    }\n\n    remove() {\n        if (this.hasConfimationValue) {\n            bootbox.dialog(this.confirmationValue, (result) => {\n                if (result) {\n                    this.removableElement.remove();\n                }\n            });\n        } else {\n            this.removableElement.remove();\n        }\n    }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nconst _CheckboxSelectAll = class _CheckboxSelectAll extends Controller {\n  initialize() {\n    this.toggle = this.toggle.bind(this), this.refresh = this.refresh.bind(this);\n  }\n  checkboxAllTargetConnected(checkbox) {\n    checkbox.addEventListener(\"change\", this.toggle), this.refresh();\n  }\n  checkboxTargetConnected(checkbox) {\n    checkbox.addEventListener(\"change\", this.refresh), this.refresh();\n  }\n  checkboxAllTargetDisconnected(checkbox) {\n    checkbox.removeEventListener(\"change\", this.toggle), this.refresh();\n  }\n  checkboxTargetDisconnected(checkbox) {\n    checkbox.removeEventListener(\"change\", this.refresh), this.refresh();\n  }\n  toggle(e) {\n    e.preventDefault(), this.checkboxTargets.forEach((checkbox) => {\n      checkbox.checked = e.target.checked, this.triggerInputEvent(checkbox);\n    });\n  }\n  refresh() {\n    const checkboxesCount = this.checkboxTargets.length, checkboxesCheckedCount = this.checked.length;\n    this.disableIndeterminateValue ? this.checkboxAllTarget.checked = checkboxesCheckedCount === checkboxesCount : (this.checkboxAllTarget.checked = checkboxesCheckedCount > 0, this.checkboxAllTarget.indeterminate = checkboxesCheckedCount > 0 && checkboxesCheckedCount < checkboxesCount);\n  }\n  triggerInputEvent(checkbox) {\n    const event = new Event(\"input\", { bubbles: !1, cancelable: !0 });\n    checkbox.dispatchEvent(event);\n  }\n  get checked() {\n    return this.checkboxTargets.filter((checkbox) => checkbox.checked);\n  }\n  get unchecked() {\n    return this.checkboxTargets.filter((checkbox) => !checkbox.checked);\n  }\n};\n_CheckboxSelectAll.targets = [\"checkboxAll\", \"checkbox\"], _CheckboxSelectAll.values = {\n  disableIndeterminate: {\n    type: Boolean,\n    default: !1\n  }\n};\nlet CheckboxSelectAll = _CheckboxSelectAll;\nexport {\n  CheckboxSelectAll as default\n};\n", "import CheckboxSelectAll from \"@stimulus-components/checkbox-select-all\"\n\nexport class CheckboxSelectAllController extends CheckboxSelectAll {\n\n    invert(e) {\n        e.preventDefault();\n\n        this.checkboxTargets.forEach(checkbox => {\n            checkbox.checked = !checkbox.checked\n            this.triggerInputEvent(checkbox)\n        });\n        this.refresh();\n    }\n\n}\n", "import {Controller} from '@hotwired/stimulus';\n\nexport class MergeFieldsController extends Controller {\n\n    static targets = [\n        'lhsInput',\n        'rhsInput',\n        'mergeButton',\n        'undoButton'\n    ]\n\n    merge(e) {\n        e.preventDefault();\n        let i = 0\n        this.lhsInputTargets.forEach(lhsInput => {\n            const rhsInput = this.rhsInputTargets[i++];\n            this.mergeInput(lhsInput, rhsInput);\n            rhsInput.closest('div.form-group').hidden = true;\n        })\n        this.hideMergeButtons();\n    }\n\n    undo(e) {\n        e.preventDefault();\n        let i = 0\n        this.lhsInputTargets.forEach(lhsInput => {\n            const rhsInput = this.rhsInputTargets[i++];\n            this.undoInput(lhsInput, rhsInput);\n            rhsInput.closest('div.form-group').hidden = false;\n        })\n        this.showMergeButtons();\n    }\n\n    mergeInput(lhsInput, rhsInput) {\n        switch (lhsInput.type) {\n            case 'radio':\n            case 'checkbox':\n                lhsInput.checked = rhsInput.checked;\n                break;\n            default:\n                if (lhsInput.classList.contains('select2')) {\n                    if (lhsInput.classList.contains('ajax')) {\n                        // TODO\n                    } else {\n                        $(lhsInput).select2('val', $(rhsInput).select2('val'));\n                    }\n                } else {\n                    lhsInput.value = rhsInput.value;\n                }\n        }\n    }\n\n    undoInput(lhsInput, rhsInput) {\n        if (lhsInput.classList.contains('select2')) {\n            if (lhsInput.classList.contains('ajax')) {\n                // TODO\n            } else {\n                const defaultValue = Array.from(lhsInput.options).find(opt => opt.defaultSelected)?.value;\n                $(lhsInput).select2('val', defaultValue);\n            }\n        } else if (lhsInput.tagName?.toLowerCase() === 'select') {\n            const defaultValue = Array.from(lhsInput.options).find(opt => opt.defaultSelected)?.value;\n            lhsInput.value = lhsInput.defaultValue;\n        } else {\n            lhsInput.value = lhsInput.defaultValue;\n            lhsInput.checked = lhsInput.defaultChecked;\n        }\n    }\n\n    hideMergeButtons() {\n        this.mergeButtonTargets.forEach(b => {\n            b.hidden = true\n        });\n        this.undoButtonTargets.forEach(b => {\n            b.hidden = false\n        });\n    }\n\n    showMergeButtons() {\n        this.mergeButtonTargets.forEach(b => {\n            b.hidden = false\n        });\n        this.undoButtonTargets.forEach(b => {\n            b.hidden = true\n        });\n    }\n\n}\n\n", "import {Controller} from '@hotwired/stimulus';\n\nexport class RadioToggleController extends Controller {\n\n    static targets = [\"element\", \"radio\"]\n\n    connect() {\n        for (let element of this.elementTargets) {\n            this.toggle(element, this.radioValue());\n            this.radioTargets.forEach(r => r.addEventListener('change', event => {\n                for (let element of this.elementTargets) {\n                    this.toggle(element, this.radioValue());\n                }\n            }))\n        }\n    }\n\n    radioValue() {\n        return this.radioTargets.find(r => r.checked)?.value;\n    }\n\n    toggle(element, radioValue) {\n        const visibleValues = element.dataset.values || element.dataset.radioToggleValues;\n        if (element && visibleValues != undefined) {\n            let hidden;\n            if (visibleValues === '*') {\n                hidden = !radioValue;\n            } else {\n                hidden = !visibleValues.split(',').includes(radioValue);\n            }\n            element.hidden = hidden;\n            if (['INPUT', 'SELECT'].includes(element.tagName)) {\n                element.disabled = hidden;\n            }\n        }\n    }\n\n}\n", "/**!\n * Sortable 1.15.6\n * @author\tRubaXa   <trash@rubaxa.org>\n * @author\towenm    <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n    keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n  return target;\n}\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n  return _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.6\";\n\nfunction userAgent(pattern) {\n  if (typeof window !== 'undefined' && window.navigator) {\n    return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n  }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n  capture: false,\n  passive: false\n};\nfunction on(el, event, fn) {\n  el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n  el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/el, /**String*/selector) {\n  if (!selector) return;\n  selector[0] === '>' && (selector = selector.substring(1));\n  if (el) {\n    try {\n      if (el.matches) {\n        return el.matches(selector);\n      } else if (el.msMatchesSelector) {\n        return el.msMatchesSelector(selector);\n      } else if (el.webkitMatchesSelector) {\n        return el.webkitMatchesSelector(selector);\n      }\n    } catch (_) {\n      return false;\n    }\n  }\n  return false;\n}\nfunction getParentOrHost(el) {\n  return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n  if (el) {\n    ctx = ctx || document;\n    do {\n      if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n        return el;\n      }\n      if (el === ctx) break;\n      /* jshint boss:true */\n    } while (el = getParentOrHost(el));\n  }\n  return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n  if (el && name) {\n    if (el.classList) {\n      el.classList[state ? 'add' : 'remove'](name);\n    } else {\n      var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n      el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n    }\n  }\n}\nfunction css(el, prop, val) {\n  var style = el && el.style;\n  if (style) {\n    if (val === void 0) {\n      if (document.defaultView && document.defaultView.getComputedStyle) {\n        val = document.defaultView.getComputedStyle(el, '');\n      } else if (el.currentStyle) {\n        val = el.currentStyle;\n      }\n      return prop === void 0 ? val : val[prop];\n    } else {\n      if (!(prop in style) && prop.indexOf('webkit') === -1) {\n        prop = '-webkit-' + prop;\n      }\n      style[prop] = val + (typeof val === 'string' ? '' : 'px');\n    }\n  }\n}\nfunction matrix(el, selfOnly) {\n  var appliedTransforms = '';\n  if (typeof el === 'string') {\n    appliedTransforms = el;\n  } else {\n    do {\n      var transform = css(el, 'transform');\n      if (transform && transform !== 'none') {\n        appliedTransforms = transform + ' ' + appliedTransforms;\n      }\n      /* jshint boss:true */\n    } while (!selfOnly && (el = el.parentNode));\n  }\n  var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n  /*jshint -W056 */\n  return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n  if (ctx) {\n    var list = ctx.getElementsByTagName(tagName),\n      i = 0,\n      n = list.length;\n    if (iterator) {\n      for (; i < n; i++) {\n        iterator(list[i], i);\n      }\n    }\n    return list;\n  }\n  return [];\n}\nfunction getWindowScrollingElement() {\n  var scrollingElement = document.scrollingElement;\n  if (scrollingElement) {\n    return scrollingElement;\n  } else {\n    return document.documentElement;\n  }\n}\n\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param  {HTMLElement} el                       The element whose boundingClientRect is wanted\r\n * @param  {[Boolean]} relativeToContainingBlock  Whether the rect should be relative to the containing block of (including) the container\r\n * @param  {[Boolean]} relativeToNonStaticParent  Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param  {[Boolean]} undoScale                  Whether the container's scale() should be undone\r\n * @param  {[HTMLElement]} container              The parent the element will be placed in\r\n * @return {Object}                               The boundingClientRect of el, with specified adjustments\r\n */\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n  if (!el.getBoundingClientRect && el !== window) return;\n  var elRect, top, left, bottom, right, height, width;\n  if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n    elRect = el.getBoundingClientRect();\n    top = elRect.top;\n    left = elRect.left;\n    bottom = elRect.bottom;\n    right = elRect.right;\n    height = elRect.height;\n    width = elRect.width;\n  } else {\n    top = 0;\n    left = 0;\n    bottom = window.innerHeight;\n    right = window.innerWidth;\n    height = window.innerHeight;\n    width = window.innerWidth;\n  }\n  if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n    // Adjust for translate()\n    container = container || el.parentNode;\n\n    // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n    // Not needed on <= IE11\n    if (!IE11OrLess) {\n      do {\n        if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n          var containerRect = container.getBoundingClientRect();\n\n          // Set relative to edges of padding box of container\n          top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n          left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n          bottom = top + elRect.height;\n          right = left + elRect.width;\n          break;\n        }\n        /* jshint boss:true */\n      } while (container = container.parentNode);\n    }\n  }\n  if (undoScale && el !== window) {\n    // Adjust for scale()\n    var elMatrix = matrix(container || el),\n      scaleX = elMatrix && elMatrix.a,\n      scaleY = elMatrix && elMatrix.d;\n    if (elMatrix) {\n      top /= scaleY;\n      left /= scaleX;\n      width /= scaleX;\n      height /= scaleY;\n      bottom = top + height;\n      right = left + width;\n    }\n  }\n  return {\n    top: top,\n    left: left,\n    bottom: bottom,\n    right: right,\n    width: width,\n    height: height\n  };\n}\n\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param  {HTMLElement}  el           The element who's side being scrolled out of view is in question\r\n * @param  {String}       elSide       Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param  {String}       parentSide   Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement}               The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\nfunction isScrolledPast(el, elSide, parentSide) {\n  var parent = getParentAutoScrollElement(el, true),\n    elSideVal = getRect(el)[elSide];\n\n  /* jshint boss:true */\n  while (parent) {\n    var parentSideVal = getRect(parent)[parentSide],\n      visible = void 0;\n    if (parentSide === 'top' || parentSide === 'left') {\n      visible = elSideVal >= parentSideVal;\n    } else {\n      visible = elSideVal <= parentSideVal;\n    }\n    if (!visible) return parent;\n    if (parent === getWindowScrollingElement()) break;\n    parent = getParentAutoScrollElement(parent, false);\n  }\n  return false;\n}\n\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param  {HTMLElement} el       The parent element\r\n * @param  {Number} childNum      The index of the child\r\n * @param  {Object} options       Parent Sortable's options\r\n * @return {HTMLElement}          The child at index childNum, or null if not found\r\n */\nfunction getChild(el, childNum, options, includeDragEl) {\n  var currentChild = 0,\n    i = 0,\n    children = el.children;\n  while (i < children.length) {\n    if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n      if (currentChild === childNum) {\n        return children[i];\n      }\n      currentChild++;\n    }\n    i++;\n  }\n  return null;\n}\n\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param  {HTMLElement} el       Parent element\r\n * @param  {selector} selector    Any other elements that should be ignored\r\n * @return {HTMLElement}          The last child, ignoring ghostEl\r\n */\nfunction lastChild(el, selector) {\n  var last = el.lastElementChild;\n  while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n    last = last.previousElementSibling;\n  }\n  return last || null;\n}\n\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param  {HTMLElement} el\r\n * @param  {selector} selector\r\n * @return {number}\r\n */\nfunction index(el, selector) {\n  var index = 0;\n  if (!el || !el.parentNode) {\n    return -1;\n  }\n\n  /* jshint boss:true */\n  while (el = el.previousElementSibling) {\n    if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n      index++;\n    }\n  }\n  return index;\n}\n\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param  {HTMLElement} el\r\n * @return {Array}             Offsets in the format of [left, top]\r\n */\nfunction getRelativeScrollOffset(el) {\n  var offsetLeft = 0,\n    offsetTop = 0,\n    winScroller = getWindowScrollingElement();\n  if (el) {\n    do {\n      var elMatrix = matrix(el),\n        scaleX = elMatrix.a,\n        scaleY = elMatrix.d;\n      offsetLeft += el.scrollLeft * scaleX;\n      offsetTop += el.scrollTop * scaleY;\n    } while (el !== winScroller && (el = el.parentNode));\n  }\n  return [offsetLeft, offsetTop];\n}\n\n/**\r\n * Returns the index of the object within the given array\r\n * @param  {Array} arr   Array that may or may not hold the object\r\n * @param  {Object} obj  An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number}      The index of the object in the array, or -1\r\n */\nfunction indexOfObject(arr, obj) {\n  for (var i in arr) {\n    if (!arr.hasOwnProperty(i)) continue;\n    for (var key in obj) {\n      if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n    }\n  }\n  return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n  // skip to window\n  if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n  var elem = el;\n  var gotSelf = false;\n  do {\n    // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n    if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n      var elemCSS = css(elem);\n      if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n        if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n        if (gotSelf || includeSelf) return elem;\n        gotSelf = true;\n      }\n    }\n    /* jshint boss:true */\n  } while (elem = elem.parentNode);\n  return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n  if (dst && src) {\n    for (var key in src) {\n      if (src.hasOwnProperty(key)) {\n        dst[key] = src[key];\n      }\n    }\n  }\n  return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n  return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n  return function () {\n    if (!_throttleTimeout) {\n      var args = arguments,\n        _this = this;\n      if (args.length === 1) {\n        callback.call(_this, args[0]);\n      } else {\n        callback.apply(_this, args);\n      }\n      _throttleTimeout = setTimeout(function () {\n        _throttleTimeout = void 0;\n      }, ms);\n    }\n  };\n}\nfunction cancelThrottle() {\n  clearTimeout(_throttleTimeout);\n  _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n  el.scrollLeft += x;\n  el.scrollTop += y;\n}\nfunction clone(el) {\n  var Polymer = window.Polymer;\n  var $ = window.jQuery || window.Zepto;\n  if (Polymer && Polymer.dom) {\n    return Polymer.dom(el).cloneNode(true);\n  } else if ($) {\n    return $(el).clone(true)[0];\n  } else {\n    return el.cloneNode(true);\n  }\n}\nfunction setRect(el, rect) {\n  css(el, 'position', 'absolute');\n  css(el, 'top', rect.top);\n  css(el, 'left', rect.left);\n  css(el, 'width', rect.width);\n  css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n  css(el, 'position', '');\n  css(el, 'top', '');\n  css(el, 'left', '');\n  css(el, 'width', '');\n  css(el, 'height', '');\n}\nfunction getChildContainingRectFromElement(container, options, ghostEl) {\n  var rect = {};\n  Array.from(container.children).forEach(function (child) {\n    var _rect$left, _rect$top, _rect$right, _rect$bottom;\n    if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;\n    var childRect = getRect(child);\n    rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);\n    rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);\n    rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);\n    rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);\n  });\n  rect.width = rect.right - rect.left;\n  rect.height = rect.bottom - rect.top;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n  var animationStates = [],\n    animationCallbackId;\n  return {\n    captureAnimationState: function captureAnimationState() {\n      animationStates = [];\n      if (!this.options.animation) return;\n      var children = [].slice.call(this.el.children);\n      children.forEach(function (child) {\n        if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n        animationStates.push({\n          target: child,\n          rect: getRect(child)\n        });\n        var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);\n\n        // If animating: compensate for current animation\n        if (child.thisAnimationDuration) {\n          var childMatrix = matrix(child, true);\n          if (childMatrix) {\n            fromRect.top -= childMatrix.f;\n            fromRect.left -= childMatrix.e;\n          }\n        }\n        child.fromRect = fromRect;\n      });\n    },\n    addAnimationState: function addAnimationState(state) {\n      animationStates.push(state);\n    },\n    removeAnimationState: function removeAnimationState(target) {\n      animationStates.splice(indexOfObject(animationStates, {\n        target: target\n      }), 1);\n    },\n    animateAll: function animateAll(callback) {\n      var _this = this;\n      if (!this.options.animation) {\n        clearTimeout(animationCallbackId);\n        if (typeof callback === 'function') callback();\n        return;\n      }\n      var animating = false,\n        animationTime = 0;\n      animationStates.forEach(function (state) {\n        var time = 0,\n          target = state.target,\n          fromRect = target.fromRect,\n          toRect = getRect(target),\n          prevFromRect = target.prevFromRect,\n          prevToRect = target.prevToRect,\n          animatingRect = state.rect,\n          targetMatrix = matrix(target, true);\n        if (targetMatrix) {\n          // Compensate for current animation\n          toRect.top -= targetMatrix.f;\n          toRect.left -= targetMatrix.e;\n        }\n        target.toRect = toRect;\n        if (target.thisAnimationDuration) {\n          // Could also check if animatingRect is between fromRect and toRect\n          if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n          // Make sure animatingRect is on line between toRect & fromRect\n          (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n            // If returning to same place as started from animation and on same axis\n            time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n          }\n        }\n\n        // if fromRect != toRect: animate\n        if (!isRectEqual(toRect, fromRect)) {\n          target.prevFromRect = fromRect;\n          target.prevToRect = toRect;\n          if (!time) {\n            time = _this.options.animation;\n          }\n          _this.animate(target, animatingRect, toRect, time);\n        }\n        if (time) {\n          animating = true;\n          animationTime = Math.max(animationTime, time);\n          clearTimeout(target.animationResetTimer);\n          target.animationResetTimer = setTimeout(function () {\n            target.animationTime = 0;\n            target.prevFromRect = null;\n            target.fromRect = null;\n            target.prevToRect = null;\n            target.thisAnimationDuration = null;\n          }, time);\n          target.thisAnimationDuration = time;\n        }\n      });\n      clearTimeout(animationCallbackId);\n      if (!animating) {\n        if (typeof callback === 'function') callback();\n      } else {\n        animationCallbackId = setTimeout(function () {\n          if (typeof callback === 'function') callback();\n        }, animationTime);\n      }\n      animationStates = [];\n    },\n    animate: function animate(target, currentRect, toRect, duration) {\n      if (duration) {\n        css(target, 'transition', '');\n        css(target, 'transform', '');\n        var elMatrix = matrix(this.el),\n          scaleX = elMatrix && elMatrix.a,\n          scaleY = elMatrix && elMatrix.d,\n          translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n          translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n        target.animatingX = !!translateX;\n        target.animatingY = !!translateY;\n        css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n        this.forRepaintDummy = repaint(target); // repaint\n\n        css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n        css(target, 'transform', 'translate3d(0,0,0)');\n        typeof target.animated === 'number' && clearTimeout(target.animated);\n        target.animated = setTimeout(function () {\n          css(target, 'transition', '');\n          css(target, 'transform', '');\n          target.animated = false;\n          target.animatingX = false;\n          target.animatingY = false;\n        }, duration);\n      }\n    }\n  };\n}\nfunction repaint(target) {\n  return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n  return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n  initializeByDefault: true\n};\nvar PluginManager = {\n  mount: function mount(plugin) {\n    // Set default static properties\n    for (var option in defaults) {\n      if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n        plugin[option] = defaults[option];\n      }\n    }\n    plugins.forEach(function (p) {\n      if (p.pluginName === plugin.pluginName) {\n        throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n      }\n    });\n    plugins.push(plugin);\n  },\n  pluginEvent: function pluginEvent(eventName, sortable, evt) {\n    var _this = this;\n    this.eventCanceled = false;\n    evt.cancel = function () {\n      _this.eventCanceled = true;\n    };\n    var eventNameGlobal = eventName + 'Global';\n    plugins.forEach(function (plugin) {\n      if (!sortable[plugin.pluginName]) return;\n      // Fire global events if it exists in this sortable\n      if (sortable[plugin.pluginName][eventNameGlobal]) {\n        sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n          sortable: sortable\n        }, evt));\n      }\n\n      // Only fire plugin event if plugin is enabled in this sortable,\n      // and plugin has event defined\n      if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n        sortable[plugin.pluginName][eventName](_objectSpread2({\n          sortable: sortable\n        }, evt));\n      }\n    });\n  },\n  initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n    plugins.forEach(function (plugin) {\n      var pluginName = plugin.pluginName;\n      if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n      var initialized = new plugin(sortable, el, sortable.options);\n      initialized.sortable = sortable;\n      initialized.options = sortable.options;\n      sortable[pluginName] = initialized;\n\n      // Add default options from plugin\n      _extends(defaults, initialized.defaults);\n    });\n    for (var option in sortable.options) {\n      if (!sortable.options.hasOwnProperty(option)) continue;\n      var modified = this.modifyOption(sortable, option, sortable.options[option]);\n      if (typeof modified !== 'undefined') {\n        sortable.options[option] = modified;\n      }\n    }\n  },\n  getEventProperties: function getEventProperties(name, sortable) {\n    var eventProperties = {};\n    plugins.forEach(function (plugin) {\n      if (typeof plugin.eventProperties !== 'function') return;\n      _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n    });\n    return eventProperties;\n  },\n  modifyOption: function modifyOption(sortable, name, value) {\n    var modifiedValue;\n    plugins.forEach(function (plugin) {\n      // Plugin must exist on the Sortable\n      if (!sortable[plugin.pluginName]) return;\n\n      // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n      if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n        modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n      }\n    });\n    return modifiedValue;\n  }\n};\n\nfunction dispatchEvent(_ref) {\n  var sortable = _ref.sortable,\n    rootEl = _ref.rootEl,\n    name = _ref.name,\n    targetEl = _ref.targetEl,\n    cloneEl = _ref.cloneEl,\n    toEl = _ref.toEl,\n    fromEl = _ref.fromEl,\n    oldIndex = _ref.oldIndex,\n    newIndex = _ref.newIndex,\n    oldDraggableIndex = _ref.oldDraggableIndex,\n    newDraggableIndex = _ref.newDraggableIndex,\n    originalEvent = _ref.originalEvent,\n    putSortable = _ref.putSortable,\n    extraEventProperties = _ref.extraEventProperties;\n  sortable = sortable || rootEl && rootEl[expando];\n  if (!sortable) return;\n  var evt,\n    options = sortable.options,\n    onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n  // Support for new CustomEvent feature\n  if (window.CustomEvent && !IE11OrLess && !Edge) {\n    evt = new CustomEvent(name, {\n      bubbles: true,\n      cancelable: true\n    });\n  } else {\n    evt = document.createEvent('Event');\n    evt.initEvent(name, true, true);\n  }\n  evt.to = toEl || rootEl;\n  evt.from = fromEl || rootEl;\n  evt.item = targetEl || rootEl;\n  evt.clone = cloneEl;\n  evt.oldIndex = oldIndex;\n  evt.newIndex = newIndex;\n  evt.oldDraggableIndex = oldDraggableIndex;\n  evt.newDraggableIndex = newDraggableIndex;\n  evt.originalEvent = originalEvent;\n  evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n  var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n  for (var option in allEventProperties) {\n    evt[option] = allEventProperties[option];\n  }\n  if (rootEl) {\n    rootEl.dispatchEvent(evt);\n  }\n  if (options[onName]) {\n    options[onName].call(sortable, evt);\n  }\n}\n\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n    originalEvent = _ref.evt,\n    data = _objectWithoutProperties(_ref, _excluded);\n  PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n    dragEl: dragEl,\n    parentEl: parentEl,\n    ghostEl: ghostEl,\n    rootEl: rootEl,\n    nextEl: nextEl,\n    lastDownEl: lastDownEl,\n    cloneEl: cloneEl,\n    cloneHidden: cloneHidden,\n    dragStarted: moved,\n    putSortable: putSortable,\n    activeSortable: Sortable.active,\n    originalEvent: originalEvent,\n    oldIndex: oldIndex,\n    oldDraggableIndex: oldDraggableIndex,\n    newIndex: newIndex,\n    newDraggableIndex: newDraggableIndex,\n    hideGhostForTarget: _hideGhostForTarget,\n    unhideGhostForTarget: _unhideGhostForTarget,\n    cloneNowHidden: function cloneNowHidden() {\n      cloneHidden = true;\n    },\n    cloneNowShown: function cloneNowShown() {\n      cloneHidden = false;\n    },\n    dispatchSortableEvent: function dispatchSortableEvent(name) {\n      _dispatchEvent({\n        sortable: sortable,\n        name: name,\n        originalEvent: originalEvent\n      });\n    }\n  }, data));\n};\nfunction _dispatchEvent(info) {\n  dispatchEvent(_objectSpread2({\n    putSortable: putSortable,\n    cloneEl: cloneEl,\n    targetEl: dragEl,\n    rootEl: rootEl,\n    oldIndex: oldIndex,\n    oldDraggableIndex: oldDraggableIndex,\n    newIndex: newIndex,\n    newDraggableIndex: newDraggableIndex\n  }, info));\n}\nvar dragEl,\n  parentEl,\n  ghostEl,\n  rootEl,\n  nextEl,\n  lastDownEl,\n  cloneEl,\n  cloneHidden,\n  oldIndex,\n  newIndex,\n  oldDraggableIndex,\n  newDraggableIndex,\n  activeGroup,\n  putSortable,\n  awaitingDragStarted = false,\n  ignoreNextClick = false,\n  sortables = [],\n  tapEvt,\n  touchEvt,\n  lastDx,\n  lastDy,\n  tapDistanceLeft,\n  tapDistanceTop,\n  moved,\n  lastTarget,\n  lastDirection,\n  pastFirstInvertThresh = false,\n  isCircumstantialInvert = false,\n  targetMoveDistance,\n  // For positioning ghost absolutely\n  ghostRelativeParent,\n  ghostRelativeParentInitialScroll = [],\n  // (left, top)\n\n  _silent = false,\n  savedInputChecked = [];\n\n/** @const */\nvar documentExists = typeof document !== 'undefined',\n  PositionGhostAbsolutely = IOS,\n  CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n  // This will not pass for IE9, because IE9 DnD only works on anchors\n  supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n  supportCssPointerEvents = function () {\n    if (!documentExists) return;\n    // false when <= IE11\n    if (IE11OrLess) {\n      return false;\n    }\n    var el = document.createElement('x');\n    el.style.cssText = 'pointer-events:auto';\n    return el.style.pointerEvents === 'auto';\n  }(),\n  _detectDirection = function _detectDirection(el, options) {\n    var elCSS = css(el),\n      elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n      child1 = getChild(el, 0, options),\n      child2 = getChild(el, 1, options),\n      firstChildCSS = child1 && css(child1),\n      secondChildCSS = child2 && css(child2),\n      firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n      secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n    if (elCSS.display === 'flex') {\n      return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n    }\n    if (elCSS.display === 'grid') {\n      return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n    }\n    if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n      var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n      return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n    }\n    return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n  },\n  _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n    var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n      dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n      dragElOppLength = vertical ? dragRect.width : dragRect.height,\n      targetS1Opp = vertical ? targetRect.left : targetRect.top,\n      targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n      targetOppLength = vertical ? targetRect.width : targetRect.height;\n    return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n  },\n  /**\r\n   * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n   * @param  {Number} x      X position\r\n   * @param  {Number} y      Y position\r\n   * @return {HTMLElement}   Element of the first found nearest Sortable\r\n   */\n  _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n    var ret;\n    sortables.some(function (sortable) {\n      var threshold = sortable[expando].options.emptyInsertThreshold;\n      if (!threshold || lastChild(sortable)) return;\n      var rect = getRect(sortable),\n        insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n        insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n      if (insideHorizontally && insideVertically) {\n        return ret = sortable;\n      }\n    });\n    return ret;\n  },\n  _prepareGroup = function _prepareGroup(options) {\n    function toFn(value, pull) {\n      return function (to, from, dragEl, evt) {\n        var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n        if (value == null && (pull || sameGroup)) {\n          // Default pull value\n          // Default pull and put value if same group\n          return true;\n        } else if (value == null || value === false) {\n          return false;\n        } else if (pull && value === 'clone') {\n          return value;\n        } else if (typeof value === 'function') {\n          return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n        } else {\n          var otherGroup = (pull ? to : from).options.group.name;\n          return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n        }\n      };\n    }\n    var group = {};\n    var originalGroup = options.group;\n    if (!originalGroup || _typeof(originalGroup) != 'object') {\n      originalGroup = {\n        name: originalGroup\n      };\n    }\n    group.name = originalGroup.name;\n    group.checkPull = toFn(originalGroup.pull, true);\n    group.checkPut = toFn(originalGroup.put);\n    group.revertClone = originalGroup.revertClone;\n    options.group = group;\n  },\n  _hideGhostForTarget = function _hideGhostForTarget() {\n    if (!supportCssPointerEvents && ghostEl) {\n      css(ghostEl, 'display', 'none');\n    }\n  },\n  _unhideGhostForTarget = function _unhideGhostForTarget() {\n    if (!supportCssPointerEvents && ghostEl) {\n      css(ghostEl, 'display', '');\n    }\n  };\n\n// #1184 fix - Prevent click event on fallback if dragged but item not changed position\nif (documentExists && !ChromeForAndroid) {\n  document.addEventListener('click', function (evt) {\n    if (ignoreNextClick) {\n      evt.preventDefault();\n      evt.stopPropagation && evt.stopPropagation();\n      evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n      ignoreNextClick = false;\n      return false;\n    }\n  }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n  if (dragEl) {\n    evt = evt.touches ? evt.touches[0] : evt;\n    var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n    if (nearest) {\n      // Create imitation event\n      var event = {};\n      for (var i in evt) {\n        if (evt.hasOwnProperty(i)) {\n          event[i] = evt[i];\n        }\n      }\n      event.target = event.rootEl = nearest;\n      event.preventDefault = void 0;\n      event.stopPropagation = void 0;\n      nearest[expando]._onDragOver(event);\n    }\n  }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n  if (dragEl) {\n    dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n  }\n};\n\n/**\r\n * @class  Sortable\r\n * @param  {HTMLElement}  el\r\n * @param  {Object}       [options]\r\n */\nfunction Sortable(el, options) {\n  if (!(el && el.nodeType && el.nodeType === 1)) {\n    throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n  }\n  this.el = el; // root element\n  this.options = options = _extends({}, options);\n\n  // Export instance\n  el[expando] = this;\n  var defaults = {\n    group: null,\n    sort: true,\n    disabled: false,\n    store: null,\n    handle: null,\n    draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n    swapThreshold: 1,\n    // percentage; 0 <= x <= 1\n    invertSwap: false,\n    // invert always\n    invertedSwapThreshold: null,\n    // will be set to same as swapThreshold if default\n    removeCloneOnHide: true,\n    direction: function direction() {\n      return _detectDirection(el, this.options);\n    },\n    ghostClass: 'sortable-ghost',\n    chosenClass: 'sortable-chosen',\n    dragClass: 'sortable-drag',\n    ignore: 'a, img',\n    filter: null,\n    preventOnFilter: true,\n    animation: 0,\n    easing: null,\n    setData: function setData(dataTransfer, dragEl) {\n      dataTransfer.setData('Text', dragEl.textContent);\n    },\n    dropBubble: false,\n    dragoverBubble: false,\n    dataIdAttr: 'data-id',\n    delay: 0,\n    delayOnTouchOnly: false,\n    touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n    forceFallback: false,\n    fallbackClass: 'sortable-fallback',\n    fallbackOnBody: false,\n    fallbackTolerance: 0,\n    fallbackOffset: {\n      x: 0,\n      y: 0\n    },\n    // Disabled on Safari: #1571; Enabled on Safari IOS: #2244\n    supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && (!Safari || IOS),\n    emptyInsertThreshold: 5\n  };\n  PluginManager.initializePlugins(this, el, defaults);\n\n  // Set default options\n  for (var name in defaults) {\n    !(name in options) && (options[name] = defaults[name]);\n  }\n  _prepareGroup(options);\n\n  // Bind all private methods\n  for (var fn in this) {\n    if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n      this[fn] = this[fn].bind(this);\n    }\n  }\n\n  // Setup drag mode\n  this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n  if (this.nativeDraggable) {\n    // Touch start threshold cannot be greater than the native dragstart threshold\n    this.options.touchStartThreshold = 1;\n  }\n\n  // Bind events\n  if (options.supportPointer) {\n    on(el, 'pointerdown', this._onTapStart);\n  } else {\n    on(el, 'mousedown', this._onTapStart);\n    on(el, 'touchstart', this._onTapStart);\n  }\n  if (this.nativeDraggable) {\n    on(el, 'dragover', this);\n    on(el, 'dragenter', this);\n  }\n  sortables.push(this.el);\n\n  // Restore sorting\n  options.store && options.store.get && this.sort(options.store.get(this) || []);\n\n  // Add animation state manager\n  _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */{\n  constructor: Sortable,\n  _isOutsideThisEl: function _isOutsideThisEl(target) {\n    if (!this.el.contains(target) && target !== this.el) {\n      lastTarget = null;\n    }\n  },\n  _getDirection: function _getDirection(evt, target) {\n    return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n  },\n  _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {\n    if (!evt.cancelable) return;\n    var _this = this,\n      el = this.el,\n      options = this.options,\n      preventOnFilter = options.preventOnFilter,\n      type = evt.type,\n      touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n      target = (touch || evt).target,\n      originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n      filter = options.filter;\n    _saveInputCheckedState(el);\n\n    // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n    if (dragEl) {\n      return;\n    }\n    if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n      return; // only left button and enabled\n    }\n\n    // cancel dnd if original target is content editable\n    if (originalTarget.isContentEditable) {\n      return;\n    }\n\n    // Safari ignores further event handling after mousedown\n    if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n      return;\n    }\n    target = closest(target, options.draggable, el, false);\n    if (target && target.animated) {\n      return;\n    }\n    if (lastDownEl === target) {\n      // Ignoring duplicate `down`\n      return;\n    }\n\n    // Get the index of the dragged element within its parent\n    oldIndex = index(target);\n    oldDraggableIndex = index(target, options.draggable);\n\n    // Check filter\n    if (typeof filter === 'function') {\n      if (filter.call(this, evt, target, this)) {\n        _dispatchEvent({\n          sortable: _this,\n          rootEl: originalTarget,\n          name: 'filter',\n          targetEl: target,\n          toEl: el,\n          fromEl: el\n        });\n        pluginEvent('filter', _this, {\n          evt: evt\n        });\n        preventOnFilter && evt.preventDefault();\n        return; // cancel dnd\n      }\n    } else if (filter) {\n      filter = filter.split(',').some(function (criteria) {\n        criteria = closest(originalTarget, criteria.trim(), el, false);\n        if (criteria) {\n          _dispatchEvent({\n            sortable: _this,\n            rootEl: criteria,\n            name: 'filter',\n            targetEl: target,\n            fromEl: el,\n            toEl: el\n          });\n          pluginEvent('filter', _this, {\n            evt: evt\n          });\n          return true;\n        }\n      });\n      if (filter) {\n        preventOnFilter && evt.preventDefault();\n        return; // cancel dnd\n      }\n    }\n    if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n      return;\n    }\n\n    // Prepare `dragstart`\n    this._prepareDragStart(evt, touch, target);\n  },\n  _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n    var _this = this,\n      el = _this.el,\n      options = _this.options,\n      ownerDocument = el.ownerDocument,\n      dragStartFn;\n    if (target && !dragEl && target.parentNode === el) {\n      var dragRect = getRect(target);\n      rootEl = el;\n      dragEl = target;\n      parentEl = dragEl.parentNode;\n      nextEl = dragEl.nextSibling;\n      lastDownEl = target;\n      activeGroup = options.group;\n      Sortable.dragged = dragEl;\n      tapEvt = {\n        target: dragEl,\n        clientX: (touch || evt).clientX,\n        clientY: (touch || evt).clientY\n      };\n      tapDistanceLeft = tapEvt.clientX - dragRect.left;\n      tapDistanceTop = tapEvt.clientY - dragRect.top;\n      this._lastX = (touch || evt).clientX;\n      this._lastY = (touch || evt).clientY;\n      dragEl.style['will-change'] = 'all';\n      dragStartFn = function dragStartFn() {\n        pluginEvent('delayEnded', _this, {\n          evt: evt\n        });\n        if (Sortable.eventCanceled) {\n          _this._onDrop();\n          return;\n        }\n        // Delayed drag has been triggered\n        // we can re-enable the events: touchmove/mousemove\n        _this._disableDelayedDragEvents();\n        if (!FireFox && _this.nativeDraggable) {\n          dragEl.draggable = true;\n        }\n\n        // Bind the events: dragstart/dragend\n        _this._triggerDragStart(evt, touch);\n\n        // Drag start event\n        _dispatchEvent({\n          sortable: _this,\n          name: 'choose',\n          originalEvent: evt\n        });\n\n        // Chosen item\n        toggleClass(dragEl, options.chosenClass, true);\n      };\n\n      // Disable \"draggable\"\n      options.ignore.split(',').forEach(function (criteria) {\n        find(dragEl, criteria.trim(), _disableDraggable);\n      });\n      on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n      on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n      on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n      if (options.supportPointer) {\n        on(ownerDocument, 'pointerup', _this._onDrop);\n        // Native D&D triggers pointercancel\n        !this.nativeDraggable && on(ownerDocument, 'pointercancel', _this._onDrop);\n      } else {\n        on(ownerDocument, 'mouseup', _this._onDrop);\n        on(ownerDocument, 'touchend', _this._onDrop);\n        on(ownerDocument, 'touchcancel', _this._onDrop);\n      }\n\n      // Make dragEl draggable (must be before delay for FireFox)\n      if (FireFox && this.nativeDraggable) {\n        this.options.touchStartThreshold = 4;\n        dragEl.draggable = true;\n      }\n      pluginEvent('delayStart', this, {\n        evt: evt\n      });\n\n      // Delay is impossible for native DnD in Edge or IE\n      if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n        if (Sortable.eventCanceled) {\n          this._onDrop();\n          return;\n        }\n        // If the user moves the pointer or let go the click or touch\n        // before the delay has been reached:\n        // disable the delayed drag\n        if (options.supportPointer) {\n          on(ownerDocument, 'pointerup', _this._disableDelayedDrag);\n          on(ownerDocument, 'pointercancel', _this._disableDelayedDrag);\n        } else {\n          on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n          on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n          on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n        }\n        on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n        on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n        options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n        _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n      } else {\n        dragStartFn();\n      }\n    }\n  },\n  _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {\n    var touch = e.touches ? e.touches[0] : e;\n    if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n      this._disableDelayedDrag();\n    }\n  },\n  _disableDelayedDrag: function _disableDelayedDrag() {\n    dragEl && _disableDraggable(dragEl);\n    clearTimeout(this._dragStartTimer);\n    this._disableDelayedDragEvents();\n  },\n  _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n    var ownerDocument = this.el.ownerDocument;\n    off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n    off(ownerDocument, 'touchend', this._disableDelayedDrag);\n    off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n    off(ownerDocument, 'pointerup', this._disableDelayedDrag);\n    off(ownerDocument, 'pointercancel', this._disableDelayedDrag);\n    off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n    off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n    off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n  },\n  _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {\n    touch = touch || evt.pointerType == 'touch' && evt;\n    if (!this.nativeDraggable || touch) {\n      if (this.options.supportPointer) {\n        on(document, 'pointermove', this._onTouchMove);\n      } else if (touch) {\n        on(document, 'touchmove', this._onTouchMove);\n      } else {\n        on(document, 'mousemove', this._onTouchMove);\n      }\n    } else {\n      on(dragEl, 'dragend', this);\n      on(rootEl, 'dragstart', this._onDragStart);\n    }\n    try {\n      if (document.selection) {\n        _nextTick(function () {\n          document.selection.empty();\n        });\n      } else {\n        window.getSelection().removeAllRanges();\n      }\n    } catch (err) {}\n  },\n  _dragStarted: function _dragStarted(fallback, evt) {\n    awaitingDragStarted = false;\n    if (rootEl && dragEl) {\n      pluginEvent('dragStarted', this, {\n        evt: evt\n      });\n      if (this.nativeDraggable) {\n        on(document, 'dragover', _checkOutsideTargetEl);\n      }\n      var options = this.options;\n\n      // Apply effect\n      !fallback && toggleClass(dragEl, options.dragClass, false);\n      toggleClass(dragEl, options.ghostClass, true);\n      Sortable.active = this;\n      fallback && this._appendGhost();\n\n      // Drag start event\n      _dispatchEvent({\n        sortable: this,\n        name: 'start',\n        originalEvent: evt\n      });\n    } else {\n      this._nulling();\n    }\n  },\n  _emulateDragOver: function _emulateDragOver() {\n    if (touchEvt) {\n      this._lastX = touchEvt.clientX;\n      this._lastY = touchEvt.clientY;\n      _hideGhostForTarget();\n      var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n      var parent = target;\n      while (target && target.shadowRoot) {\n        target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n        if (target === parent) break;\n        parent = target;\n      }\n      dragEl.parentNode[expando]._isOutsideThisEl(target);\n      if (parent) {\n        do {\n          if (parent[expando]) {\n            var inserted = void 0;\n            inserted = parent[expando]._onDragOver({\n              clientX: touchEvt.clientX,\n              clientY: touchEvt.clientY,\n              target: target,\n              rootEl: parent\n            });\n            if (inserted && !this.options.dragoverBubble) {\n              break;\n            }\n          }\n          target = parent; // store last element\n        }\n        /* jshint boss:true */ while (parent = getParentOrHost(parent));\n      }\n      _unhideGhostForTarget();\n    }\n  },\n  _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {\n    if (tapEvt) {\n      var options = this.options,\n        fallbackTolerance = options.fallbackTolerance,\n        fallbackOffset = options.fallbackOffset,\n        touch = evt.touches ? evt.touches[0] : evt,\n        ghostMatrix = ghostEl && matrix(ghostEl, true),\n        scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n        scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n        relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n        dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n        dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);\n\n      // only set the status to dragging, when we are actually dragging\n      if (!Sortable.active && !awaitingDragStarted) {\n        if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n          return;\n        }\n        this._onDragStart(evt, true);\n      }\n      if (ghostEl) {\n        if (ghostMatrix) {\n          ghostMatrix.e += dx - (lastDx || 0);\n          ghostMatrix.f += dy - (lastDy || 0);\n        } else {\n          ghostMatrix = {\n            a: 1,\n            b: 0,\n            c: 0,\n            d: 1,\n            e: dx,\n            f: dy\n          };\n        }\n        var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n        css(ghostEl, 'webkitTransform', cssMatrix);\n        css(ghostEl, 'mozTransform', cssMatrix);\n        css(ghostEl, 'msTransform', cssMatrix);\n        css(ghostEl, 'transform', cssMatrix);\n        lastDx = dx;\n        lastDy = dy;\n        touchEvt = touch;\n      }\n      evt.cancelable && evt.preventDefault();\n    }\n  },\n  _appendGhost: function _appendGhost() {\n    // Bug if using scale(): https://stackoverflow.com/questions/2637058\n    // Not being adjusted for\n    if (!ghostEl) {\n      var container = this.options.fallbackOnBody ? document.body : rootEl,\n        rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n        options = this.options;\n\n      // Position absolutely\n      if (PositionGhostAbsolutely) {\n        // Get relatively positioned parent\n        ghostRelativeParent = container;\n        while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n          ghostRelativeParent = ghostRelativeParent.parentNode;\n        }\n        if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n          if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n          rect.top += ghostRelativeParent.scrollTop;\n          rect.left += ghostRelativeParent.scrollLeft;\n        } else {\n          ghostRelativeParent = getWindowScrollingElement();\n        }\n        ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n      }\n      ghostEl = dragEl.cloneNode(true);\n      toggleClass(ghostEl, options.ghostClass, false);\n      toggleClass(ghostEl, options.fallbackClass, true);\n      toggleClass(ghostEl, options.dragClass, true);\n      css(ghostEl, 'transition', '');\n      css(ghostEl, 'transform', '');\n      css(ghostEl, 'box-sizing', 'border-box');\n      css(ghostEl, 'margin', 0);\n      css(ghostEl, 'top', rect.top);\n      css(ghostEl, 'left', rect.left);\n      css(ghostEl, 'width', rect.width);\n      css(ghostEl, 'height', rect.height);\n      css(ghostEl, 'opacity', '0.8');\n      css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n      css(ghostEl, 'zIndex', '100000');\n      css(ghostEl, 'pointerEvents', 'none');\n      Sortable.ghost = ghostEl;\n      container.appendChild(ghostEl);\n\n      // Set transform-origin\n      css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n    }\n  },\n  _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {\n    var _this = this;\n    var dataTransfer = evt.dataTransfer;\n    var options = _this.options;\n    pluginEvent('dragStart', this, {\n      evt: evt\n    });\n    if (Sortable.eventCanceled) {\n      this._onDrop();\n      return;\n    }\n    pluginEvent('setupClone', this);\n    if (!Sortable.eventCanceled) {\n      cloneEl = clone(dragEl);\n      cloneEl.removeAttribute(\"id\");\n      cloneEl.draggable = false;\n      cloneEl.style['will-change'] = '';\n      this._hideClone();\n      toggleClass(cloneEl, this.options.chosenClass, false);\n      Sortable.clone = cloneEl;\n    }\n\n    // #1143: IFrame support workaround\n    _this.cloneId = _nextTick(function () {\n      pluginEvent('clone', _this);\n      if (Sortable.eventCanceled) return;\n      if (!_this.options.removeCloneOnHide) {\n        rootEl.insertBefore(cloneEl, dragEl);\n      }\n      _this._hideClone();\n      _dispatchEvent({\n        sortable: _this,\n        name: 'clone'\n      });\n    });\n    !fallback && toggleClass(dragEl, options.dragClass, true);\n\n    // Set proper drop events\n    if (fallback) {\n      ignoreNextClick = true;\n      _this._loopId = setInterval(_this._emulateDragOver, 50);\n    } else {\n      // Undo what was set in _prepareDragStart before drag started\n      off(document, 'mouseup', _this._onDrop);\n      off(document, 'touchend', _this._onDrop);\n      off(document, 'touchcancel', _this._onDrop);\n      if (dataTransfer) {\n        dataTransfer.effectAllowed = 'move';\n        options.setData && options.setData.call(_this, dataTransfer, dragEl);\n      }\n      on(document, 'drop', _this);\n\n      // #1276 fix:\n      css(dragEl, 'transform', 'translateZ(0)');\n    }\n    awaitingDragStarted = true;\n    _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n    on(document, 'selectstart', _this);\n    moved = true;\n    window.getSelection().removeAllRanges();\n    if (Safari) {\n      css(document.body, 'user-select', 'none');\n    }\n  },\n  // Returns true - if no further action is needed (either inserted or another condition)\n  _onDragOver: function _onDragOver( /**Event*/evt) {\n    var el = this.el,\n      target = evt.target,\n      dragRect,\n      targetRect,\n      revert,\n      options = this.options,\n      group = options.group,\n      activeSortable = Sortable.active,\n      isOwner = activeGroup === group,\n      canSort = options.sort,\n      fromSortable = putSortable || activeSortable,\n      vertical,\n      _this = this,\n      completedFired = false;\n    if (_silent) return;\n    function dragOverEvent(name, extra) {\n      pluginEvent(name, _this, _objectSpread2({\n        evt: evt,\n        isOwner: isOwner,\n        axis: vertical ? 'vertical' : 'horizontal',\n        revert: revert,\n        dragRect: dragRect,\n        targetRect: targetRect,\n        canSort: canSort,\n        fromSortable: fromSortable,\n        target: target,\n        completed: completed,\n        onMove: function onMove(target, after) {\n          return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n        },\n        changed: changed\n      }, extra));\n    }\n\n    // Capture animation state\n    function capture() {\n      dragOverEvent('dragOverAnimationCapture');\n      _this.captureAnimationState();\n      if (_this !== fromSortable) {\n        fromSortable.captureAnimationState();\n      }\n    }\n\n    // Return invocation when dragEl is inserted (or completed)\n    function completed(insertion) {\n      dragOverEvent('dragOverCompleted', {\n        insertion: insertion\n      });\n      if (insertion) {\n        // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n        if (isOwner) {\n          activeSortable._hideClone();\n        } else {\n          activeSortable._showClone(_this);\n        }\n        if (_this !== fromSortable) {\n          // Set ghost class to new sortable's ghost class\n          toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n          toggleClass(dragEl, options.ghostClass, true);\n        }\n        if (putSortable !== _this && _this !== Sortable.active) {\n          putSortable = _this;\n        } else if (_this === Sortable.active && putSortable) {\n          putSortable = null;\n        }\n\n        // Animation\n        if (fromSortable === _this) {\n          _this._ignoreWhileAnimating = target;\n        }\n        _this.animateAll(function () {\n          dragOverEvent('dragOverAnimationComplete');\n          _this._ignoreWhileAnimating = null;\n        });\n        if (_this !== fromSortable) {\n          fromSortable.animateAll();\n          fromSortable._ignoreWhileAnimating = null;\n        }\n      }\n\n      // Null lastTarget if it is not inside a previously swapped element\n      if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n        lastTarget = null;\n      }\n\n      // no bubbling and not fallback\n      if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n        dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n        // Do not detect for empty insert if already inserted\n        !insertion && nearestEmptyInsertDetectEvent(evt);\n      }\n      !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n      return completedFired = true;\n    }\n\n    // Call when dragEl has been inserted\n    function changed() {\n      newIndex = index(dragEl);\n      newDraggableIndex = index(dragEl, options.draggable);\n      _dispatchEvent({\n        sortable: _this,\n        name: 'change',\n        toEl: el,\n        newIndex: newIndex,\n        newDraggableIndex: newDraggableIndex,\n        originalEvent: evt\n      });\n    }\n    if (evt.preventDefault !== void 0) {\n      evt.cancelable && evt.preventDefault();\n    }\n    target = closest(target, options.draggable, el, true);\n    dragOverEvent('dragOver');\n    if (Sortable.eventCanceled) return completedFired;\n    if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n      return completed(false);\n    }\n    ignoreNextClick = false;\n    if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n    : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n      vertical = this._getDirection(evt, target) === 'vertical';\n      dragRect = getRect(dragEl);\n      dragOverEvent('dragOverValid');\n      if (Sortable.eventCanceled) return completedFired;\n      if (revert) {\n        parentEl = rootEl; // actualization\n        capture();\n        this._hideClone();\n        dragOverEvent('revert');\n        if (!Sortable.eventCanceled) {\n          if (nextEl) {\n            rootEl.insertBefore(dragEl, nextEl);\n          } else {\n            rootEl.appendChild(dragEl);\n          }\n        }\n        return completed(true);\n      }\n      var elLastChild = lastChild(el, options.draggable);\n      if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n        // Insert to end of list\n\n        // If already at end of list: Do not insert\n        if (elLastChild === dragEl) {\n          return completed(false);\n        }\n\n        // if there is a last element, it is the target\n        if (elLastChild && el === evt.target) {\n          target = elLastChild;\n        }\n        if (target) {\n          targetRect = getRect(target);\n        }\n        if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n          capture();\n          if (elLastChild && elLastChild.nextSibling) {\n            // the last draggable element is not the last node\n            el.insertBefore(dragEl, elLastChild.nextSibling);\n          } else {\n            el.appendChild(dragEl);\n          }\n          parentEl = el; // actualization\n\n          changed();\n          return completed(true);\n        }\n      } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n        // Insert to start of list\n        var firstChild = getChild(el, 0, options, true);\n        if (firstChild === dragEl) {\n          return completed(false);\n        }\n        target = firstChild;\n        targetRect = getRect(target);\n        if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n          capture();\n          el.insertBefore(dragEl, firstChild);\n          parentEl = el; // actualization\n\n          changed();\n          return completed(true);\n        }\n      } else if (target.parentNode === el) {\n        targetRect = getRect(target);\n        var direction = 0,\n          targetBeforeFirstSwap,\n          differentLevel = dragEl.parentNode !== el,\n          differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n          side1 = vertical ? 'top' : 'left',\n          scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n          scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n        if (lastTarget !== target) {\n          targetBeforeFirstSwap = targetRect[side1];\n          pastFirstInvertThresh = false;\n          isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n        }\n        direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n        var sibling;\n        if (direction !== 0) {\n          // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n          var dragIndex = index(dragEl);\n          do {\n            dragIndex -= direction;\n            sibling = parentEl.children[dragIndex];\n          } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n        }\n        // If dragEl is already beside target: Do not insert\n        if (direction === 0 || sibling === target) {\n          return completed(false);\n        }\n        lastTarget = target;\n        lastDirection = direction;\n        var nextSibling = target.nextElementSibling,\n          after = false;\n        after = direction === 1;\n        var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n        if (moveVector !== false) {\n          if (moveVector === 1 || moveVector === -1) {\n            after = moveVector === 1;\n          }\n          _silent = true;\n          setTimeout(_unsilent, 30);\n          capture();\n          if (after && !nextSibling) {\n            el.appendChild(dragEl);\n          } else {\n            target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n          }\n\n          // Undo chrome's scroll adjustment (has no effect on other browsers)\n          if (scrolledPastTop) {\n            scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n          }\n          parentEl = dragEl.parentNode; // actualization\n\n          // must be done before animation\n          if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n            targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n          }\n          changed();\n          return completed(true);\n        }\n      }\n      if (el.contains(dragEl)) {\n        return completed(false);\n      }\n    }\n    return false;\n  },\n  _ignoreWhileAnimating: null,\n  _offMoveEvents: function _offMoveEvents() {\n    off(document, 'mousemove', this._onTouchMove);\n    off(document, 'touchmove', this._onTouchMove);\n    off(document, 'pointermove', this._onTouchMove);\n    off(document, 'dragover', nearestEmptyInsertDetectEvent);\n    off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n    off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n  },\n  _offUpEvents: function _offUpEvents() {\n    var ownerDocument = this.el.ownerDocument;\n    off(ownerDocument, 'mouseup', this._onDrop);\n    off(ownerDocument, 'touchend', this._onDrop);\n    off(ownerDocument, 'pointerup', this._onDrop);\n    off(ownerDocument, 'pointercancel', this._onDrop);\n    off(ownerDocument, 'touchcancel', this._onDrop);\n    off(document, 'selectstart', this);\n  },\n  _onDrop: function _onDrop( /**Event*/evt) {\n    var el = this.el,\n      options = this.options;\n\n    // Get the index of the dragged element within its parent\n    newIndex = index(dragEl);\n    newDraggableIndex = index(dragEl, options.draggable);\n    pluginEvent('drop', this, {\n      evt: evt\n    });\n    parentEl = dragEl && dragEl.parentNode;\n\n    // Get again after plugin event\n    newIndex = index(dragEl);\n    newDraggableIndex = index(dragEl, options.draggable);\n    if (Sortable.eventCanceled) {\n      this._nulling();\n      return;\n    }\n    awaitingDragStarted = false;\n    isCircumstantialInvert = false;\n    pastFirstInvertThresh = false;\n    clearInterval(this._loopId);\n    clearTimeout(this._dragStartTimer);\n    _cancelNextTick(this.cloneId);\n    _cancelNextTick(this._dragStartId);\n\n    // Unbind events\n    if (this.nativeDraggable) {\n      off(document, 'drop', this);\n      off(el, 'dragstart', this._onDragStart);\n    }\n    this._offMoveEvents();\n    this._offUpEvents();\n    if (Safari) {\n      css(document.body, 'user-select', '');\n    }\n    css(dragEl, 'transform', '');\n    if (evt) {\n      if (moved) {\n        evt.cancelable && evt.preventDefault();\n        !options.dropBubble && evt.stopPropagation();\n      }\n      ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n      if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n        // Remove clone(s)\n        cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n      }\n      if (dragEl) {\n        if (this.nativeDraggable) {\n          off(dragEl, 'dragend', this);\n        }\n        _disableDraggable(dragEl);\n        dragEl.style['will-change'] = '';\n\n        // Remove classes\n        // ghostClass is added in dragStarted\n        if (moved && !awaitingDragStarted) {\n          toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n        }\n        toggleClass(dragEl, this.options.chosenClass, false);\n\n        // Drag stop event\n        _dispatchEvent({\n          sortable: this,\n          name: 'unchoose',\n          toEl: parentEl,\n          newIndex: null,\n          newDraggableIndex: null,\n          originalEvent: evt\n        });\n        if (rootEl !== parentEl) {\n          if (newIndex >= 0) {\n            // Add event\n            _dispatchEvent({\n              rootEl: parentEl,\n              name: 'add',\n              toEl: parentEl,\n              fromEl: rootEl,\n              originalEvent: evt\n            });\n\n            // Remove event\n            _dispatchEvent({\n              sortable: this,\n              name: 'remove',\n              toEl: parentEl,\n              originalEvent: evt\n            });\n\n            // drag from one list and drop into another\n            _dispatchEvent({\n              rootEl: parentEl,\n              name: 'sort',\n              toEl: parentEl,\n              fromEl: rootEl,\n              originalEvent: evt\n            });\n            _dispatchEvent({\n              sortable: this,\n              name: 'sort',\n              toEl: parentEl,\n              originalEvent: evt\n            });\n          }\n          putSortable && putSortable.save();\n        } else {\n          if (newIndex !== oldIndex) {\n            if (newIndex >= 0) {\n              // drag & drop within the same list\n              _dispatchEvent({\n                sortable: this,\n                name: 'update',\n                toEl: parentEl,\n                originalEvent: evt\n              });\n              _dispatchEvent({\n                sortable: this,\n                name: 'sort',\n                toEl: parentEl,\n                originalEvent: evt\n              });\n            }\n          }\n        }\n        if (Sortable.active) {\n          /* jshint eqnull:true */\n          if (newIndex == null || newIndex === -1) {\n            newIndex = oldIndex;\n            newDraggableIndex = oldDraggableIndex;\n          }\n          _dispatchEvent({\n            sortable: this,\n            name: 'end',\n            toEl: parentEl,\n            originalEvent: evt\n          });\n\n          // Save sorting\n          this.save();\n        }\n      }\n    }\n    this._nulling();\n  },\n  _nulling: function _nulling() {\n    pluginEvent('nulling', this);\n    rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n    savedInputChecked.forEach(function (el) {\n      el.checked = true;\n    });\n    savedInputChecked.length = lastDx = lastDy = 0;\n  },\n  handleEvent: function handleEvent( /**Event*/evt) {\n    switch (evt.type) {\n      case 'drop':\n      case 'dragend':\n        this._onDrop(evt);\n        break;\n      case 'dragenter':\n      case 'dragover':\n        if (dragEl) {\n          this._onDragOver(evt);\n          _globalDragOver(evt);\n        }\n        break;\n      case 'selectstart':\n        evt.preventDefault();\n        break;\n    }\n  },\n  /**\r\n   * Serializes the item into an array of string.\r\n   * @returns {String[]}\r\n   */\n  toArray: function toArray() {\n    var order = [],\n      el,\n      children = this.el.children,\n      i = 0,\n      n = children.length,\n      options = this.options;\n    for (; i < n; i++) {\n      el = children[i];\n      if (closest(el, options.draggable, this.el, false)) {\n        order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n      }\n    }\n    return order;\n  },\n  /**\r\n   * Sorts the elements according to the array.\r\n   * @param  {String[]}  order  order of the items\r\n   */\n  sort: function sort(order, useAnimation) {\n    var items = {},\n      rootEl = this.el;\n    this.toArray().forEach(function (id, i) {\n      var el = rootEl.children[i];\n      if (closest(el, this.options.draggable, rootEl, false)) {\n        items[id] = el;\n      }\n    }, this);\n    useAnimation && this.captureAnimationState();\n    order.forEach(function (id) {\n      if (items[id]) {\n        rootEl.removeChild(items[id]);\n        rootEl.appendChild(items[id]);\n      }\n    });\n    useAnimation && this.animateAll();\n  },\n  /**\r\n   * Save the current sorting\r\n   */\n  save: function save() {\n    var store = this.options.store;\n    store && store.set && store.set(this);\n  },\n  /**\r\n   * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n   * @param   {HTMLElement}  el\r\n   * @param   {String}       [selector]  default: `options.draggable`\r\n   * @returns {HTMLElement|null}\r\n   */\n  closest: function closest$1(el, selector) {\n    return closest(el, selector || this.options.draggable, this.el, false);\n  },\n  /**\r\n   * Set/get option\r\n   * @param   {string} name\r\n   * @param   {*}      [value]\r\n   * @returns {*}\r\n   */\n  option: function option(name, value) {\n    var options = this.options;\n    if (value === void 0) {\n      return options[name];\n    } else {\n      var modifiedValue = PluginManager.modifyOption(this, name, value);\n      if (typeof modifiedValue !== 'undefined') {\n        options[name] = modifiedValue;\n      } else {\n        options[name] = value;\n      }\n      if (name === 'group') {\n        _prepareGroup(options);\n      }\n    }\n  },\n  /**\r\n   * Destroy\r\n   */\n  destroy: function destroy() {\n    pluginEvent('destroy', this);\n    var el = this.el;\n    el[expando] = null;\n    off(el, 'mousedown', this._onTapStart);\n    off(el, 'touchstart', this._onTapStart);\n    off(el, 'pointerdown', this._onTapStart);\n    if (this.nativeDraggable) {\n      off(el, 'dragover', this);\n      off(el, 'dragenter', this);\n    }\n    // Remove draggable attributes\n    Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n      el.removeAttribute('draggable');\n    });\n    this._onDrop();\n    this._disableDelayedDragEvents();\n    sortables.splice(sortables.indexOf(this.el), 1);\n    this.el = el = null;\n  },\n  _hideClone: function _hideClone() {\n    if (!cloneHidden) {\n      pluginEvent('hideClone', this);\n      if (Sortable.eventCanceled) return;\n      css(cloneEl, 'display', 'none');\n      if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n        cloneEl.parentNode.removeChild(cloneEl);\n      }\n      cloneHidden = true;\n    }\n  },\n  _showClone: function _showClone(putSortable) {\n    if (putSortable.lastPutMode !== 'clone') {\n      this._hideClone();\n      return;\n    }\n    if (cloneHidden) {\n      pluginEvent('showClone', this);\n      if (Sortable.eventCanceled) return;\n\n      // show clone at dragEl or original position\n      if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n        rootEl.insertBefore(cloneEl, dragEl);\n      } else if (nextEl) {\n        rootEl.insertBefore(cloneEl, nextEl);\n      } else {\n        rootEl.appendChild(cloneEl);\n      }\n      if (this.options.group.revertClone) {\n        this.animate(dragEl, cloneEl);\n      }\n      css(cloneEl, 'display', '');\n      cloneHidden = false;\n    }\n  }\n};\nfunction _globalDragOver( /**Event*/evt) {\n  if (evt.dataTransfer) {\n    evt.dataTransfer.dropEffect = 'move';\n  }\n  evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n  var evt,\n    sortable = fromEl[expando],\n    onMoveFn = sortable.options.onMove,\n    retVal;\n  // Support for new CustomEvent feature\n  if (window.CustomEvent && !IE11OrLess && !Edge) {\n    evt = new CustomEvent('move', {\n      bubbles: true,\n      cancelable: true\n    });\n  } else {\n    evt = document.createEvent('Event');\n    evt.initEvent('move', true, true);\n  }\n  evt.to = toEl;\n  evt.from = fromEl;\n  evt.dragged = dragEl;\n  evt.draggedRect = dragRect;\n  evt.related = targetEl || toEl;\n  evt.relatedRect = targetRect || getRect(toEl);\n  evt.willInsertAfter = willInsertAfter;\n  evt.originalEvent = originalEvent;\n  fromEl.dispatchEvent(evt);\n  if (onMoveFn) {\n    retVal = onMoveFn.call(sortable, evt, originalEvent);\n  }\n  return retVal;\n}\nfunction _disableDraggable(el) {\n  el.draggable = false;\n}\nfunction _unsilent() {\n  _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n  var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));\n  var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n  var spacer = 10;\n  return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n  var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));\n  var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n  var spacer = 10;\n  return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n  var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n    targetLength = vertical ? targetRect.height : targetRect.width,\n    targetS1 = vertical ? targetRect.top : targetRect.left,\n    targetS2 = vertical ? targetRect.bottom : targetRect.right,\n    invert = false;\n  if (!invertSwap) {\n    // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n    if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n      // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n      // check if past first invert threshold on side opposite of lastDirection\n      if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n        // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n        pastFirstInvertThresh = true;\n      }\n      if (!pastFirstInvertThresh) {\n        // dragEl shadow (target move distance shadow)\n        if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n        : mouseOnAxis > targetS2 - targetMoveDistance) {\n          return -lastDirection;\n        }\n      } else {\n        invert = true;\n      }\n    } else {\n      // Regular\n      if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n        return _getInsertDirection(target);\n      }\n    }\n  }\n  invert = invert || invertSwap;\n  if (invert) {\n    // Invert of regular\n    if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n      return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n    }\n  }\n  return 0;\n}\n\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param  {HTMLElement} target       The target whose position dragEl is being inserted at\r\n * @return {Number}                   Direction dragEl must be swapped\r\n */\nfunction _getInsertDirection(target) {\n  if (index(dragEl) < index(target)) {\n    return 1;\n  } else {\n    return -1;\n  }\n}\n\n/**\r\n * Generate id\r\n * @param   {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\nfunction _generateId(el) {\n  var str = el.tagName + el.className + el.src + el.href + el.textContent,\n    i = str.length,\n    sum = 0;\n  while (i--) {\n    sum += str.charCodeAt(i);\n  }\n  return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n  savedInputChecked.length = 0;\n  var inputs = root.getElementsByTagName('input');\n  var idx = inputs.length;\n  while (idx--) {\n    var el = inputs[idx];\n    el.checked && savedInputChecked.push(el);\n  }\n}\nfunction _nextTick(fn) {\n  return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n  return clearTimeout(id);\n}\n\n// Fixed #973:\nif (documentExists) {\n  on(document, 'touchmove', function (evt) {\n    if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n      evt.preventDefault();\n    }\n  });\n}\n\n// Export utils\nSortable.utils = {\n  on: on,\n  off: off,\n  css: css,\n  find: find,\n  is: function is(el, selector) {\n    return !!closest(el, selector, el, false);\n  },\n  extend: extend,\n  throttle: throttle,\n  closest: closest,\n  toggleClass: toggleClass,\n  clone: clone,\n  index: index,\n  nextTick: _nextTick,\n  cancelNextTick: _cancelNextTick,\n  detectDirection: _detectDirection,\n  getChild: getChild,\n  expando: expando\n};\n\n/**\r\n * Get the Sortable instance of an element\r\n * @param  {HTMLElement} element The element\r\n * @return {Sortable|undefined}         The instance of Sortable\r\n */\nSortable.get = function (element) {\n  return element[expando];\n};\n\n/**\r\n * Mount a plugin to Sortable\r\n * @param  {...SortablePlugin|SortablePlugin[]} plugins       Plugins being mounted\r\n */\nSortable.mount = function () {\n  for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n    plugins[_key] = arguments[_key];\n  }\n  if (plugins[0].constructor === Array) plugins = plugins[0];\n  plugins.forEach(function (plugin) {\n    if (!plugin.prototype || !plugin.prototype.constructor) {\n      throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n    }\n    if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n    PluginManager.mount(plugin);\n  });\n};\n\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement}  el\r\n * @param {Object}      [options]\r\n */\nSortable.create = function (el, options) {\n  return new Sortable(el, options);\n};\n\n// Export\nSortable.version = version;\n\nvar autoScrolls = [],\n  scrollEl,\n  scrollRootEl,\n  scrolling = false,\n  lastAutoScrollX,\n  lastAutoScrollY,\n  touchEvt$1,\n  pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n  function AutoScroll() {\n    this.defaults = {\n      scroll: true,\n      forceAutoScrollFallback: false,\n      scrollSensitivity: 30,\n      scrollSpeed: 10,\n      bubbleScroll: true\n    };\n\n    // Bind all private methods\n    for (var fn in this) {\n      if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n        this[fn] = this[fn].bind(this);\n      }\n    }\n  }\n  AutoScroll.prototype = {\n    dragStarted: function dragStarted(_ref) {\n      var originalEvent = _ref.originalEvent;\n      if (this.sortable.nativeDraggable) {\n        on(document, 'dragover', this._handleAutoScroll);\n      } else {\n        if (this.options.supportPointer) {\n          on(document, 'pointermove', this._handleFallbackAutoScroll);\n        } else if (originalEvent.touches) {\n          on(document, 'touchmove', this._handleFallbackAutoScroll);\n        } else {\n          on(document, 'mousemove', this._handleFallbackAutoScroll);\n        }\n      }\n    },\n    dragOverCompleted: function dragOverCompleted(_ref2) {\n      var originalEvent = _ref2.originalEvent;\n      // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n      if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n        this._handleAutoScroll(originalEvent);\n      }\n    },\n    drop: function drop() {\n      if (this.sortable.nativeDraggable) {\n        off(document, 'dragover', this._handleAutoScroll);\n      } else {\n        off(document, 'pointermove', this._handleFallbackAutoScroll);\n        off(document, 'touchmove', this._handleFallbackAutoScroll);\n        off(document, 'mousemove', this._handleFallbackAutoScroll);\n      }\n      clearPointerElemChangedInterval();\n      clearAutoScrolls();\n      cancelThrottle();\n    },\n    nulling: function nulling() {\n      touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n      autoScrolls.length = 0;\n    },\n    _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n      this._handleAutoScroll(evt, true);\n    },\n    _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n      var _this = this;\n      var x = (evt.touches ? evt.touches[0] : evt).clientX,\n        y = (evt.touches ? evt.touches[0] : evt).clientY,\n        elem = document.elementFromPoint(x, y);\n      touchEvt$1 = evt;\n\n      // IE does not seem to have native autoscroll,\n      // Edge's autoscroll seems too conditional,\n      // MACOS Safari does not have autoscroll,\n      // Firefox and Chrome are good\n      if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n        autoScroll(evt, this.options, elem, fallback);\n\n        // Listener for pointer element change\n        var ogElemScroller = getParentAutoScrollElement(elem, true);\n        if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n          pointerElemChangedInterval && clearPointerElemChangedInterval();\n          // Detect for pointer elem change, emulating native DnD behaviour\n          pointerElemChangedInterval = setInterval(function () {\n            var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n            if (newElem !== ogElemScroller) {\n              ogElemScroller = newElem;\n              clearAutoScrolls();\n            }\n            autoScroll(evt, _this.options, newElem, fallback);\n          }, 10);\n          lastAutoScrollX = x;\n          lastAutoScrollY = y;\n        }\n      } else {\n        // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n        if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n          clearAutoScrolls();\n          return;\n        }\n        autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n      }\n    }\n  };\n  return _extends(AutoScroll, {\n    pluginName: 'scroll',\n    initializeByDefault: true\n  });\n}\nfunction clearAutoScrolls() {\n  autoScrolls.forEach(function (autoScroll) {\n    clearInterval(autoScroll.pid);\n  });\n  autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n  clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n  // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n  if (!options.scroll) return;\n  var x = (evt.touches ? evt.touches[0] : evt).clientX,\n    y = (evt.touches ? evt.touches[0] : evt).clientY,\n    sens = options.scrollSensitivity,\n    speed = options.scrollSpeed,\n    winScroller = getWindowScrollingElement();\n  var scrollThisInstance = false,\n    scrollCustomFn;\n\n  // New scroll root, set scrollEl\n  if (scrollRootEl !== rootEl) {\n    scrollRootEl = rootEl;\n    clearAutoScrolls();\n    scrollEl = options.scroll;\n    scrollCustomFn = options.scrollFn;\n    if (scrollEl === true) {\n      scrollEl = getParentAutoScrollElement(rootEl, true);\n    }\n  }\n  var layersOut = 0;\n  var currentParent = scrollEl;\n  do {\n    var el = currentParent,\n      rect = getRect(el),\n      top = rect.top,\n      bottom = rect.bottom,\n      left = rect.left,\n      right = rect.right,\n      width = rect.width,\n      height = rect.height,\n      canScrollX = void 0,\n      canScrollY = void 0,\n      scrollWidth = el.scrollWidth,\n      scrollHeight = el.scrollHeight,\n      elCSS = css(el),\n      scrollPosX = el.scrollLeft,\n      scrollPosY = el.scrollTop;\n    if (el === winScroller) {\n      canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n      canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n    } else {\n      canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n      canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n    }\n    var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n    var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n    if (!autoScrolls[layersOut]) {\n      for (var i = 0; i <= layersOut; i++) {\n        if (!autoScrolls[i]) {\n          autoScrolls[i] = {};\n        }\n      }\n    }\n    if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n      autoScrolls[layersOut].el = el;\n      autoScrolls[layersOut].vx = vx;\n      autoScrolls[layersOut].vy = vy;\n      clearInterval(autoScrolls[layersOut].pid);\n      if (vx != 0 || vy != 0) {\n        scrollThisInstance = true;\n        /* jshint loopfunc:true */\n        autoScrolls[layersOut].pid = setInterval(function () {\n          // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n          if (isFallback && this.layer === 0) {\n            Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n          }\n          var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n          var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n          if (typeof scrollCustomFn === 'function') {\n            if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n              return;\n            }\n          }\n          scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n        }.bind({\n          layer: layersOut\n        }), 24);\n      }\n    }\n    layersOut++;\n  } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n  scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n  var originalEvent = _ref.originalEvent,\n    putSortable = _ref.putSortable,\n    dragEl = _ref.dragEl,\n    activeSortable = _ref.activeSortable,\n    dispatchSortableEvent = _ref.dispatchSortableEvent,\n    hideGhostForTarget = _ref.hideGhostForTarget,\n    unhideGhostForTarget = _ref.unhideGhostForTarget;\n  if (!originalEvent) return;\n  var toSortable = putSortable || activeSortable;\n  hideGhostForTarget();\n  var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n  var target = document.elementFromPoint(touch.clientX, touch.clientY);\n  unhideGhostForTarget();\n  if (toSortable && !toSortable.el.contains(target)) {\n    dispatchSortableEvent('spill');\n    this.onSpill({\n      dragEl: dragEl,\n      putSortable: putSortable\n    });\n  }\n};\nfunction Revert() {}\nRevert.prototype = {\n  startIndex: null,\n  dragStart: function dragStart(_ref2) {\n    var oldDraggableIndex = _ref2.oldDraggableIndex;\n    this.startIndex = oldDraggableIndex;\n  },\n  onSpill: function onSpill(_ref3) {\n    var dragEl = _ref3.dragEl,\n      putSortable = _ref3.putSortable;\n    this.sortable.captureAnimationState();\n    if (putSortable) {\n      putSortable.captureAnimationState();\n    }\n    var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n    if (nextSibling) {\n      this.sortable.el.insertBefore(dragEl, nextSibling);\n    } else {\n      this.sortable.el.appendChild(dragEl);\n    }\n    this.sortable.animateAll();\n    if (putSortable) {\n      putSortable.animateAll();\n    }\n  },\n  drop: drop\n};\n_extends(Revert, {\n  pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n  onSpill: function onSpill(_ref4) {\n    var dragEl = _ref4.dragEl,\n      putSortable = _ref4.putSortable;\n    var parentSortable = putSortable || this.sortable;\n    parentSortable.captureAnimationState();\n    dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n    parentSortable.animateAll();\n  },\n  drop: drop\n};\n_extends(Remove, {\n  pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\nfunction SwapPlugin() {\n  function Swap() {\n    this.defaults = {\n      swapClass: 'sortable-swap-highlight'\n    };\n  }\n  Swap.prototype = {\n    dragStart: function dragStart(_ref) {\n      var dragEl = _ref.dragEl;\n      lastSwapEl = dragEl;\n    },\n    dragOverValid: function dragOverValid(_ref2) {\n      var completed = _ref2.completed,\n        target = _ref2.target,\n        onMove = _ref2.onMove,\n        activeSortable = _ref2.activeSortable,\n        changed = _ref2.changed,\n        cancel = _ref2.cancel;\n      if (!activeSortable.options.swap) return;\n      var el = this.sortable.el,\n        options = this.options;\n      if (target && target !== el) {\n        var prevSwapEl = lastSwapEl;\n        if (onMove(target) !== false) {\n          toggleClass(target, options.swapClass, true);\n          lastSwapEl = target;\n        } else {\n          lastSwapEl = null;\n        }\n        if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n          toggleClass(prevSwapEl, options.swapClass, false);\n        }\n      }\n      changed();\n      completed(true);\n      cancel();\n    },\n    drop: function drop(_ref3) {\n      var activeSortable = _ref3.activeSortable,\n        putSortable = _ref3.putSortable,\n        dragEl = _ref3.dragEl;\n      var toSortable = putSortable || this.sortable;\n      var options = this.options;\n      lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n      if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n        if (dragEl !== lastSwapEl) {\n          toSortable.captureAnimationState();\n          if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n          swapNodes(dragEl, lastSwapEl);\n          toSortable.animateAll();\n          if (toSortable !== activeSortable) activeSortable.animateAll();\n        }\n      }\n    },\n    nulling: function nulling() {\n      lastSwapEl = null;\n    }\n  };\n  return _extends(Swap, {\n    pluginName: 'swap',\n    eventProperties: function eventProperties() {\n      return {\n        swapItem: lastSwapEl\n      };\n    }\n  });\n}\nfunction swapNodes(n1, n2) {\n  var p1 = n1.parentNode,\n    p2 = n2.parentNode,\n    i1,\n    i2;\n  if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n  i1 = index(n1);\n  i2 = index(n2);\n  if (p1.isEqualNode(p2) && i1 < i2) {\n    i2++;\n  }\n  p1.insertBefore(n2, p1.children[i1]);\n  p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n  multiDragClones = [],\n  lastMultiDragSelect,\n  // for selection with modifier key down (SHIFT)\n  multiDragSortable,\n  initialFolding = false,\n  // Initial multi-drag fold when drag started\n  folding = false,\n  // Folding any other time\n  dragStarted = false,\n  dragEl$1,\n  clonesFromRect,\n  clonesHidden;\nfunction MultiDragPlugin() {\n  function MultiDrag(sortable) {\n    // Bind all private methods\n    for (var fn in this) {\n      if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n        this[fn] = this[fn].bind(this);\n      }\n    }\n    if (!sortable.options.avoidImplicitDeselect) {\n      if (sortable.options.supportPointer) {\n        on(document, 'pointerup', this._deselectMultiDrag);\n      } else {\n        on(document, 'mouseup', this._deselectMultiDrag);\n        on(document, 'touchend', this._deselectMultiDrag);\n      }\n    }\n    on(document, 'keydown', this._checkKeyDown);\n    on(document, 'keyup', this._checkKeyUp);\n    this.defaults = {\n      selectedClass: 'sortable-selected',\n      multiDragKey: null,\n      avoidImplicitDeselect: false,\n      setData: function setData(dataTransfer, dragEl) {\n        var data = '';\n        if (multiDragElements.length && multiDragSortable === sortable) {\n          multiDragElements.forEach(function (multiDragElement, i) {\n            data += (!i ? '' : ', ') + multiDragElement.textContent;\n          });\n        } else {\n          data = dragEl.textContent;\n        }\n        dataTransfer.setData('Text', data);\n      }\n    };\n  }\n  MultiDrag.prototype = {\n    multiDragKeyDown: false,\n    isMultiDrag: false,\n    delayStartGlobal: function delayStartGlobal(_ref) {\n      var dragged = _ref.dragEl;\n      dragEl$1 = dragged;\n    },\n    delayEnded: function delayEnded() {\n      this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n    },\n    setupClone: function setupClone(_ref2) {\n      var sortable = _ref2.sortable,\n        cancel = _ref2.cancel;\n      if (!this.isMultiDrag) return;\n      for (var i = 0; i < multiDragElements.length; i++) {\n        multiDragClones.push(clone(multiDragElements[i]));\n        multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n        multiDragClones[i].draggable = false;\n        multiDragClones[i].style['will-change'] = '';\n        toggleClass(multiDragClones[i], this.options.selectedClass, false);\n        multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n      }\n      sortable._hideClone();\n      cancel();\n    },\n    clone: function clone(_ref3) {\n      var sortable = _ref3.sortable,\n        rootEl = _ref3.rootEl,\n        dispatchSortableEvent = _ref3.dispatchSortableEvent,\n        cancel = _ref3.cancel;\n      if (!this.isMultiDrag) return;\n      if (!this.options.removeCloneOnHide) {\n        if (multiDragElements.length && multiDragSortable === sortable) {\n          insertMultiDragClones(true, rootEl);\n          dispatchSortableEvent('clone');\n          cancel();\n        }\n      }\n    },\n    showClone: function showClone(_ref4) {\n      var cloneNowShown = _ref4.cloneNowShown,\n        rootEl = _ref4.rootEl,\n        cancel = _ref4.cancel;\n      if (!this.isMultiDrag) return;\n      insertMultiDragClones(false, rootEl);\n      multiDragClones.forEach(function (clone) {\n        css(clone, 'display', '');\n      });\n      cloneNowShown();\n      clonesHidden = false;\n      cancel();\n    },\n    hideClone: function hideClone(_ref5) {\n      var _this = this;\n      var sortable = _ref5.sortable,\n        cloneNowHidden = _ref5.cloneNowHidden,\n        cancel = _ref5.cancel;\n      if (!this.isMultiDrag) return;\n      multiDragClones.forEach(function (clone) {\n        css(clone, 'display', 'none');\n        if (_this.options.removeCloneOnHide && clone.parentNode) {\n          clone.parentNode.removeChild(clone);\n        }\n      });\n      cloneNowHidden();\n      clonesHidden = true;\n      cancel();\n    },\n    dragStartGlobal: function dragStartGlobal(_ref6) {\n      var sortable = _ref6.sortable;\n      if (!this.isMultiDrag && multiDragSortable) {\n        multiDragSortable.multiDrag._deselectMultiDrag();\n      }\n      multiDragElements.forEach(function (multiDragElement) {\n        multiDragElement.sortableIndex = index(multiDragElement);\n      });\n\n      // Sort multi-drag elements\n      multiDragElements = multiDragElements.sort(function (a, b) {\n        return a.sortableIndex - b.sortableIndex;\n      });\n      dragStarted = true;\n    },\n    dragStarted: function dragStarted(_ref7) {\n      var _this2 = this;\n      var sortable = _ref7.sortable;\n      if (!this.isMultiDrag) return;\n      if (this.options.sort) {\n        // Capture rects,\n        // hide multi drag elements (by positioning them absolute),\n        // set multi drag elements rects to dragRect,\n        // show multi drag elements,\n        // animate to rects,\n        // unset rects & remove from DOM\n\n        sortable.captureAnimationState();\n        if (this.options.animation) {\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            css(multiDragElement, 'position', 'absolute');\n          });\n          var dragRect = getRect(dragEl$1, false, true, true);\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            setRect(multiDragElement, dragRect);\n          });\n          folding = true;\n          initialFolding = true;\n        }\n      }\n      sortable.animateAll(function () {\n        folding = false;\n        initialFolding = false;\n        if (_this2.options.animation) {\n          multiDragElements.forEach(function (multiDragElement) {\n            unsetRect(multiDragElement);\n          });\n        }\n\n        // Remove all auxiliary multidrag items from el, if sorting enabled\n        if (_this2.options.sort) {\n          removeMultiDragElements();\n        }\n      });\n    },\n    dragOver: function dragOver(_ref8) {\n      var target = _ref8.target,\n        completed = _ref8.completed,\n        cancel = _ref8.cancel;\n      if (folding && ~multiDragElements.indexOf(target)) {\n        completed(false);\n        cancel();\n      }\n    },\n    revert: function revert(_ref9) {\n      var fromSortable = _ref9.fromSortable,\n        rootEl = _ref9.rootEl,\n        sortable = _ref9.sortable,\n        dragRect = _ref9.dragRect;\n      if (multiDragElements.length > 1) {\n        // Setup unfold animation\n        multiDragElements.forEach(function (multiDragElement) {\n          sortable.addAnimationState({\n            target: multiDragElement,\n            rect: folding ? getRect(multiDragElement) : dragRect\n          });\n          unsetRect(multiDragElement);\n          multiDragElement.fromRect = dragRect;\n          fromSortable.removeAnimationState(multiDragElement);\n        });\n        folding = false;\n        insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n      }\n    },\n    dragOverCompleted: function dragOverCompleted(_ref10) {\n      var sortable = _ref10.sortable,\n        isOwner = _ref10.isOwner,\n        insertion = _ref10.insertion,\n        activeSortable = _ref10.activeSortable,\n        parentEl = _ref10.parentEl,\n        putSortable = _ref10.putSortable;\n      var options = this.options;\n      if (insertion) {\n        // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n        if (isOwner) {\n          activeSortable._hideClone();\n        }\n        initialFolding = false;\n        // If leaving sort:false root, or already folding - Fold to new location\n        if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n          // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n          var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            setRect(multiDragElement, dragRectAbsolute);\n\n            // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n            // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n            parentEl.appendChild(multiDragElement);\n          });\n          folding = true;\n        }\n\n        // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n        if (!isOwner) {\n          // Only remove if not folding (folding will remove them anyways)\n          if (!folding) {\n            removeMultiDragElements();\n          }\n          if (multiDragElements.length > 1) {\n            var clonesHiddenBefore = clonesHidden;\n            activeSortable._showClone(sortable);\n\n            // Unfold animation for clones if showing from hidden\n            if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n              multiDragClones.forEach(function (clone) {\n                activeSortable.addAnimationState({\n                  target: clone,\n                  rect: clonesFromRect\n                });\n                clone.fromRect = clonesFromRect;\n                clone.thisAnimationDuration = null;\n              });\n            }\n          } else {\n            activeSortable._showClone(sortable);\n          }\n        }\n      }\n    },\n    dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n      var dragRect = _ref11.dragRect,\n        isOwner = _ref11.isOwner,\n        activeSortable = _ref11.activeSortable;\n      multiDragElements.forEach(function (multiDragElement) {\n        multiDragElement.thisAnimationDuration = null;\n      });\n      if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n        clonesFromRect = _extends({}, dragRect);\n        var dragMatrix = matrix(dragEl$1, true);\n        clonesFromRect.top -= dragMatrix.f;\n        clonesFromRect.left -= dragMatrix.e;\n      }\n    },\n    dragOverAnimationComplete: function dragOverAnimationComplete() {\n      if (folding) {\n        folding = false;\n        removeMultiDragElements();\n      }\n    },\n    drop: function drop(_ref12) {\n      var evt = _ref12.originalEvent,\n        rootEl = _ref12.rootEl,\n        parentEl = _ref12.parentEl,\n        sortable = _ref12.sortable,\n        dispatchSortableEvent = _ref12.dispatchSortableEvent,\n        oldIndex = _ref12.oldIndex,\n        putSortable = _ref12.putSortable;\n      var toSortable = putSortable || this.sortable;\n      if (!evt) return;\n      var options = this.options,\n        children = parentEl.children;\n\n      // Multi-drag selection\n      if (!dragStarted) {\n        if (options.multiDragKey && !this.multiDragKeyDown) {\n          this._deselectMultiDrag();\n        }\n        toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n        if (!~multiDragElements.indexOf(dragEl$1)) {\n          multiDragElements.push(dragEl$1);\n          dispatchEvent({\n            sortable: sortable,\n            rootEl: rootEl,\n            name: 'select',\n            targetEl: dragEl$1,\n            originalEvent: evt\n          });\n\n          // Modifier activated, select from last to dragEl\n          if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n            var lastIndex = index(lastMultiDragSelect),\n              currentIndex = index(dragEl$1);\n            if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n              (function () {\n                // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n                // (but previous selection existed)\n                var n, i;\n                if (currentIndex > lastIndex) {\n                  i = lastIndex;\n                  n = currentIndex;\n                } else {\n                  i = currentIndex;\n                  n = lastIndex + 1;\n                }\n                var filter = options.filter;\n                for (; i < n; i++) {\n                  if (~multiDragElements.indexOf(children[i])) continue;\n                  // Check if element is draggable\n                  if (!closest(children[i], options.draggable, parentEl, false)) continue;\n                  // Check if element is filtered\n                  var filtered = filter && (typeof filter === 'function' ? filter.call(sortable, evt, children[i], sortable) : filter.split(',').some(function (criteria) {\n                    return closest(children[i], criteria.trim(), parentEl, false);\n                  }));\n                  if (filtered) continue;\n                  toggleClass(children[i], options.selectedClass, true);\n                  multiDragElements.push(children[i]);\n                  dispatchEvent({\n                    sortable: sortable,\n                    rootEl: rootEl,\n                    name: 'select',\n                    targetEl: children[i],\n                    originalEvent: evt\n                  });\n                }\n              })();\n            }\n          } else {\n            lastMultiDragSelect = dragEl$1;\n          }\n          multiDragSortable = toSortable;\n        } else {\n          multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n          lastMultiDragSelect = null;\n          dispatchEvent({\n            sortable: sortable,\n            rootEl: rootEl,\n            name: 'deselect',\n            targetEl: dragEl$1,\n            originalEvent: evt\n          });\n        }\n      }\n\n      // Multi-drag drop\n      if (dragStarted && this.isMultiDrag) {\n        folding = false;\n        // Do not \"unfold\" after around dragEl if reverted\n        if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n          var dragRect = getRect(dragEl$1),\n            multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n          if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n          toSortable.captureAnimationState();\n          if (!initialFolding) {\n            if (options.animation) {\n              dragEl$1.fromRect = dragRect;\n              multiDragElements.forEach(function (multiDragElement) {\n                multiDragElement.thisAnimationDuration = null;\n                if (multiDragElement !== dragEl$1) {\n                  var rect = folding ? getRect(multiDragElement) : dragRect;\n                  multiDragElement.fromRect = rect;\n\n                  // Prepare unfold animation\n                  toSortable.addAnimationState({\n                    target: multiDragElement,\n                    rect: rect\n                  });\n                }\n              });\n            }\n\n            // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n            // properly they must all be removed\n            removeMultiDragElements();\n            multiDragElements.forEach(function (multiDragElement) {\n              if (children[multiDragIndex]) {\n                parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n              } else {\n                parentEl.appendChild(multiDragElement);\n              }\n              multiDragIndex++;\n            });\n\n            // If initial folding is done, the elements may have changed position because they are now\n            // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n            // must be fired here as Sortable will not.\n            if (oldIndex === index(dragEl$1)) {\n              var update = false;\n              multiDragElements.forEach(function (multiDragElement) {\n                if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n                  update = true;\n                  return;\n                }\n              });\n              if (update) {\n                dispatchSortableEvent('update');\n                dispatchSortableEvent('sort');\n              }\n            }\n          }\n\n          // Must be done after capturing individual rects (scroll bar)\n          multiDragElements.forEach(function (multiDragElement) {\n            unsetRect(multiDragElement);\n          });\n          toSortable.animateAll();\n        }\n        multiDragSortable = toSortable;\n      }\n\n      // Remove clones if necessary\n      if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n        multiDragClones.forEach(function (clone) {\n          clone.parentNode && clone.parentNode.removeChild(clone);\n        });\n      }\n    },\n    nullingGlobal: function nullingGlobal() {\n      this.isMultiDrag = dragStarted = false;\n      multiDragClones.length = 0;\n    },\n    destroyGlobal: function destroyGlobal() {\n      this._deselectMultiDrag();\n      off(document, 'pointerup', this._deselectMultiDrag);\n      off(document, 'mouseup', this._deselectMultiDrag);\n      off(document, 'touchend', this._deselectMultiDrag);\n      off(document, 'keydown', this._checkKeyDown);\n      off(document, 'keyup', this._checkKeyUp);\n    },\n    _deselectMultiDrag: function _deselectMultiDrag(evt) {\n      if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n      // Only deselect if selection is in this sortable\n      if (multiDragSortable !== this.sortable) return;\n\n      // Only deselect if target is not item in this sortable\n      if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;\n\n      // Only deselect if left click\n      if (evt && evt.button !== 0) return;\n      while (multiDragElements.length) {\n        var el = multiDragElements[0];\n        toggleClass(el, this.options.selectedClass, false);\n        multiDragElements.shift();\n        dispatchEvent({\n          sortable: this.sortable,\n          rootEl: this.sortable.el,\n          name: 'deselect',\n          targetEl: el,\n          originalEvent: evt\n        });\n      }\n    },\n    _checkKeyDown: function _checkKeyDown(evt) {\n      if (evt.key === this.options.multiDragKey) {\n        this.multiDragKeyDown = true;\n      }\n    },\n    _checkKeyUp: function _checkKeyUp(evt) {\n      if (evt.key === this.options.multiDragKey) {\n        this.multiDragKeyDown = false;\n      }\n    }\n  };\n  return _extends(MultiDrag, {\n    // Static methods & properties\n    pluginName: 'multiDrag',\n    utils: {\n      /**\r\n       * Selects the provided multi-drag item\r\n       * @param  {HTMLElement} el    The element to be selected\r\n       */\n      select: function select(el) {\n        var sortable = el.parentNode[expando];\n        if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n        if (multiDragSortable && multiDragSortable !== sortable) {\n          multiDragSortable.multiDrag._deselectMultiDrag();\n          multiDragSortable = sortable;\n        }\n        toggleClass(el, sortable.options.selectedClass, true);\n        multiDragElements.push(el);\n      },\n      /**\r\n       * Deselects the provided multi-drag item\r\n       * @param  {HTMLElement} el    The element to be deselected\r\n       */\n      deselect: function deselect(el) {\n        var sortable = el.parentNode[expando],\n          index = multiDragElements.indexOf(el);\n        if (!sortable || !sortable.options.multiDrag || !~index) return;\n        toggleClass(el, sortable.options.selectedClass, false);\n        multiDragElements.splice(index, 1);\n      }\n    },\n    eventProperties: function eventProperties() {\n      var _this3 = this;\n      var oldIndicies = [],\n        newIndicies = [];\n      multiDragElements.forEach(function (multiDragElement) {\n        oldIndicies.push({\n          multiDragElement: multiDragElement,\n          index: multiDragElement.sortableIndex\n        });\n\n        // multiDragElements will already be sorted if folding\n        var newIndex;\n        if (folding && multiDragElement !== dragEl$1) {\n          newIndex = -1;\n        } else if (folding) {\n          newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n        } else {\n          newIndex = index(multiDragElement);\n        }\n        newIndicies.push({\n          multiDragElement: multiDragElement,\n          index: newIndex\n        });\n      });\n      return {\n        items: _toConsumableArray(multiDragElements),\n        clones: [].concat(multiDragClones),\n        oldIndicies: oldIndicies,\n        newIndicies: newIndicies\n      };\n    },\n    optionListeners: {\n      multiDragKey: function multiDragKey(key) {\n        key = key.toLowerCase();\n        if (key === 'ctrl') {\n          key = 'Control';\n        } else if (key.length > 1) {\n          key = key.charAt(0).toUpperCase() + key.substr(1);\n        }\n        return key;\n      }\n    }\n  });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n  multiDragElements.forEach(function (multiDragElement, i) {\n    var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n    if (target) {\n      rootEl.insertBefore(multiDragElement, target);\n    } else {\n      rootEl.appendChild(multiDragElement);\n    }\n  });\n}\n\n/**\r\n * Insert multi-drag clones\r\n * @param  {[Boolean]} elementsInserted  Whether the multi-drag elements are inserted\r\n * @param  {HTMLElement} rootEl\r\n */\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n  multiDragClones.forEach(function (clone, i) {\n    var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n    if (target) {\n      rootEl.insertBefore(clone, target);\n    } else {\n      rootEl.appendChild(clone);\n    }\n  });\n}\nfunction removeMultiDragElements() {\n  multiDragElements.forEach(function (multiDragElement) {\n    if (multiDragElement === dragEl$1) return;\n    multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n  });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n", "import {Controller} from '@hotwired/stimulus';\nimport Sortable from 'sortablejs';\nconst uuid = require(\"uuid\");\n\nexport class SortableController extends Controller {\n\n    static values = {\n        options: Object\n    }\n\n    defaultOptions = {\n        animation: 100,\n        onAdd: this.handleOnAdd.bind(this)\n    }\n\n    connect() {\n        this.options = { ...this.defaultOptions };\n        this.options = this.hasOptionsValue ? this.options = { ...this.options, ...this.optionsValue } : {};\n        this.sortable = Sortable.create(this.element, this.options);\n    }\n\n    disconnect() {\n        this.sortable.destroy()\n        this.sortable = undefined;\n    }\n\n    handleOnAdd(event) {\n        if (this.options.replaceWithUuid) {\n            this.replaceWithUuid(event.item);\n        }\n        if (this.options.setInputValueOnAdd) {\n            this.setInputValueOnAdd(event.item)\n        }\n    }\n\n    replaceWithUuid(el) {\n        const id = uuid.v4();\n        el.innerHTML = el.innerHTML.replaceAll(this.options.replaceWithUuid, id);\n    }\n\n    setInputValueOnAdd(el) {\n        for (const [selector, value] of Object.entries(this.options.setInputValueOnAdd)) {\n            el.querySelectorAll(selector).forEach(foundElement => foundElement.value = value);\n        }\n    }\n    \n}\n", "import {Controller} from '@hotwired/stimulus';\n\nconst UPDATE_URL = '/invoice_items/new.json'\n\nexport class InvoiceItemFormController extends Controller {\n\n    static targets = ['productInput', 'invoicedObjectInput', 'itemNameInput', 'descriptionInput', 'quantityUnitInput', 'unitPriceInput', 'revenueAccountInput']\n\n    connect() {\n        this.productInputTarget.addEventListener('change', () => this.updateInputs());\n        this.invoicedObjectInputTarget.addEventListener('change', () => this.updateInputs());\n    }\n\n    async updateInputs() {\n        const productId = this.productInputTarget.value;\n        if (!productId) {\n            return;\n        }\n        if ([this.itemNameInputTarget, this.descriptionInputTarget, this.quantityUnitInputTarget, this.unitPriceInputTarget, this.revenueAccountInputTarget].map(input => input.value).some(val => !!val)) {\n            const confirmResult = await new Promise(resolve => {\n                bootbox.confirm({\n                    title: 'Positionsangaben neu berechnen?',\n                    message: 'Sollen die Texte, Einzelpreis, Ma\u00DFeinheit und Erl\u00F6skonto anhand der Kombination aus Dienstleistung und Produkt neu berechnet werden?',\n                    callback: resolve\n                })\n            })\n            if (!confirmResult) {\n                return;\n            }\n        }\n        const invoicedObjectComposedId = this.invoicedObjectInputTarget.value;\n        let params = `?invoice_item[product_id]=${productId}`;\n        if (invoicedObjectComposedId) {\n            params += `&invoice_item[invoiced_object_composed_id]=${invoicedObjectComposedId}`\n        }\n        const fetchResult = await fetch(UPDATE_URL + params)\n        const jsonResult = await fetchResult.json()\n        this.itemNameInputTarget.value = jsonResult.item_name || '';\n        this.descriptionInputTarget.value = jsonResult.description || '';\n        this.quantityUnitInputTarget.value = jsonResult.quantity_unit || '';\n        this.unitPriceInputTarget.value = jsonResult.unit_price ? parseFloat(jsonResult.unit_price).toLocaleString(document.documentElement.lang) : '';\n        this.revenueAccountInputTarget.value = jsonResult.revenue_account_id\n    }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nconst _RailsNestedForm = class _RailsNestedForm extends Controller {\n  add(e) {\n    e.preventDefault();\n    const content = this.templateTarget.innerHTML.replace(/NEW_RECORD/g, (/* @__PURE__ */ new Date()).getTime().toString());\n    this.targetTarget.insertAdjacentHTML(\"beforebegin\", content);\n    const event = new CustomEvent(\"rails-nested-form:add\", { bubbles: !0 });\n    this.element.dispatchEvent(event);\n  }\n  remove(e) {\n    e.preventDefault();\n    const wrapper = e.target.closest(this.wrapperSelectorValue);\n    if (wrapper.dataset.newRecord === \"true\")\n      wrapper.remove();\n    else {\n      wrapper.style.display = \"none\";\n      const input = wrapper.querySelector(\"input[name*='_destroy']\");\n      input.value = \"1\";\n    }\n    const event = new CustomEvent(\"rails-nested-form:remove\", { bubbles: !0 });\n    this.element.dispatchEvent(event);\n  }\n};\n_RailsNestedForm.targets = [\"target\", \"template\"], _RailsNestedForm.values = {\n  wrapperSelector: {\n    type: String,\n    default: \".nested-form-wrapper\"\n  }\n};\nlet RailsNestedForm = _RailsNestedForm;\nexport {\n  RailsNestedForm as default\n};\n", "import NestedForm from \"@stimulus-components/rails-nested-form\";\n\nconst dontAskAgainFor = [];\n\nexport class NestedFormController extends NestedForm {\n\n    static values = {\n        wrapperSelector: {\n            type: String,\n            default: '.nested-form-wrapper'\n        },\n        typeKey: {\n            type: String,\n            default: ''\n        }\n    }\n\n    async remove(e) {\n        e.preventDefault();\n        const deletionConfirmed = await this.askForConfirmation()\n        if (!deletionConfirmed) {\n            return;\n        }\n        const wrapper = e.target.closest(this.wrapperSelectorValue);\n        if (this.inUse(wrapper)) {\n            bootbox.alert({\n                title: \"In Verwendung\",\n                message: \"Dieses Objekt kann nicht entfernt werden, da es in der Datenbank referenziert wird. Wenn es zuk\u00FCnftig nicht mehr verwendet werden soll, setzen Sie ein G\u00FCltigkeitsende.\"\n            });\n        }\n        wrapper.classList.add('visually-hidden');\n        wrapper.addEventListener('transitionend', () => {\n            if (wrapper.dataset.newRecord === \"true\") {\n                wrapper.remove();\n            } else {\n                wrapper.style.display = \"none\";\n            }\n        }, {\n            capture: false,\n            once: true,\n            passive: false\n        });\n        const input = wrapper.querySelector(\"input[name*='_destroy']\");\n        input.value = \"1\";\n    }\n\n    async askForConfirmation() {\n        const typeKey = this.typeKeyValue\n        if (typeKey && dontAskAgainFor.includes(typeKey)) {\n            return true;\n        } else {\n            return await new Promise(resolve => {\n                const dontAskAgainButton = typeKey ? {\n                    dontAskAgain: {\n                        label: 'Ja, nicht mehr Fragen',\n                        callback: function () {\n                            dontAskAgainFor.push(typeKey);\n                            resolve(true)\n                        },\n                    },\n                } : {}\n                bootbox.dialog({\n                    title: name + ' wirklich entfernen?',\n                    message: 'Soll der Eintrag beim Speichern wirklich gel\u00F6scht werden?',\n                    buttons: {\n                        cancel: {\n                            label: 'Abbrechen',\n                            className: 'pull-left',\n                            callback: () => resolve(false)\n                        },\n                        ...dontAskAgainButton,\n                        ok: {\n                            label: 'Ok',\n                            className: 'btn-primary',\n                            callback: () => resolve(true)\n                        }\n                    }\n                });\n            })\n        }\n    }\n\n    inUse(wrapper) {\n        return wrapper.dataset.inUse;\n    }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nconst _Reveal = class _Reveal extends Controller {\n  connect() {\n    this.class = this.hasHiddenClass ? this.hiddenClass : \"hidden\";\n  }\n  toggle() {\n    this.itemTargets.forEach((item) => {\n      item.classList.toggle(this.class);\n    });\n  }\n  show() {\n    this.itemTargets.forEach((item) => {\n      item.classList.remove(this.class);\n    });\n  }\n  hide() {\n    this.itemTargets.forEach((item) => {\n      item.classList.add(this.class);\n    });\n  }\n};\n_Reveal.targets = [\"item\"], _Reveal.classes = [\"hidden\"];\nlet Reveal = _Reveal;\nexport {\n  Reveal as default\n};\n", "import {Controller} from \"@hotwired/stimulus\";\n\nexport class DisableController extends Controller {\n\n    static targets = [\n        'submit',\n        'input',\n        'trigger',\n        'hint'\n    ]\n\n    connect() {\n        this.inputTargets.forEach(input => {\n            input.addEventListener('change', () => {\n                this.recalculateDisabledState();\n            })\n        })\n        this.triggerTargets.forEach(trigger => {\n            trigger.addEventListener('change', () => {\n                this.recalculateDisabledState();\n            })\n        })\n        this.recalculateDisabledState();\n    }\n\n    recalculateDisabledState() {\n        const disabled = this.inputTargets.every(input => !input.value || input.value === '0')\n        this.submitTargets.forEach(target => target.disabled = disabled)\n        this.hintTargets.forEach(target => target.hidden = !disabled)\n    }\n\n}\n", "import jquery from \"jquery\";\nwindow.jQuery = jquery;\nwindow.$ = jquery;\nexport { jquery as $ }\nexport { jquery as jQuery }\n", "/*! jQuery UI - v1.13.3 - 2024-07-12\n* https://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/sortable.js, widgets/mouse.js, effect.js, effects/effect-fade.js, effects/effect-puff.js, effects/effect-scale.js, effects/effect-size.js\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui = $.ui || {};\n\nvar version = $.ui.version = \"1.13.3\";\n\n\n/*!\n * jQuery UI Widget 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: https://api.jqueryui.com/jQuery.widget/\n//>>demos: https://jqueryui.com/widget/\n\n\nvar widgetUuid = 0;\nvar widgetHasOwnProperty = Array.prototype.hasOwnProperty;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\n\t\t\t// Only trigger remove when necessary to save time\n\t\t\tevents = $._data( elem, \"events\" );\n\t\t\tif ( events && events.remove ) {\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( Array.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this || !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( typeof value !== \"function\" ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\n\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction bindRemoveEvent() {\n\t\t\tvar nodesToBind = [];\n\n\t\t\toptions.element.each( function( _, element ) {\n\t\t\t\tvar isTracked = $.map( that.classesElementLookup, function( elements ) {\n\t\t\t\t\treturn elements;\n\t\t\t\t} )\n\t\t\t\t\t.some( function( elements ) {\n\t\t\t\t\t\treturn elements.is( element );\n\t\t\t\t\t} );\n\n\t\t\t\tif ( !isTracked ) {\n\t\t\t\t\tnodesToBind.push( element );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthat._on( $( nodesToBind ), {\n\t\t\t\tremove: \"_untrackClassesElement\"\n\t\t\t} );\n\t\t}\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tbindRemoveEvent();\n\t\t\t\t\tcurrent = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\n\t\tthis._off( $( event.target ) );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( typeof callback === \"function\" &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t} else if ( options === true ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nvar widget = $.widget;\n\n\n/*!\n * jQuery UI Position 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * https://api.jqueryui.com/position/\n */\n\n//>>label: Position\n//>>group: Core\n//>>description: Positions elements relative to other elements.\n//>>docs: https://api.jqueryui.com/position/\n//>>demos: https://jqueryui.com/position/\n\n\n( function() {\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction isWindow( obj ) {\n\treturn obj != null && obj === obj.window;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[ 0 ];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style=\" +\n\t\t\t\t\"'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>\" +\n\t\t\t\t\"<div style='height:300px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[ 0 ];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[ 0 ].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn ( cachedScrollbarWidth = w1 - w2 );\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[ 0 ].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[ 0 ].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisElemWindow = isWindow( withinElement[ 0 ] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,\n\t\t\thasOffset = !isElemWindow && !isDocument;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isElemWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: withinElement.outerWidth(),\n\t\t\theight: withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// Make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\n\t\t// Make sure string options are treated as CSS selectors\n\t\ttarget = typeof options.of === \"string\" ?\n\t\t\t$( document ).find( options.of ) :\n\t\t\t$( options.of ),\n\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[ 0 ].preventDefault ) {\n\n\t\t// Force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\n\t// Clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// Force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1 ) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// Calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// Reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t} );\n\n\t// Normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each( function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) +\n\t\t\t\tscrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) +\n\t\t\t\tscrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tif ( options.using ) {\n\n\t\t\t// Adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t} );\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// Element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\n\t\t\t\t// Element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\n\t\t\t\t// Element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\n\t\t\t\t// Element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\n\t\t\t// Too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// Element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\n\t\t\t\t// Element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\n\t\t\t\t// Element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\n\t\t\t\t// Element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\n\t\t\t// Too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\n\t\t\t\t\touterWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\n\t\t\t\t\tatOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\n\t\t\t\t\touterHeight - withinOffset;\n\t\t\t\tif ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\n\t\t\t\t\toffset - offsetTop;\n\t\t\t\tif ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n} )();\n\nvar position = $.ui.position;\n\n\n/*!\n * jQuery UI :data 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: :data Selector\n//>>group: Core\n//>>description: Selects elements which have data stored under the specified key.\n//>>docs: https://api.jqueryui.com/data-selector/\n\n\nvar data = $.extend( $.expr.pseudos, {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo( function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t} ) :\n\n\t\t// Support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t}\n} );\n\n/*!\n * jQuery UI Disable Selection 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: disableSelection\n//>>group: Core\n//>>description: Disable selection of text content within the set of matched elements.\n//>>docs: https://api.jqueryui.com/disableSelection/\n\n// This file is deprecated\n\nvar disableSelection = $.fn.extend( {\n\tdisableSelection: ( function() {\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\n\t\t\t\"selectstart\" :\n\t\t\t\"mousedown\";\n\n\t\treturn function() {\n\t\t\treturn this.on( eventType + \".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tenableSelection: function() {\n\t\treturn this.off( \".ui-disableSelection\" );\n\t}\n} );\n\n\n/*!\n * jQuery UI Focusable 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: :focusable Selector\n//>>group: Core\n//>>description: Selects elements which can be focused.\n//>>docs: https://api.jqueryui.com/focusable-selector/\n\n\n// Selectors\n$.ui.focusable = function( element, hasTabindex ) {\n\tvar map, mapName, img, focusableIfVisible, fieldset,\n\t\tnodeName = element.nodeName.toLowerCase();\n\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap='#\" + mapName + \"']\" );\n\t\treturn img.length > 0 && img.is( \":visible\" );\n\t}\n\n\tif ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {\n\t\tfocusableIfVisible = !element.disabled;\n\n\t\tif ( focusableIfVisible ) {\n\n\t\t\t// Form controls within a disabled fieldset are disabled.\n\t\t\t// However, controls within the fieldset's legend do not get disabled.\n\t\t\t// Since controls generally aren't placed inside legends, we skip\n\t\t\t// this portion of the check.\n\t\t\tfieldset = $( element ).closest( \"fieldset\" )[ 0 ];\n\t\t\tif ( fieldset ) {\n\t\t\t\tfocusableIfVisible = !fieldset.disabled;\n\t\t\t}\n\t\t}\n\t} else if ( \"a\" === nodeName ) {\n\t\tfocusableIfVisible = element.href || hasTabindex;\n\t} else {\n\t\tfocusableIfVisible = hasTabindex;\n\t}\n\n\treturn focusableIfVisible && $( element ).is( \":visible\" ) && visible( $( element ) );\n};\n\n// Support: IE 8 only\n// IE 8 doesn't resolve inherit to visible/hidden for computed values\nfunction visible( element ) {\n\tvar visibility = element.css( \"visibility\" );\n\twhile ( visibility === \"inherit\" ) {\n\t\telement = element.parent();\n\t\tvisibility = element.css( \"visibility\" );\n\t}\n\treturn visibility === \"visible\";\n}\n\n$.extend( $.expr.pseudos, {\n\tfocusable: function( element ) {\n\t\treturn $.ui.focusable( element, $.attr( element, \"tabindex\" ) != null );\n\t}\n} );\n\nvar focusable = $.ui.focusable;\n\n\n\n// Support: IE8 Only\n// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop\n// with a string, so we need to find the proper form.\nvar form = $.fn._form = function() {\n\treturn typeof this[ 0 ].form === \"string\" ? this.closest( \"form\" ) : $( this[ 0 ].form );\n};\n\n\n/*!\n * jQuery UI Form Reset Mixin 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Form Reset Mixin\n//>>group: Core\n//>>description: Refresh input widgets when their form is reset\n//>>docs: https://api.jqueryui.com/form-reset-mixin/\n\n\nvar formResetMixin = $.ui.formResetMixin = {\n\t_formResetHandler: function() {\n\t\tvar form = $( this );\n\n\t\t// Wait for the form reset to actually happen before refreshing\n\t\tsetTimeout( function() {\n\t\t\tvar instances = form.data( \"ui-form-reset-instances\" );\n\t\t\t$.each( instances, function() {\n\t\t\t\tthis.refresh();\n\t\t\t} );\n\t\t} );\n\t},\n\n\t_bindFormResetHandler: function() {\n\t\tthis.form = this.element._form();\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" ) || [];\n\t\tif ( !instances.length ) {\n\n\t\t\t// We don't use _on() here because we use a single event handler per form\n\t\t\tthis.form.on( \"reset.ui-form-reset\", this._formResetHandler );\n\t\t}\n\t\tinstances.push( this );\n\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t},\n\n\t_unbindFormResetHandler: function() {\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" );\n\t\tinstances.splice( $.inArray( this, instances ), 1 );\n\t\tif ( instances.length ) {\n\t\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t\t} else {\n\t\t\tthis.form\n\t\t\t\t.removeData( \"ui-form-reset-instances\" )\n\t\t\t\t.off( \"reset.ui-form-reset\" );\n\t\t}\n\t}\n};\n\n\n/*!\n * jQuery UI Support for jQuery core 1.8.x and newer 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n */\n\n//>>label: jQuery 1.8+ Support\n//>>group: Core\n//>>description: Support version 1.8.x and newer of jQuery core\n\n\n// Support: jQuery 1.9.x or older\n// $.expr[ \":\" ] is deprecated.\nif ( !$.expr.pseudos ) {\n\t$.expr.pseudos = $.expr[ \":\" ];\n}\n\n// Support: jQuery 1.11.x or older\n// $.unique has been renamed to $.uniqueSort\nif ( !$.uniqueSort ) {\n\t$.uniqueSort = $.unique;\n}\n\n// Support: jQuery 2.2.x or older.\n// This method has been defined in jQuery 3.0.0.\n// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js\nif ( !$.escapeSelector ) {\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\tvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\n\tvar fcssescape = 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 ) + \"\\\\\" + ch.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$.escapeSelector = function( sel ) {\n\t\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n\t};\n}\n\n// Support: jQuery 3.4.x or older\n// These methods have been defined in jQuery 3.5.0.\nif ( !$.fn.even || !$.fn.odd ) {\n\t$.fn.extend( {\n\t\teven: function() {\n\t\t\treturn this.filter( function( i ) {\n\t\t\t\treturn i % 2 === 0;\n\t\t\t} );\n\t\t},\n\t\todd: function() {\n\t\t\treturn this.filter( function( i ) {\n\t\t\t\treturn i % 2 === 1;\n\t\t\t} );\n\t\t}\n\t} );\n}\n\n;\n/*!\n * jQuery UI Keycode 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: https://api.jqueryui.com/jQuery.ui.keyCode/\n\n\nvar keycode = $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n\n/*!\n * jQuery UI Labels 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: labels\n//>>group: Core\n//>>description: Find all the labels associated with a given input\n//>>docs: https://api.jqueryui.com/labels/\n\n\nvar labels = $.fn.labels = function() {\n\tvar ancestor, selector, id, labels, ancestors;\n\n\tif ( !this.length ) {\n\t\treturn this.pushStack( [] );\n\t}\n\n\t// Check control.labels first\n\tif ( this[ 0 ].labels && this[ 0 ].labels.length ) {\n\t\treturn this.pushStack( this[ 0 ].labels );\n\t}\n\n\t// Support: IE <= 11, FF <= 37, Android <= 2.3 only\n\t// Above browsers do not support control.labels. Everything below is to support them\n\t// as well as document fragments. control.labels does not work on document fragments\n\tlabels = this.eq( 0 ).parents( \"label\" );\n\n\t// Look for the label based on the id\n\tid = this.attr( \"id\" );\n\tif ( id ) {\n\n\t\t// We don't search against the document in case the element\n\t\t// is disconnected from the DOM\n\t\tancestor = this.eq( 0 ).parents().last();\n\n\t\t// Get a full set of top level ancestors\n\t\tancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );\n\n\t\t// Create a selector for the label based on the id\n\t\tselector = \"label[for='\" + $.escapeSelector( id ) + \"']\";\n\n\t\tlabels = labels.add( ancestors.find( selector ).addBack( selector ) );\n\n\t}\n\n\t// Return whatever we have found for labels\n\treturn this.pushStack( labels );\n};\n\n\n/*!\n * jQuery UI Scroll Parent 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: https://api.jqueryui.com/scrollParent/\n\n\nvar scrollParent = $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n\n/*!\n * jQuery UI Tabbable 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: :tabbable Selector\n//>>group: Core\n//>>description: Selects elements which can be tabbed to.\n//>>docs: https://api.jqueryui.com/tabbable-selector/\n\n\nvar tabbable = $.extend( $.expr.pseudos, {\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\thasTabindex = tabIndex != null;\n\t\treturn ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );\n\t}\n} );\n\n\n/*!\n * jQuery UI Unique ID 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: uniqueId\n//>>group: Core\n//>>description: Functions to generate and remove uniqueId's\n//>>docs: https://api.jqueryui.com/uniqueId/\n\n\nvar uniqueId = $.fn.extend( {\n\tuniqueId: ( function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each( function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n\n\n// This file is deprecated\nvar ie = $.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n\n/*!\n * jQuery UI Mouse 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Mouse\n//>>group: Widgets\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n//>>docs: https://api.jqueryui.com/mouse/\n\n\nvar mouseHandled = false;\n$( document ).on( \"mouseup\", function() {\n\tmouseHandled = false;\n} );\n\nvar widgetsMouse = $.widget( \"ui.mouse\", {\n\tversion: \"1.13.3\",\n\toptions: {\n\t\tcancel: \"input, textarea, button, select, option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\n\t\t\t\treturn that._mouseDown( event );\n\t\t\t} )\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.off( \".\" + this.widgetName );\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\t\t}\n\t},\n\n\t_mouseDown: function( event ) {\n\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// We may have missed mouseup (out of window)\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseUp( event );\n\t\t}\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = ( event.which === 1 ),\n\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = ( typeof this.options.cancel === \"string\" && event.target.nodeName ?\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length : false );\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif ( !this.mouseDelayMet ) {\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay );\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\n\t\t\tif ( !this._mouseStarted ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\n\t\t}\n\n\t\t// These delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function( event ) {\n\t\t\treturn that._mouseMove( event );\n\t\t};\n\t\tthis._mouseUpDelegate = function( event ) {\n\t\t\treturn that._mouseUp( event );\n\t\t};\n\n\t\tthis.document\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function( event ) {\n\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&\n\t\t\t\t\t!event.button ) {\n\t\t\t\treturn this._mouseUp( event );\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\n\t\t\t\t// Support: Safari <=8 - 9\n\t\t\t\t// Safari sets which to 0 if you press any of the following keys\n\t\t\t\t// during a drag (#14461)\n\t\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\n\t\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\n\t\t\t\t\tthis.ignoreMissingWhich = true;\n\t\t\t\t} else if ( !this.ignoreMissingWhich ) {\n\t\t\t\t\treturn this._mouseUp( event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseDrag( event );\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\n\t\t\tif ( this._mouseStarted ) {\n\t\t\t\tthis._mouseDrag( event );\n\t\t\t} else {\n\t\t\t\tthis._mouseUp( event );\n\t\t\t}\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis.document\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\n\t\t\t}\n\n\t\t\tthis._mouseStop( event );\n\t\t}\n\n\t\tif ( this._mouseDelayTimer ) {\n\t\t\tclearTimeout( this._mouseDelayTimer );\n\t\t\tdelete this._mouseDelayTimer;\n\t\t}\n\n\t\tthis.ignoreMissingWhich = false;\n\t\tmouseHandled = false;\n\t\tevent.preventDefault();\n\t},\n\n\t_mouseDistanceMet: function( event ) {\n\t\treturn ( Math.max(\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function( /* event */ ) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function( /* event */ ) {},\n\t_mouseDrag: function( /* event */ ) {},\n\t_mouseStop: function( /* event */ ) {},\n\t_mouseCapture: function( /* event */ ) {\n\t\treturn true;\n\t}\n} );\n\n\n\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\nvar plugin = $.ui.plugin = {\n\tadd: function( module, option, set ) {\n\t\tvar i,\n\t\t\tproto = $.ui[ module ].prototype;\n\t\tfor ( i in set ) {\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t}\n\t},\n\tcall: function( instance, name, args, allowDisconnected ) {\n\t\tvar i,\n\t\t\tset = instance.plugins[ name ];\n\n\t\tif ( !set ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||\n\t\t\t\tinstance.element[ 0 ].parentNode.nodeType === 11 ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nvar safeActiveElement = $.ui.safeActiveElement = function( document ) {\n\tvar activeElement;\n\n\t// Support: IE 9 only\n\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\ttry {\n\t\tactiveElement = document.activeElement;\n\t} catch ( error ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE may return null instead of an element\n\t// Interestingly, this only seems to occur when NOT in an iframe\n\tif ( !activeElement ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 11 only\n\t// IE11 returns a seemingly empty object in some cases when accessing\n\t// document.activeElement from an <iframe>\n\tif ( !activeElement.nodeName ) {\n\t\tactiveElement = document.body;\n\t}\n\n\treturn activeElement;\n};\n\n\n\nvar safeBlur = $.ui.safeBlur = function( element ) {\n\n\t// Support: IE9 - 10 only\n\t// If the <body> is blurred, IE will switch windows, see #9420\n\tif ( element && element.nodeName.toLowerCase() !== \"body\" ) {\n\t\t$( element ).trigger( \"blur\" );\n\t}\n};\n\n\n/*!\n * jQuery UI Draggable 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Draggable\n//>>group: Interactions\n//>>description: Enables dragging functionality for any element.\n//>>docs: https://api.jqueryui.com/draggable/\n//>>demos: https://jqueryui.com/draggable/\n//>>css.structure: ../../themes/base/draggable.css\n\n\n$.widget( \"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.13.3\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false,\n\n\t\t// Callbacks\n\t\tdrag: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\t_create: function() {\n\n\t\tif ( this.options.helper === \"original\" ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\t\tif ( this.options.addClasses ) {\n\t\t\tthis._addClass( \"ui-draggable\" );\n\t\t}\n\t\tthis._setHandleClassName();\n\n\t\tthis._mouseInit();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._removeHandleClassName();\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tif ( ( this.helper || this.element ).is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis.destroyOnClear = true;\n\t\t\treturn;\n\t\t}\n\t\tthis._removeHandleClassName();\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar o = this.options;\n\n\t\t// Among others, prevent a drag on a resizable-handle\n\t\tif ( this.helper || o.disabled ||\n\t\t\t\t$( event.target ).closest( \".ui-resizable-handle\" ).length > 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle( event );\n\t\tif ( !this.handle ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._blurActiveElement( event );\n\n\t\tthis._blockFrames( o.iframeFix === true ? \"iframe\" : o.iframeFix );\n\n\t\treturn true;\n\n\t},\n\n\t_blockFrames: function( selector ) {\n\t\tthis.iframeBlocks = this.document.find( selector ).map( function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css( \"position\", \"absolute\" )\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.outerWidth( iframe.outerWidth() )\n\t\t\t\t.outerHeight( iframe.outerHeight() )\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\n\t\t} );\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_blurActiveElement: function( event ) {\n\t\tvar activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),\n\t\t\ttarget = $( event.target );\n\n\t\t// Don't blur if the event occurred on an element that is within\n\t\t// the currently focused element\n\t\t// See #10527, #12472\n\t\tif ( target.closest( activeElement ).length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Blur any element that currently has focus, see #4261\n\t\t$.ui.safeBlur( activeElement );\n\t},\n\n\t_mouseStart: function( event ) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\tthis._addClass( this.helper, \"ui-draggable-dragging\" );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\t\tthis.scrollParent = this.helper.scrollParent( true );\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tthis.hasFixedAncestor = this.helper.parents().filter( function() {\n\t\t\t\treturn $( this ).css( \"position\" ) === \"fixed\";\n\t\t\t} ).length > 0;\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.positionAbs = this.element.offset();\n\t\tthis._refreshOffsets( event );\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition( event, false );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\tif ( o.cursorAt ) {\n\t\t\tthis._adjustOffsetFromHelper( o.cursorAt );\n\t\t}\n\n\t\t//Set a containment if given in the options\n\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif ( this._trigger( \"start\", event ) === false ) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\t// Execute the drag once - this causes the helper not to be visible before getting its\n\t\t// correct position\n\t\tthis._mouseDrag( event, true );\n\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has started\n\t\t// (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStart( this, event );\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_refreshOffsets: function( event ) {\n\t\tthis.offset = {\n\t\t\ttop: this.positionAbs.top - this.margins.top,\n\t\t\tleft: this.positionAbs.left - this.margins.left,\n\t\t\tscroll: false,\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset()\n\t\t};\n\n\t\tthis.offset.click = {\n\t\t\tleft: event.pageX - this.offset.left,\n\t\t\ttop: event.pageY - this.offset.top\n\t\t};\n\t},\n\n\t_mouseDrag: function( event, noPropagation ) {\n\n\t\t// reset any necessary cached properties (see #5009)\n\t\tif ( this.hasFixedAncestor ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event, true );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif ( !noPropagation ) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif ( this._trigger( \"drag\", event, ui ) === false ) {\n\t\t\t\tthis._mouseUp( new $.Event( \"mouseup\", event ) );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar that = this,\n\t\t\tdropped = false;\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\tdropped = $.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif ( this.dropped ) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\tif ( ( this.options.revert === \"invalid\" && !dropped ) ||\n\t\t\t\t( this.options.revert === \"valid\" && dropped ) ||\n\t\t\t\tthis.options.revert === true || ( typeof this.options.revert === \"function\" &&\n\t\t\t\tthis.options.revert.call( this.element, dropped ) )\n\t\t) {\n\t\t\t$( this.helper ).animate(\n\t\t\t\tthis.originalPosition,\n\t\t\t\tparseInt( this.options.revertDuration, 10 ),\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( that._trigger( \"stop\", event ) !== false ) {\n\t\t\t\t\t\tthat._clear();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tif ( this._trigger( \"stop\", event ) !== false ) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis._unblockFrames();\n\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has stopped\n\t\t// (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStop( this, event );\n\t\t}\n\n\t\t// Only need to focus if the event occurred on the draggable itself, see #10527\n\t\tif ( this.handleElement.is( event.target ) ) {\n\n\t\t\t// The interaction is over; whether or not the click resulted in a drag,\n\t\t\t// focus the element\n\t\t\tthis.element.trigger( \"focus\" );\n\t\t}\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call( this, event );\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.helper.is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: this.element[ 0 ] } ) );\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function( event ) {\n\t\treturn this.options.handle ?\n\t\t\t!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :\n\t\t\ttrue;\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis.handleElement = this.options.handle ?\n\t\t\tthis.element.find( this.options.handle ) : this.element;\n\t\tthis._addClass( this.handleElement, \"ui-draggable-handle\" );\n\t},\n\n\t_removeHandleClassName: function() {\n\t\tthis._removeClass( this.handleElement, \"ui-draggable-handle\" );\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelperIsFunction = typeof o.helper === \"function\",\n\t\t\thelper = helperIsFunction ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ?\n\t\t\t\t\tthis.element.clone().removeAttr( \"id\" ) :\n\t\t\t\t\tthis.element );\n\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\thelper.appendTo( ( o.appendTo === \"parent\" ?\n\t\t\t\tthis.element[ 0 ].parentNode :\n\t\t\t\to.appendTo ) );\n\t\t}\n\n\t\t// https://bugs.jqueryui.com/ticket/9446\n\t\t// a helper function can return the original element\n\t\t// which wouldn't have been set to relative in _create\n\t\tif ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\n\t\tif ( helper[ 0 ] !== this.element[ 0 ] &&\n\t\t\t\t!( /(fixed|absolute)/ ).test( helper.css( \"position\" ) ) ) {\n\t\t\thelper.css( \"position\", \"absolute\" );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_setPositionRelative: function() {\n\t\tif ( !( /^(?:r|a|f)/ ).test( this.element.css( \"position\" ) ) ) {\n\t\t\tthis.element[ 0 ].style.position = \"relative\";\n\t\t}\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( Array.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_isRootNode: function( element ) {\n\t\treturn ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tvar po = this.offsetParent.offset(),\n\t\t\tdocument = this.document[ 0 ];\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== document &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif ( this._isRootNode( this.offsetParent[ 0 ] ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\t\tif ( this.cssPosition !== \"relative\" ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\tvar p = this.element.position(),\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),\n\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )\n\t\t};\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.element.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.element.css( \"marginTop\" ), 10 ) || 0 ),\n\t\t\tright: ( parseInt( this.element.css( \"marginRight\" ), 10 ) || 0 ),\n\t\t\tbottom: ( parseInt( this.element.css( \"marginBottom\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar isUserScrollable, c, ce,\n\t\t\to = this.options,\n\t\t\tdocument = this.document[ 0 ];\n\n\t\tthis.relativeContainer = null;\n\n\t\tif ( !o.containment ) {\n\t\t\tthis.containment = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$( window ).scrollLeft() + $( window ).width() -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\t$( window ).scrollTop() +\n\t\t\t\t\t( $( window ).height() || document.body.parentNode.scrollHeight ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"document\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t$( document ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( $( document ).height() || document.body.parentNode.scrollHeight ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment.constructor === Array ) {\n\t\t\tthis.containment = o.containment;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\n\t\tc = $( o.containment );\n\t\tce = c[ 0 ];\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tisUserScrollable = /(scroll|auto)/.test( c.css( \"overflow\" ) );\n\n\t\tthis.containment = [\n\t\t\t( parseInt( c.css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( c.css( \"paddingLeft\" ), 10 ) || 0 ),\n\t\t\t( parseInt( c.css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( c.css( \"paddingTop\" ), 10 ) || 0 ),\n\t\t\t( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t( parseInt( c.css( \"borderRightWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.width -\n\t\t\t\tthis.margins.left -\n\t\t\t\tthis.margins.right,\n\t\t\t( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t( parseInt( c.css( \"borderBottomWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.height -\n\t\t\t\tthis.margins.top -\n\t\t\t\tthis.margins.bottom\n\t\t];\n\t\tthis.relativeContainer = c;\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.top :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.left :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event, constrainPosition ) {\n\n\t\tvar containment, co, top, left,\n\t\t\to = this.options,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY;\n\n\t\t// Cache the scroll\n\t\tif ( !scrollIsRootNode || !this.offset.scroll ) {\n\t\t\tthis.offset.scroll = {\n\t\t\t\ttop: this.scrollParent.scrollTop(),\n\t\t\t\tleft: this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\t// If we are not dragging yet, we won't check for options\n\t\tif ( constrainPosition ) {\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( this.relativeContainer ) {\n\t\t\t\t\tco = this.relativeContainer.offset();\n\t\t\t\t\tcontainment = [\n\t\t\t\t\t\tthis.containment[ 0 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 1 ] + co.top,\n\t\t\t\t\t\tthis.containment[ 2 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 3 ] + co.top\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tcontainment = this.containment;\n\t\t\t\t}\n\n\t\t\t\tif ( event.pageX - this.offset.click.left < containment[ 0 ] ) {\n\t\t\t\t\tpageX = containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < containment[ 1 ] ) {\n\t\t\t\t\tpageY = containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > containment[ 2 ] ) {\n\t\t\t\t\tpageX = containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > containment[ 3 ] ) {\n\t\t\t\t\tpageY = containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid\n\t\t\t\t// argument errors in IE (see ticket #6950)\n\t\t\t\ttop = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -\n\t\t\t\t\tthis.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;\n\t\t\t\tpageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||\n\t\t\t\t\ttop - this.offset.click.top > containment[ 3 ] ) ?\n\t\t\t\t\t\ttop :\n\t\t\t\t\t\t( ( top - this.offset.click.top >= containment[ 1 ] ) ?\n\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;\n\n\t\t\t\tleft = o.grid[ 0 ] ? this.originalPageX +\n\t\t\t\t\tMath.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :\n\t\t\t\t\tthis.originalPageX;\n\t\t\t\tpageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||\n\t\t\t\t\tleft - this.offset.click.left > containment[ 2 ] ) ?\n\t\t\t\t\t\tleft :\n\t\t\t\t\t\t( ( left - this.offset.click.left >= containment[ 0 ] ) ?\n\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"y\" ) {\n\t\t\t\tpageX = this.originalPageX;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"x\" ) {\n\t\t\t\tpageY = this.originalPageY;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.top :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.left :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis._removeClass( this.helper, \"ui-draggable-dragging\" );\n\t\tif ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {\n\t\t\tthis.helper.remove();\n\t\t}\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t\tif ( this.destroyOnClear ) {\n\t\t\tthis.destroy();\n\t\t}\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function( type, event, ui ) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call( this, type, [ event, ui, this ], true );\n\n\t\t// Absolute position and offset (see #6884 ) have to be recalculated after plugins\n\t\tif ( /^(drag|start|stop)/.test( type ) ) {\n\t\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\t\t\tui.offset = this.positionAbs;\n\t\t}\n\t\treturn $.Widget.prototype._trigger.call( this, type, event, ui );\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function() {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n} );\n\n$.ui.plugin.add( \"draggable\", \"connectToSortable\", {\n\tstart: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t} );\n\n\t\tdraggable.sortables = [];\n\t\t$( draggable.options.connectToSortable ).each( function() {\n\t\t\tvar sortable = $( this ).sortable( \"instance\" );\n\n\t\t\tif ( sortable && !sortable.options.disabled ) {\n\t\t\t\tdraggable.sortables.push( sortable );\n\n\t\t\t\t// RefreshPositions is called at drag start to refresh the containerCache\n\t\t\t\t// which is used in drag. This ensures it's initialized and synchronized\n\t\t\t\t// with any changes that might have happened on the page since initialization.\n\t\t\t\tsortable.refreshPositions();\n\t\t\t\tsortable._trigger( \"activate\", event, uiSortable );\n\t\t\t}\n\t\t} );\n\t},\n\tstop: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t} );\n\n\t\tdraggable.cancelHelperRemoval = false;\n\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar sortable = this;\n\n\t\t\tif ( sortable.isOver ) {\n\t\t\t\tsortable.isOver = 0;\n\n\t\t\t\t// Allow this sortable to handle removing the helper\n\t\t\t\tdraggable.cancelHelperRemoval = true;\n\t\t\t\tsortable.cancelHelperRemoval = false;\n\n\t\t\t\t// Use _storedCSS To restore properties in the sortable,\n\t\t\t\t// as this also handles revert (#9675) since the draggable\n\t\t\t\t// may have modified them in unexpected ways (#8809)\n\t\t\t\tsortable._storedCSS = {\n\t\t\t\t\tposition: sortable.placeholder.css( \"position\" ),\n\t\t\t\t\ttop: sortable.placeholder.css( \"top\" ),\n\t\t\t\t\tleft: sortable.placeholder.css( \"left\" )\n\t\t\t\t};\n\n\t\t\t\tsortable._mouseStop( event );\n\n\t\t\t\t// Once drag has ended, the sortable should return to using\n\t\t\t\t// its original helper, not the shared helper from draggable\n\t\t\t\tsortable.options.helper = sortable.options._helper;\n\t\t\t} else {\n\n\t\t\t\t// Prevent this Sortable from removing the helper.\n\t\t\t\t// However, don't set the draggable to remove the helper\n\t\t\t\t// either as another connected Sortable may yet handle the removal.\n\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\tsortable._trigger( \"deactivate\", event, uiSortable );\n\t\t\t}\n\t\t} );\n\t},\n\tdrag: function( event, ui, draggable ) {\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar innermostIntersecting = false,\n\t\t\t\tsortable = this;\n\n\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\tsortable.positionAbs = draggable.positionAbs;\n\t\t\tsortable.helperProportions = draggable.helperProportions;\n\t\t\tsortable.offset.click = draggable.offset.click;\n\n\t\t\tif ( sortable._intersectsWith( sortable.containerCache ) ) {\n\t\t\t\tinnermostIntersecting = true;\n\n\t\t\t\t$.each( draggable.sortables, function() {\n\n\t\t\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\t\t\tthis.positionAbs = draggable.positionAbs;\n\t\t\t\t\tthis.helperProportions = draggable.helperProportions;\n\t\t\t\t\tthis.offset.click = draggable.offset.click;\n\n\t\t\t\t\tif ( this !== sortable &&\n\t\t\t\t\t\t\tthis._intersectsWith( this.containerCache ) &&\n\t\t\t\t\t\t\t$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( innermostIntersecting ) {\n\n\t\t\t\t// If it intersects, we use a little isOver variable and set it once,\n\t\t\t\t// so that the move-in stuff gets fired only once.\n\t\t\t\tif ( !sortable.isOver ) {\n\t\t\t\t\tsortable.isOver = 1;\n\n\t\t\t\t\t// Store draggable's parent in case we need to reappend to it later.\n\t\t\t\t\tdraggable._parent = ui.helper.parent();\n\n\t\t\t\t\tsortable.currentItem = ui.helper\n\t\t\t\t\t\t.appendTo( sortable.element )\n\t\t\t\t\t\t.data( \"ui-sortable-item\", true );\n\n\t\t\t\t\t// Store helper option to later restore it\n\t\t\t\t\tsortable.options._helper = sortable.options.helper;\n\n\t\t\t\t\tsortable.options.helper = function() {\n\t\t\t\t\t\treturn ui.helper[ 0 ];\n\t\t\t\t\t};\n\n\t\t\t\t\t// Fire the start events of the sortable with our passed browser event,\n\t\t\t\t\t// and our own helper (so it doesn't create a new one)\n\t\t\t\t\tevent.target = sortable.currentItem[ 0 ];\n\t\t\t\t\tsortable._mouseCapture( event, true );\n\t\t\t\t\tsortable._mouseStart( event, true, true );\n\n\t\t\t\t\t// Because the browser event is way off the new appended portlet,\n\t\t\t\t\t// modify necessary variables to reflect the changes\n\t\t\t\t\tsortable.offset.click.top = draggable.offset.click.top;\n\t\t\t\t\tsortable.offset.click.left = draggable.offset.click.left;\n\t\t\t\t\tsortable.offset.parent.left -= draggable.offset.parent.left -\n\t\t\t\t\t\tsortable.offset.parent.left;\n\t\t\t\t\tsortable.offset.parent.top -= draggable.offset.parent.top -\n\t\t\t\t\t\tsortable.offset.parent.top;\n\n\t\t\t\t\tdraggable._trigger( \"toSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is in a valid drop zone,\n\t\t\t\t\t// used solely in the revert option to handle \"valid/invalid\".\n\t\t\t\t\tdraggable.dropped = sortable.element;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables in the case that\n\t\t\t\t\t// adding to one sortable changes the location of the other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Hack so receive/update callbacks work (mostly)\n\t\t\t\t\tdraggable.currentItem = draggable.element;\n\t\t\t\t\tsortable.fromOutside = draggable;\n\t\t\t\t}\n\n\t\t\t\tif ( sortable.currentItem ) {\n\t\t\t\t\tsortable._mouseDrag( event );\n\n\t\t\t\t\t// Copy the sortable's position because the draggable's can potentially reflect\n\t\t\t\t\t// a relative position, while sortable is always absolute, which the dragged\n\t\t\t\t\t// element has now become. (#8809)\n\t\t\t\t\tui.position = sortable.position;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t// we fake the drag stop of the sortable, but make sure it doesn't remove\n\t\t\t\t// the helper by using cancelHelperRemoval.\n\t\t\t\tif ( sortable.isOver ) {\n\n\t\t\t\t\tsortable.isOver = 0;\n\t\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\t\t// Calling sortable's mouseStop would trigger a revert,\n\t\t\t\t\t// so revert must be temporarily false until after mouseStop is called.\n\t\t\t\t\tsortable.options._revert = sortable.options.revert;\n\t\t\t\t\tsortable.options.revert = false;\n\n\t\t\t\t\tsortable._trigger( \"out\", event, sortable._uiHash( sortable ) );\n\t\t\t\t\tsortable._mouseStop( event, true );\n\n\t\t\t\t\t// Restore sortable behaviors that were modfied\n\t\t\t\t\t// when the draggable entered the sortable area (#9481)\n\t\t\t\t\tsortable.options.revert = sortable.options._revert;\n\t\t\t\t\tsortable.options.helper = sortable.options._helper;\n\n\t\t\t\t\tif ( sortable.placeholder ) {\n\t\t\t\t\t\tsortable.placeholder.remove();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Restore and recalculate the draggable's offset considering the sortable\n\t\t\t\t\t// may have modified them in unexpected ways. (#8809, #10669)\n\t\t\t\t\tui.helper.appendTo( draggable._parent );\n\t\t\t\t\tdraggable._refreshOffsets( event );\n\t\t\t\t\tui.position = draggable._generatePosition( event, true );\n\n\t\t\t\t\tdraggable._trigger( \"fromSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is no longer in a valid drop zone\n\t\t\t\t\tdraggable.dropped = false;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables just in case removing\n\t\t\t\t\t// from one sortable changes the location of other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"cursor\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( \"body\" ),\n\t\t\to = instance.options;\n\n\t\tif ( t.css( \"cursor\" ) ) {\n\t\t\to._cursor = t.css( \"cursor\" );\n\t\t}\n\t\tt.css( \"cursor\", o.cursor );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif ( o._cursor ) {\n\t\t\t$( \"body\" ).css( \"cursor\", o._cursor );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"opacity\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\t\tif ( t.css( \"opacity\" ) ) {\n\t\t\to._opacity = t.css( \"opacity\" );\n\t\t}\n\t\tt.css( \"opacity\", o.opacity );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif ( o._opacity ) {\n\t\t\t$( ui.helper ).css( \"opacity\", o._opacity );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"scroll\", {\n\tstart: function( event, ui, i ) {\n\t\tif ( !i.scrollParentNotHidden ) {\n\t\t\ti.scrollParentNotHidden = i.helper.scrollParent( false );\n\t\t}\n\n\t\tif ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&\n\t\t\t\ti.scrollParentNotHidden[ 0 ].tagName !== \"HTML\" ) {\n\t\t\ti.overflowOffset = i.scrollParentNotHidden.offset();\n\t\t}\n\t},\n\tdrag: function( event, ui, i  ) {\n\n\t\tvar o = i.options,\n\t\t\tscrolled = false,\n\t\t\tscrollParent = i.scrollParentNotHidden[ 0 ],\n\t\t\tdocument = i.document[ 0 ];\n\n\t\tif ( scrollParent !== document && scrollParent.tagName !== \"HTML\" ) {\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );\n\t\t\t\t} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\n\t\t\t\t\t\t$( document ).scrollLeft() - o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\n\t\t\t\t\t\t$( document ).scrollLeft() + o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( i, event );\n\t\t}\n\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"snap\", {\n\tstart: function( event, ui, i ) {\n\n\t\tvar o = i.options;\n\n\t\ti.snapElements = [];\n\n\t\t$( o.snap.constructor !== String ? ( o.snap.items || \":data(ui-draggable)\" ) : o.snap )\n\t\t\t.each( function() {\n\t\t\t\tvar $t = $( this ),\n\t\t\t\t\t$o = $t.offset();\n\t\t\t\tif ( this !== i.element[ 0 ] ) {\n\t\t\t\t\ti.snapElements.push( {\n\t\t\t\t\t\titem: this,\n\t\t\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t},\n\tdrag: function( event, ui, inst ) {\n\n\t\tvar ts, bs, ls, rs, l, r, t, b, i, first,\n\t\t\to = inst.options,\n\t\t\td = o.snapTolerance,\n\t\t\tx1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor ( i = inst.snapElements.length - 1; i >= 0; i-- ) {\n\n\t\t\tl = inst.snapElements[ i ].left - inst.margins.left;\n\t\t\tr = l + inst.snapElements[ i ].width;\n\t\t\tt = inst.snapElements[ i ].top - inst.margins.top;\n\t\t\tb = t + inst.snapElements[ i ].height;\n\n\t\t\tif ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||\n\t\t\t\t\t!$.contains( inst.snapElements[ i ].item.ownerDocument,\n\t\t\t\t\tinst.snapElements[ i ].item ) ) {\n\t\t\t\tif ( inst.snapElements[ i ].snapping ) {\n\t\t\t\t\tif ( inst.options.snap.release ) {\n\t\t\t\t\t\tinst.options.snap.release.call(\n\t\t\t\t\t\t\tinst.element,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tinst.snapElements[ i ].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( o.snapMode !== \"inner\" ) {\n\t\t\t\tts = Math.abs( t - y2 ) <= d;\n\t\t\t\tbs = Math.abs( b - y1 ) <= d;\n\t\t\t\tls = Math.abs( l - x2 ) <= d;\n\t\t\t\trs = Math.abs( r - x1 ) <= d;\n\t\t\t\tif ( ts ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: t - inst.helperProportions.height,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( bs ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: b,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( ls ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: l - inst.helperProportions.width\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: r\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirst = ( ts || bs || ls || rs );\n\n\t\t\tif ( o.snapMode !== \"outer\" ) {\n\t\t\t\tts = Math.abs( t - y1 ) <= d;\n\t\t\t\tbs = Math.abs( b - y2 ) <= d;\n\t\t\t\tls = Math.abs( l - x1 ) <= d;\n\t\t\t\trs = Math.abs( r - x2 ) <= d;\n\t\t\t\tif ( ts ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: t,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( bs ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: b - inst.helperProportions.height,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( ls ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: l\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: r - inst.helperProportions.width\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {\n\t\t\t\tif ( inst.options.snap.snap ) {\n\t\t\t\t\tinst.options.snap.snap.call(\n\t\t\t\t\t\tinst.element,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\t$.extend( inst._uiHash(), {\n\t\t\t\t\t\t\tsnapItem: inst.snapElements[ i ].item\n\t\t\t\t\t\t} ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\tinst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );\n\n\t\t}\n\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"stack\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar min,\n\t\t\to = instance.options,\n\t\t\tgroup = $.makeArray( $( o.stack ) ).sort( function( a, b ) {\n\t\t\t\treturn ( parseInt( $( a ).css( \"zIndex\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( b ).css( \"zIndex\" ), 10 ) || 0 );\n\t\t\t} );\n\n\t\tif ( !group.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tmin = parseInt( $( group[ 0 ] ).css( \"zIndex\" ), 10 ) || 0;\n\t\t$( group ).each( function( i ) {\n\t\t\t$( this ).css( \"zIndex\", min + i );\n\t\t} );\n\t\tthis.css( \"zIndex\", ( min + group.length ) );\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"zIndex\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\n\t\tif ( t.css( \"zIndex\" ) ) {\n\t\t\to._zIndex = t.css( \"zIndex\" );\n\t\t}\n\t\tt.css( \"zIndex\", o.zIndex );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\n\t\tif ( o._zIndex ) {\n\t\t\t$( ui.helper ).css( \"zIndex\", o._zIndex );\n\t\t}\n\t}\n} );\n\nvar widgetsDraggable = $.ui.draggable;\n\n\n/*!\n * jQuery UI Sortable 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Sortable\n//>>group: Interactions\n//>>description: Enables items in a list to be sorted using the mouse.\n//>>docs: https://api.jqueryui.com/sortable/\n//>>demos: https://jqueryui.com/sortable/\n//>>css.structure: ../../themes/base/sortable.css\n\n\nvar widgetsSortable = $.widget( \"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.13.3\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: \"> *\",\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000,\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeStop: null,\n\t\tchange: null,\n\t\tdeactivate: null,\n\t\tout: null,\n\t\tover: null,\n\t\treceive: null,\n\t\tremove: null,\n\t\tsort: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tupdate: null\n\t},\n\n\t_isOverAxis: function( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t},\n\n\t_isFloating: function( item ) {\n\t\treturn ( /left|right/ ).test( item.css( \"float\" ) ) ||\n\t\t\t( /inline|table-cell/ ).test( item.css( \"display\" ) );\n\t},\n\n\t_create: function() {\n\t\tthis.containerCache = {};\n\t\tthis._addClass( \"ui-sortable\" );\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\tthis._setHandleClassName();\n\n\t\t//We're ready to go\n\t\tthis.ready = true;\n\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_setHandleClassName: function() {\n\t\tvar that = this;\n\t\tthis._removeClass( this.element.find( \".ui-sortable-handle\" ), \"ui-sortable-handle\" );\n\t\t$.each( this.items, function() {\n\t\t\tthat._addClass(\n\t\t\t\tthis.instance.options.handle ?\n\t\t\t\t\tthis.item.find( this.instance.options.handle ) :\n\t\t\t\t\tthis.item,\n\t\t\t\t\"ui-sortable-handle\"\n\t\t\t);\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\tthis.items[ i ].item.removeData( this.widgetName + \"-item\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function( event, overrideHandle ) {\n\t\tvar currentItem = null,\n\t\t\tvalidHandle = false,\n\t\t\tthat = this;\n\n\t\tif ( this.reverting ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.options.disabled || this.options.type === \"static\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems( event );\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\t$( event.target ).parents().each( function() {\n\t\t\tif ( $.data( this, that.widgetName + \"-item\" ) === that ) {\n\t\t\t\tcurrentItem = $( this );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\t\tif ( $.data( event.target, that.widgetName + \"-item\" ) === that ) {\n\t\t\tcurrentItem = $( event.target );\n\t\t}\n\n\t\tif ( !currentItem ) {\n\t\t\treturn false;\n\t\t}\n\t\tif ( this.options.handle && !overrideHandle ) {\n\t\t\t$( this.options.handle, currentItem ).find( \"*\" ).addBack().each( function() {\n\t\t\t\tif ( this === event.target ) {\n\t\t\t\t\tvalidHandle = true;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( !validHandle ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function( event, overrideHandle, noActivation ) {\n\n\t\tvar i, body,\n\t\t\to = this.options;\n\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to\n\t\t// mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Prepare the dragged items parent\n\t\tthis.appendTo = $( o.appendTo !== \"parent\" ?\n\t\t\t\to.appendTo :\n\t\t\t\tthis.currentItem.parent() );\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend( this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\n\t\t\t// This is a relative to absolute position minus the actual position calculation -\n\t\t\t// only used for relative positioned helper\n\t\t\trelative: this._getRelativeOffset()\n\t\t} );\n\n\t\t// After we get the helper offset, but before we get the parent offset we can\n\t\t// change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css( \"position\", \"absolute\" );\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\tif ( o.cursorAt ) {\n\t\t\tthis._adjustOffsetFromHelper( o.cursorAt );\n\t\t}\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = {\n\t\t\tprev: this.currentItem.prev()[ 0 ],\n\t\t\tparent: this.currentItem.parent()[ 0 ]\n\t\t};\n\n\t\t// If the helper is not the original, hide the original so it's not playing any role during\n\t\t// the drag, won't cause anything bad this way\n\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.placeholder.scrollParent();\n\n\t\t$.extend( this.offset, {\n\t\t\tparent: this._getParentOffset()\n\t\t} );\n\n\t\t//Set a containment if given in the options\n\t\tif ( o.containment ) {\n\t\t\tthis._setContainment();\n\t\t}\n\n\t\tif ( o.cursor && o.cursor !== \"auto\" ) { // cursor option\n\t\t\tbody = this.document.find( \"body\" );\n\n\t\t\t// Support: IE\n\t\t\tthis.storedCursor = body.css( \"cursor\" );\n\t\t\tbody.css( \"cursor\", o.cursor );\n\n\t\t\tthis.storedStylesheet =\n\t\t\t\t$( \"<style>*{ cursor: \" + o.cursor + \" !important; }</style>\" ).appendTo( body );\n\t\t}\n\n\t\t// We need to make sure to grab the zIndex before setting the\n\t\t// opacity, because setting the opacity to anything lower than 1\n\t\t// causes the zIndex to change from \"auto\" to 0.\n\t\tif ( o.zIndex ) { // zIndex option\n\t\t\tif ( this.helper.css( \"zIndex\" ) ) {\n\t\t\t\tthis._storedZIndex = this.helper.css( \"zIndex\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"zIndex\", o.zIndex );\n\t\t}\n\n\t\tif ( o.opacity ) { // opacity option\n\t\t\tif ( this.helper.css( \"opacity\" ) ) {\n\t\t\t\tthis._storedOpacity = this.helper.css( \"opacity\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"opacity\", o.opacity );\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"start\", event, this._uiHash() );\n\n\t\t//Recache the helper size\n\t\tif ( !this._preserveHelperProportions ) {\n\t\t\tthis._cacheHelperProportions();\n\t\t}\n\n\t\t//Post \"activate\" events to possible containers\n\t\tif ( !noActivation ) {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\n\t\t\t}\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tthis._addClass( this.helper, \"ui-sortable-helper\" );\n\n\t\t//Move the helper, if needed\n\t\tif ( !this.helper.parent().is( this.appendTo ) ) {\n\t\t\tthis.helper.detach().appendTo( this.appendTo );\n\n\t\t\t//Update position\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Generate the original position\n\t\tthis.position = this.originalPosition = this._generatePosition( event );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\t\tthis.lastPositionAbs = this.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\tthis._mouseDrag( event );\n\n\t\treturn true;\n\n\t},\n\n\t_scroll: function( event ) {\n\t\tvar o = this.options,\n\t\t\tscrolled = false;\n\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\n\t\t\tif ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -\n\t\t\t\t\tevent.pageY < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;\n\t\t\t} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;\n\t\t\t}\n\n\t\t\tif ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -\n\t\t\t\t\tevent.pageX < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;\n\t\t\t} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );\n\t\t\t} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <\n\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );\n\t\t\t}\n\n\t\t\tif ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\tthis.document.scrollLeft() - o.scrollSpeed\n\t\t\t\t);\n\t\t\t} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <\n\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\tthis.document.scrollLeft() + o.scrollSpeed\n\t\t\t\t);\n\t\t\t}\n\n\t\t}\n\n\t\treturn scrolled;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar i, item, itemElement, intersection,\n\t\t\to = this.options;\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Set the helper position\n\t\tif ( !this.options.axis || this.options.axis !== \"y\" ) {\n\t\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( !this.options.axis || this.options.axis !== \"x\" ) {\n\t\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\t\t}\n\n\t\t//Do scrolling\n\t\tif ( o.scroll ) {\n\t\t\tif ( this._scroll( event ) !== false ) {\n\n\t\t\t\t//Update item positions used in position checks\n\t\t\t\tthis._refreshItemPositions( true );\n\n\t\t\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.dragDirection = {\n\t\t\tvertical: this._getDragVerticalDirection(),\n\t\t\thorizontal: this._getDragHorizontalDirection()\n\t\t};\n\n\t\t//Rearrange\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\titem = this.items[ i ];\n\t\t\titemElement = item.item[ 0 ];\n\t\t\tintersection = this._intersectsWithPointer( item );\n\t\t\tif ( !intersection ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items from other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\n\t\t\t// the placeholder to jitter between the outer and inner container.\n\t\t\tif ( item.instance !== this.currentContainer ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Cannot intersect with itself\n\t\t\t// no useless actions that have been done before\n\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\tif ( itemElement !== this.currentItem[ 0 ] &&\n\t\t\t\tthis.placeholder[ intersection === 1 ?\n\t\t\t\t\"next\" : \"prev\" ]()[ 0 ] !== itemElement &&\n\t\t\t\t!$.contains( this.placeholder[ 0 ], itemElement ) &&\n\t\t\t\t( this.options.type === \"semi-dynamic\" ?\n\t\t\t\t\t!$.contains( this.element[ 0 ], itemElement ) :\n\t\t\t\t\ttrue\n\t\t\t\t)\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\t\t\t\tthis._intersectsWithSides( item ) ) {\n\t\t\t\t\tthis._rearrange( event, item );\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers( event );\n\n\t\t//Interconnect with droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"sort\", event, this._uiHash() );\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function( event, noPropagation ) {\n\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\tif ( this.options.revert ) {\n\t\t\tvar that = this,\n\t\t\t\tcur = this.placeholder.offset(),\n\t\t\t\taxis = this.options.axis,\n\t\t\t\tanimation = {};\n\n\t\t\tif ( !axis || axis === \"x\" ) {\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollLeft\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tif ( !axis || axis === \"y\" ) {\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollTop\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tthis.reverting = true;\n\t\t\t$( this.helper ).animate(\n\t\t\t\tanimation,\n\t\t\t\tparseInt( this.options.revert, 10 ) || 500,\n\t\t\t\tfunction() {\n\t\t\t\t\tthat._clear( event );\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis._clear( event, noPropagation );\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.dragging ) {\n\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: null } ) );\n\n\t\t\tif ( this.options.helper === \"original\" ) {\n\t\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t\t} else {\n\t\t\t\tthis.currentItem.show();\n\t\t\t}\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor ( var i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"deactivate\", null, this._uiHash( this ) );\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", null, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.placeholder ) {\n\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t\t// it unbinds ALL events from the original node!\n\t\t\tif ( this.placeholder[ 0 ].parentNode ) {\n\t\t\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\t\t\t}\n\t\t\tif ( this.options.helper !== \"original\" && this.helper &&\n\t\t\t\t\tthis.helper[ 0 ].parentNode ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\n\t\t\t$.extend( this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t} );\n\n\t\t\tif ( this.domPosition.prev ) {\n\t\t\t\t$( this.domPosition.prev ).after( this.currentItem );\n\t\t\t} else {\n\t\t\t\t$( this.domPosition.parent ).prepend( this.currentItem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tstr = [];\n\t\to = o || {};\n\n\t\t$( items ).each( function() {\n\t\t\tvar res = ( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" )\n\t\t\t\t.match( o.expression || ( /(.+)[\\-=_](.+)/ ) );\n\t\t\tif ( res ) {\n\t\t\t\tstr.push(\n\t\t\t\t\t( o.key || res[ 1 ] + \"[]\" ) +\n\t\t\t\t\t\"=\" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );\n\t\t\t}\n\t\t} );\n\n\t\tif ( !str.length && o.key ) {\n\t\t\tstr.push( o.key + \"=\" );\n\t\t}\n\n\t\treturn str.join( \"&\" );\n\n\t},\n\n\ttoArray: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tret = [];\n\n\t\to = o || {};\n\n\t\titems.each( function() {\n\t\t\tret.push( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" );\n\t\t} );\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function( item ) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height,\n\t\t\tl = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height,\n\t\t\tdyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t &&\n\t\t\t\t( y1 + dyClick ) < b ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l &&\n\t\t\t\t( x1 + dxClick ) < r ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\tthis.options.forcePointerForContainers ||\n\t\t\t( this.options.tolerance !== \"pointer\" &&\n\t\t\t\tthis.helperProportions[ this.floating ? \"width\" : \"height\" ] >\n\t\t\t\titem[ this.floating ? \"width\" : \"height\" ] )\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( this.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( this.helperProportions.height / 2 ) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function( item ) {\n\t\tvar verticalDirection, horizontalDirection,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.top + this.offset.click.top, item.top, item.height ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.left + this.offset.click.left, item.left, item.width ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( !isOverElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tverticalDirection = this.dragDirection.vertical;\n\t\thorizontalDirection = this.dragDirection.horizontal;\n\n\t\treturn this.floating ?\n\t\t\t( ( horizontalDirection === \"right\" || verticalDirection === \"down\" ) ? 2 : 1 ) :\n\t\t\t( verticalDirection && ( verticalDirection === \"down\" ? 2 : 1 ) );\n\n\t},\n\n\t_intersectsWithSides: function( item ) {\n\n\t\tvar isOverBottomHalf = this._isOverAxis( this.positionAbs.top +\n\t\t\t\tthis.offset.click.top, item.top + ( item.height / 2 ), item.height ),\n\t\t\tisOverRightHalf = this._isOverAxis( this.positionAbs.left +\n\t\t\t\tthis.offset.click.left, item.left + ( item.width / 2 ), item.width ),\n\t\t\tverticalDirection = this.dragDirection.vertical,\n\t\t\thorizontalDirection = this.dragDirection.horizontal;\n\n\t\tif ( this.floating && horizontalDirection ) {\n\t\t\treturn ( ( horizontalDirection === \"right\" && isOverRightHalf ) ||\n\t\t\t\t( horizontalDirection === \"left\" && !isOverRightHalf ) );\n\t\t} else {\n\t\t\treturn verticalDirection && ( ( verticalDirection === \"down\" && isOverBottomHalf ) ||\n\t\t\t\t( verticalDirection === \"up\" && !isOverBottomHalf ) );\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta !== 0 && ( delta > 0 ? \"down\" : \"up\" );\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta !== 0 && ( delta > 0 ? \"right\" : \"left\" );\n\t},\n\n\trefresh: function( event ) {\n\t\tthis._refreshItems( event );\n\t\tthis._setHandleClassName();\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor === String ?\n\t\t\t[ options.connectWith ] :\n\t\t\toptions.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function( connected ) {\n\n\t\tvar i, j, cur, inst,\n\t\t\titems = [],\n\t\t\tqueries = [],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif ( connectWith && connected ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ typeof inst.options.items === \"function\" ?\n\t\t\t\t\t\t\tinst.options.items.call( inst.element ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-placeholder\" ), inst ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tqueries.push( [ typeof this.options.items === \"function\" ?\n\t\t\tthis.options.items\n\t\t\t\t.call( this.element, null, { options: this.options, item: this.currentItem } ) :\n\t\t\t$( this.options.items, this.element )\n\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t.not( \".ui-sortable-placeholder\" ), this ] );\n\n\t\tfunction addItems() {\n\t\t\titems.push( this );\n\t\t}\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\tqueries[ i ][ 0 ].each( addItems );\n\t\t}\n\n\t\treturn $( items );\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find( \":data(\" + this.widgetName + \"-item)\" );\n\n\t\tthis.items = $.grep( this.items, function( item ) {\n\t\t\tfor ( var j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === item.item[ 0 ] ) {\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},\n\n\t_refreshItems: function( event ) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [ this ];\n\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\n\t\t\titems = this.items,\n\t\t\tqueries = [ [ typeof this.options.items === \"function\" ?\n\t\t\t\tthis.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t$( this.options.items, this.element ), this ] ],\n\t\t\tconnectWith = this._connectWith();\n\n\t\t//Shouldn't be run the first time through due to massive slow-down\n\t\tif ( connectWith && this.ready ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ typeof inst.options.items === \"function\" ?\n\t\t\t\t\t\t\tinst.options.items\n\t\t\t\t\t\t\t\t.call( inst.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element ), inst ] );\n\t\t\t\t\t\tthis.containers.push( inst );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\ttargetData = queries[ i ][ 1 ];\n\t\t\t_queries = queries[ i ][ 0 ];\n\n\t\t\tfor ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {\n\t\t\t\titem = $( _queries[ j ] );\n\n\t\t\t\t// Data for target checking (mouse manager)\n\t\t\t\titem.data( this.widgetName + \"-item\", targetData );\n\n\t\t\t\titems.push( {\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t},\n\n\t_refreshItemPositions: function( fast ) {\n\t\tvar i, item, t, p;\n\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\titem = this.items[ i ];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif ( this.currentContainer && item.instance !== this.currentContainer &&\n\t\t\t\t\titem.item[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tt = this.options.toleranceElement ?\n\t\t\t\t$( this.options.toleranceElement, item.item ) :\n\t\t\t\titem.item;\n\n\t\t\tif ( !fast ) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tp = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t}\n\t},\n\n\trefreshPositions: function( fast ) {\n\n\t\t// Determine whether items are being displayed horizontally\n\t\tthis.floating = this.items.length ?\n\t\t\tthis.options.axis === \"x\" || this._isFloating( this.items[ 0 ].item ) :\n\t\t\tfalse;\n\n\t\t// This has to be redone because due to the item being moved out/into the offsetParent,\n\t\t// the offsetParent's position will change\n\t\tif ( this.offsetParent && this.helper ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tthis._refreshItemPositions( fast );\n\n\t\tvar i, p;\n\n\t\tif ( this.options.custom && this.options.custom.refreshContainers ) {\n\t\t\tthis.options.custom.refreshContainers.call( this );\n\t\t} else {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tp = this.containers[ i ].element.offset();\n\t\t\t\tthis.containers[ i ].containerCache.left = p.left;\n\t\t\t\tthis.containers[ i ].containerCache.top = p.top;\n\t\t\t\tthis.containers[ i ].containerCache.width =\n\t\t\t\t\tthis.containers[ i ].element.outerWidth();\n\t\t\t\tthis.containers[ i ].containerCache.height =\n\t\t\t\t\tthis.containers[ i ].element.outerHeight();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function( that ) {\n\t\tthat = that || this;\n\t\tvar className, nodeName,\n\t\t\to = that.options;\n\n\t\tif ( !o.placeholder || o.placeholder.constructor === String ) {\n\t\t\tclassName = o.placeholder;\n\t\t\tnodeName = that.currentItem[ 0 ].nodeName.toLowerCase();\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar element = $( \"<\" + nodeName + \">\", that.document[ 0 ] );\n\n\t\t\t\t\tthat._addClass( element, \"ui-sortable-placeholder\",\n\t\t\t\t\t\t\tclassName || that.currentItem[ 0 ].className )\n\t\t\t\t\t\t._removeClass( element, \"ui-sortable-helper\" );\n\n\t\t\t\t\tif ( nodeName === \"tbody\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder(\n\t\t\t\t\t\t\tthat.currentItem.find( \"tr\" ).eq( 0 ),\n\t\t\t\t\t\t\t$( \"<tr>\", that.document[ 0 ] ).appendTo( element )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( nodeName === \"tr\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder( that.currentItem, element );\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !className ) {\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element;\n\t\t\t\t},\n\t\t\t\tupdate: function( container, p ) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes -\n\t\t\t\t\t// the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a\n\t\t\t\t\t// class name is specified\n\t\t\t\t\tif ( className && !o.forcePlaceholderSize ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the element doesn't have a actual height or width by itself (without\n\t\t\t\t\t// styles coming from a stylesheet), it receives the inline height and width\n\t\t\t\t\t// from the dragged item. Or, if it's a tbody or tr, it's going to have a height\n\t\t\t\t\t// anyway since we're populating them with <td>s above, but they're unlikely to\n\t\t\t\t\t// be the correct height on their own if the row heights are dynamic, so we'll\n\t\t\t\t\t// always assign the height of the dragged item given forcePlaceholderSize\n\t\t\t\t\t// is true.\n\t\t\t\t\tif ( !p.height() || ( o.forcePlaceholderSize &&\n\t\t\t\t\t\t\t( nodeName === \"tbody\" || nodeName === \"tr\" ) ) ) {\n\t\t\t\t\t\tp.height(\n\t\t\t\t\t\t\tthat.currentItem.innerHeight() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingTop\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingBottom\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t\tif ( !p.width() ) {\n\t\t\t\t\t\tp.width(\n\t\t\t\t\t\t\tthat.currentItem.innerWidth() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingLeft\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingRight\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after( that.placeholder );\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update( that, that.placeholder );\n\n\t},\n\n\t_createTrPlaceholder: function( sourceTr, targetTr ) {\n\t\tvar that = this;\n\n\t\tsourceTr.children().each( function() {\n\t\t\t$( \"<td>&#160;</td>\", that.document[ 0 ] )\n\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\n\t\t\t\t.appendTo( targetTr );\n\t\t} );\n\t},\n\n\t_contactContainers: function( event ) {\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,\n\t\t\tfloating, axis,\n\t\t\tinnermostContainer = null,\n\t\t\tinnermostIndex = null;\n\n\t\t// Get innermost container that intersects with item\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\n\t\t\t// Never consider a container that's located within the item itself\n\t\t\tif ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( this._intersectsWith( this.containers[ i ].containerCache ) ) {\n\n\t\t\t\t// If we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif ( innermostContainer &&\n\t\t\t\t\t\t$.contains(\n\t\t\t\t\t\t\tthis.containers[ i ].element[ 0 ],\n\t\t\t\t\t\t\tinnermostContainer.element[ 0 ] ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tinnermostContainer = this.containers[ i ];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", event, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// If no intersecting containers found, return\n\t\tif ( !innermostContainer ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Move the item into the container if it's not there already\n\t\tif ( this.containers.length === 1 ) {\n\t\t\tif ( !this.containers[ innermostIndex ].containerCache.over ) {\n\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\t// When entering a new container, we will find the item with the least distance and\n\t\t\t// append our item near it\n\t\t\tdist = 10000;\n\t\t\titemWithLeastDistance = null;\n\t\t\tfloating = innermostContainer.floating || this._isFloating( this.currentItem );\n\t\t\tposProperty = floating ? \"left\" : \"top\";\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\n\t\t\taxis = floating ? \"pageX\" : \"pageY\";\n\n\t\t\tfor ( j = this.items.length - 1; j >= 0; j-- ) {\n\t\t\t\tif ( !$.contains(\n\t\t\t\t\t\tthis.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcur = this.items[ j ].item.offset()[ posProperty ];\n\t\t\t\tnearBottom = false;\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t}\n\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\" : \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Check if dropOnEmpty is enabled\n\t\t\tif ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.currentContainer === this.containers[ innermostIndex ] ) {\n\t\t\t\tif ( !this.currentContainer.containerCache.over ) {\n\t\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash() );\n\t\t\t\t\tthis.currentContainer.containerCache.over = 1;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( itemWithLeastDistance ) {\n\t\t\t\tthis._rearrange( event, itemWithLeastDistance, null, true );\n\t\t\t} else {\n\t\t\t\tthis._rearrange( event, null, this.containers[ innermostIndex ].element, true );\n\t\t\t}\n\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"change\", event, this._uiHash( this ) );\n\t\t\tthis.currentContainer = this.containers[ innermostIndex ];\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update( this.currentContainer, this.placeholder );\n\n\t\t\t//Update scrollParent\n\t\t\tthis.scrollParent = this.placeholder.scrollParent();\n\n\t\t\t//Update overflowOffset\n\t\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t\t}\n\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t}\n\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelper = typeof o.helper === \"function\" ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem );\n\n\t\t//Add the helper to the DOM if that didn't happen already\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\tthis.appendTo[ 0 ].appendChild( helper[ 0 ] );\n\t\t}\n\n\t\tif ( helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tthis._storedCSS = {\n\t\t\t\twidth: this.currentItem[ 0 ].style.width,\n\t\t\t\theight: this.currentItem[ 0 ].style.height,\n\t\t\t\tposition: this.currentItem.css( \"position\" ),\n\t\t\t\ttop: this.currentItem.css( \"top\" ),\n\t\t\t\tleft: this.currentItem.css( \"left\" )\n\t\t\t};\n\t\t}\n\n\t\tif ( !helper[ 0 ].style.width || o.forceHelperSize ) {\n\t\t\thelper.width( this.currentItem.width() );\n\t\t}\n\t\tif ( !helper[ 0 ].style.height || o.forceHelperSize ) {\n\t\t\thelper.height( this.currentItem.height() );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( Array.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes this\n\t\t// information with an ugly IE fix\n\t\tif ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||\n\t\t\t\t( this.offsetParent[ 0 ].tagName &&\n\t\t\t\tthis.offsetParent[ 0 ].tagName.toLowerCase() === \"html\" && $.ui.ie ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif ( this.cssPosition === \"relative\" ) {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.currentItem.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.currentItem.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar ce, co, over,\n\t\t\to = this.options;\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\t\tif ( o.containment === \"document\" || o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\to.containment === \"document\" ?\n\t\t\t\t\tthis.document.width() :\n\t\t\t\t\tthis.window.width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( o.containment === \"document\" ?\n\t\t\t\t\t( this.document.height() || document.body.parentNode.scrollHeight ) :\n\t\t\t\t\tthis.window.height() || this.document[ 0 ].body.parentNode.scrollHeight\n\t\t\t\t) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {\n\t\t\tce = $( o.containment )[ 0 ];\n\t\t\tco = $( o.containment ).offset();\n\t\t\tover = ( $( ce ).css( \"overflow\" ) !== \"hidden\" );\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + ( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingLeft\" ), 10 ) || 0 ) - this.margins.left,\n\t\t\t\tco.top + ( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingTop\" ), 10 ) || 0 ) - this.margins.top,\n\t\t\t\tco.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\tco.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :\n\t\t\t\t\tscroll.scrollLeft() ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event ) {\n\n\t\tvar top, left,\n\t\t\to = this.options,\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif ( this.cssPosition === \"relative\" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif ( this.originalPosition ) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {\n\t\t\t\t\tpageX = this.containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {\n\t\t\t\t\tpageY = this.containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {\n\t\t\t\t\tpageX = this.containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {\n\t\t\t\t\tpageY = this.containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\t\t\t\ttop = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /\n\t\t\t\t\to.grid[ 1 ] ) * o.grid[ 1 ];\n\t\t\t\tpageY = this.containment ?\n\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] &&\n\t\t\t\t\t\ttop - this.offset.click.top <= this.containment[ 3 ] ) ?\n\t\t\t\t\t\t\ttop :\n\t\t\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?\n\t\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :\n\t\t\t\t\t\t\t\ttop;\n\n\t\t\t\tleft = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /\n\t\t\t\t\to.grid[ 0 ] ) * o.grid[ 0 ];\n\t\t\t\tpageX = this.containment ?\n\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] &&\n\t\t\t\t\t\tleft - this.offset.click.left <= this.containment[ 2 ] ) ?\n\t\t\t\t\t\t\tleft :\n\t\t\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?\n\t\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :\n\t\t\t\t\t\t\t\tleft;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() :\n\t\t\t\t\tscrollIsRootNode ? 0 : scroll.scrollLeft() ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function( event, i, a, hardRefresh ) {\n\n\t\tif ( a ) {\n\t\t\ta[ 0 ].appendChild( this.placeholder[ 0 ] );\n\t\t} else {\n\t\t\ti.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],\n\t\t\t\t( this.direction === \"down\" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );\n\t\t}\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout,\n\t\t// if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay( function() {\n\t\t\tif ( counter === this.counter ) {\n\n\t\t\t\t//Precompute after each DOM insertion, NOT on mousemove\n\t\t\t\tthis.refreshPositions( !hardRefresh );\n\t\t\t}\n\t\t} );\n\n\t},\n\n\t_clear: function( event, noPropagation ) {\n\n\t\tthis.reverting = false;\n\n\t\t// We delay all events that have to be triggered to after the point where the placeholder\n\t\t// has been removed and everything else normalized again\n\t\tvar i,\n\t\t\tdelayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets\n\t\t// reappended (see #4088)\n\t\tif ( !this._noFinalSort && this.currentItem.parent().length ) {\n\t\t\tthis.placeholder.before( this.currentItem );\n\t\t}\n\t\tthis._noFinalSort = null;\n\n\t\tif ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tfor ( i in this._storedCSS ) {\n\t\t\t\tif ( this._storedCSS[ i ] === \"auto\" || this._storedCSS[ i ] === \"static\" ) {\n\t\t\t\t\tthis._storedCSS[ i ] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif ( this.fromOutside && !noPropagation ) {\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"receive\", event, this._uiHash( this.fromOutside ) );\n\t\t\t} );\n\t\t}\n\t\tif ( ( this.fromOutside ||\n\t\t\t\tthis.domPosition.prev !==\n\t\t\t\tthis.currentItem.prev().not( \".ui-sortable-helper\" )[ 0 ] ||\n\t\t\t\tthis.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {\n\n\t\t\t// Trigger update callback if the DOM position has changed\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"update\", event, this._uiHash() );\n\t\t\t} );\n\t\t}\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif ( this !== this.currentContainer ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\t\tthis._trigger( \"remove\", event, this._uiHash() );\n\t\t\t\t} );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"receive\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"update\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tfunction delayEvent( type, instance, container ) {\n\t\t\treturn function( event ) {\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\n\t\t\t};\n\t\t}\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\n\t\t\t}\n\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\n\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif ( this.storedCursor ) {\n\t\t\tthis.document.find( \"body\" ).css( \"cursor\", this.storedCursor );\n\t\t\tthis.storedStylesheet.remove();\n\t\t}\n\t\tif ( this._storedOpacity ) {\n\t\t\tthis.helper.css( \"opacity\", this._storedOpacity );\n\t\t}\n\t\tif ( this._storedZIndex ) {\n\t\t\tthis.helper.css( \"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex );\n\t\t}\n\n\t\tthis.dragging = false;\n\n\t\tif ( !noPropagation ) {\n\t\t\tthis._trigger( \"beforeStop\", event, this._uiHash() );\n\t\t}\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t// it unbinds ALL events from the original node!\n\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\n\t\tif ( !this.cancelHelperRemoval ) {\n\t\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\t\t\tthis.helper = null;\n\t\t}\n\n\t\tif ( !noPropagation ) {\n\t\t\tfor ( i = 0; i < delayedTriggers.length; i++ ) {\n\n\t\t\t\t// Trigger all delayed events\n\t\t\t\tdelayedTriggers[ i ].call( this, event );\n\t\t\t}\n\t\t\tthis._trigger( \"stop\", event, this._uiHash() );\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn !this.cancelHelperRemoval;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function( _inst ) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $( [] ),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n} );\n\n\n\n// Create a local jQuery because jQuery Color relies on it and the\n// global may not exist with AMD and a custom build (#10199).\n// This module is a noop if used as a regular AMD module.\n// eslint-disable-next-line no-unused-vars\nvar jQuery = $;\n\n\n/*!\n * jQuery Color Animations v2.2.0\n * https://github.com/jquery/jquery-color\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * Date: Sun May 10 09:02:36 2020 +0200\n */\n\n\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor \" +\n\t\t\"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n\n\tclass2type = {},\n\ttoString = class2type.toString,\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [ {\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 ),\n\t\t\t\t\texecResult[ 4 ] ?\n\t\t\t\t\t\t( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) :\n\t\t\t\t\t\t1\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 ),\n\t\t\t\t\texecResult[ 4 ] ?\n\t\t\t\t\t\t( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 )\n\t\t\t\t\t\t\t.toFixed( 2 ) :\n\t\t\t\t\t\t1\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t} ],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\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 getType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\treturn typeof obj === \"object\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn ( allowEmpty || !prop.def ) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn ( value + type.mod ) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn Math.min( type.max, Math.max( 0, value ) );\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( _i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t} );\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = getType( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( _key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t} );\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( _spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\teach( spaces, function( _spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t} );\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tif ( inst[ cache ][ 3 ] == null ) {\n\t\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\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 this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif ( isCache ) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn same;\n\t\t} );\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t} );\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( _key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t} );\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t} ) );\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\tif ( v != null ) {\n\t\t\t\t\treturn v;\n\t\t\t\t}\n\t\t\t\treturn i > 2 ? 1 : 0;\n\t\t\t} );\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t} );\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t} ).join( \"\" );\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n} );\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + ( q - p ) * h * 6;\n\t}\n\tif ( h * 2 < 1 ) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\t// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n\tif ( diff === 0 ) {\n\t\ts = 0;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = getType( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t} );\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar local, cur, match, fn,\n\t\t\t\tvtype = getType( value );\n\n\t\t\tif ( key === \"alpha\" ) {\n\t\t\t\tfn = this._hsla ? \"hsla\" : \"rgba\";\n\t\t\t} else {\n\t\t\t\tfn = spaceName;\n\t\t\t}\n\t\t\tlocal = this[ fn ]();\n\t\t\tcur = local[ prop.idx ];\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = getType( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t} );\n} );\n\n// add cssHook and .fx.step function for each named hook.\n// accept a space separated string of properties\ncolor.hook = function( hook ) {\n\tvar hooks = hook.split( \" \" );\n\teach( hooks, function( _i, hook ) {\n\t\tjQuery.cssHooks[ hook ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar parsed, curElem,\n\t\t\t\t\tbackgroundColor = \"\";\n\n\t\t\t\tif ( value !== \"transparent\" && ( getType( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) ) {\n\t\t\t\t\tvalue = color( parsed || value );\n\t\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t( backgroundColor === \"\" || backgroundColor === \"transparent\" ) &&\n\t\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\t\"_default\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.toRgbaString();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\telem.style[ hook ] = value;\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\t\tif ( !fx.colorInit ) {\n\t\t\t\tfx.start = color( fx.elem, hook );\n\t\t\t\tfx.end = color( fx.end );\n\t\t\t\tfx.colorInit = true;\n\t\t\t}\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t\t};\n\t} );\n\n};\n\ncolor.hook( stepHooks );\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( _i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t} );\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n\n/*!\n * jQuery UI Effects 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Effects Core\n//>>group: Effects\n/* eslint-disable max-len */\n//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\n/* eslint-enable max-len */\n//>>docs: https://api.jqueryui.com/category/effects-core/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar dataSpace = \"ui-effects-\",\n\tdataSpaceStyle = \"ui-effects-style\",\n\tdataSpaceAnimated = \"ui-effects-animated\";\n\n$.effects = {\n\teffect: {}\n};\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n( function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each(\n\t[ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ],\n\tfunction( _, prop ) {\n\t\t$.fx.step[ prop ] = function( fx ) {\n\t\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\t\tfx.setAttr = true;\n\t\t\t}\n\t\t};\n\t}\n);\n\nfunction camelCase( string ) {\n\treturn string.replace( /-([\\da-z])/gi, function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t} );\n}\n\nfunction getElementStyles( elem ) {\n\tvar key, len,\n\t\tstyle = elem.ownerDocument.defaultView ?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem, null ) :\n\t\t\telem.currentStyle,\n\t\tstyles = {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\n\t// Support: Opera, IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// Support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = 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\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// Map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t} );\n\n\t\t// Apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function( i, action ) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// Map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t} );\n\n\t\t// Apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// Map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = $.extend( {}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t} );\n\n\t\t// Once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done( function() {\n\n\t\t\t// Set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// For each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function( key ) {\n\t\t\t\t\tel.css( key, \"\" );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\t// This is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t} );\n\t} );\n};\n\n$.fn.extend( {\n\taddClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn speed ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.addClass ),\n\n\tremoveClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn arguments.length > 1 ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.removeClass ),\n\n\ttoggleClass: ( function( orig ) {\n\t\treturn function( classNames, force, speed, easing, callback ) {\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\t\tif ( !speed ) {\n\n\t\t\t\t\t// Without speed parameter\n\t\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t\t( force ? { add: classNames } : { remove: classNames } ),\n\t\t\t\t\t\tspeed, easing, callback );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggleClass ),\n\n\tswitchClass: function( remove, add, speed, easing, callback ) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n} );\n\n} )();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n( function() {\n\nif ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {\n\t$.expr.pseudos.animated = ( function( orig ) {\n\t\treturn function( elem ) {\n\t\t\treturn !!$( elem ).data( dataSpaceAnimated ) || orig( elem );\n\t\t};\n\t} )( $.expr.pseudos.animated );\n}\n\nif ( $.uiBackCompat !== false ) {\n\t$.extend( $.effects, {\n\n\t\t// Saves a set of properties in a data storage\n\t\tsave: function( element, set ) {\n\t\t\tvar i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Restores a set of previously saved properties from a data storage\n\t\trestore: function( element, set ) {\n\t\t\tvar val, i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t\telement.css( set[ i ], val );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsetMode: function( el, mode ) {\n\t\t\tif ( mode === \"toggle\" ) {\n\t\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t\t}\n\t\t\treturn mode;\n\t\t},\n\n\t\t// Wraps the element around a wrapper that copies position properties\n\t\tcreateWrapper: function( element ) {\n\n\t\t\t// If the element is already wrapped, return it\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\treturn element.parent();\n\t\t\t}\n\n\t\t\t// Wrap the element\n\t\t\tvar props = {\n\t\t\t\t\twidth: element.outerWidth( true ),\n\t\t\t\t\theight: element.outerHeight( true ),\n\t\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t\t},\n\t\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0\n\t\t\t\t\t} ),\n\n\t\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\t\tsize = {\n\t\t\t\t\twidth: element.width(),\n\t\t\t\t\theight: element.height()\n\t\t\t\t},\n\t\t\t\tactive = document.activeElement;\n\n\t\t\t// Support: Firefox\n\t\t\t// Firefox incorrectly exposes anonymous content\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tactive.id;\n\t\t\t} catch ( e ) {\n\t\t\t\tactive = document.body;\n\t\t\t}\n\n\t\t\telement.wrap( wrapper );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t// Hotfix for jQuery 1.4 since some change in wrap() seems to actually\n\t\t\t// lose the reference to the wrapped element\n\t\t\twrapper = element.parent();\n\n\t\t\t// Transfer positioning properties to the wrapper\n\t\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\t\twrapper.css( { position: \"relative\" } );\n\t\t\t\telement.css( { position: \"relative\" } );\n\t\t\t} else {\n\t\t\t\t$.extend( props, {\n\t\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t\t} );\n\t\t\t\t$.each( [ \"top\", \"left\", \"bottom\", \"right\" ], function( i, pos ) {\n\t\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\telement.css( {\n\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: \"auto\",\n\t\t\t\t\tbottom: \"auto\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\telement.css( size );\n\n\t\t\treturn wrapper.css( props ).show();\n\t\t},\n\n\t\tremoveWrapper: function( element ) {\n\t\t\tvar active = document.activeElement;\n\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\telement.parent().replaceWith( element );\n\n\t\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn element;\n\t\t}\n\t} );\n}\n\n$.extend( $.effects, {\n\tversion: \"1.13.3\",\n\n\tdefine: function( name, mode, effect ) {\n\t\tif ( !effect ) {\n\t\t\teffect = mode;\n\t\t\tmode = \"effect\";\n\t\t}\n\n\t\t$.effects.effect[ name ] = effect;\n\t\t$.effects.effect[ name ].mode = mode;\n\n\t\treturn effect;\n\t},\n\n\tscaledDimensions: function( element, percent, direction ) {\n\t\tif ( percent === 0 ) {\n\t\t\treturn {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\touterHeight: 0,\n\t\t\t\touterWidth: 0\n\t\t\t};\n\t\t}\n\n\t\tvar x = direction !== \"horizontal\" ? ( ( percent || 100 ) / 100 ) : 1,\n\t\t\ty = direction !== \"vertical\" ? ( ( percent || 100 ) / 100 ) : 1;\n\n\t\treturn {\n\t\t\theight: element.height() * y,\n\t\t\twidth: element.width() * x,\n\t\t\touterHeight: element.outerHeight() * y,\n\t\t\touterWidth: element.outerWidth() * x\n\t\t};\n\n\t},\n\n\tclipToBox: function( animation ) {\n\t\treturn {\n\t\t\twidth: animation.clip.right - animation.clip.left,\n\t\t\theight: animation.clip.bottom - animation.clip.top,\n\t\t\tleft: animation.clip.left,\n\t\t\ttop: animation.clip.top\n\t\t};\n\t},\n\n\t// Injects recently queued functions to be first in line (after \"inprogress\")\n\tunshift: function( element, queueLength, count ) {\n\t\tvar queue = element.queue();\n\n\t\tif ( queueLength > 1 ) {\n\t\t\tqueue.splice.apply( queue,\n\t\t\t\t[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );\n\t\t}\n\t\telement.dequeue();\n\t},\n\n\tsaveStyle: function( element ) {\n\t\telement.data( dataSpaceStyle, element[ 0 ].style.cssText );\n\t},\n\n\trestoreStyle: function( element ) {\n\t\telement[ 0 ].style.cssText = element.data( dataSpaceStyle ) || \"\";\n\t\telement.removeData( dataSpaceStyle );\n\t},\n\n\tmode: function( element, mode ) {\n\t\tvar hidden = element.is( \":hidden\" );\n\n\t\tif ( mode === \"toggle\" ) {\n\t\t\tmode = hidden ? \"show\" : \"hide\";\n\t\t}\n\t\tif ( hidden ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\tmode = \"none\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\n\t\tswitch ( origin[ 0 ] ) {\n\t\tcase \"top\":\n\t\t\ty = 0;\n\t\t\tbreak;\n\t\tcase \"middle\":\n\t\t\ty = 0.5;\n\t\t\tbreak;\n\t\tcase \"bottom\":\n\t\t\ty = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ty = origin[ 0 ] / original.height;\n\t\t}\n\n\t\tswitch ( origin[ 1 ] ) {\n\t\tcase \"left\":\n\t\t\tx = 0;\n\t\t\tbreak;\n\t\tcase \"center\":\n\t\t\tx = 0.5;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tx = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tx = origin[ 1 ] / original.width;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Creates a placeholder element so that the original element can be made absolute\n\tcreatePlaceholder: function( element ) {\n\t\tvar placeholder,\n\t\t\tcssPosition = element.css( \"position\" ),\n\t\t\tposition = element.position();\n\n\t\t// Lock in margins first to account for form elements, which\n\t\t// will change margin if you explicitly set height\n\t\t// see: https://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380\n\t\t// Support: Safari\n\t\telement.css( {\n\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\tmarginRight: element.css( \"marginRight\" )\n\t\t} )\n\t\t.outerWidth( element.outerWidth() )\n\t\t.outerHeight( element.outerHeight() );\n\n\t\tif ( /^(static|relative)/.test( cssPosition ) ) {\n\t\t\tcssPosition = \"absolute\";\n\n\t\t\tplaceholder = $( \"<\" + element[ 0 ].nodeName + \">\" ).insertAfter( element ).css( {\n\n\t\t\t\t// Convert inline to inline block to account for inline elements\n\t\t\t\t// that turn to inline block based on content (like img)\n\t\t\t\tdisplay: /^(inline|ruby)/.test( element.css( \"display\" ) ) ?\n\t\t\t\t\t\"inline-block\" :\n\t\t\t\t\t\"block\",\n\t\t\t\tvisibility: \"hidden\",\n\n\t\t\t\t// Margins need to be set to account for margin collapse\n\t\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\t\tmarginRight: element.css( \"marginRight\" ),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t} )\n\t\t\t.outerWidth( element.outerWidth() )\n\t\t\t.outerHeight( element.outerHeight() )\n\t\t\t.addClass( \"ui-effects-placeholder\" );\n\n\t\t\telement.data( dataSpace + \"placeholder\", placeholder );\n\t\t}\n\n\t\telement.css( {\n\t\t\tposition: cssPosition,\n\t\t\tleft: position.left,\n\t\t\ttop: position.top\n\t\t} );\n\n\t\treturn placeholder;\n\t},\n\n\tremovePlaceholder: function( element ) {\n\t\tvar dataKey = dataSpace + \"placeholder\",\n\t\t\t\tplaceholder = element.data( dataKey );\n\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.remove();\n\t\t\telement.removeData( dataKey );\n\t\t}\n\t},\n\n\t// Removes a placeholder if it exists and restores\n\t// properties that were modified during placeholder creation\n\tcleanUp: function( element ) {\n\t\t$.effects.restoreStyle( element );\n\t\t$.effects.removePlaceholder( element );\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t} );\n\t\treturn value;\n\t}\n} );\n\n// Return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// Allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// Convert to an object\n\teffect = { effect: effect };\n\n\t// Catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, callback)\n\tif ( typeof options === \"function\" ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, options, callback)\n\tif ( typeof speed === \"function\" ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// Add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\n\t// Valid standard speeds (nothing, number, named speed)\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( typeof option === \"function\" ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option === \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn't match any standard API\n\treturn false;\n}\n\n$.fn.extend( {\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\t\t\tdefaultMode = effectMethod.mode,\n\t\t\tqueue = args.queue,\n\t\t\tqueueName = queue || \"fx\",\n\t\t\tcomplete = args.complete,\n\t\t\tmode = args.mode,\n\t\t\tmodes = [],\n\t\t\tprefilter = function( next ) {\n\t\t\t\tvar el = $( this ),\n\t\t\t\t\tnormalizedMode = $.effects.mode( el, mode ) || defaultMode;\n\n\t\t\t\t// Sentinel for duck-punching the :animated pseudo-selector\n\t\t\t\tel.data( dataSpaceAnimated, true );\n\n\t\t\t\t// Save effect mode for later use,\n\t\t\t\t// we can't just call $.effects.mode again later,\n\t\t\t\t// as the .show() below destroys the initial state\n\t\t\t\tmodes.push( normalizedMode );\n\n\t\t\t\t// See $.uiBackCompat inside of run() for removal of defaultMode in 1.14\n\t\t\t\tif ( defaultMode && ( normalizedMode === \"show\" ||\n\t\t\t\t\t\t( normalizedMode === defaultMode && normalizedMode === \"hide\" ) ) ) {\n\t\t\t\t\tel.show();\n\t\t\t\t}\n\n\t\t\t\tif ( !defaultMode || normalizedMode !== \"none\" ) {\n\t\t\t\t\t$.effects.saveStyle( el );\n\t\t\t\t}\n\n\t\t\t\tif ( typeof next === \"function\" ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\n\t\t\t// Delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( complete ) {\n\t\t\t\t\t\tcomplete.call( this );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this );\n\n\t\t\tfunction cleanup() {\n\t\t\t\telem.removeData( dataSpaceAnimated );\n\n\t\t\t\t$.effects.cleanUp( elem );\n\n\t\t\t\tif ( args.mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\n\t\t\t\tdone();\n\t\t\t}\n\n\t\t\tfunction done() {\n\t\t\t\tif ( typeof complete === \"function\" ) {\n\t\t\t\t\tcomplete.call( elem[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tif ( typeof next === \"function\" ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mode option on a per element basis,\n\t\t\t// as toggle can be either show or hide depending on element state\n\t\t\targs.mode = modes.shift();\n\n\t\t\tif ( $.uiBackCompat !== false && !defaultMode ) {\n\t\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, done );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( args.mode === \"none\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, cleanup );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Run prefilter on all elements first to ensure that\n\t\t// any showing or hiding happens before placeholder creation,\n\t\t// which ensures that any layout changes are correctly captured.\n\t\treturn queue === false ?\n\t\t\tthis.each( prefilter ).each( run ) :\n\t\t\tthis.queue( queueName, prefilter ).queue( queueName, run );\n\t},\n\n\tshow: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"show\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.show ),\n\n\thide: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"hide\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.hide ),\n\n\ttoggle: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"toggle\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggle ),\n\n\tcssUnit: function( key ) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t} );\n\t\treturn val;\n\t},\n\n\tcssClip: function( clipObj ) {\n\t\tif ( clipObj ) {\n\t\t\treturn this.css( \"clip\", \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" +\n\t\t\t\tclipObj.bottom + \"px \" + clipObj.left + \"px)\" );\n\t\t}\n\t\treturn parseClip( this.css( \"clip\" ), this );\n\t},\n\n\ttransfer: function( options, done ) {\n\t\tvar element = $( this ),\n\t\t\ttarget = $( options.to ),\n\t\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\t\tbody = $( \"body\" ),\n\t\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\t\tendPosition = target.offset(),\n\t\t\tanimation = {\n\t\t\t\ttop: endPosition.top - fixTop,\n\t\t\t\tleft: endPosition.left - fixLeft,\n\t\t\t\theight: target.innerHeight(),\n\t\t\t\twidth: target.innerWidth()\n\t\t\t},\n\t\t\tstartPosition = element.offset(),\n\t\t\ttransfer = $( \"<div class='ui-effects-transfer'></div>\" );\n\n\t\ttransfer\n\t\t\t.appendTo( \"body\" )\n\t\t\t.addClass( options.className )\n\t\t\t.css( {\n\t\t\t\ttop: startPosition.top - fixTop,\n\t\t\t\tleft: startPosition.left - fixLeft,\n\t\t\t\theight: element.innerHeight(),\n\t\t\t\twidth: element.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t} )\n\t\t\t.animate( animation, options.duration, options.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tif ( typeof done === \"function\" ) {\n\t\t\t\t\tdone();\n\t\t\t\t}\n\t\t\t} );\n\t}\n} );\n\nfunction parseClip( str, element ) {\n\t\tvar outerWidth = element.outerWidth(),\n\t\t\touterHeight = element.outerHeight(),\n\t\t\tclipRegex = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\n\t\t\tvalues = clipRegex.exec( str ) || [ \"\", 0, outerWidth, outerHeight, 0 ];\n\n\t\treturn {\n\t\t\ttop: parseFloat( values[ 1 ] ) || 0,\n\t\t\tright: values[ 2 ] === \"auto\" ? outerWidth : parseFloat( values[ 2 ] ),\n\t\t\tbottom: values[ 3 ] === \"auto\" ? outerHeight : parseFloat( values[ 3 ] ),\n\t\t\tleft: parseFloat( values[ 4 ] ) || 0\n\t\t};\n}\n\n$.fx.step.clip = function( fx ) {\n\tif ( !fx.clipInit ) {\n\t\tfx.start = $( fx.elem ).cssClip();\n\t\tif ( typeof fx.end === \"string\" ) {\n\t\t\tfx.end = parseClip( fx.end, fx.elem );\n\t\t}\n\t\tfx.clipInit = true;\n\t}\n\n\t$( fx.elem ).cssClip( {\n\t\ttop: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,\n\t\tright: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,\n\t\tbottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,\n\t\tleft: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left\n\t} );\n};\n\n} )();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n( function() {\n\n// Based on easing equations from Robert Penner (http://robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n} );\n\n$.extend( baseEasings, {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n} );\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n} );\n\n} )();\n\nvar effect = $.effects;\n\n\n/*!\n * jQuery UI Effects Fade 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Fade Effect\n//>>group: Effects\n//>>description: Fades the element.\n//>>docs: https://api.jqueryui.com/fade-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectFade = $.effects.define( \"fade\", \"toggle\", function( options, done ) {\n\tvar show = options.mode === \"show\";\n\n\t$( this )\n\t\t.css( \"opacity\", show ? 0 : 1 )\n\t\t.animate( {\n\t\t\topacity: show ? 1 : 0\n\t\t}, {\n\t\t\tqueue: false,\n\t\t\tduration: options.duration,\n\t\t\teasing: options.easing,\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Size 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Size Effect\n//>>group: Effects\n//>>description: Resize an element to a specified width and height.\n//>>docs: https://api.jqueryui.com/size-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectSize = $.effects.define( \"size\", function( options, done ) {\n\n\t// Create element\n\tvar baseline, factor, temp,\n\t\telement = $( this ),\n\n\t\t// Copy for children\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = options.mode,\n\t\trestore = mode !== \"effect\",\n\t\tscale = options.scale || \"both\",\n\t\torigin = options.origin || [ \"middle\", \"center\" ],\n\t\tposition = element.css( \"position\" ),\n\t\tpos = element.position(),\n\t\toriginal = $.effects.scaledDimensions( element ),\n\t\tfrom = options.from || original,\n\t\tto = options.to || $.effects.scaledDimensions( element, 0 );\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( mode === \"show\" ) {\n\t\ttemp = from;\n\t\tfrom = to;\n\t\tto = temp;\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: from.height / original.height,\n\t\t\tx: from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: to.height / original.height,\n\t\t\tx: to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tfrom = $.effects.setTransition( element, vProps, factor.from.y, from );\n\t\t\tto = $.effects.setTransition( element, vProps, factor.to.y, to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tfrom = $.effects.setTransition( element, hProps, factor.from.x, from );\n\t\t\tto = $.effects.setTransition( element, hProps, factor.to.x, to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tfrom = $.effects.setTransition( element, cProps, factor.from.y, from );\n\t\t\tto = $.effects.setTransition( element, cProps, factor.to.y, to );\n\t\t}\n\t}\n\n\t// Adjust the position properties based on the provided origin points\n\tif ( origin ) {\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tfrom.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;\n\t\tfrom.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;\n\t\tto.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;\n\t\tto.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;\n\t}\n\tdelete from.outerHeight;\n\tdelete from.outerWidth;\n\telement.css( from );\n\n\t// Animate the children if desired\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\tvProps = vProps.concat( [ \"marginTop\", \"marginBottom\" ] ).concat( cProps );\n\t\thProps = hProps.concat( [ \"marginLeft\", \"marginRight\" ] );\n\n\t\t// Only animate children with width attributes specified\n\t\t// TODO: is this right? should we include anything with css width specified as well\n\t\telement.find( \"*[width]\" ).each( function() {\n\t\t\tvar child = $( this ),\n\t\t\t\tchildOriginal = $.effects.scaledDimensions( child ),\n\t\t\t\tchildFrom = {\n\t\t\t\t\theight: childOriginal.height * factor.from.y,\n\t\t\t\t\twidth: childOriginal.width * factor.from.x,\n\t\t\t\t\touterHeight: childOriginal.outerHeight * factor.from.y,\n\t\t\t\t\touterWidth: childOriginal.outerWidth * factor.from.x\n\t\t\t\t},\n\t\t\t\tchildTo = {\n\t\t\t\t\theight: childOriginal.height * factor.to.y,\n\t\t\t\t\twidth: childOriginal.width * factor.to.x,\n\t\t\t\t\touterHeight: childOriginal.height * factor.to.y,\n\t\t\t\t\touterWidth: childOriginal.width * factor.to.x\n\t\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchildFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );\n\t\t\t\tchildTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchildFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );\n\t\t\t\tchildTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );\n\t\t\t}\n\n\t\t\tif ( restore ) {\n\t\t\t\t$.effects.saveStyle( child );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( childFrom );\n\t\t\tchild.animate( childTo, options.duration, options.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restoreStyle( child );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Animate\n\telement.animate( to, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: function() {\n\n\t\t\tvar offset = element.offset();\n\n\t\t\tif ( to.opacity === 0 ) {\n\t\t\t\telement.css( \"opacity\", from.opacity );\n\t\t\t}\n\n\t\t\tif ( !restore ) {\n\t\t\t\telement\n\t\t\t\t\t.css( \"position\", position === \"static\" ? \"relative\" : position )\n\t\t\t\t\t.offset( offset );\n\n\t\t\t\t// Need to save style here so that automatic style restoration\n\t\t\t\t// doesn't restore to the original styles from before the animation.\n\t\t\t\t$.effects.saveStyle( element );\n\t\t\t}\n\n\t\t\tdone();\n\t\t}\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Scale 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Scale Effect\n//>>group: Effects\n//>>description: Grows or shrinks an element and its content.\n//>>docs: https://api.jqueryui.com/scale-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectScale = $.effects.define( \"scale\", function( options, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tmode = options.mode,\n\t\tpercent = parseInt( options.percent, 10 ) ||\n\t\t\t( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== \"effect\" ? 0 : 100 ) ),\n\n\t\tnewOptions = $.extend( true, {\n\t\t\tfrom: $.effects.scaledDimensions( el ),\n\t\t\tto: $.effects.scaledDimensions( el, percent, options.direction || \"both\" ),\n\t\t\torigin: options.origin || [ \"middle\", \"center\" ]\n\t\t}, options );\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tnewOptions.from.opacity = 1;\n\t\tnewOptions.to.opacity = 0;\n\t}\n\n\t$.effects.effect.size.call( this, newOptions, done );\n} );\n\n\n/*!\n * jQuery UI Effects Puff 1.13.3\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Puff Effect\n//>>group: Effects\n//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.\n//>>docs: https://api.jqueryui.com/puff-effect/\n//>>demos: https://jqueryui.com/effect/\n\n\nvar effectsEffectPuff = $.effects.define( \"puff\", \"hide\", function( options, done ) {\n\tvar newOptions = $.extend( true, {}, options, {\n\t\tfade: true,\n\t\tpercent: parseInt( options.percent, 10 ) || 150\n\t} );\n\n\t$.effects.effect.scale.call( this, newOptions, done );\n} );\n\n\n\n\n} );", "import {Application} from '@hotwired/stimulus'\nimport {StripeController} from './controllers/stripe.controller';\nimport {EmailAddressController} from './controllers/email-address.controller';\nimport {DropzoneController} from './controllers/dropzone.controller';\nimport {SelectToggleController} from './controllers/select-toggle.controller';\nimport {DatepickerController} from './controllers/datepicker.controller';\nimport {RemovableController} from './controllers/removable.controller';\nimport {CheckboxSelectAllController} from './controllers/checkbox-select-all.controller';\nimport {MergeFieldsController} from './controllers/merge-fields.controller';\nimport {RadioToggleController} from './controllers/radio-toggle.controller';\nimport {SortableController} from './controllers/sortable.controller';\nimport {InvoiceItemFormController} from './controllers/invoice-item-form.controller';\nimport {NestedFormController} from \"./controllers/nested-form.controller\";\nimport Reveal from '@stimulus-components/reveal';\nimport {DisableController} from './controllers/disable.controller';\n\n// All the jquery stuff. Take care, imports are awaited in Promise.all style, so jquery is not available when not using import() or require!\nimport './vendor/jquery'\nimport './vendor/jquery-ui'\nimport 'jquery-ui/themes/base/all.css'\n\nimport 'jquery-slimscroll';\n//\nimport 'jquery.fancytree'\nimport 'jquery.fancytree/dist/skin-win8/ui.fancytree.css'\n\nimport Bootbox from 'bootbox'\nimport {CopyClipboardController} from \"./controllers/copy-clipboard.controller\";\nimport {DropdownValueCounterController} from \"./controllers/dropdown-value-counter.controller\";\nimport {ListSearchController} from \"./controllers/list-search.controller\";\n\n// All the jquery stuff. Take care, imports are awaited in Promise.all style, so jquery is not available when not using import() or require!\n// import '@rails/ujs'\n// import '@rails/activestorage'\n// import './components/direct_upload.css'\n// import('./components/bootstrap')\n// import('./components/adminlte')\n// // import '../assets/fonts/fonts.css'\n// import('./components/bootstrap_confirm')\n// import('./components/scrolling')\n//\n// import('./components/ajax_error_handling')\n// import('./components/mouse_wait_on_ajax')\n// import './components/datepicker/custom-bs3.scss';\n// import('./components/select2');\n// import './components/bootbox'\n// import './components/dropzone';\n\nwindow.bootbox = Bootbox;\n\nrequire('@rails/ujs').start();\nrequire('@rails/activestorage').start();\nrequire('./components/direct_upload.css')\nrequire('./components/bootstrap')\nrequire('./components/adminlte')\nrequire('./../assets/fonts/fonts.css')\nrequire('./components/bootstrap_confirm')\nrequire('./components/scrolling')\n\nrequire('jquery-slimscroll');\n\nrequire('jquery.fancytree')\nrequire('jquery.fancytree/dist/skin-win8/ui.fancytree.css')\n\nrequire('./components/ajax_error_handling')\nrequire('./components/mouse_wait_on_ajax')\n\n$.AdminLTE.options.controlSidebarOptions.slide = true;\n$.fn.modal.Constructor.prototype.enforceFocus = function () {};\nrequire('./components/datepicker/custom-bs3.scss');\nrequire('./components/select2');\nrequire('./components/bootbox');\nrequire('./components/dropzone');\n\nconst application = Application.start();\napplication.register('stripe', StripeController);\napplication.register('dropzone', DropzoneController);\napplication.register('email-address', EmailAddressController);\napplication.register('stripe', StripeController);\napplication.register('select-toggle', SelectToggleController);\napplication.register('radio-toggle', RadioToggleController);\napplication.register('datepicker', DatepickerController);\napplication.register('nested-form', NestedFormController);\napplication.register('removable', RemovableController);\napplication.register('checkbox-select-all', CheckboxSelectAllController);\napplication.register('merge-field', MergeFieldsController);\napplication.register('sortable', SortableController);\napplication.register('invoice-item-form', InvoiceItemFormController);\napplication.register('reveal', Reveal);\napplication.register('disable', DisableController)\napplication.register('copy-clipboard', CopyClipboardController)\napplication.register('dropdown-value-counter', DropdownValueCounterController)\napplication.register('list-search', ListSearchController)\n", "// app/javascript/controllers/copy_clipboard_controller.js\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport class CopyClipboardController extends Controller {\n  static values = { text: String, copied: String }\n\n  connect() {\n    this.element.addEventListener(\"click\", this.copy.bind(this))\n  }\n\n  disconnect() {\n    this.element.removeEventListener(\"click\", this.copy.bind(this))\n  }\n\n  copy(event) {\n    event.preventDefault()\n    if (!navigator.clipboard || !window.isSecureContext) return\n\n    const text = this.textValue\n    if (!text) return\n\n    navigator.clipboard.writeText(text).then(() => {\n      this.showCopiedFeedback()\n    })\n  }\n\n  showCopiedFeedback() {\n    const originalContent = this.element.innerHTML\n    this.element.innerHTML = this.copiedValue;\n    setTimeout(() => {\n      this.element.innerHTML = originalContent\n    }, 1200)\n  }\n}", "import { Controller } from \"@hotwired/stimulus\";\n\nexport class DropdownValueCounterController extends Controller {\n    static values = {\n        groups: Object,\n    }\n\n    static targets = [\n        'select',\n        'container',\n        'groupTemplate',\n        'itemTemplate'\n    ]\n\n    connect() {\n        this.selectTargets.forEach(selectElement => {\n            selectElement.addEventListener('change', () => {\n                this.recalculateStats();\n            })\n        })\n        this.recalculateStats();\n    }\n\n    recalculateStats() {\n        const selectedIds = [];\n        this.selectTargets.forEach(selectElement => {\n            Array.from(selectElement.selectedOptions).forEach(option => {\n                if (option.value) selectedIds.push(option.value);\n            });\n        });\n\n        const idCounts = {};\n        selectedIds.forEach(id => {\n            idCounts[id] = (idCounts[id] || 0) + 1;\n        });\n\n        this.containerTarget.innerHTML = '';\n\n        Object.entries(this.groupsValue).forEach(([groupName, idArray]) => {\n            const groupItems = [];\n            let groupSum = 0;\n\n            idArray.forEach(id => {\n                const count = idCounts[id] || 0;\n\n                // Label aus irgendeinem Select-Option-Text holen:\n                let label = '';\n                for (const select of this.selectTargets) {\n                    const option = Array.from(select.options).find(opt => opt.value === id);\n                    if (option) {\n                        label = option.text;\n                        break;\n                    }\n                }\n\n                if (label && count > 0) {\n                    groupItems.push({\n                        name: label,\n                        value: count\n                    });\n                    groupSum += count;\n                }\n            });\n\n            // if (groupItems.length > 0) {\n                const groupNode = this.groupTemplateTarget.cloneNode(true);\n                groupNode.style.display = '';\n                // Wichtig: Entferne das Target-Attribut!\n                groupNode.removeAttribute('data-dropdown-value-counter-target');\n\n                groupNode.innerHTML = groupNode.innerHTML\n                    .replace(/__GROUP_NAME__/g, groupName)\n                    .replace(/__GROUP_VALUE__/g, groupSum);\n\n                const ul = groupNode.querySelector('ul');\n                ul.innerHTML = '';\n                groupItems.forEach(item => {\n                    const itemNode = this.itemTemplateTarget.cloneNode(true);\n                    itemNode.style.display = '';\n                    // Wichtig: Entferne das Target-Attribut!\n                    itemNode.removeAttribute('data-dropdown-value-counter-target');\n\n                    itemNode.innerHTML = itemNode.innerHTML\n                        .replace(/__ITEM_NAME__/g, item.name)\n                        .replace(/__ITEM_VALUE__/g, item.value);\n                    ul.appendChild(itemNode);\n                });\n\n                this.containerTarget.appendChild(groupNode);\n            // }\n        });\n    }\n}\n", "import {Controller} from '@hotwired/stimulus';\n\nexport class ListSearchController extends Controller {\n\n    static targets = [\"searchables\", \"searchInput\"]\n\n    connect() {\n        this.searchInputTarget.addEventListener('keyup', () => this.filter())\n    }\n\n    filter() {\n        this.searchablesTargets.forEach(el => {\n            el.hidden = !el.innerText.toLowerCase().includes(this.searchInputTarget.value.toLowerCase())\n        })\n    }\n\n}\n"],
  "mappings": "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AS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,QAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,QAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,QAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,QAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,QAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,QAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,QAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,QAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,QAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,MAAK,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,QAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,QAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,MAAK,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UA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",
  "names": ["_typeof", "obj", "findScript", "injectScript", "registerWrapper", "onError", "onLoad", "loadScript", "error", "initStripe", "validateLoadParams", "loadStripe", "require_pure", "window", "document", "version", "jQuery", "name", "clone", "arr", "matches", "support", "tokenize", "expando", "hasOwn", "push", "slice", "indexOf", "i", "rtrim", "rquickExpr", "Sizzle", "documentElement", "parent", "node", "dir", "find", "isXML", "elem", "self", "add", "index", "key", "value", "data", "on", "t", "prop", "length", "j", "option", "location", "current", "error", "val", "off", "method", "type", "$", "undefined", "exports", "defaults", "name", "option", "_", "index", "module", "__webpack_require__", "index", "name", "Int8Array", "isView", "error", "TypedArray", "RangeError", "key", "ArrayBuffer", "DataView", "self", "ownKeys", "$", "document", "userAgent", "version", "WeakMap", "activeXDocument", "exports", "t", "Symbol", "find", "Uint8Array", "sort", "URLSearchParams", "fetch", "URL", "Dropzone", "F", "Emitter", "on", "off", "drop", "removeFileEvent", "_typeof", "obj", "_setPrototypeOf", "o", "p", "_getPrototypeOf", "setupHiddenFileInput", "containsFiles", "noPropagation", "destroy", "getFallback", "errorHandler", "readEntries", "onDone", "loadExif", "callback", "option", "handleNextChunk", "i", "_loop", "extend", "camelize", "checkElements", "without", "detectVerticalSquash", "drawImageIOSFix", "ExifRestore", "contentLoaded", "add", "init", "poll", "exports", "module", "hex", "SparkMD5", "start", "getMetaValue", "name", "findElement", "toArray", "dispatchEvent", "DirectUpload", "error", "DirectUploadController", "uuid", "uuid", "uuid", "uuid", "t", "version", "t", "uuid", "version", "uuid", "$", "defaults", "e", "$", "version", "name", "current", "add", "position", "scrollParent", "parent", "uuid", "$", "i", "t", "name", "clone", "s", "parent", "self", "key", "dfd", "pathSegList", "ajaxDfd", "attr", "error", "lastChild", "add", "tree", "matches", "$", "error", "CustomEvent", "name", "toArray", "option", "href", "$", "name", "$", "removeElement", "option", "$", "option", "$", "option", "$", "option", "$", "getParent", "index", "option", "$", "e", "option", "$", "defaults", "self", "option", "$", "option", "$", "option", "$", "option", "$", "option", "require_bootstrap", "parent", "$", "init_adminlte", "init_adminlte", "$", "defaults", "xhr", "$", "undefined", "range", "self", "data", "t", "index", "results", "container", "element", "tags", "css", "matches", "selected", "current", "$", "$", "matches", "require_select2", "require_select2_sortable", "require_select2", "bootbox", "require_dropzone", "import_dropzone", "application", "error", "matches", "index", "name", "fetch", "matches", "match", "oldValue", "index", "error", "name", "constructor", "application", "element", "name", "t", "error", "import_bootbox", "error", "Dropzone", "element", "index", "name", "index", "parent", "range", "index", "current", "range", "range", "index", "index", "current", "range", "parent", "index", "_CheckboxSelectAll", "element", "obj", "name", "parent", "index", "extend", "$", "ghostEl", "option", "defaults", "name", "rootEl", "cloneEl", "oldIndex", "newIndex", "oldDraggableIndex", "newDraggableIndex", "putSortable", "pluginEvent", "_detectDirection", "_dragElInRowColumn", "_detectNearestEmptySortable", "_prepareGroup", "dragEl", "_hideGhostForTarget", "_unhideGhostForTarget", "nearestEmptyInsertDetectEvent", "_checkOutsideTargetEl", "dragStartFn", "parent", "target", "after", "el", "extend", "plugins", "drop", "autoScroll", "onSpill", "_RailsNestedForm", "_Reveal", "jquery", "$", "version", "name", "current", "add", "data", "position", "form", "labels", "scrollParent", "parent", "uuid", "event", "option", "document", "error", "pageY", "t", "jQuery", "color", "is", "_", "index", "hook", "effect", "import_jquery", "import_bootbox", "option", "Bootbox"]
}
