HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall_forms/buyercall/build/public/vendor_js.2cc0938e4b62c94a86d6.js
/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "http://localhost:2992/assets/";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 23);
/******/ })
/************************************************************************/
/******/ ({

/***/ "./buyercall/assets/scripts/vendor/bootstrap-colorpicker.js":
/*!******************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/bootstrap-colorpicker.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*! Bootstrap Colorpicker 2.1.0 - http://mjolnic.github.io/bootstrap-colorpicker/ */\n!function (a) {\n  \"use strict\";\n\n   true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (a),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;\n}(function (a) {\n  \"use strict\";\n\n  var b = function b(a) {\n    this.value = {\n      h: 0,\n      s: 0,\n      b: 0,\n      a: 1\n    }, this.origFormat = null, a && (void 0 !== a.toLowerCase ? (a += \"\", \"#\" === a.charAt(0) || 3 !== a.length && 6 !== a.length || (a = \"#\" + a), this.setColor(a)) : void 0 !== a.h && (this.value = a));\n  };\n  b.prototype = {\n    constructor: b,\n    colors: {\n      aliceblue: \"#f0f8ff\",\n      antiquewhite: \"#faebd7\",\n      aqua: \"#00ffff\",\n      aquamarine: \"#7fffd4\",\n      azure: \"#f0ffff\",\n      beige: \"#f5f5dc\",\n      bisque: \"#ffe4c4\",\n      black: \"#000000\",\n      blanchedalmond: \"#ffebcd\",\n      blue: \"#0000ff\",\n      blueviolet: \"#8a2be2\",\n      brown: \"#a52a2a\",\n      burlywood: \"#deb887\",\n      cadetblue: \"#5f9ea0\",\n      chartreuse: \"#7fff00\",\n      chocolate: \"#d2691e\",\n      coral: \"#ff7f50\",\n      cornflowerblue: \"#6495ed\",\n      cornsilk: \"#fff8dc\",\n      crimson: \"#dc143c\",\n      cyan: \"#00ffff\",\n      darkblue: \"#00008b\",\n      darkcyan: \"#008b8b\",\n      darkgoldenrod: \"#b8860b\",\n      darkgray: \"#a9a9a9\",\n      darkgreen: \"#006400\",\n      darkkhaki: \"#bdb76b\",\n      darkmagenta: \"#8b008b\",\n      darkolivegreen: \"#556b2f\",\n      darkorange: \"#ff8c00\",\n      darkorchid: \"#9932cc\",\n      darkred: \"#8b0000\",\n      darksalmon: \"#e9967a\",\n      darkseagreen: \"#8fbc8f\",\n      darkslateblue: \"#483d8b\",\n      darkslategray: \"#2f4f4f\",\n      darkturquoise: \"#00ced1\",\n      darkviolet: \"#9400d3\",\n      deeppink: \"#ff1493\",\n      deepskyblue: \"#00bfff\",\n      dimgray: \"#696969\",\n      dodgerblue: \"#1e90ff\",\n      firebrick: \"#b22222\",\n      floralwhite: \"#fffaf0\",\n      forestgreen: \"#228b22\",\n      fuchsia: \"#ff00ff\",\n      gainsboro: \"#dcdcdc\",\n      ghostwhite: \"#f8f8ff\",\n      gold: \"#ffd700\",\n      goldenrod: \"#daa520\",\n      gray: \"#808080\",\n      green: \"#008000\",\n      greenyellow: \"#adff2f\",\n      honeydew: \"#f0fff0\",\n      hotpink: \"#ff69b4\",\n      \"indianred \": \"#cd5c5c\",\n      \"indigo \": \"#4b0082\",\n      ivory: \"#fffff0\",\n      khaki: \"#f0e68c\",\n      lavender: \"#e6e6fa\",\n      lavenderblush: \"#fff0f5\",\n      lawngreen: \"#7cfc00\",\n      lemonchiffon: \"#fffacd\",\n      lightblue: \"#add8e6\",\n      lightcoral: \"#f08080\",\n      lightcyan: \"#e0ffff\",\n      lightgoldenrodyellow: \"#fafad2\",\n      lightgrey: \"#d3d3d3\",\n      lightgreen: \"#90ee90\",\n      lightpink: \"#ffb6c1\",\n      lightsalmon: \"#ffa07a\",\n      lightseagreen: \"#20b2aa\",\n      lightskyblue: \"#87cefa\",\n      lightslategray: \"#778899\",\n      lightsteelblue: \"#b0c4de\",\n      lightyellow: \"#ffffe0\",\n      lime: \"#00ff00\",\n      limegreen: \"#32cd32\",\n      linen: \"#faf0e6\",\n      magenta: \"#ff00ff\",\n      maroon: \"#800000\",\n      mediumaquamarine: \"#66cdaa\",\n      mediumblue: \"#0000cd\",\n      mediumorchid: \"#ba55d3\",\n      mediumpurple: \"#9370d8\",\n      mediumseagreen: \"#3cb371\",\n      mediumslateblue: \"#7b68ee\",\n      mediumspringgreen: \"#00fa9a\",\n      mediumturquoise: \"#48d1cc\",\n      mediumvioletred: \"#c71585\",\n      midnightblue: \"#191970\",\n      mintcream: \"#f5fffa\",\n      mistyrose: \"#ffe4e1\",\n      moccasin: \"#ffe4b5\",\n      navajowhite: \"#ffdead\",\n      navy: \"#000080\",\n      oldlace: \"#fdf5e6\",\n      olive: \"#808000\",\n      olivedrab: \"#6b8e23\",\n      orange: \"#ffa500\",\n      orangered: \"#ff4500\",\n      orchid: \"#da70d6\",\n      palegoldenrod: \"#eee8aa\",\n      palegreen: \"#98fb98\",\n      paleturquoise: \"#afeeee\",\n      palevioletred: \"#d87093\",\n      papayawhip: \"#ffefd5\",\n      peachpuff: \"#ffdab9\",\n      peru: \"#cd853f\",\n      pink: \"#ffc0cb\",\n      plum: \"#dda0dd\",\n      powderblue: \"#b0e0e6\",\n      purple: \"#800080\",\n      red: \"#ff0000\",\n      rosybrown: \"#bc8f8f\",\n      royalblue: \"#4169e1\",\n      saddlebrown: \"#8b4513\",\n      salmon: \"#fa8072\",\n      sandybrown: \"#f4a460\",\n      seagreen: \"#2e8b57\",\n      seashell: \"#fff5ee\",\n      sienna: \"#a0522d\",\n      silver: \"#c0c0c0\",\n      skyblue: \"#87ceeb\",\n      slateblue: \"#6a5acd\",\n      slategray: \"#708090\",\n      snow: \"#fffafa\",\n      springgreen: \"#00ff7f\",\n      steelblue: \"#4682b4\",\n      tan: \"#d2b48c\",\n      teal: \"#008080\",\n      thistle: \"#d8bfd8\",\n      tomato: \"#ff6347\",\n      turquoise: \"#40e0d0\",\n      violet: \"#ee82ee\",\n      wheat: \"#f5deb3\",\n      white: \"#ffffff\",\n      whitesmoke: \"#f5f5f5\",\n      yellow: \"#ffff00\",\n      yellowgreen: \"#9acd32\",\n      transparent: \"transparent\"\n    },\n    _sanitizeNumber: function _sanitizeNumber(a) {\n      return \"number\" == typeof a ? a : isNaN(a) || null === a || \"\" === a || void 0 === a ? 1 : void 0 !== a.toLowerCase ? parseFloat(a) : 1;\n    },\n    isTransparent: function isTransparent(a) {\n      return a ? (a = a.toLowerCase().trim(), \"transparent\" == a || a.match(/#?00000000/) || a.match(/(rgba|hsla)\\(0,0,0,0?\\.?0\\)/)) : !1;\n    },\n    rgbaIsTransparent: function rgbaIsTransparent(a) {\n      return 0 == a.r && 0 == a.g && 0 == a.b && 0 == a.a;\n    },\n    setColor: function setColor(a) {\n      a = a.toLowerCase().trim(), a && (this.value = this.isTransparent(a) ? {\n        h: 0,\n        s: 0,\n        b: 0,\n        a: 0\n      } : this.stringToHSB(a) || {\n        h: 0,\n        s: 0,\n        b: 0,\n        a: 1\n      });\n    },\n    stringToHSB: function stringToHSB(b) {\n      b = b.toLowerCase();\n      var c = this,\n        d = !1;\n      return a.each(this.stringParsers, function (a, e) {\n        var f = e.re.exec(b),\n          g = f && e.parse.apply(c, [f]),\n          h = e.format || \"rgba\";\n        return g ? (d = h.match(/hsla?/) ? c.RGBtoHSB.apply(c, c.HSLtoRGB.apply(c, g)) : c.RGBtoHSB.apply(c, g), c.origFormat = h, !1) : !0;\n      }), d;\n    },\n    setHue: function setHue(a) {\n      this.value.h = 1 - a;\n    },\n    setSaturation: function setSaturation(a) {\n      this.value.s = a;\n    },\n    setBrightness: function setBrightness(a) {\n      this.value.b = 1 - a;\n    },\n    setAlpha: function setAlpha(a) {\n      this.value.a = parseInt(100 * (1 - a), 10) / 100;\n    },\n    toRGB: function toRGB(a, b, c, d) {\n      a || (a = this.value.h, b = this.value.s, c = this.value.b), a *= 360;\n      var e, f, g, h, i;\n      return a = a % 360 / 60, i = c * b, h = i * (1 - Math.abs(a % 2 - 1)), e = f = g = c - i, a = ~~a, e += [i, h, 0, 0, h, i][a], f += [h, i, i, h, 0, 0][a], g += [0, 0, h, i, i, h][a], {\n        r: Math.round(255 * e),\n        g: Math.round(255 * f),\n        b: Math.round(255 * g),\n        a: d || this.value.a\n      };\n    },\n    toHex: function toHex(a, b, c, d) {\n      var e = this.toRGB(a, b, c, d);\n      return this.rgbaIsTransparent(e) ? \"transparent\" : \"#\" + (1 << 24 | parseInt(e.r) << 16 | parseInt(e.g) << 8 | parseInt(e.b)).toString(16).substr(1);\n    },\n    toHSL: function toHSL(a, b, c, d) {\n      a = a || this.value.h, b = b || this.value.s, c = c || this.value.b, d = d || this.value.a;\n      var e = a,\n        f = (2 - b) * c,\n        g = b * c;\n      return g /= f > 0 && 1 >= f ? f : 2 - f, f /= 2, g > 1 && (g = 1), {\n        h: isNaN(e) ? 0 : e,\n        s: isNaN(g) ? 0 : g,\n        l: isNaN(f) ? 0 : f,\n        a: isNaN(d) ? 0 : d\n      };\n    },\n    toAlias: function toAlias(a, b, c, d) {\n      var e = this.toHex(a, b, c, d);\n      for (var f in this.colors) if (this.colors[f] == e) return f;\n      return !1;\n    },\n    RGBtoHSB: function RGBtoHSB(a, b, c, d) {\n      a /= 255, b /= 255, c /= 255;\n      var e, f, g, h;\n      return g = Math.max(a, b, c), h = g - Math.min(a, b, c), e = 0 === h ? null : g === a ? (b - c) / h : g === b ? (c - a) / h + 2 : (a - b) / h + 4, e = (e + 360) % 6 * 60 / 360, f = 0 === h ? 0 : h / g, {\n        h: this._sanitizeNumber(e),\n        s: f,\n        b: g,\n        a: this._sanitizeNumber(d)\n      };\n    },\n    HueToRGB: function HueToRGB(a, b, c) {\n      return 0 > c ? c += 1 : c > 1 && (c -= 1), 1 > 6 * c ? a + (b - a) * c * 6 : 1 > 2 * c ? b : 2 > 3 * c ? a + (b - a) * (2 / 3 - c) * 6 : a;\n    },\n    HSLtoRGB: function HSLtoRGB(a, b, c, d) {\n      0 > b && (b = 0);\n      var e;\n      e = .5 >= c ? c * (1 + b) : c + b - c * b;\n      var f = 2 * c - e,\n        g = a + 1 / 3,\n        h = a,\n        i = a - 1 / 3,\n        j = Math.round(255 * this.HueToRGB(f, e, g)),\n        k = Math.round(255 * this.HueToRGB(f, e, h)),\n        l = Math.round(255 * this.HueToRGB(f, e, i));\n      return [j, k, l, this._sanitizeNumber(d)];\n    },\n    toString: function toString(a) {\n      switch (a = a || \"rgba\") {\n        case \"rgb\":\n          var b = this.toRGB();\n          return this.rgbaIsTransparent(b) ? \"transparent\" : \"rgb(\" + b.r + \",\" + b.g + \",\" + b.b + \")\";\n        case \"rgba\":\n          var b = this.toRGB();\n          return \"rgba(\" + b.r + \",\" + b.g + \",\" + b.b + \",\" + b.a + \")\";\n        case \"hsl\":\n          var c = this.toHSL();\n          return \"hsl(\" + Math.round(360 * c.h) + \",\" + Math.round(100 * c.s) + \"%,\" + Math.round(100 * c.l) + \"%)\";\n        case \"hsla\":\n          var c = this.toHSL();\n          return \"hsla(\" + Math.round(360 * c.h) + \",\" + Math.round(100 * c.s) + \"%,\" + Math.round(100 * c.l) + \"%,\" + c.a + \")\";\n        case \"hex\":\n          return this.toHex();\n        case \"alias\":\n          return this.toAlias() || this.toHex();\n        default:\n          return !1;\n      }\n    },\n    stringParsers: [{\n      re: /rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*?\\)/,\n      format: \"rgb\",\n      parse: function parse(a) {\n        return [a[1], a[2], a[3], 1];\n      }\n    }, {\n      re: /rgb\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*?\\)/,\n      format: \"rgb\",\n      parse: function parse(a) {\n        return [2.55 * a[1], 2.55 * a[2], 2.55 * a[3], 1];\n      }\n    }, {\n      re: /rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n      format: \"rgba\",\n      parse: function parse(a) {\n        return [a[1], a[2], a[3], a[4]];\n      }\n    }, {\n      re: /rgba\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n      format: \"rgba\",\n      parse: function parse(a) {\n        return [2.55 * a[1], 2.55 * a[2], 2.55 * a[3], a[4]];\n      }\n    }, {\n      re: /hsl\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*?\\)/,\n      format: \"hsl\",\n      parse: function parse(a) {\n        return [a[1] / 360, a[2] / 100, a[3] / 100, a[4]];\n      }\n    }, {\n      re: /hsla\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n      format: \"hsla\",\n      parse: function parse(a) {\n        return [a[1] / 360, a[2] / 100, a[3] / 100, a[4]];\n      }\n    }, {\n      re: /#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,\n      format: \"hex\",\n      parse: function parse(a) {\n        return [parseInt(a[1], 16), parseInt(a[2], 16), parseInt(a[3], 16), 1];\n      }\n    }, {\n      re: /#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,\n      format: \"hex\",\n      parse: function parse(a) {\n        return [parseInt(a[1] + a[1], 16), parseInt(a[2] + a[2], 16), parseInt(a[3] + a[3], 16), 1];\n      }\n    }, {\n      re: /^([a-z]{3,})$/,\n      format: \"alias\",\n      parse: function parse(a) {\n        var b = this.colorNameToHex(a[0]) || \"#000000\",\n          c = this.stringParsers[0].re.exec(b),\n          d = c && this.stringParsers[0].parse.apply(this, [c]);\n        return d;\n      }\n    }],\n    colorNameToHex: function colorNameToHex(a) {\n      return \"undefined\" != typeof this.colors[a.toLowerCase()] ? this.colors[a.toLowerCase()] : !1;\n    }\n  };\n  var c = {\n      horizontal: !1,\n      inline: !1,\n      color: !1,\n      format: !1,\n      input: \"input\",\n      container: !1,\n      component: \".add-on, .input-group-addon\",\n      sliders: {\n        saturation: {\n          maxLeft: 100,\n          maxTop: 100,\n          callLeft: \"setSaturation\",\n          callTop: \"setBrightness\"\n        },\n        hue: {\n          maxLeft: 0,\n          maxTop: 100,\n          callLeft: !1,\n          callTop: \"setHue\"\n        },\n        alpha: {\n          maxLeft: 0,\n          maxTop: 100,\n          callLeft: !1,\n          callTop: \"setAlpha\"\n        }\n      },\n      slidersHorz: {\n        saturation: {\n          maxLeft: 100,\n          maxTop: 100,\n          callLeft: \"setSaturation\",\n          callTop: \"setBrightness\"\n        },\n        hue: {\n          maxLeft: 100,\n          maxTop: 0,\n          callLeft: \"setHue\",\n          callTop: !1\n        },\n        alpha: {\n          maxLeft: 100,\n          maxTop: 0,\n          callLeft: \"setAlpha\",\n          callTop: !1\n        }\n      },\n      template: '<div class=\"colorpicker dropdown-menu\"><div class=\"colorpicker-saturation\"><i><b></b></i></div><div class=\"colorpicker-hue\"><i></i></div><div class=\"colorpicker-alpha\"><i></i></div><div class=\"colorpicker-color\"><div /></div></div>'\n    },\n    d = function d(_d, e) {\n      this.element = a(_d).addClass(\"colorpicker-element\"), this.options = a.extend({}, c, this.element.data(), e), this.component = this.options.component, this.component = this.component !== !1 ? this.element.find(this.component) : !1, this.component && 0 === this.component.length && (this.component = !1), this.container = this.options.container === !0 ? this.element : this.options.container, this.container = this.container !== !1 ? a(this.container) : !1, this.input = this.element.is(\"input\") ? this.element : this.options.input ? this.element.find(this.options.input) : !1, this.input && 0 === this.input.length && (this.input = !1), this.color = new b(this.options.color !== !1 ? this.options.color : this.getValue()), this.format = this.options.format !== !1 ? this.options.format : this.color.origFormat, this.picker = a(this.options.template), this.picker.addClass(this.options.inline ? \"colorpicker-inline colorpicker-visible\" : \"colorpicker-hidden\"), this.options.horizontal && this.picker.addClass(\"colorpicker-horizontal\"), (\"rgba\" === this.format || \"hsla\" === this.format) && this.picker.addClass(\"colorpicker-with-alpha\"), \"right\" === this.options.align && this.picker.addClass(\"colorpicker-right\"), this.picker.on(\"mousedown.colorpicker touchstart.colorpicker\", a.proxy(this.mousedown, this)), this.picker.appendTo(this.container ? this.container : a(\"body\")), this.input !== !1 && (this.input.on({\n        \"keyup.colorpicker\": a.proxy(this.keyup, this)\n      }), this.component === !1 && this.element.on({\n        \"focus.colorpicker\": a.proxy(this.show, this)\n      }), this.options.inline === !1 && this.element.on({\n        \"focusout.colorpicker\": a.proxy(this.hide, this)\n      })), this.component !== !1 && this.component.on({\n        \"click.colorpicker\": a.proxy(this.show, this)\n      }), this.input === !1 && this.component === !1 && this.element.on({\n        \"click.colorpicker\": a.proxy(this.show, this)\n      }), this.input !== !1 && this.component !== !1 && \"color\" === this.input.attr(\"type\") && this.input.on({\n        \"click.colorpicker\": a.proxy(this.show, this),\n        \"focus.colorpicker\": a.proxy(this.show, this)\n      }), this.update(), a(a.proxy(function () {\n        this.element.trigger(\"create\");\n      }, this));\n    };\n  d.Color = b, d.prototype = {\n    constructor: d,\n    destroy: function destroy() {\n      this.picker.remove(), this.element.removeData(\"colorpicker\").off(\".colorpicker\"), this.input !== !1 && this.input.off(\".colorpicker\"), this.component !== !1 && this.component.off(\".colorpicker\"), this.element.removeClass(\"colorpicker-element\"), this.element.trigger({\n        type: \"destroy\"\n      });\n    },\n    reposition: function reposition() {\n      if (this.options.inline !== !1 || this.options.container) return !1;\n      var a = this.container && this.container[0] !== document.body ? \"position\" : \"offset\",\n        b = this.component || this.element,\n        c = b[a]();\n      \"right\" === this.options.align && (c.left -= this.picker.outerWidth() - b.outerWidth()), this.picker.css({\n        top: c.top + b.outerHeight(),\n        left: c.left\n      });\n    },\n    show: function show(b) {\n      return this.isDisabled() ? !1 : (this.picker.addClass(\"colorpicker-visible\").removeClass(\"colorpicker-hidden\"), this.reposition(), a(window).on(\"resize.colorpicker\", a.proxy(this.reposition, this)), !b || this.hasInput() && \"color\" !== this.input.attr(\"type\") || b.stopPropagation && b.preventDefault && (b.stopPropagation(), b.preventDefault()), this.options.inline === !1 && a(window.document).on({\n        \"mousedown.colorpicker\": a.proxy(this.hide, this)\n      }), void this.element.trigger({\n        type: \"showPicker\",\n        color: this.color\n      }));\n    },\n    hide: function hide() {\n      this.picker.addClass(\"colorpicker-hidden\").removeClass(\"colorpicker-visible\"), a(window).off(\"resize.colorpicker\", this.reposition), a(document).off({\n        \"mousedown.colorpicker\": this.hide\n      }), this.update(), this.element.trigger({\n        type: \"hidePicker\",\n        color: this.color\n      });\n    },\n    updateData: function updateData(a) {\n      return a = a || this.color.toString(this.format), this.element.data(\"color\", a), a;\n    },\n    updateInput: function updateInput(a) {\n      return a = a || this.color.toString(this.format), this.input !== !1 && this.input.prop(\"value\", a), a;\n    },\n    updatePicker: function updatePicker(a) {\n      void 0 !== a && (this.color = new b(a));\n      var c = this.options.horizontal === !1 ? this.options.sliders : this.options.slidersHorz,\n        d = this.picker.find(\"i\");\n      return 0 !== d.length ? (this.options.horizontal === !1 ? (c = this.options.sliders, d.eq(1).css(\"top\", c.hue.maxTop * (1 - this.color.value.h)).end().eq(2).css(\"top\", c.alpha.maxTop * (1 - this.color.value.a))) : (c = this.options.slidersHorz, d.eq(1).css(\"left\", c.hue.maxLeft * (1 - this.color.value.h)).end().eq(2).css(\"left\", c.alpha.maxLeft * (1 - this.color.value.a))), d.eq(0).css({\n        top: c.saturation.maxTop - this.color.value.b * c.saturation.maxTop,\n        left: this.color.value.s * c.saturation.maxLeft\n      }), this.picker.find(\".colorpicker-saturation\").css(\"backgroundColor\", this.color.toHex(this.color.value.h, 1, 1, 1)), this.picker.find(\".colorpicker-alpha\").css(\"backgroundColor\", this.color.toHex()), this.picker.find(\".colorpicker-color, .colorpicker-color div\").css(\"backgroundColor\", this.color.toString(this.format)), a) : void 0;\n    },\n    updateComponent: function updateComponent(a) {\n      if (a = a || this.color.toString(this.format), this.component !== !1) {\n        var b = this.component.find(\"i\").eq(0);\n        b.length > 0 ? b.css({\n          backgroundColor: a\n        }) : this.component.css({\n          backgroundColor: a\n        });\n      }\n      return a;\n    },\n    update: function update(a) {\n      var b;\n      return (this.getValue(!1) !== !1 || a === !0) && (b = this.updateComponent(), this.updateInput(b), this.updateData(b), this.updatePicker()), b;\n    },\n    setValue: function setValue(a) {\n      this.color = new b(a), this.update(), this.element.trigger({\n        type: \"changeColor\",\n        color: this.color,\n        value: a\n      });\n    },\n    getValue: function getValue(a) {\n      a = void 0 === a ? \"#000000\" : a;\n      var b;\n      return b = this.hasInput() ? this.input.val() : this.element.data(\"color\"), (void 0 === b || \"\" === b || null === b) && (b = a), b;\n    },\n    hasInput: function hasInput() {\n      return this.input !== !1;\n    },\n    isDisabled: function isDisabled() {\n      return this.hasInput() ? this.input.prop(\"disabled\") === !0 : !1;\n    },\n    disable: function disable() {\n      return this.hasInput() ? (this.input.prop(\"disabled\", !0), this.element.trigger({\n        type: \"disable\",\n        color: this.color,\n        value: this.getValue()\n      }), !0) : !1;\n    },\n    enable: function enable() {\n      return this.hasInput() ? (this.input.prop(\"disabled\", !1), this.element.trigger({\n        type: \"enable\",\n        color: this.color,\n        value: this.getValue()\n      }), !0) : !1;\n    },\n    currentSlider: null,\n    mousePointer: {\n      left: 0,\n      top: 0\n    },\n    mousedown: function mousedown(b) {\n      b.pageX || b.pageY || !b.originalEvent || (b.pageX = b.originalEvent.touches[0].pageX, b.pageY = b.originalEvent.touches[0].pageY), b.stopPropagation(), b.preventDefault();\n      var c = a(b.target),\n        d = c.closest(\"div\"),\n        e = this.options.horizontal ? this.options.slidersHorz : this.options.sliders;\n      if (!d.is(\".colorpicker\")) {\n        if (d.is(\".colorpicker-saturation\")) this.currentSlider = a.extend({}, e.saturation);else if (d.is(\".colorpicker-hue\")) this.currentSlider = a.extend({}, e.hue);else {\n          if (!d.is(\".colorpicker-alpha\")) return !1;\n          this.currentSlider = a.extend({}, e.alpha);\n        }\n        var f = d.offset();\n        this.currentSlider.guide = d.find(\"i\")[0].style, this.currentSlider.left = b.pageX - f.left, this.currentSlider.top = b.pageY - f.top, this.mousePointer = {\n          left: b.pageX,\n          top: b.pageY\n        }, a(document).on({\n          \"mousemove.colorpicker\": a.proxy(this.mousemove, this),\n          \"touchmove.colorpicker\": a.proxy(this.mousemove, this),\n          \"mouseup.colorpicker\": a.proxy(this.mouseup, this),\n          \"touchend.colorpicker\": a.proxy(this.mouseup, this)\n        }).trigger(\"mousemove\");\n      }\n      return !1;\n    },\n    mousemove: function mousemove(a) {\n      a.pageX || a.pageY || !a.originalEvent || (a.pageX = a.originalEvent.touches[0].pageX, a.pageY = a.originalEvent.touches[0].pageY), a.stopPropagation(), a.preventDefault();\n      var b = Math.max(0, Math.min(this.currentSlider.maxLeft, this.currentSlider.left + ((a.pageX || this.mousePointer.left) - this.mousePointer.left))),\n        c = Math.max(0, Math.min(this.currentSlider.maxTop, this.currentSlider.top + ((a.pageY || this.mousePointer.top) - this.mousePointer.top)));\n      return this.currentSlider.guide.left = b + \"px\", this.currentSlider.guide.top = c + \"px\", this.currentSlider.callLeft && this.color[this.currentSlider.callLeft].call(this.color, b / this.currentSlider.maxLeft), this.currentSlider.callTop && this.color[this.currentSlider.callTop].call(this.color, c / this.currentSlider.maxTop), this.update(!0), this.element.trigger({\n        type: \"changeColor\",\n        color: this.color\n      }), !1;\n    },\n    mouseup: function mouseup(b) {\n      return b.stopPropagation(), b.preventDefault(), a(document).off({\n        \"mousemove.colorpicker\": this.mousemove,\n        \"touchmove.colorpicker\": this.mousemove,\n        \"mouseup.colorpicker\": this.mouseup,\n        \"touchend.colorpicker\": this.mouseup\n      }), !1;\n    },\n    keyup: function keyup(a) {\n      if (38 === a.keyCode) this.color.value.a < 1 && (this.color.value.a = Math.round(100 * (this.color.value.a + .01)) / 100), this.update(!0);else if (40 === a.keyCode) this.color.value.a > 0 && (this.color.value.a = Math.round(100 * (this.color.value.a - .01)) / 100), this.update(!0);else {\n        var c = this.input.val();\n        this.color = new b(c), this.getValue(!1) !== !1 && (this.updateData(), this.updateComponent(), this.updatePicker());\n      }\n      this.element.trigger({\n        type: \"changeColor\",\n        color: this.color,\n        value: c\n      });\n    }\n  }, a.colorpicker = d, a.fn.colorpicker = function (b) {\n    var c,\n      e = arguments,\n      f = this.each(function () {\n        var f = a(this),\n          g = f.data(\"colorpicker\"),\n          h = \"object\" == _typeof(b) ? b : {};\n        g || \"string\" == typeof b ? \"string\" == typeof b && (c = g[b].apply(g, Array.prototype.slice.call(e, 1))) : f.data(\"colorpicker\", new d(this, h));\n      });\n    return \"getValue\" === b ? c : f;\n  }, a.fn.colorpicker.constructor = d;\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/bootstrap-colorpicker.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/bootstrap-datetimepicker.js":
/*!*********************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/bootstrap-datetimepicker.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*! version : 4.17.37\n =========================================================\n bootstrap-datetimejs\n https://github.com/Eonasdan/bootstrap-datetimepicker\n Copyright (c) 2015 Jonathan Peterson\n =========================================================\n */\n/*\n The MIT License (MIT)\n\n Copyright (c) 2015 Jonathan Peterson\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n/*global define:false */\n/*global exports:false */\n/*global require:false */\n/*global jQuery:false */\n/*global moment:false */\n\n/*\n\n\n     Creative Tim Modifications\n\n     Line: 298 - we added class btn-primary for custom styling button.\n\n\n*/\n(function (factory) {\n  'use strict';\n\n  if (true) {\n    // AMD is used - Register as an anonymous module.\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\"), __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n})(function ($, moment) {\n  'use strict';\n\n  if (!moment) {\n    throw new Error('bootstrap-datetimepicker requires Moment.js to be loaded first');\n  }\n  var dateTimePicker = function dateTimePicker(element, options) {\n    var picker = {},\n      date,\n      viewDate,\n      unset = true,\n      input,\n      component = false,\n      widget = false,\n      use24Hours,\n      minViewModeNumber = 0,\n      actualFormat,\n      parseFormats,\n      currentViewMode,\n      datePickerModes = [{\n        clsName: 'days',\n        navFnc: 'M',\n        navStep: 1\n      }, {\n        clsName: 'months',\n        navFnc: 'y',\n        navStep: 1\n      }, {\n        clsName: 'years',\n        navFnc: 'y',\n        navStep: 10\n      }, {\n        clsName: 'decades',\n        navFnc: 'y',\n        navStep: 100\n      }],\n      viewModes = ['days', 'months', 'years', 'decades'],\n      verticalModes = ['top', 'bottom', 'auto'],\n      horizontalModes = ['left', 'right', 'auto'],\n      toolbarPlacements = ['default', 'top', 'bottom'],\n      keyMap = {\n        'up': 38,\n        38: 'up',\n        'down': 40,\n        40: 'down',\n        'left': 37,\n        37: 'left',\n        'right': 39,\n        39: 'right',\n        'tab': 9,\n        9: 'tab',\n        'escape': 27,\n        27: 'escape',\n        'enter': 13,\n        13: 'enter',\n        'pageUp': 33,\n        33: 'pageUp',\n        'pageDown': 34,\n        34: 'pageDown',\n        'shift': 16,\n        16: 'shift',\n        'control': 17,\n        17: 'control',\n        'space': 32,\n        32: 'space',\n        't': 84,\n        84: 't',\n        'delete': 46,\n        46: 'delete'\n      },\n      keyState = {},\n      /********************************************************************************\n       *\n       * Private functions\n       *\n       ********************************************************************************/\n      getMoment = function getMoment(d) {\n        var tzEnabled = false,\n          returnMoment,\n          currentZoneOffset,\n          incomingZoneOffset,\n          timeZoneIndicator,\n          dateWithTimeZoneInfo;\n        if (moment.tz !== undefined && options.timeZone !== undefined && options.timeZone !== null && options.timeZone !== '') {\n          tzEnabled = true;\n        }\n        if (d === undefined || d === null) {\n          if (tzEnabled) {\n            returnMoment = moment().tz(options.timeZone).startOf('d');\n          } else {\n            returnMoment = moment().startOf('d');\n          }\n        } else {\n          if (tzEnabled) {\n            currentZoneOffset = moment().tz(options.timeZone).utcOffset();\n            incomingZoneOffset = moment(d, parseFormats, options.useStrict).utcOffset();\n            if (incomingZoneOffset !== currentZoneOffset) {\n              timeZoneIndicator = moment().tz(options.timeZone).format('Z');\n              dateWithTimeZoneInfo = moment(d, parseFormats, options.useStrict).format('YYYY-MM-DD[T]HH:mm:ss') + timeZoneIndicator;\n              returnMoment = moment(dateWithTimeZoneInfo, parseFormats, options.useStrict).tz(options.timeZone);\n            } else {\n              returnMoment = moment(d, parseFormats, options.useStrict).tz(options.timeZone);\n            }\n          } else {\n            returnMoment = moment(d, parseFormats, options.useStrict);\n          }\n        }\n        return returnMoment;\n      },\n      isEnabled = function isEnabled(granularity) {\n        if (typeof granularity !== 'string' || granularity.length > 1) {\n          throw new TypeError('isEnabled expects a single character string parameter');\n        }\n        switch (granularity) {\n          case 'y':\n            return actualFormat.indexOf('Y') !== -1;\n          case 'M':\n            return actualFormat.indexOf('M') !== -1;\n          case 'd':\n            return actualFormat.toLowerCase().indexOf('d') !== -1;\n          case 'h':\n          case 'H':\n            return actualFormat.toLowerCase().indexOf('h') !== -1;\n          case 'm':\n            return actualFormat.indexOf('m') !== -1;\n          case 's':\n            return actualFormat.indexOf('s') !== -1;\n          default:\n            return false;\n        }\n      },\n      hasTime = function hasTime() {\n        return isEnabled('h') || isEnabled('m') || isEnabled('s');\n      },\n      hasDate = function hasDate() {\n        return isEnabled('y') || isEnabled('M') || isEnabled('d');\n      },\n      getDatePickerTemplate = function getDatePickerTemplate() {\n        var headTemplate = $('<thead>').append($('<tr>').append($('<th>').addClass('prev').attr('data-action', 'previous').append($('<span>').addClass(options.icons.previous))).append($('<th>').addClass('picker-switch').attr('data-action', 'pickerSwitch').attr('colspan', options.calendarWeeks ? '6' : '5')).append($('<th>').addClass('next').attr('data-action', 'next').append($('<span>').addClass(options.icons.next)))),\n          contTemplate = $('<tbody>').append($('<tr>').append($('<td>').attr('colspan', options.calendarWeeks ? '8' : '7')));\n        return [$('<div>').addClass('datepicker-days').append($('<table>').addClass('table-condensed').append(headTemplate).append($('<tbody>'))), $('<div>').addClass('datepicker-months').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('<div>').addClass('datepicker-years').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('<div>').addClass('datepicker-decades').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone()))];\n      },\n      getTimePickerMainTemplate = function getTimePickerMainTemplate() {\n        var topRow = $('<tr>'),\n          middleRow = $('<tr>'),\n          bottomRow = $('<tr>');\n        if (isEnabled('h')) {\n          topRow.append($('<td>').append($('<a>').attr({\n            href: '#',\n            tabindex: '-1',\n            'title': options.tooltips.incrementHour\n          }).addClass('btn').attr('data-action', 'incrementHours').append($('<span>').addClass(options.icons.up))));\n          middleRow.append($('<td>').append($('<span>').addClass('timepicker-hour').attr({\n            'data-time-component': 'hours',\n            'title': options.tooltips.pickHour\n          }).attr('data-action', 'showHours')));\n          bottomRow.append($('<td>').append($('<a>').attr({\n            href: '#',\n            tabindex: '-1',\n            'title': options.tooltips.decrementHour\n          }).addClass('btn').attr('data-action', 'decrementHours').append($('<span>').addClass(options.icons.down))));\n        }\n        if (isEnabled('m')) {\n          if (isEnabled('h')) {\n            topRow.append($('<td>').addClass('separator'));\n            middleRow.append($('<td>').addClass('separator').html(':'));\n            bottomRow.append($('<td>').addClass('separator'));\n          }\n          topRow.append($('<td>').append($('<a>').attr({\n            href: '#',\n            tabindex: '-1',\n            'title': options.tooltips.incrementMinute\n          }).addClass('btn').attr('data-action', 'incrementMinutes').append($('<span>').addClass(options.icons.up))));\n          middleRow.append($('<td>').append($('<span>').addClass('timepicker-minute').attr({\n            'data-time-component': 'minutes',\n            'title': options.tooltips.pickMinute\n          }).attr('data-action', 'showMinutes')));\n          bottomRow.append($('<td>').append($('<a>').attr({\n            href: '#',\n            tabindex: '-1',\n            'title': options.tooltips.decrementMinute\n          }).addClass('btn').attr('data-action', 'decrementMinutes').append($('<span>').addClass(options.icons.down))));\n        }\n        if (isEnabled('s')) {\n          if (isEnabled('m')) {\n            topRow.append($('<td>').addClass('separator'));\n            middleRow.append($('<td>').addClass('separator').html(':'));\n            bottomRow.append($('<td>').addClass('separator'));\n          }\n          topRow.append($('<td>').append($('<a>').attr({\n            href: '#',\n            tabindex: '-1',\n            'title': options.tooltips.incrementSecond\n          }).addClass('btn').attr('data-action', 'incrementSeconds').append($('<span>').addClass(options.icons.up))));\n          middleRow.append($('<td>').append($('<span>').addClass('timepicker-second').attr({\n            'data-time-component': 'seconds',\n            'title': options.tooltips.pickSecond\n          }).attr('data-action', 'showSeconds')));\n          bottomRow.append($('<td>').append($('<a>').attr({\n            href: '#',\n            tabindex: '-1',\n            'title': options.tooltips.decrementSecond\n          }).addClass('btn').attr('data-action', 'decrementSeconds').append($('<span>').addClass(options.icons.down))));\n        }\n        if (!use24Hours) {\n          topRow.append($('<td>').addClass('separator'));\n          middleRow.append($('<td>').append($('<button>').addClass('btn btn-primary btn-round').attr({\n            'data-action': 'togglePeriod',\n            tabindex: '-1',\n            'title': options.tooltips.togglePeriod\n          })));\n          bottomRow.append($('<td>').addClass('separator'));\n        }\n        return $('<div>').addClass('timepicker-picker').append($('<table>').addClass('table-condensed').append([topRow, middleRow, bottomRow]));\n      },\n      getTimePickerTemplate = function getTimePickerTemplate() {\n        var hoursView = $('<div>').addClass('timepicker-hours').append($('<table>').addClass('table-condensed')),\n          minutesView = $('<div>').addClass('timepicker-minutes').append($('<table>').addClass('table-condensed')),\n          secondsView = $('<div>').addClass('timepicker-seconds').append($('<table>').addClass('table-condensed')),\n          ret = [getTimePickerMainTemplate()];\n        if (isEnabled('h')) {\n          ret.push(hoursView);\n        }\n        if (isEnabled('m')) {\n          ret.push(minutesView);\n        }\n        if (isEnabled('s')) {\n          ret.push(secondsView);\n        }\n        return ret;\n      },\n      getToolbar = function getToolbar() {\n        var row = [];\n        if (options.showTodayButton) {\n          row.push($('<td>').append($('<a>').attr({\n            'data-action': 'today',\n            'title': options.tooltips.today\n          }).append($('<span>').addClass(options.icons.today))));\n        }\n        if (!options.sideBySide && hasDate() && hasTime()) {\n          row.push($('<td>').append($('<a>').attr({\n            'data-action': 'togglePicker',\n            'title': options.tooltips.selectTime\n          }).append($('<span>').addClass(options.icons.time))));\n        }\n        if (options.showClear) {\n          row.push($('<td>').append($('<a>').attr({\n            'data-action': 'clear',\n            'title': options.tooltips.clear\n          }).append($('<span>').addClass(options.icons.clear))));\n        }\n        if (options.showClose) {\n          row.push($('<td>').append($('<a>').attr({\n            'data-action': 'close',\n            'title': options.tooltips.close\n          }).append($('<span>').addClass(options.icons.close))));\n        }\n        return $('<table>').addClass('table-condensed').append($('<tbody>').append($('<tr>').append(row)));\n      },\n      getTemplate = function getTemplate() {\n        var template = $('<div>').addClass('bootstrap-datetimepicker-widget dropdown-menu'),\n          dateView = $('<div>').addClass('datepicker').append(getDatePickerTemplate()),\n          timeView = $('<div>').addClass('timepicker').append(getTimePickerTemplate()),\n          content = $('<ul>').addClass('list-unstyled'),\n          toolbar = $('<li>').addClass('picker-switch' + (options.collapse ? ' accordion-toggle' : '')).append(getToolbar());\n        if (options.inline) {\n          template.removeClass('dropdown-menu');\n        }\n        if (use24Hours) {\n          template.addClass('usetwentyfour');\n        }\n        if (isEnabled('s') && !use24Hours) {\n          template.addClass('wider');\n        }\n        if (options.sideBySide && hasDate() && hasTime()) {\n          template.addClass('timepicker-sbs');\n          if (options.toolbarPlacement === 'top') {\n            template.append(toolbar);\n          }\n          template.append($('<div>').addClass('row').append(dateView.addClass('col-md-6')).append(timeView.addClass('col-md-6')));\n          if (options.toolbarPlacement === 'bottom') {\n            template.append(toolbar);\n          }\n          return template;\n        }\n        if (options.toolbarPlacement === 'top') {\n          content.append(toolbar);\n        }\n        if (hasDate()) {\n          content.append($('<li>').addClass(options.collapse && hasTime() ? 'collapse in' : '').append(dateView));\n        }\n        if (options.toolbarPlacement === 'default') {\n          content.append(toolbar);\n        }\n        if (hasTime()) {\n          content.append($('<li>').addClass(options.collapse && hasDate() ? 'collapse' : '').append(timeView));\n        }\n        if (options.toolbarPlacement === 'bottom') {\n          content.append(toolbar);\n        }\n        return template.append(content);\n      },\n      dataToOptions = function dataToOptions() {\n        var eData,\n          dataOptions = {};\n        if (element.is('input') || options.inline) {\n          eData = element.data();\n        } else {\n          eData = element.find('input').data();\n        }\n        if (eData.dateOptions && eData.dateOptions instanceof Object) {\n          dataOptions = $.extend(true, dataOptions, eData.dateOptions);\n        }\n        $.each(options, function (key) {\n          var attributeName = 'date' + key.charAt(0).toUpperCase() + key.slice(1);\n          if (eData[attributeName] !== undefined) {\n            dataOptions[key] = eData[attributeName];\n          }\n        });\n        return dataOptions;\n      },\n      place = function place() {\n        var position = (component || element).position(),\n          offset = (component || element).offset(),\n          vertical = options.widgetPositioning.vertical,\n          horizontal = options.widgetPositioning.horizontal,\n          parent;\n        if (options.widgetParent) {\n          parent = options.widgetParent.append(widget);\n        } else if (element.is('input')) {\n          parent = element.after(widget).parent();\n        } else if (options.inline) {\n          parent = element.append(widget);\n          return;\n        } else {\n          parent = element;\n          element.children().first().after(widget);\n        }\n\n        // Top and bottom logic\n        if (vertical === 'auto') {\n          if (offset.top + widget.height() * 1.5 >= $(window).height() + $(window).scrollTop() && widget.height() + element.outerHeight() < offset.top) {\n            vertical = 'top';\n          } else {\n            vertical = 'bottom';\n          }\n        }\n\n        // Left and right logic\n        if (horizontal === 'auto') {\n          if (parent.width() < offset.left + widget.outerWidth() / 2 && offset.left + widget.outerWidth() > $(window).width()) {\n            horizontal = 'right';\n          } else {\n            horizontal = 'left';\n          }\n        }\n        if (vertical === 'top') {\n          widget.addClass('top').removeClass('bottom');\n        } else {\n          widget.addClass('bottom').removeClass('top');\n        }\n        if (horizontal === 'right') {\n          widget.addClass('pull-right');\n        } else {\n          widget.removeClass('pull-right');\n        }\n\n        // find the first parent element that has a relative css positioning\n        if (parent.css('position') !== 'relative') {\n          parent = parent.parents().filter(function () {\n            return $(this).css('position') === 'relative';\n          }).first();\n        }\n        if (parent.length === 0) {\n          throw new Error('datetimepicker component should be placed within a relative positioned container');\n        }\n        widget.css({\n          top: vertical === 'top' ? 'auto' : position.top + element.outerHeight(),\n          bottom: vertical === 'top' ? position.top + element.outerHeight() : 'auto',\n          left: horizontal === 'left' ? parent === element ? 0 : position.left : 'auto',\n          right: horizontal === 'left' ? 'auto' : parent.outerWidth() - element.outerWidth() - (parent === element ? 0 : position.left)\n        });\n\n        // Creative Tim Changes - we add after 180 ms the \".open\" class, in this way the animations will be the same with the other dropdowns from the\n        setTimeout(function () {\n          widget.addClass('open');\n        }, 180);\n      },\n      notifyEvent = function notifyEvent(e) {\n        if (e.type === 'dp.change' && (e.date && e.date.isSame(e.oldDate) || !e.date && !e.oldDate)) {\n          return;\n        }\n        element.trigger(e);\n      },\n      viewUpdate = function viewUpdate(e) {\n        if (e === 'y') {\n          e = 'YYYY';\n        }\n        notifyEvent({\n          type: 'dp.update',\n          change: e,\n          viewDate: viewDate.clone()\n        });\n      },\n      showMode = function showMode(dir) {\n        if (!widget) {\n          return;\n        }\n        if (dir) {\n          currentViewMode = Math.max(minViewModeNumber, Math.min(3, currentViewMode + dir));\n        }\n        widget.find('.datepicker > div').hide().filter('.datepicker-' + datePickerModes[currentViewMode].clsName).show();\n      },\n      fillDow = function fillDow() {\n        var row = $('<tr>'),\n          currentDate = viewDate.clone().startOf('w').startOf('d');\n        if (options.calendarWeeks === true) {\n          row.append($('<th>').addClass('cw').text('#'));\n        }\n        while (currentDate.isBefore(viewDate.clone().endOf('w'))) {\n          row.append($('<th>').addClass('dow').text(currentDate.format('dd')));\n          currentDate.add(1, 'd');\n        }\n        widget.find('.datepicker-days thead').append(row);\n      },\n      isInDisabledDates = function isInDisabledDates(testDate) {\n        return options.disabledDates[testDate.format('YYYY-MM-DD')] === true;\n      },\n      isInEnabledDates = function isInEnabledDates(testDate) {\n        return options.enabledDates[testDate.format('YYYY-MM-DD')] === true;\n      },\n      isInDisabledHours = function isInDisabledHours(testDate) {\n        return options.disabledHours[testDate.format('H')] === true;\n      },\n      isInEnabledHours = function isInEnabledHours(testDate) {\n        return options.enabledHours[testDate.format('H')] === true;\n      },\n      isValid = function isValid(targetMoment, granularity) {\n        if (!targetMoment.isValid()) {\n          return false;\n        }\n        if (options.disabledDates && granularity === 'd' && isInDisabledDates(targetMoment)) {\n          return false;\n        }\n        if (options.enabledDates && granularity === 'd' && !isInEnabledDates(targetMoment)) {\n          return false;\n        }\n        if (options.minDate && targetMoment.isBefore(options.minDate, granularity)) {\n          return false;\n        }\n        if (options.maxDate && targetMoment.isAfter(options.maxDate, granularity)) {\n          return false;\n        }\n        if (options.daysOfWeekDisabled && granularity === 'd' && options.daysOfWeekDisabled.indexOf(targetMoment.day()) !== -1) {\n          return false;\n        }\n        if (options.disabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && isInDisabledHours(targetMoment)) {\n          return false;\n        }\n        if (options.enabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && !isInEnabledHours(targetMoment)) {\n          return false;\n        }\n        if (options.disabledTimeIntervals && (granularity === 'h' || granularity === 'm' || granularity === 's')) {\n          var found = false;\n          $.each(options.disabledTimeIntervals, function () {\n            if (targetMoment.isBetween(this[0], this[1])) {\n              found = true;\n              return false;\n            }\n          });\n          if (found) {\n            return false;\n          }\n        }\n        return true;\n      },\n      fillMonths = function fillMonths() {\n        var spans = [],\n          monthsShort = viewDate.clone().startOf('y').startOf('d');\n        while (monthsShort.isSame(viewDate, 'y')) {\n          spans.push($('<span>').attr('data-action', 'selectMonth').addClass('month').text(monthsShort.format('MMM')));\n          monthsShort.add(1, 'M');\n        }\n        widget.find('.datepicker-months td').empty().append(spans);\n      },\n      updateMonths = function updateMonths() {\n        var monthsView = widget.find('.datepicker-months'),\n          monthsViewHeader = monthsView.find('th'),\n          months = monthsView.find('tbody').find('span');\n        monthsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevYear);\n        monthsViewHeader.eq(1).attr('title', options.tooltips.selectYear);\n        monthsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextYear);\n        monthsView.find('.disabled').removeClass('disabled');\n        if (!isValid(viewDate.clone().subtract(1, 'y'), 'y')) {\n          monthsViewHeader.eq(0).addClass('disabled');\n        }\n        monthsViewHeader.eq(1).text(viewDate.year());\n        if (!isValid(viewDate.clone().add(1, 'y'), 'y')) {\n          monthsViewHeader.eq(2).addClass('disabled');\n        }\n        months.removeClass('active');\n        if (date.isSame(viewDate, 'y') && !unset) {\n          months.eq(date.month()).addClass('active');\n        }\n        months.each(function (index) {\n          if (!isValid(viewDate.clone().month(index), 'M')) {\n            $(this).addClass('disabled');\n          }\n        });\n      },\n      updateYears = function updateYears() {\n        var yearsView = widget.find('.datepicker-years'),\n          yearsViewHeader = yearsView.find('th'),\n          startYear = viewDate.clone().subtract(5, 'y'),\n          endYear = viewDate.clone().add(6, 'y'),\n          html = '';\n        yearsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevDecade);\n        yearsViewHeader.eq(1).attr('title', options.tooltips.selectDecade);\n        yearsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextDecade);\n        yearsView.find('.disabled').removeClass('disabled');\n        if (options.minDate && options.minDate.isAfter(startYear, 'y')) {\n          yearsViewHeader.eq(0).addClass('disabled');\n        }\n        yearsViewHeader.eq(1).text(startYear.year() + '-' + endYear.year());\n        if (options.maxDate && options.maxDate.isBefore(endYear, 'y')) {\n          yearsViewHeader.eq(2).addClass('disabled');\n        }\n        while (!startYear.isAfter(endYear, 'y')) {\n          html += '<span data-action=\"selectYear\" class=\"year' + (startYear.isSame(date, 'y') && !unset ? ' active' : '') + (!isValid(startYear, 'y') ? ' disabled' : '') + '\">' + startYear.year() + '</span>';\n          startYear.add(1, 'y');\n        }\n        yearsView.find('td').html(html);\n      },\n      updateDecades = function updateDecades() {\n        var decadesView = widget.find('.datepicker-decades'),\n          decadesViewHeader = decadesView.find('th'),\n          startDecade = moment({\n            y: viewDate.year() - viewDate.year() % 100 - 1\n          }),\n          endDecade = startDecade.clone().add(100, 'y'),\n          startedAt = startDecade.clone(),\n          html = '';\n        decadesViewHeader.eq(0).find('span').attr('title', options.tooltips.prevCentury);\n        decadesViewHeader.eq(2).find('span').attr('title', options.tooltips.nextCentury);\n        decadesView.find('.disabled').removeClass('disabled');\n        if (startDecade.isSame(moment({\n          y: 1900\n        })) || options.minDate && options.minDate.isAfter(startDecade, 'y')) {\n          decadesViewHeader.eq(0).addClass('disabled');\n        }\n        decadesViewHeader.eq(1).text(startDecade.year() + '-' + endDecade.year());\n        if (startDecade.isSame(moment({\n          y: 2000\n        })) || options.maxDate && options.maxDate.isBefore(endDecade, 'y')) {\n          decadesViewHeader.eq(2).addClass('disabled');\n        }\n        while (!startDecade.isAfter(endDecade, 'y')) {\n          html += '<span data-action=\"selectDecade\" class=\"decade' + (startDecade.isSame(date, 'y') ? ' active' : '') + (!isValid(startDecade, 'y') ? ' disabled' : '') + '\" data-selection=\"' + (startDecade.year() + 6) + '\">' + (startDecade.year() + 1) + ' - ' + (startDecade.year() + 12) + '</span>';\n          startDecade.add(12, 'y');\n        }\n        html += '<span></span><span></span><span></span>'; //push the dangling block over, at least this way it's even\n\n        decadesView.find('td').html(html);\n        decadesViewHeader.eq(1).text(startedAt.year() + 1 + '-' + startDecade.year());\n      },\n      fillDate = function fillDate() {\n        var daysView = widget.find('.datepicker-days'),\n          daysViewHeader = daysView.find('th'),\n          currentDate,\n          html = [],\n          row,\n          clsName,\n          i;\n        if (!hasDate()) {\n          return;\n        }\n        daysViewHeader.eq(0).find('span').attr('title', options.tooltips.prevMonth);\n        daysViewHeader.eq(1).attr('title', options.tooltips.selectMonth);\n        daysViewHeader.eq(2).find('span').attr('title', options.tooltips.nextMonth);\n        daysView.find('.disabled').removeClass('disabled');\n        daysViewHeader.eq(1).text(viewDate.format(options.dayViewHeaderFormat));\n        if (!isValid(viewDate.clone().subtract(1, 'M'), 'M')) {\n          daysViewHeader.eq(0).addClass('disabled');\n        }\n        if (!isValid(viewDate.clone().add(1, 'M'), 'M')) {\n          daysViewHeader.eq(2).addClass('disabled');\n        }\n        currentDate = viewDate.clone().startOf('M').startOf('w').startOf('d');\n        for (i = 0; i < 42; i++) {\n          //always display 42 days (should show 6 weeks)\n          if (currentDate.weekday() === 0) {\n            row = $('<tr>');\n            if (options.calendarWeeks) {\n              row.append('<td class=\"cw\">' + currentDate.week() + '</td>');\n            }\n            html.push(row);\n          }\n          clsName = '';\n          if (currentDate.isBefore(viewDate, 'M')) {\n            clsName += ' old';\n          }\n          if (currentDate.isAfter(viewDate, 'M')) {\n            clsName += ' new';\n          }\n          if (currentDate.isSame(date, 'd') && !unset) {\n            clsName += ' active';\n          }\n          if (!isValid(currentDate, 'd')) {\n            clsName += ' disabled';\n          }\n          if (currentDate.isSame(getMoment(), 'd')) {\n            clsName += ' today';\n          }\n          if (currentDate.day() === 0 || currentDate.day() === 6) {\n            clsName += ' weekend';\n          }\n\n          // Creative Tim - we added a div inside each td for design purposes\n\n          row.append('<td data-action=\"selectDay\" data-day=\"' + currentDate.format('L') + '\" class=\"day' + clsName + '\"><div>' + currentDate.date() + '</div></td>');\n          currentDate.add(1, 'd');\n        }\n        daysView.find('tbody').empty().append(html);\n        updateMonths();\n        updateYears();\n        updateDecades();\n      },\n      fillHours = function fillHours() {\n        var table = widget.find('.timepicker-hours table'),\n          currentHour = viewDate.clone().startOf('d'),\n          html = [],\n          row = $('<tr>');\n        if (viewDate.hour() > 11 && !use24Hours) {\n          currentHour.hour(12);\n        }\n        while (currentHour.isSame(viewDate, 'd') && (use24Hours || viewDate.hour() < 12 && currentHour.hour() < 12 || viewDate.hour() > 11)) {\n          if (currentHour.hour() % 4 === 0) {\n            row = $('<tr>');\n            html.push(row);\n          }\n\n          // Creative Tim - we added a div inside each class minute for design purposes\n\n          row.append('<td data-action=\"selectHour\" class=\"hour' + (!isValid(currentHour, 'h') ? ' disabled' : '') + '\"><div>' + currentHour.format(use24Hours ? 'HH' : 'hh') + '</div></td>');\n          currentHour.add(1, 'h');\n        }\n        table.empty().append(html);\n      },\n      fillMinutes = function fillMinutes() {\n        var table = widget.find('.timepicker-minutes table'),\n          currentMinute = viewDate.clone().startOf('h'),\n          html = [],\n          row = $('<tr>'),\n          step = options.stepping === 1 ? 5 : options.stepping;\n        while (viewDate.isSame(currentMinute, 'h')) {\n          if (currentMinute.minute() % (step * 4) === 0) {\n            row = $('<tr>');\n            html.push(row);\n          }\n\n          // Creative Tim - we added a div inside each class minute for design purposes\n\n          row.append('<td data-action=\"selectMinute\" class=\"minute' + (!isValid(currentMinute, 'm') ? ' disabled' : '') + '\"><div>' + currentMinute.format('mm') + '</div></td>');\n          currentMinute.add(step, 'm');\n        }\n        table.empty().append(html);\n      },\n      fillSeconds = function fillSeconds() {\n        var table = widget.find('.timepicker-seconds table'),\n          currentSecond = viewDate.clone().startOf('m'),\n          html = [],\n          row = $('<tr>');\n        while (viewDate.isSame(currentSecond, 'm')) {\n          if (currentSecond.second() % 20 === 0) {\n            row = $('<tr>');\n            html.push(row);\n          }\n\n          // Creative Tim - we added a div inside each class minute for design purposes\n\n          row.append('<td data-action=\"selectSecond\" class=\"second' + (!isValid(currentSecond, 's') ? ' disabled' : '') + '\"><div>' + currentSecond.format('ss') + '</div></td>');\n          currentSecond.add(5, 's');\n        }\n        table.empty().append(html);\n      },\n      fillTime = function fillTime() {\n        var toggle,\n          newDate,\n          timeComponents = widget.find('.timepicker span[data-time-component]');\n        if (!use24Hours) {\n          toggle = widget.find('.timepicker [data-action=togglePeriod]');\n          newDate = date.clone().add(date.hours() >= 12 ? -12 : 12, 'h');\n          toggle.text(date.format('A'));\n          if (isValid(newDate, 'h')) {\n            toggle.removeClass('disabled');\n          } else {\n            toggle.addClass('disabled');\n          }\n        }\n        timeComponents.filter('[data-time-component=hours]').text(date.format(use24Hours ? 'HH' : 'hh'));\n        timeComponents.filter('[data-time-component=minutes]').text(date.format('mm'));\n        timeComponents.filter('[data-time-component=seconds]').text(date.format('ss'));\n        fillHours();\n        fillMinutes();\n        fillSeconds();\n      },\n      update = function update() {\n        if (!widget) {\n          return;\n        }\n        fillDate();\n        fillTime();\n      },\n      setValue = function setValue(targetMoment) {\n        var oldDate = unset ? null : date;\n\n        // case of calling setValue(null or false)\n        if (!targetMoment) {\n          unset = true;\n          input.val('');\n          element.data('date', '');\n          notifyEvent({\n            type: 'dp.change',\n            date: false,\n            oldDate: oldDate\n          });\n          update();\n          return;\n        }\n        targetMoment = targetMoment.clone().locale(options.locale);\n        if (options.stepping !== 1) {\n          targetMoment.minutes(Math.round(targetMoment.minutes() / options.stepping) * options.stepping % 60).seconds(0);\n        }\n        if (isValid(targetMoment)) {\n          date = targetMoment;\n          viewDate = date.clone();\n          input.val(date.format(actualFormat));\n          element.data('date', date.format(actualFormat));\n          unset = false;\n          update();\n          notifyEvent({\n            type: 'dp.change',\n            date: date.clone(),\n            oldDate: oldDate\n          });\n        } else {\n          if (!options.keepInvalid) {\n            input.val(unset ? '' : date.format(actualFormat));\n          }\n          notifyEvent({\n            type: 'dp.error',\n            date: targetMoment\n          });\n        }\n      },\n      hide = function hide() {\n        ///<summary>Hides the widget. Possibly will emit dp.hide</summary>\n        var transitioning = false;\n        if (!widget) {\n          return picker;\n        }\n        // Ignore event if in the middle of a picker transition\n        widget.find('.collapse').each(function () {\n          var collapseData = $(this).data('collapse');\n          if (collapseData && collapseData.transitioning) {\n            transitioning = true;\n            return false;\n          }\n          return true;\n        });\n        if (transitioning) {\n          return picker;\n        }\n        if (component && component.hasClass('btn')) {\n          component.toggleClass('active');\n        }\n        $(window).off('resize', place);\n        widget.off('click', '[data-action]');\n        widget.off('mousedown', false);\n\n        // Creative Tim Changes - we remove the \".open\" class, then, fter 400 ms call the .hide() method, in this way the animations will be the same with the other dropdowns from the dashboard\n\n        widget.removeClass('open');\n        setTimeout(function () {\n          widget.hide();\n          widget.remove();\n          widget = false;\n          notifyEvent({\n            type: 'dp.hide',\n            date: date.clone()\n          });\n          input.blur();\n          return picker;\n        }, 400);\n      },\n      clear = function clear() {\n        setValue(null);\n      },\n      /********************************************************************************\n       *\n       * Widget UI interaction functions\n       *\n       ********************************************************************************/\n      actions = {\n        next: function next() {\n          var navFnc = datePickerModes[currentViewMode].navFnc;\n          viewDate.add(datePickerModes[currentViewMode].navStep, navFnc);\n          fillDate();\n          viewUpdate(navFnc);\n        },\n        previous: function previous() {\n          var navFnc = datePickerModes[currentViewMode].navFnc;\n          viewDate.subtract(datePickerModes[currentViewMode].navStep, navFnc);\n          fillDate();\n          viewUpdate(navFnc);\n        },\n        pickerSwitch: function pickerSwitch() {\n          showMode(1);\n        },\n        selectMonth: function selectMonth(e) {\n          var month = $(e.target).closest('tbody').find('span').index($(e.target));\n          viewDate.month(month);\n          if (currentViewMode === minViewModeNumber) {\n            setValue(date.clone().year(viewDate.year()).month(viewDate.month()));\n            if (!options.inline) {\n              hide();\n            }\n          } else {\n            showMode(-1);\n            fillDate();\n          }\n          viewUpdate('M');\n        },\n        selectYear: function selectYear(e) {\n          var year = parseInt($(e.target).text(), 10) || 0;\n          viewDate.year(year);\n          if (currentViewMode === minViewModeNumber) {\n            setValue(date.clone().year(viewDate.year()));\n            if (!options.inline) {\n              hide();\n            }\n          } else {\n            showMode(-1);\n            fillDate();\n          }\n          viewUpdate('YYYY');\n        },\n        selectDecade: function selectDecade(e) {\n          var year = parseInt($(e.target).data('selection'), 10) || 0;\n          viewDate.year(year);\n          if (currentViewMode === minViewModeNumber) {\n            setValue(date.clone().year(viewDate.year()));\n            if (!options.inline) {\n              hide();\n            }\n          } else {\n            showMode(-1);\n            fillDate();\n          }\n          viewUpdate('YYYY');\n        },\n        selectDay: function selectDay(e) {\n          var day = viewDate.clone();\n          if ($(e.target).is('.old')) {\n            day.subtract(1, 'M');\n          }\n          if ($(e.target).is('.new')) {\n            day.add(1, 'M');\n          }\n          setValue(day.date(parseInt($(e.target).text(), 10)));\n          if (!hasTime() && !options.keepOpen && !options.inline) {\n            hide();\n          }\n        },\n        incrementHours: function incrementHours() {\n          var newDate = date.clone().add(1, 'h');\n          if (isValid(newDate, 'h')) {\n            setValue(newDate);\n          }\n        },\n        incrementMinutes: function incrementMinutes() {\n          var newDate = date.clone().add(options.stepping, 'm');\n          if (isValid(newDate, 'm')) {\n            setValue(newDate);\n          }\n        },\n        incrementSeconds: function incrementSeconds() {\n          var newDate = date.clone().add(1, 's');\n          if (isValid(newDate, 's')) {\n            setValue(newDate);\n          }\n        },\n        decrementHours: function decrementHours() {\n          var newDate = date.clone().subtract(1, 'h');\n          if (isValid(newDate, 'h')) {\n            setValue(newDate);\n          }\n        },\n        decrementMinutes: function decrementMinutes() {\n          var newDate = date.clone().subtract(options.stepping, 'm');\n          if (isValid(newDate, 'm')) {\n            setValue(newDate);\n          }\n        },\n        decrementSeconds: function decrementSeconds() {\n          var newDate = date.clone().subtract(1, 's');\n          if (isValid(newDate, 's')) {\n            setValue(newDate);\n          }\n        },\n        togglePeriod: function togglePeriod() {\n          setValue(date.clone().add(date.hours() >= 12 ? -12 : 12, 'h'));\n        },\n        togglePicker: function togglePicker(e) {\n          var $this = $(e.target),\n            $parent = $this.closest('ul'),\n            expanded = $parent.find('.in'),\n            closed = $parent.find('.collapse:not(.in)'),\n            collapseData;\n          if (expanded && expanded.length) {\n            collapseData = expanded.data('collapse');\n            if (collapseData && collapseData.transitioning) {\n              return;\n            }\n            if (expanded.collapse) {\n              // if collapse plugin is available through bootstrap.js then use it\n              expanded.collapse('hide');\n              closed.collapse('show');\n            } else {\n              // otherwise just toggle in class on the two views\n              expanded.removeClass('in');\n              closed.addClass('in');\n            }\n            if ($this.is('span')) {\n              $this.toggleClass(options.icons.time + ' ' + options.icons.date);\n            } else {\n              $this.find('span').toggleClass(options.icons.time + ' ' + options.icons.date);\n            }\n\n            // NOTE: uncomment if toggled state will be restored in show()\n            //if (component) {\n            //    component.find('span').toggleClass(options.icons.time + ' ' + options.icons.date);\n            //}\n          }\n        },\n\n        showPicker: function showPicker() {\n          widget.find('.timepicker > div:not(.timepicker-picker)').hide();\n          widget.find('.timepicker .timepicker-picker').show();\n        },\n        showHours: function showHours() {\n          widget.find('.timepicker .timepicker-picker').hide();\n          widget.find('.timepicker .timepicker-hours').show();\n        },\n        showMinutes: function showMinutes() {\n          widget.find('.timepicker .timepicker-picker').hide();\n          widget.find('.timepicker .timepicker-minutes').show();\n        },\n        showSeconds: function showSeconds() {\n          widget.find('.timepicker .timepicker-picker').hide();\n          widget.find('.timepicker .timepicker-seconds').show();\n        },\n        selectHour: function selectHour(e) {\n          var hour = parseInt($(e.target).text(), 10);\n          if (!use24Hours) {\n            if (date.hours() >= 12) {\n              if (hour !== 12) {\n                hour += 12;\n              }\n            } else {\n              if (hour === 12) {\n                hour = 0;\n              }\n            }\n          }\n          setValue(date.clone().hours(hour));\n          actions.showPicker.call(picker);\n        },\n        selectMinute: function selectMinute(e) {\n          setValue(date.clone().minutes(parseInt($(e.target).text(), 10)));\n          actions.showPicker.call(picker);\n        },\n        selectSecond: function selectSecond(e) {\n          setValue(date.clone().seconds(parseInt($(e.target).text(), 10)));\n          actions.showPicker.call(picker);\n        },\n        clear: clear,\n        today: function today() {\n          var todaysDate = getMoment();\n          if (isValid(todaysDate, 'd')) {\n            setValue(todaysDate);\n          }\n        },\n        close: hide\n      },\n      doAction = function doAction(e) {\n        if ($(e.currentTarget).is('.disabled')) {\n          return false;\n        }\n        actions[$(e.currentTarget).data('action')].apply(picker, arguments);\n        return false;\n      },\n      show = function show() {\n        ///<summary>Shows the widget. Possibly will emit dp.show and dp.change</summary>\n        var currentMoment,\n          useCurrentGranularity = {\n            'year': function year(m) {\n              return m.month(0).date(1).hours(0).seconds(0).minutes(0);\n            },\n            'month': function month(m) {\n              return m.date(1).hours(0).seconds(0).minutes(0);\n            },\n            'day': function day(m) {\n              return m.hours(0).seconds(0).minutes(0);\n            },\n            'hour': function hour(m) {\n              return m.seconds(0).minutes(0);\n            },\n            'minute': function minute(m) {\n              return m.seconds(0);\n            }\n          };\n        if (input.prop('disabled') || !options.ignoreReadonly && input.prop('readonly') || widget) {\n          return picker;\n        }\n        if (input.val() !== undefined && input.val().trim().length !== 0) {\n          setValue(parseInputDate(input.val().trim()));\n        } else if (options.useCurrent && unset && (input.is('input') && input.val().trim().length === 0 || options.inline)) {\n          currentMoment = getMoment();\n          if (typeof options.useCurrent === 'string') {\n            currentMoment = useCurrentGranularity[options.useCurrent](currentMoment);\n          }\n          if (input.context.id != \"alDateFrom\" && input.context.id != 'alDateTo' || input.context.id != \"reDateFrom\" && input.context.id != 'reDateTo') setValue(currentMoment);\n        }\n        widget = getTemplate();\n        fillDow();\n        fillMonths();\n        widget.find('.timepicker-hours').hide();\n        widget.find('.timepicker-minutes').hide();\n        widget.find('.timepicker-seconds').hide();\n        update();\n        showMode();\n        $(window).on('resize', place);\n        widget.on('click', '[data-action]', doAction); // this handles clicks on the widget\n        widget.on('mousedown', false);\n        if (component && component.hasClass('btn')) {\n          component.toggleClass('active');\n        }\n        widget.show();\n        place();\n        if (options.focusOnShow && !input.is(':focus')) {\n          input.focus();\n        }\n        notifyEvent({\n          type: 'dp.show'\n        });\n        return picker;\n      },\n      toggle = function toggle() {\n        /// <summary>Shows or hides the widget</summary>\n        return widget ? hide() : show();\n      },\n      parseInputDate = function parseInputDate(inputDate) {\n        if (options.parseInputDate === undefined) {\n          if (moment.isMoment(inputDate) || inputDate instanceof Date) {\n            inputDate = moment(inputDate);\n          } else {\n            inputDate = getMoment(inputDate);\n          }\n        } else {\n          inputDate = options.parseInputDate(inputDate);\n        }\n        inputDate.locale(options.locale);\n        return inputDate;\n      },\n      keydown = function keydown(e) {\n        var handler = null,\n          index,\n          index2,\n          pressedKeys = [],\n          pressedModifiers = {},\n          currentKey = e.which,\n          keyBindKeys,\n          allModifiersPressed,\n          pressed = 'p';\n        keyState[currentKey] = pressed;\n        for (index in keyState) {\n          if (keyState.hasOwnProperty(index) && keyState[index] === pressed) {\n            pressedKeys.push(index);\n            if (parseInt(index, 10) !== currentKey) {\n              pressedModifiers[index] = true;\n            }\n          }\n        }\n        for (index in options.keyBinds) {\n          if (options.keyBinds.hasOwnProperty(index) && typeof options.keyBinds[index] === 'function') {\n            keyBindKeys = index.split(' ');\n            if (keyBindKeys.length === pressedKeys.length && keyMap[currentKey] === keyBindKeys[keyBindKeys.length - 1]) {\n              allModifiersPressed = true;\n              for (index2 = keyBindKeys.length - 2; index2 >= 0; index2--) {\n                if (!(keyMap[keyBindKeys[index2]] in pressedModifiers)) {\n                  allModifiersPressed = false;\n                  break;\n                }\n              }\n              if (allModifiersPressed) {\n                handler = options.keyBinds[index];\n                break;\n              }\n            }\n          }\n        }\n        if (handler) {\n          handler.call(picker, widget);\n          e.stopPropagation();\n          e.preventDefault();\n        }\n      },\n      keyup = function keyup(e) {\n        keyState[e.which] = 'r';\n        e.stopPropagation();\n        e.preventDefault();\n      },\n      change = function change(e) {\n        var val = $(e.target).val().trim(),\n          parsedDate = val ? parseInputDate(val) : null;\n        setValue(parsedDate);\n        e.stopImmediatePropagation();\n        return false;\n      },\n      attachDatePickerElementEvents = function attachDatePickerElementEvents() {\n        input.on({\n          'change': change,\n          'blur': options.debug ? '' : hide,\n          'keydown': keydown,\n          'keyup': keyup,\n          'focus': options.allowInputToggle ? show : ''\n        });\n        if (element.is('input')) {\n          input.on({\n            'focus': show\n          });\n        } else if (component) {\n          component.on('click', toggle);\n          component.on('mousedown', false);\n        }\n      },\n      detachDatePickerElementEvents = function detachDatePickerElementEvents() {\n        input.off({\n          'change': change,\n          'blur': blur,\n          'keydown': keydown,\n          'keyup': keyup,\n          'focus': options.allowInputToggle ? hide : ''\n        });\n        if (element.is('input')) {\n          input.off({\n            'focus': show\n          });\n        } else if (component) {\n          component.off('click', toggle);\n          component.off('mousedown', false);\n        }\n      },\n      indexGivenDates = function indexGivenDates(givenDatesArray) {\n        // Store given enabledDates and disabledDates as keys.\n        // This way we can check their existence in O(1) time instead of looping through whole array.\n        // (for example: options.enabledDates['2014-02-27'] === true)\n        var givenDatesIndexed = {};\n        $.each(givenDatesArray, function () {\n          var dDate = parseInputDate(this);\n          if (dDate.isValid()) {\n            givenDatesIndexed[dDate.format('YYYY-MM-DD')] = true;\n          }\n        });\n        return Object.keys(givenDatesIndexed).length ? givenDatesIndexed : false;\n      },\n      indexGivenHours = function indexGivenHours(givenHoursArray) {\n        // Store given enabledHours and disabledHours as keys.\n        // This way we can check their existence in O(1) time instead of looping through whole array.\n        // (for example: options.enabledHours['2014-02-27'] === true)\n        var givenHoursIndexed = {};\n        $.each(givenHoursArray, function () {\n          givenHoursIndexed[this] = true;\n        });\n        return Object.keys(givenHoursIndexed).length ? givenHoursIndexed : false;\n      },\n      initFormatting = function initFormatting() {\n        var format = options.format || 'L LT';\n        actualFormat = format.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput) {\n          var newinput = date.localeData().longDateFormat(formatInput) || formatInput;\n          return newinput.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput2) {\n            //temp fix for #740\n            return date.localeData().longDateFormat(formatInput2) || formatInput2;\n          });\n        });\n        parseFormats = options.extraFormats ? options.extraFormats.slice() : [];\n        if (parseFormats.indexOf(format) < 0 && parseFormats.indexOf(actualFormat) < 0) {\n          parseFormats.push(actualFormat);\n        }\n        use24Hours = actualFormat.toLowerCase().indexOf('a') < 1 && actualFormat.replace(/\\[.*?\\]/g, '').indexOf('h') < 1;\n        if (isEnabled('y')) {\n          minViewModeNumber = 2;\n        }\n        if (isEnabled('M')) {\n          minViewModeNumber = 1;\n        }\n        if (isEnabled('d')) {\n          minViewModeNumber = 0;\n        }\n        currentViewMode = Math.max(minViewModeNumber, currentViewMode);\n        if (!unset) {\n          setValue(date);\n        }\n      };\n\n    /********************************************************************************\n     *\n     * Public API functions\n     * =====================\n     *\n     * Important: Do not expose direct references to private objects or the options\n     * object to the outer world. Always return a clone when returning values or make\n     * a clone when setting a private variable.\n     *\n     ********************************************************************************/\n    picker.destroy = function () {\n      ///<summary>Destroys the widget and removes all attached event listeners</summary>\n      hide();\n      detachDatePickerElementEvents();\n      element.removeData('DateTimePicker');\n      element.removeData('date');\n    };\n    picker.toggle = toggle;\n    picker.show = show;\n    picker.hide = hide;\n    picker.disable = function () {\n      ///<summary>Disables the input element, the component is attached to, by adding a disabled=\"true\" attribute to it.\n      ///If the widget was visible before that call it is hidden. Possibly emits dp.hide</summary>\n      hide();\n      if (component && component.hasClass('btn')) {\n        component.addClass('disabled');\n      }\n      input.prop('disabled', true);\n      return picker;\n    };\n    picker.enable = function () {\n      ///<summary>Enables the input element, the component is attached to, by removing disabled attribute from it.</summary>\n      if (component && component.hasClass('btn')) {\n        component.removeClass('disabled');\n      }\n      input.prop('disabled', false);\n      return picker;\n    };\n    picker.ignoreReadonly = function (ignoreReadonly) {\n      if (arguments.length === 0) {\n        return options.ignoreReadonly;\n      }\n      if (typeof ignoreReadonly !== 'boolean') {\n        throw new TypeError('ignoreReadonly () expects a boolean parameter');\n      }\n      options.ignoreReadonly = ignoreReadonly;\n      return picker;\n    };\n    picker.options = function (newOptions) {\n      if (arguments.length === 0) {\n        return $.extend(true, {}, options);\n      }\n      if (!(newOptions instanceof Object)) {\n        throw new TypeError('options() options parameter should be an object');\n      }\n      $.extend(true, options, newOptions);\n      $.each(options, function (key, value) {\n        if (picker[key] !== undefined) {\n          picker[key](value);\n        } else {\n          throw new TypeError('option ' + key + ' is not recognized!');\n        }\n      });\n      return picker;\n    };\n    picker.date = function (newDate) {\n      ///<signature helpKeyword=\"$.fn.datetimepicker.date\">\n      ///<summary>Returns the component's model current date, a moment object or null if not set.</summary>\n      ///<returns type=\"Moment\">date.clone()</returns>\n      ///</signature>\n      ///<signature>\n      ///<summary>Sets the components model current moment to it. Passing a null value unsets the components model current moment. Parsing of the newDate parameter is made using moment library with the options.format and options.useStrict components configuration.</summary>\n      ///<param name=\"newDate\" locid=\"$.fn.datetimepicker.date_p:newDate\">Takes string, Date, moment, null parameter.</param>\n      ///</signature>\n      if (arguments.length === 0) {\n        if (unset) {\n          return null;\n        }\n        return date.clone();\n      }\n      if (newDate !== null && typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {\n        throw new TypeError('date() parameter must be one of [null, string, moment or Date]');\n      }\n      setValue(newDate === null ? null : parseInputDate(newDate));\n      return picker;\n    };\n    picker.format = function (newFormat) {\n      ///<summary>test su</summary>\n      ///<param name=\"newFormat\">info about para</param>\n      ///<returns type=\"string|boolean\">returns foo</returns>\n      if (arguments.length === 0) {\n        return options.format;\n      }\n      if (typeof newFormat !== 'string' && (typeof newFormat !== 'boolean' || newFormat !== false)) {\n        throw new TypeError('format() expects a sting or boolean:false parameter ' + newFormat);\n      }\n      options.format = newFormat;\n      if (actualFormat) {\n        initFormatting(); // reinit formatting\n      }\n\n      return picker;\n    };\n    picker.timeZone = function (newZone) {\n      if (arguments.length === 0) {\n        return options.timeZone;\n      }\n      options.timeZone = newZone;\n      return picker;\n    };\n    picker.dayViewHeaderFormat = function (newFormat) {\n      if (arguments.length === 0) {\n        return options.dayViewHeaderFormat;\n      }\n      if (typeof newFormat !== 'string') {\n        throw new TypeError('dayViewHeaderFormat() expects a string parameter');\n      }\n      options.dayViewHeaderFormat = newFormat;\n      return picker;\n    };\n    picker.extraFormats = function (formats) {\n      if (arguments.length === 0) {\n        return options.extraFormats;\n      }\n      if (formats !== false && !(formats instanceof Array)) {\n        throw new TypeError('extraFormats() expects an array or false parameter');\n      }\n      options.extraFormats = formats;\n      if (parseFormats) {\n        initFormatting(); // reinit formatting\n      }\n\n      return picker;\n    };\n    picker.disabledDates = function (dates) {\n      ///<signature helpKeyword=\"$.fn.datetimepicker.disabledDates\">\n      ///<summary>Returns an array with the currently set disabled dates on the component.</summary>\n      ///<returns type=\"array\">options.disabledDates</returns>\n      ///</signature>\n      ///<signature>\n      ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of\n      ///options.enabledDates if such exist.</summary>\n      ///<param name=\"dates\" locid=\"$.fn.datetimepicker.disabledDates_p:dates\">Takes an [ string or Date or moment ] of values and allows the user to select only from those days.</param>\n      ///</signature>\n      if (arguments.length === 0) {\n        return options.disabledDates ? $.extend({}, options.disabledDates) : options.disabledDates;\n      }\n      if (!dates) {\n        options.disabledDates = false;\n        update();\n        return picker;\n      }\n      if (!(dates instanceof Array)) {\n        throw new TypeError('disabledDates() expects an array parameter');\n      }\n      options.disabledDates = indexGivenDates(dates);\n      options.enabledDates = false;\n      update();\n      return picker;\n    };\n    picker.enabledDates = function (dates) {\n      ///<signature helpKeyword=\"$.fn.datetimepicker.enabledDates\">\n      ///<summary>Returns an array with the currently set enabled dates on the component.</summary>\n      ///<returns type=\"array\">options.enabledDates</returns>\n      ///</signature>\n      ///<signature>\n      ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of options.disabledDates if such exist.</summary>\n      ///<param name=\"dates\" locid=\"$.fn.datetimepicker.enabledDates_p:dates\">Takes an [ string or Date or moment ] of values and allows the user to select only from those days.</param>\n      ///</signature>\n      if (arguments.length === 0) {\n        return options.enabledDates ? $.extend({}, options.enabledDates) : options.enabledDates;\n      }\n      if (!dates) {\n        options.enabledDates = false;\n        update();\n        return picker;\n      }\n      if (!(dates instanceof Array)) {\n        throw new TypeError('enabledDates() expects an array parameter');\n      }\n      options.enabledDates = indexGivenDates(dates);\n      options.disabledDates = false;\n      update();\n      return picker;\n    };\n    picker.daysOfWeekDisabled = function (daysOfWeekDisabled) {\n      if (arguments.length === 0) {\n        return options.daysOfWeekDisabled.splice(0);\n      }\n      if (typeof daysOfWeekDisabled === 'boolean' && !daysOfWeekDisabled) {\n        options.daysOfWeekDisabled = false;\n        update();\n        return picker;\n      }\n      if (!(daysOfWeekDisabled instanceof Array)) {\n        throw new TypeError('daysOfWeekDisabled() expects an array parameter');\n      }\n      options.daysOfWeekDisabled = daysOfWeekDisabled.reduce(function (previousValue, currentValue) {\n        currentValue = parseInt(currentValue, 10);\n        if (currentValue > 6 || currentValue < 0 || isNaN(currentValue)) {\n          return previousValue;\n        }\n        if (previousValue.indexOf(currentValue) === -1) {\n          previousValue.push(currentValue);\n        }\n        return previousValue;\n      }, []).sort();\n      if (options.useCurrent && !options.keepInvalid) {\n        var tries = 0;\n        while (!isValid(date, 'd')) {\n          date.add(1, 'd');\n          if (tries === 7) {\n            throw 'Tried 7 times to find a valid date';\n          }\n          tries++;\n        }\n        setValue(date);\n      }\n      update();\n      return picker;\n    };\n    picker.maxDate = function (maxDate) {\n      if (arguments.length === 0) {\n        return options.maxDate ? options.maxDate.clone() : options.maxDate;\n      }\n      if (typeof maxDate === 'boolean' && maxDate === false) {\n        options.maxDate = false;\n        update();\n        return picker;\n      }\n      if (typeof maxDate === 'string') {\n        if (maxDate === 'now' || maxDate === 'moment') {\n          maxDate = getMoment();\n        }\n      }\n      var parsedDate = parseInputDate(maxDate);\n      if (!parsedDate.isValid()) {\n        throw new TypeError('maxDate() Could not parse date parameter: ' + maxDate);\n      }\n      if (options.minDate && parsedDate.isBefore(options.minDate)) {\n        throw new TypeError('maxDate() date parameter is before options.minDate: ' + parsedDate.format(actualFormat));\n      }\n      options.maxDate = parsedDate;\n      if (options.useCurrent && !options.keepInvalid && date.isAfter(maxDate)) {\n        setValue(options.maxDate);\n      }\n      if (viewDate.isAfter(parsedDate)) {\n        viewDate = parsedDate.clone().subtract(options.stepping, 'm');\n      }\n      update();\n      return picker;\n    };\n    picker.minDate = function (minDate) {\n      if (arguments.length === 0) {\n        return options.minDate ? options.minDate.clone() : options.minDate;\n      }\n      if (typeof minDate === 'boolean' && minDate === false) {\n        options.minDate = false;\n        update();\n        return picker;\n      }\n      if (typeof minDate === 'string') {\n        if (minDate === 'now' || minDate === 'moment') {\n          minDate = getMoment();\n        }\n      }\n      var parsedDate = parseInputDate(minDate);\n      if (!parsedDate.isValid()) {\n        throw new TypeError('minDate() Could not parse date parameter: ' + minDate);\n      }\n      if (options.maxDate && parsedDate.isAfter(options.maxDate)) {\n        throw new TypeError('minDate() date parameter is after options.maxDate: ' + parsedDate.format(actualFormat));\n      }\n      options.minDate = parsedDate;\n      if (options.useCurrent && !options.keepInvalid && date.isBefore(minDate)) {\n        setValue(options.minDate);\n      }\n      if (viewDate.isBefore(parsedDate)) {\n        viewDate = parsedDate.clone().add(options.stepping, 'm');\n      }\n      update();\n      return picker;\n    };\n    picker.defaultDate = function (defaultDate) {\n      ///<signature helpKeyword=\"$.fn.datetimepicker.defaultDate\">\n      ///<summary>Returns a moment with the options.defaultDate option configuration or false if not set</summary>\n      ///<returns type=\"Moment\">date.clone()</returns>\n      ///</signature>\n      ///<signature>\n      ///<summary>Will set the picker's inital date. If a boolean:false value is passed the options.defaultDate parameter is cleared.</summary>\n      ///<param name=\"defaultDate\" locid=\"$.fn.datetimepicker.defaultDate_p:defaultDate\">Takes a string, Date, moment, boolean:false</param>\n      ///</signature>\n      if (arguments.length === 0) {\n        return options.defaultDate ? options.defaultDate.clone() : options.defaultDate;\n      }\n      if (!defaultDate) {\n        options.defaultDate = false;\n        return picker;\n      }\n      if (typeof defaultDate === 'string') {\n        if (defaultDate === 'now' || defaultDate === 'moment') {\n          defaultDate = getMoment();\n        }\n      }\n      var parsedDate = parseInputDate(defaultDate);\n      if (!parsedDate.isValid()) {\n        throw new TypeError('defaultDate() Could not parse date parameter: ' + defaultDate);\n      }\n      if (!isValid(parsedDate)) {\n        throw new TypeError('defaultDate() date passed is invalid according to component setup validations');\n      }\n      options.defaultDate = parsedDate;\n      if (options.defaultDate && options.inline || input.val().trim() === '') {\n        setValue(options.defaultDate);\n      }\n      return picker;\n    };\n    picker.locale = function (locale) {\n      if (arguments.length === 0) {\n        return options.locale;\n      }\n      if (!moment.localeData(locale)) {\n        throw new TypeError('locale() locale ' + locale + ' is not loaded from moment locales!');\n      }\n      options.locale = locale;\n      date.locale(options.locale);\n      viewDate.locale(options.locale);\n      if (actualFormat) {\n        initFormatting(); // reinit formatting\n      }\n\n      if (widget) {\n        hide();\n        show();\n      }\n      return picker;\n    };\n    picker.stepping = function (stepping) {\n      if (arguments.length === 0) {\n        return options.stepping;\n      }\n      stepping = parseInt(stepping, 10);\n      if (isNaN(stepping) || stepping < 1) {\n        stepping = 1;\n      }\n      options.stepping = stepping;\n      return picker;\n    };\n    picker.useCurrent = function (useCurrent) {\n      var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute'];\n      if (arguments.length === 0) {\n        return options.useCurrent;\n      }\n      if (typeof useCurrent !== 'boolean' && typeof useCurrent !== 'string') {\n        throw new TypeError('useCurrent() expects a boolean or string parameter');\n      }\n      if (typeof useCurrent === 'string' && useCurrentOptions.indexOf(useCurrent.toLowerCase()) === -1) {\n        throw new TypeError('useCurrent() expects a string parameter of ' + useCurrentOptions.join(', '));\n      }\n      options.useCurrent = useCurrent;\n      return picker;\n    };\n    picker.collapse = function (collapse) {\n      if (arguments.length === 0) {\n        return options.collapse;\n      }\n      if (typeof collapse !== 'boolean') {\n        throw new TypeError('collapse() expects a boolean parameter');\n      }\n      if (options.collapse === collapse) {\n        return picker;\n      }\n      options.collapse = collapse;\n      if (widget) {\n        hide();\n        show();\n      }\n      return picker;\n    };\n    picker.icons = function (icons) {\n      if (arguments.length === 0) {\n        return $.extend({}, options.icons);\n      }\n      if (!(icons instanceof Object)) {\n        throw new TypeError('icons() expects parameter to be an Object');\n      }\n      $.extend(options.icons, icons);\n      if (widget) {\n        hide();\n        show();\n      }\n      return picker;\n    };\n    picker.tooltips = function (tooltips) {\n      if (arguments.length === 0) {\n        return $.extend({}, options.tooltips);\n      }\n      if (!(tooltips instanceof Object)) {\n        throw new TypeError('tooltips() expects parameter to be an Object');\n      }\n      $.extend(options.tooltips, tooltips);\n      if (widget) {\n        hide();\n        show();\n      }\n      return picker;\n    };\n    picker.useStrict = function (useStrict) {\n      if (arguments.length === 0) {\n        return options.useStrict;\n      }\n      if (typeof useStrict !== 'boolean') {\n        throw new TypeError('useStrict() expects a boolean parameter');\n      }\n      options.useStrict = useStrict;\n      return picker;\n    };\n    picker.sideBySide = function (sideBySide) {\n      if (arguments.length === 0) {\n        return options.sideBySide;\n      }\n      if (typeof sideBySide !== 'boolean') {\n        throw new TypeError('sideBySide() expects a boolean parameter');\n      }\n      options.sideBySide = sideBySide;\n      if (widget) {\n        hide();\n        show();\n      }\n      return picker;\n    };\n    picker.viewMode = function (viewMode) {\n      if (arguments.length === 0) {\n        return options.viewMode;\n      }\n      if (typeof viewMode !== 'string') {\n        throw new TypeError('viewMode() expects a string parameter');\n      }\n      if (viewModes.indexOf(viewMode) === -1) {\n        throw new TypeError('viewMode() parameter must be one of (' + viewModes.join(', ') + ') value');\n      }\n      options.viewMode = viewMode;\n      currentViewMode = Math.max(viewModes.indexOf(viewMode), minViewModeNumber);\n      showMode();\n      return picker;\n    };\n    picker.toolbarPlacement = function (toolbarPlacement) {\n      if (arguments.length === 0) {\n        return options.toolbarPlacement;\n      }\n      if (typeof toolbarPlacement !== 'string') {\n        throw new TypeError('toolbarPlacement() expects a string parameter');\n      }\n      if (toolbarPlacements.indexOf(toolbarPlacement) === -1) {\n        throw new TypeError('toolbarPlacement() parameter must be one of (' + toolbarPlacements.join(', ') + ') value');\n      }\n      options.toolbarPlacement = toolbarPlacement;\n      if (widget) {\n        hide();\n        show();\n      }\n      return picker;\n    };\n    picker.widgetPositioning = function (widgetPositioning) {\n      if (arguments.length === 0) {\n        return $.extend({}, options.widgetPositioning);\n      }\n      if ({}.toString.call(widgetPositioning) !== '[object Object]') {\n        throw new TypeError('widgetPositioning() expects an object variable');\n      }\n      if (widgetPositioning.horizontal) {\n        if (typeof widgetPositioning.horizontal !== 'string') {\n          throw new TypeError('widgetPositioning() horizontal variable must be a string');\n        }\n        widgetPositioning.horizontal = widgetPositioning.horizontal.toLowerCase();\n        if (horizontalModes.indexOf(widgetPositioning.horizontal) === -1) {\n          throw new TypeError('widgetPositioning() expects horizontal parameter to be one of (' + horizontalModes.join(', ') + ')');\n        }\n        options.widgetPositioning.horizontal = widgetPositioning.horizontal;\n      }\n      if (widgetPositioning.vertical) {\n        if (typeof widgetPositioning.vertical !== 'string') {\n          throw new TypeError('widgetPositioning() vertical variable must be a string');\n        }\n        widgetPositioning.vertical = widgetPositioning.vertical.toLowerCase();\n        if (verticalModes.indexOf(widgetPositioning.vertical) === -1) {\n          throw new TypeError('widgetPositioning() expects vertical parameter to be one of (' + verticalModes.join(', ') + ')');\n        }\n        options.widgetPositioning.vertical = widgetPositioning.vertical;\n      }\n      update();\n      return picker;\n    };\n    picker.calendarWeeks = function (calendarWeeks) {\n      if (arguments.length === 0) {\n        return options.calendarWeeks;\n      }\n      if (typeof calendarWeeks !== 'boolean') {\n        throw new TypeError('calendarWeeks() expects parameter to be a boolean value');\n      }\n      options.calendarWeeks = calendarWeeks;\n      update();\n      return picker;\n    };\n    picker.showTodayButton = function (showTodayButton) {\n      if (arguments.length === 0) {\n        return options.showTodayButton;\n      }\n      if (typeof showTodayButton !== 'boolean') {\n        throw new TypeError('showTodayButton() expects a boolean parameter');\n      }\n      options.showTodayButton = showTodayButton;\n      if (widget) {\n        hide();\n        show();\n      }\n      return picker;\n    };\n    picker.showClear = function (showClear) {\n      if (arguments.length === 0) {\n        return options.showClear;\n      }\n      if (typeof showClear !== 'boolean') {\n        throw new TypeError('showClear() expects a boolean parameter');\n      }\n      options.showClear = showClear;\n      if (widget) {\n        hide();\n        show();\n      }\n      return picker;\n    };\n    picker.widgetParent = function (widgetParent) {\n      if (arguments.length === 0) {\n        return options.widgetParent;\n      }\n      if (typeof widgetParent === 'string') {\n        widgetParent = $(widgetParent);\n      }\n      if (widgetParent !== null && typeof widgetParent !== 'string' && !(widgetParent instanceof $)) {\n        throw new TypeError('widgetParent() expects a string or a jQuery object parameter');\n      }\n      options.widgetParent = widgetParent;\n      if (widget) {\n        hide();\n        show();\n      }\n      return picker;\n    };\n    picker.keepOpen = function (keepOpen) {\n      if (arguments.length === 0) {\n        return options.keepOpen;\n      }\n      if (typeof keepOpen !== 'boolean') {\n        throw new TypeError('keepOpen() expects a boolean parameter');\n      }\n      options.keepOpen = keepOpen;\n      return picker;\n    };\n    picker.focusOnShow = function (focusOnShow) {\n      if (arguments.length === 0) {\n        return options.focusOnShow;\n      }\n      if (typeof focusOnShow !== 'boolean') {\n        throw new TypeError('focusOnShow() expects a boolean parameter');\n      }\n      options.focusOnShow = focusOnShow;\n      return picker;\n    };\n    picker.inline = function (inline) {\n      if (arguments.length === 0) {\n        return options.inline;\n      }\n      if (typeof inline !== 'boolean') {\n        throw new TypeError('inline() expects a boolean parameter');\n      }\n      options.inline = inline;\n      return picker;\n    };\n    picker.clear = function () {\n      clear();\n      return picker;\n    };\n    picker.keyBinds = function (keyBinds) {\n      options.keyBinds = keyBinds;\n      return picker;\n    };\n    picker.getMoment = function (d) {\n      return getMoment(d);\n    };\n    picker.debug = function (debug) {\n      if (typeof debug !== 'boolean') {\n        throw new TypeError('debug() expects a boolean parameter');\n      }\n      options.debug = debug;\n      return picker;\n    };\n    picker.allowInputToggle = function (allowInputToggle) {\n      if (arguments.length === 0) {\n        return options.allowInputToggle;\n      }\n      if (typeof allowInputToggle !== 'boolean') {\n        throw new TypeError('allowInputToggle() expects a boolean parameter');\n      }\n      options.allowInputToggle = allowInputToggle;\n      return picker;\n    };\n    picker.showClose = function (showClose) {\n      if (arguments.length === 0) {\n        return options.showClose;\n      }\n      if (typeof showClose !== 'boolean') {\n        throw new TypeError('showClose() expects a boolean parameter');\n      }\n      options.showClose = showClose;\n      return picker;\n    };\n    picker.keepInvalid = function (keepInvalid) {\n      if (arguments.length === 0) {\n        return options.keepInvalid;\n      }\n      if (typeof keepInvalid !== 'boolean') {\n        throw new TypeError('keepInvalid() expects a boolean parameter');\n      }\n      options.keepInvalid = keepInvalid;\n      return picker;\n    };\n    picker.datepickerInput = function (datepickerInput) {\n      if (arguments.length === 0) {\n        return options.datepickerInput;\n      }\n      if (typeof datepickerInput !== 'string') {\n        throw new TypeError('datepickerInput() expects a string parameter');\n      }\n      options.datepickerInput = datepickerInput;\n      return picker;\n    };\n    picker.parseInputDate = function (parseInputDate) {\n      if (arguments.length === 0) {\n        return options.parseInputDate;\n      }\n      if (typeof parseInputDate !== 'function') {\n        throw new TypeError('parseInputDate() sholud be as function');\n      }\n      options.parseInputDate = parseInputDate;\n      return picker;\n    };\n    picker.disabledTimeIntervals = function (disabledTimeIntervals) {\n      ///<signature helpKeyword=\"$.fn.datetimepicker.disabledTimeIntervals\">\n      ///<summary>Returns an array with the currently set disabled dates on the component.</summary>\n      ///<returns type=\"array\">options.disabledTimeIntervals</returns>\n      ///</signature>\n      ///<signature>\n      ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of\n      ///options.enabledDates if such exist.</summary>\n      ///<param name=\"dates\" locid=\"$.fn.datetimepicker.disabledTimeIntervals_p:dates\">Takes an [ string or Date or moment ] of values and allows the user to select only from those days.</param>\n      ///</signature>\n      if (arguments.length === 0) {\n        return options.disabledTimeIntervals ? $.extend({}, options.disabledTimeIntervals) : options.disabledTimeIntervals;\n      }\n      if (!disabledTimeIntervals) {\n        options.disabledTimeIntervals = false;\n        update();\n        return picker;\n      }\n      if (!(disabledTimeIntervals instanceof Array)) {\n        throw new TypeError('disabledTimeIntervals() expects an array parameter');\n      }\n      options.disabledTimeIntervals = disabledTimeIntervals;\n      update();\n      return picker;\n    };\n    picker.disabledHours = function (hours) {\n      ///<signature helpKeyword=\"$.fn.datetimepicker.disabledHours\">\n      ///<summary>Returns an array with the currently set disabled hours on the component.</summary>\n      ///<returns type=\"array\">options.disabledHours</returns>\n      ///</signature>\n      ///<signature>\n      ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of\n      ///options.enabledHours if such exist.</summary>\n      ///<param name=\"hours\" locid=\"$.fn.datetimepicker.disabledHours_p:hours\">Takes an [ int ] of values and disallows the user to select only from those hours.</param>\n      ///</signature>\n      if (arguments.length === 0) {\n        return options.disabledHours ? $.extend({}, options.disabledHours) : options.disabledHours;\n      }\n      if (!hours) {\n        options.disabledHours = false;\n        update();\n        return picker;\n      }\n      if (!(hours instanceof Array)) {\n        throw new TypeError('disabledHours() expects an array parameter');\n      }\n      options.disabledHours = indexGivenHours(hours);\n      options.enabledHours = false;\n      if (options.useCurrent && !options.keepInvalid) {\n        var tries = 0;\n        while (!isValid(date, 'h')) {\n          date.add(1, 'h');\n          if (tries === 24) {\n            throw 'Tried 24 times to find a valid date';\n          }\n          tries++;\n        }\n        setValue(date);\n      }\n      update();\n      return picker;\n    };\n    picker.enabledHours = function (hours) {\n      ///<signature helpKeyword=\"$.fn.datetimepicker.enabledHours\">\n      ///<summary>Returns an array with the currently set enabled hours on the component.</summary>\n      ///<returns type=\"array\">options.enabledHours</returns>\n      ///</signature>\n      ///<signature>\n      ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of options.disabledHours if such exist.</summary>\n      ///<param name=\"hours\" locid=\"$.fn.datetimepicker.enabledHours_p:hours\">Takes an [ int ] of values and allows the user to select only from those hours.</param>\n      ///</signature>\n      if (arguments.length === 0) {\n        return options.enabledHours ? $.extend({}, options.enabledHours) : options.enabledHours;\n      }\n      if (!hours) {\n        options.enabledHours = false;\n        update();\n        return picker;\n      }\n      if (!(hours instanceof Array)) {\n        throw new TypeError('enabledHours() expects an array parameter');\n      }\n      options.enabledHours = indexGivenHours(hours);\n      options.disabledHours = false;\n      if (options.useCurrent && !options.keepInvalid) {\n        var tries = 0;\n        while (!isValid(date, 'h')) {\n          date.add(1, 'h');\n          if (tries === 24) {\n            throw 'Tried 24 times to find a valid date';\n          }\n          tries++;\n        }\n        setValue(date);\n      }\n      update();\n      return picker;\n    };\n    picker.viewDate = function (newDate) {\n      ///<signature helpKeyword=\"$.fn.datetimepicker.viewDate\">\n      ///<summary>Returns the component's model current viewDate, a moment object or null if not set.</summary>\n      ///<returns type=\"Moment\">viewDate.clone()</returns>\n      ///</signature>\n      ///<signature>\n      ///<summary>Sets the components model current moment to it. Passing a null value unsets the components model current moment. Parsing of the newDate parameter is made using moment library with the options.format and options.useStrict components configuration.</summary>\n      ///<param name=\"newDate\" locid=\"$.fn.datetimepicker.date_p:newDate\">Takes string, viewDate, moment, null parameter.</param>\n      ///</signature>\n      if (arguments.length === 0) {\n        return viewDate.clone();\n      }\n      if (!newDate) {\n        viewDate = date.clone();\n        return picker;\n      }\n      if (typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {\n        throw new TypeError('viewDate() parameter must be one of [string, moment or Date]');\n      }\n      viewDate = parseInputDate(newDate);\n      viewUpdate();\n      return picker;\n    };\n\n    // initializing element and component attributes\n    if (element.is('input')) {\n      input = element;\n    } else {\n      input = element.find(options.datepickerInput);\n      if (input.size() === 0) {\n        input = element.find('input');\n      } else if (!input.is('input')) {\n        throw new Error('CSS class \"' + options.datepickerInput + '\" cannot be applied to non input element');\n      }\n    }\n    if (element.hasClass('input-group')) {\n      // in case there is more then one 'input-group-addon' Issue #48\n      if (element.find('.datepickerbutton').size() === 0) {\n        component = element.find('.input-group-addon');\n      } else {\n        component = element.find('.datepickerbutton');\n      }\n    }\n    if (!options.inline && !input.is('input')) {\n      throw new Error('Could not initialize DateTimePicker without an input element');\n    }\n\n    // Set defaults for date here now instead of in var declaration\n    date = getMoment();\n    viewDate = date.clone();\n    $.extend(true, options, dataToOptions());\n    picker.options(options);\n    initFormatting();\n    attachDatePickerElementEvents();\n    if (input.prop('disabled')) {\n      picker.disable();\n    }\n    if (input.is('input') && input.val().trim().length !== 0) {\n      setValue(parseInputDate(input.val().trim()));\n    } else if (options.defaultDate && input.attr('placeholder') === undefined) {\n      setValue(options.defaultDate);\n    }\n    if (options.inline) {\n      show();\n    }\n    return picker;\n  };\n\n  /********************************************************************************\n   *\n   * jQuery plugin constructor and defaults object\n   *\n   ********************************************************************************/\n\n  $.fn.datetimepicker = function (options) {\n    return this.each(function () {\n      var $this = $(this);\n      if (!$this.data('DateTimePicker')) {\n        // create a private copy of the defaults object\n        options = $.extend(true, {}, $.fn.datetimepicker.defaults, options);\n        $this.data('DateTimePicker', dateTimePicker($this, options));\n      }\n    });\n  };\n  $.fn.datetimepicker.defaults = {\n    timeZone: 'Etc/UTC',\n    format: false,\n    dayViewHeaderFormat: 'MMMM YYYY',\n    extraFormats: false,\n    stepping: 1,\n    minDate: false,\n    maxDate: false,\n    useCurrent: true,\n    collapse: true,\n    locale: moment.locale(),\n    defaultDate: false,\n    disabledDates: false,\n    enabledDates: false,\n    icons: {\n      time: 'glyphicon glyphicon-time',\n      date: 'glyphicon glyphicon-calendar',\n      up: 'glyphicon glyphicon-chevron-up',\n      down: 'glyphicon glyphicon-chevron-down',\n      previous: 'glyphicon glyphicon-chevron-left',\n      next: 'glyphicon glyphicon-chevron-right',\n      today: 'glyphicon glyphicon-screenshot',\n      clear: 'glyphicon glyphicon-trash',\n      close: 'glyphicon glyphicon-remove'\n    },\n    tooltips: {\n      today: 'Go to today',\n      clear: 'Clear selection',\n      close: 'Close the picker',\n      selectMonth: 'Select Month',\n      prevMonth: 'Previous Month',\n      nextMonth: 'Next Month',\n      selectYear: 'Select Year',\n      prevYear: 'Previous Year',\n      nextYear: 'Next Year',\n      selectDecade: 'Select Decade',\n      prevDecade: 'Previous Decade',\n      nextDecade: 'Next Decade',\n      prevCentury: 'Previous Century',\n      nextCentury: 'Next Century',\n      pickHour: 'Pick Hour',\n      incrementHour: 'Increment Hour',\n      decrementHour: 'Decrement Hour',\n      pickMinute: 'Pick Minute',\n      incrementMinute: 'Increment Minute',\n      decrementMinute: 'Decrement Minute',\n      pickSecond: 'Pick Second',\n      incrementSecond: 'Increment Second',\n      decrementSecond: 'Decrement Second',\n      togglePeriod: 'Toggle Period',\n      selectTime: 'Select Time'\n    },\n    useStrict: false,\n    sideBySide: false,\n    daysOfWeekDisabled: false,\n    calendarWeeks: false,\n    viewMode: 'days',\n    toolbarPlacement: 'default',\n    showTodayButton: false,\n    showClear: false,\n    showClose: false,\n    widgetPositioning: {\n      horizontal: 'auto',\n      vertical: 'auto'\n    },\n    widgetParent: null,\n    ignoreReadonly: false,\n    keepOpen: false,\n    focusOnShow: true,\n    inline: false,\n    keepInvalid: false,\n    datepickerInput: '.datepickerinput',\n    keyBinds: {\n      up: function up(widget) {\n        if (!widget) {\n          return;\n        }\n        var d = this.date() || this.getMoment();\n        if (widget.find('.datepicker').is(':visible')) {\n          this.date(d.clone().subtract(7, 'd'));\n        } else {\n          this.date(d.clone().add(this.stepping(), 'm'));\n        }\n      },\n      down: function down(widget) {\n        if (!widget) {\n          this.show();\n          return;\n        }\n        var d = this.date() || this.getMoment();\n        if (widget.find('.datepicker').is(':visible')) {\n          this.date(d.clone().add(7, 'd'));\n        } else {\n          this.date(d.clone().subtract(this.stepping(), 'm'));\n        }\n      },\n      'control up': function controlUp(widget) {\n        if (!widget) {\n          return;\n        }\n        var d = this.date() || this.getMoment();\n        if (widget.find('.datepicker').is(':visible')) {\n          this.date(d.clone().subtract(1, 'y'));\n        } else {\n          this.date(d.clone().add(1, 'h'));\n        }\n      },\n      'control down': function controlDown(widget) {\n        if (!widget) {\n          return;\n        }\n        var d = this.date() || this.getMoment();\n        if (widget.find('.datepicker').is(':visible')) {\n          this.date(d.clone().add(1, 'y'));\n        } else {\n          this.date(d.clone().subtract(1, 'h'));\n        }\n      },\n      left: function left(widget) {\n        if (!widget) {\n          return;\n        }\n        var d = this.date() || this.getMoment();\n        if (widget.find('.datepicker').is(':visible')) {\n          this.date(d.clone().subtract(1, 'd'));\n        }\n      },\n      right: function right(widget) {\n        if (!widget) {\n          return;\n        }\n        var d = this.date() || this.getMoment();\n        if (widget.find('.datepicker').is(':visible')) {\n          this.date(d.clone().add(1, 'd'));\n        }\n      },\n      pageUp: function pageUp(widget) {\n        if (!widget) {\n          return;\n        }\n        var d = this.date() || this.getMoment();\n        if (widget.find('.datepicker').is(':visible')) {\n          this.date(d.clone().subtract(1, 'M'));\n        }\n      },\n      pageDown: function pageDown(widget) {\n        if (!widget) {\n          return;\n        }\n        var d = this.date() || this.getMoment();\n        if (widget.find('.datepicker').is(':visible')) {\n          this.date(d.clone().add(1, 'M'));\n        }\n      },\n      enter: function enter() {\n        this.hide();\n      },\n      escape: function escape() {\n        this.hide();\n      },\n      //tab: function (widget) { //this break the flow of the form. disabling for now\n      //    var toggle = widget.find('.picker-switch a[data-action=\"togglePicker\"]');\n      //    if(toggle.length > 0) toggle.click();\n      //},\n      'control space': function controlSpace(widget) {\n        if (widget.find('.timepicker').is(':visible')) {\n          widget.find('.btn[data-action=\"togglePeriod\"]').click();\n        }\n      },\n      t: function t() {\n        this.date(this.getMoment());\n      },\n      'delete': function _delete() {\n        this.clear();\n      }\n    },\n    debug: false,\n    allowInputToggle: false,\n    disabledTimeIntervals: false,\n    disabledHours: false,\n    enabledHours: false,\n    viewDate: false\n  };\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/bootstrap-datetimepicker.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/bootstrap-notify.js":
/*!*************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/bootstrap-notify.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*\n\n\n\n     Creative Tim Modifications\n\n     Lines: 236 was changed from top: 5px to top: 50% and we added margin-top: -9px. In this way the close button will be aligned vertically\n     Line:219 - modified when the icon is set, we add the class \"alert-with-icon\", so there will be enough space for the icon.\n\t Lines: 179/222 - class() was changed to html() so we can add the Material Design Icons\n\n\n\n*/\n\n/*\n* Project: Bootstrap Notify = v3.1.5\n* Description: Turns standard Bootstrap alerts into \"Growl-like\" notifications.\n* Author: Mouse0270 aka Robert McIntosh\n* License: MIT License\n* Website: https://github.com/mouse0270/bootstrap-growl\n*/\n\n/* global define:false, require: false, jQuery:false */\n\n(function (factory) {\n  if (true) {\n    // AMD. Register as an anonymous module.\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n})(function ($) {\n  // Create the defaults once\n  var defaults = {\n    element: 'body',\n    position: null,\n    type: \"info\",\n    allow_dismiss: true,\n    allow_duplicates: true,\n    newest_on_top: false,\n    showProgressbar: false,\n    placement: {\n      from: \"top\",\n      align: \"right\"\n    },\n    offset: 20,\n    spacing: 10,\n    z_index: 1031,\n    delay: 5000,\n    timer: 1000,\n    url_target: '_blank',\n    mouse_over: null,\n    animate: {\n      enter: 'animated fadeInDown',\n      exit: 'animated fadeOutUp'\n    },\n    onShow: null,\n    onShown: null,\n    onClose: null,\n    onClosed: null,\n    icon_type: 'class',\n    template: '<div data-notify=\"container\" class=\"col-xs-11 col-sm-4 alert alert-{0}\" role=\"alert\"><button type=\"button\" aria-hidden=\"true\" class=\"close\" data-notify=\"dismiss\"><i class=\"material-icons\">close</i></button><i data-notify=\"icon\" class=\"material-icons\"></i><span data-notify=\"title\">{1}</span> <span data-notify=\"message\">{2}</span><div class=\"progress\" data-notify=\"progressbar\"><div class=\"progress-bar progress-bar-{0}\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 0%;\"></div></div><a href=\"{3}\" target=\"{4}\" data-notify=\"url\"></a></div>'\n  };\n  String.format = function () {\n    var str = arguments[0];\n    for (var i = 1; i < arguments.length; i++) {\n      str = str.replace(RegExp(\"\\\\{\" + (i - 1) + \"\\\\}\", \"gm\"), arguments[i]);\n    }\n    return str;\n  };\n  function isDuplicateNotification(notification) {\n    var isDupe = false;\n    $('[data-notify=\"container\"]').each(function (i, el) {\n      var $el = $(el);\n      var title = $el.find('[data-notify=\"title\"]').text().trim();\n      var message = $el.find('[data-notify=\"message\"]').html().trim();\n\n      // The input string might be different than the actual parsed HTML string!\n      // (<br> vs <br /> for example)\n      // So we have to force-parse this as HTML here!\n      var isSameTitle = title === $(\"<div>\" + notification.settings.content.title + \"</div>\").html().trim();\n      var isSameMsg = message === $(\"<div>\" + notification.settings.content.message + \"</div>\").html().trim();\n      var isSameType = $el.hasClass('alert-' + notification.settings.type);\n      if (isSameTitle && isSameMsg && isSameType) {\n        //we found the dupe. Set the var and stop checking.\n        isDupe = true;\n      }\n      return !isDupe;\n    });\n    return isDupe;\n  }\n  function Notify(element, content, options) {\n    // Setup Content of Notify\n    var contentObj = {\n      content: {\n        message: _typeof(content) === 'object' ? content.message : content,\n        title: content.title ? content.title : '',\n        icon: content.icon ? content.icon : '',\n        url: content.url ? content.url : '#',\n        target: content.target ? content.target : '-'\n      }\n    };\n    options = $.extend(true, {}, contentObj, options);\n    this.settings = $.extend(true, {}, defaults, options);\n    this._defaults = defaults;\n    if (this.settings.content.target === \"-\") {\n      this.settings.content.target = this.settings.url_target;\n    }\n    this.animations = {\n      start: 'webkitAnimationStart oanimationstart MSAnimationStart animationstart',\n      end: 'webkitAnimationEnd oanimationend MSAnimationEnd animationend'\n    };\n    if (typeof this.settings.offset === 'number') {\n      this.settings.offset = {\n        x: this.settings.offset,\n        y: this.settings.offset\n      };\n    }\n\n    //if duplicate messages are not allowed, then only continue if this new message is not a duplicate of one that it already showing\n    if (this.settings.allow_duplicates || !this.settings.allow_duplicates && !isDuplicateNotification(this)) {\n      this.init();\n    }\n  }\n  $.extend(Notify.prototype, {\n    init: function init() {\n      var self = this;\n      this.buildNotify();\n      if (this.settings.content.icon) {\n        this.setIcon();\n      }\n      if (this.settings.content.url != \"#\") {\n        this.styleURL();\n      }\n      this.styleDismiss();\n      this.placement();\n      this.bind();\n      this.notify = {\n        $ele: this.$ele,\n        update: function update(command, _update) {\n          var commands = {};\n          if (typeof command === \"string\") {\n            commands[command] = _update;\n          } else {\n            commands = command;\n          }\n          for (var cmd in commands) {\n            switch (cmd) {\n              case \"type\":\n                this.$ele.removeClass('alert-' + self.settings.type);\n                this.$ele.find('[data-notify=\"progressbar\"] > .progress-bar').removeClass('progress-bar-' + self.settings.type);\n                self.settings.type = commands[cmd];\n                this.$ele.addClass('alert-' + commands[cmd]).find('[data-notify=\"progressbar\"] > .progress-bar').addClass('progress-bar-' + commands[cmd]);\n                break;\n              case \"icon\":\n                var $icon = this.$ele.find('[data-notify=\"icon\"]');\n                if (self.settings.icon_type.toLowerCase() === 'class') {\n                  $icon.html(commands[cmd]);\n                } else {\n                  if (!$icon.is('img')) {\n                    $icon.find('img');\n                  }\n                  $icon.attr('src', commands[cmd]);\n                }\n                break;\n              case \"progress\":\n                var newDelay = self.settings.delay - self.settings.delay * (commands[cmd] / 100);\n                this.$ele.data('notify-delay', newDelay);\n                this.$ele.find('[data-notify=\"progressbar\"] > div').attr('aria-valuenow', commands[cmd]).css('width', commands[cmd] + '%');\n                break;\n              case \"url\":\n                this.$ele.find('[data-notify=\"url\"]').attr('href', commands[cmd]);\n                break;\n              case \"target\":\n                this.$ele.find('[data-notify=\"url\"]').attr('target', commands[cmd]);\n                break;\n              default:\n                this.$ele.find('[data-notify=\"' + cmd + '\"]').html(commands[cmd]);\n            }\n          }\n          var posX = this.$ele.outerHeight() + parseInt(self.settings.spacing) + parseInt(self.settings.offset.y);\n          self.reposition(posX);\n        },\n        close: function close() {\n          self.close();\n        }\n      };\n    },\n    buildNotify: function buildNotify() {\n      var content = this.settings.content;\n      this.$ele = $(String.format(this.settings.template, this.settings.type, content.title, content.message, content.url, content.target));\n      this.$ele.attr('data-notify-position', this.settings.placement.from + '-' + this.settings.placement.align);\n      if (!this.settings.allow_dismiss) {\n        this.$ele.find('[data-notify=\"dismiss\"]').css('display', 'none');\n      }\n      if (this.settings.delay <= 0 && !this.settings.showProgressbar || !this.settings.showProgressbar) {\n        this.$ele.find('[data-notify=\"progressbar\"]').remove();\n      }\n    },\n    setIcon: function setIcon() {\n      this.$ele.addClass('alert-with-icon');\n      if (this.settings.icon_type.toLowerCase() === 'class') {\n        this.$ele.find('[data-notify=\"icon\"]').html(this.settings.content.icon);\n      } else {\n        if (this.$ele.find('[data-notify=\"icon\"]').is('img')) {\n          this.$ele.find('[data-notify=\"icon\"]').attr('src', this.settings.content.icon);\n        } else {\n          this.$ele.find('[data-notify=\"icon\"]').append('<img src=\"' + this.settings.content.icon + '\" alt=\"Notify Icon\" />');\n        }\n      }\n    },\n    styleDismiss: function styleDismiss() {\n      this.$ele.find('[data-notify=\"dismiss\"]').css({\n        position: 'absolute',\n        right: '10px',\n        top: '50%',\n        marginTop: '-9px',\n        zIndex: this.settings.z_index + 2\n      });\n    },\n    styleURL: function styleURL() {\n      this.$ele.find('[data-notify=\"url\"]').css({\n        backgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',\n        height: '100%',\n        left: 0,\n        position: 'absolute',\n        top: 0,\n        width: '100%',\n        zIndex: this.settings.z_index + 1\n      });\n    },\n    placement: function placement() {\n      var self = this,\n        offsetAmt = this.settings.offset.y,\n        css = {\n          display: 'inline-block',\n          margin: '15px auto',\n          position: this.settings.position ? this.settings.position : this.settings.element === 'body' ? 'fixed' : 'absolute',\n          transition: 'all .5s ease-in-out',\n          zIndex: this.settings.z_index\n        },\n        hasAnimation = false,\n        settings = this.settings;\n      $('[data-notify-position=\"' + this.settings.placement.from + '-' + this.settings.placement.align + '\"]:not([data-closing=\"true\"])').each(function () {\n        offsetAmt = Math.max(offsetAmt, parseInt($(this).css(settings.placement.from)) + parseInt($(this).outerHeight()) + parseInt(settings.spacing));\n      });\n      if (this.settings.newest_on_top === true) {\n        offsetAmt = this.settings.offset.y;\n      }\n      css[this.settings.placement.from] = offsetAmt + 'px';\n      switch (this.settings.placement.align) {\n        case \"left\":\n        case \"right\":\n          css[this.settings.placement.align] = this.settings.offset.x + 'px';\n          break;\n        case \"center\":\n          css.left = 0;\n          css.right = 0;\n          break;\n      }\n      this.$ele.css(css).addClass(this.settings.animate.enter);\n      $.each(Array('webkit-', 'moz-', 'o-', 'ms-', ''), function (index, prefix) {\n        self.$ele[0].style[prefix + 'AnimationIterationCount'] = 1;\n      });\n      $(this.settings.element).append(this.$ele);\n      if (this.settings.newest_on_top === true) {\n        offsetAmt = parseInt(offsetAmt) + parseInt(this.settings.spacing) + this.$ele.outerHeight();\n        this.reposition(offsetAmt);\n      }\n      if ($.isFunction(self.settings.onShow)) {\n        self.settings.onShow.call(this.$ele);\n      }\n      this.$ele.one(this.animations.start, function () {\n        hasAnimation = true;\n      }).one(this.animations.end, function () {\n        if ($.isFunction(self.settings.onShown)) {\n          self.settings.onShown.call(this);\n        }\n      });\n      setTimeout(function () {\n        if (!hasAnimation) {\n          if ($.isFunction(self.settings.onShown)) {\n            self.settings.onShown.call(this);\n          }\n        }\n      }, 600);\n    },\n    bind: function bind() {\n      var self = this;\n      this.$ele.find('[data-notify=\"dismiss\"]').on('click', function () {\n        self.close();\n      });\n      this.$ele.mouseover(function () {\n        $(this).data('data-hover', \"true\");\n      }).mouseout(function () {\n        $(this).data('data-hover', \"false\");\n      });\n      this.$ele.data('data-hover', \"false\");\n      if (this.settings.delay > 0) {\n        self.$ele.data('notify-delay', self.settings.delay);\n        var timer = setInterval(function () {\n          var delay = parseInt(self.$ele.data('notify-delay')) - self.settings.timer;\n          if (self.$ele.data('data-hover') === 'false' && self.settings.mouse_over === \"pause\" || self.settings.mouse_over != \"pause\") {\n            var percent = (self.settings.delay - delay) / self.settings.delay * 100;\n            self.$ele.data('notify-delay', delay);\n            self.$ele.find('[data-notify=\"progressbar\"] > div').attr('aria-valuenow', percent).css('width', percent + '%');\n          }\n          if (delay <= -self.settings.timer) {\n            clearInterval(timer);\n            self.close();\n          }\n        }, self.settings.timer);\n      }\n    },\n    close: function close() {\n      var self = this,\n        posX = parseInt(this.$ele.css(this.settings.placement.from)),\n        hasAnimation = false;\n      this.$ele.data('closing', 'true').addClass(this.settings.animate.exit);\n      self.reposition(posX);\n      if ($.isFunction(self.settings.onClose)) {\n        self.settings.onClose.call(this.$ele);\n      }\n      this.$ele.one(this.animations.start, function () {\n        hasAnimation = true;\n      }).one(this.animations.end, function () {\n        $(this).remove();\n        if ($.isFunction(self.settings.onClosed)) {\n          self.settings.onClosed.call(this);\n        }\n      });\n      setTimeout(function () {\n        if (!hasAnimation) {\n          self.$ele.remove();\n          if (self.settings.onClosed) {\n            self.settings.onClosed(self.$ele);\n          }\n        }\n      }, 600);\n    },\n    reposition: function reposition(posX) {\n      var self = this,\n        notifies = '[data-notify-position=\"' + this.settings.placement.from + '-' + this.settings.placement.align + '\"]:not([data-closing=\"true\"])',\n        $elements = this.$ele.nextAll(notifies);\n      if (this.settings.newest_on_top === true) {\n        $elements = this.$ele.prevAll(notifies);\n      }\n      $elements.each(function () {\n        $(this).css(self.settings.placement.from, posX);\n        posX = parseInt(posX) + parseInt(self.settings.spacing) + $(this).outerHeight();\n      });\n    }\n  });\n  $.notify = function (content, options) {\n    var plugin = new Notify(this, content, options);\n    return plugin.notify;\n  };\n  $.notifyDefaults = function (options) {\n    defaults = $.extend(true, {}, defaults, options);\n    return defaults;\n  };\n  $.notifyClose = function (command) {\n    if (typeof command === \"undefined\" || command === \"all\") {\n      $('[data-notify]').find('[data-notify=\"dismiss\"]').trigger('click');\n    } else {\n      $('[data-notify-position=\"' + command + '\"]').find('[data-notify=\"dismiss\"]').trigger('click');\n    }\n  };\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/bootstrap-notify.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/chartist.min.js":
/*!*********************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/chartist.min.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/* Chartist.js 0.9.4\n * Copyright © 2015 Gion Kunz\n * Free to use under the WTFPL license.\n * http://www.wtfpl.net/\n */\n\n!function (a, b) {\n   true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n    return window.Chartist = b();\n  }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;\n}(this, function () {\n  var a = {\n    version: \"0.9.4\"\n  };\n  return function (a, b, c) {\n    \"use strict\";\n\n    c.noop = function (a) {\n      return a;\n    }, c.alphaNumerate = function (a) {\n      return String.fromCharCode(97 + a % 26);\n    }, c.extend = function (a) {\n      a = a || {};\n      var b = Array.prototype.slice.call(arguments, 1);\n      return b.forEach(function (b) {\n        for (var d in b) \"object\" != _typeof(b[d]) || null === b[d] || b[d] instanceof Array ? a[d] = b[d] : a[d] = c.extend({}, a[d], b[d]);\n      }), a;\n    }, c.replaceAll = function (a, b, c) {\n      return a.replace(new RegExp(b, \"g\"), c);\n    }, c.stripUnit = function (a) {\n      return \"string\" == typeof a && (a = a.replace(/[^0-9\\+-\\.]/g, \"\")), +a;\n    }, c.ensureUnit = function (a, b) {\n      return \"number\" == typeof a && (a += b), a;\n    }, c.querySelector = function (a) {\n      return a instanceof Node ? a : b.querySelector(a);\n    }, c.times = function (a) {\n      return Array.apply(null, new Array(a));\n    }, c.sum = function (a, b) {\n      return a + (b ? b : 0);\n    }, c.mapMultiply = function (a) {\n      return function (b) {\n        return b * a;\n      };\n    }, c.mapAdd = function (a) {\n      return function (b) {\n        return b + a;\n      };\n    }, c.serialMap = function (a, b) {\n      var d = [],\n        e = Math.max.apply(null, a.map(function (a) {\n          return a.length;\n        }));\n      return c.times(e).forEach(function (c, e) {\n        var f = a.map(function (a) {\n          return a[e];\n        });\n        d[e] = b.apply(null, f);\n      }), d;\n    }, c.roundWithPrecision = function (a, b) {\n      var d = Math.pow(10, b || c.precision);\n      return Math.round(a * d) / d;\n    }, c.precision = 8, c.escapingMap = {\n      \"&\": \"&amp;\",\n      \"<\": \"&lt;\",\n      \">\": \"&gt;\",\n      '\"': \"&quot;\",\n      \"'\": \"&#039;\"\n    }, c.serialize = function (a) {\n      return null === a || void 0 === a ? a : (\"number\" == typeof a ? a = \"\" + a : \"object\" == _typeof(a) && (a = JSON.stringify({\n        data: a\n      })), Object.keys(c.escapingMap).reduce(function (a, b) {\n        return c.replaceAll(a, b, c.escapingMap[b]);\n      }, a));\n    }, c.deserialize = function (a) {\n      if (\"string\" != typeof a) return a;\n      a = Object.keys(c.escapingMap).reduce(function (a, b) {\n        return c.replaceAll(a, c.escapingMap[b], b);\n      }, a);\n      try {\n        a = JSON.parse(a), a = void 0 !== a.data ? a.data : a;\n      } catch (b) {}\n      return a;\n    }, c.createSvg = function (a, b, d, e) {\n      var f;\n      return b = b || \"100%\", d = d || \"100%\", Array.prototype.slice.call(a.querySelectorAll(\"svg\")).filter(function (a) {\n        return a.getAttributeNS(\"http://www.w3.org/2000/xmlns/\", c.xmlNs.prefix);\n      }).forEach(function (b) {\n        a.removeChild(b);\n      }), f = new c.Svg(\"svg\").attr({\n        width: b,\n        height: d\n      }).addClass(e).attr({\n        style: \"width: \" + b + \"; height: \" + d + \";\"\n      }), a.appendChild(f._node), f;\n    }, c.reverseData = function (a) {\n      a.labels.reverse(), a.series.reverse();\n      for (var b = 0; b < a.series.length; b++) \"object\" == _typeof(a.series[b]) && void 0 !== a.series[b].data ? a.series[b].data.reverse() : a.series[b] instanceof Array && a.series[b].reverse();\n    }, c.getDataArray = function (a, b, d) {\n      function e(a) {\n        if (c.isFalseyButZero(a)) return void 0;\n        if ((a.data || a) instanceof Array) return (a.data || a).map(e);\n        if (a.hasOwnProperty(\"value\")) return e(a.value);\n        if (d) {\n          var b = {};\n          return \"string\" == typeof d ? b[d] = c.getNumberOrUndefined(a) : b.y = c.getNumberOrUndefined(a), b.x = a.hasOwnProperty(\"x\") ? c.getNumberOrUndefined(a.x) : b.x, b.y = a.hasOwnProperty(\"y\") ? c.getNumberOrUndefined(a.y) : b.y, b;\n        }\n        return c.getNumberOrUndefined(a);\n      }\n      return (b && !a.reversed || !b && a.reversed) && (c.reverseData(a), a.reversed = !a.reversed), a.series.map(e);\n    }, c.normalizePadding = function (a, b) {\n      return b = b || 0, \"number\" == typeof a ? {\n        top: a,\n        right: a,\n        bottom: a,\n        left: a\n      } : {\n        top: \"number\" == typeof a.top ? a.top : b,\n        right: \"number\" == typeof a.right ? a.right : b,\n        bottom: \"number\" == typeof a.bottom ? a.bottom : b,\n        left: \"number\" == typeof a.left ? a.left : b\n      };\n    }, c.getMetaData = function (a, b) {\n      var d = a.data ? a.data[b] : a[b];\n      return d ? c.serialize(d.meta) : void 0;\n    }, c.orderOfMagnitude = function (a) {\n      return Math.floor(Math.log(Math.abs(a)) / Math.LN10);\n    }, c.projectLength = function (a, b, c) {\n      return b / c.range * a;\n    }, c.getAvailableHeight = function (a, b) {\n      return Math.max((c.stripUnit(b.height) || a.height()) - (b.chartPadding.top + b.chartPadding.bottom) - b.axisX.offset, 0);\n    }, c.getHighLow = function (a, b, d) {\n      function e(a) {\n        if (void 0 === a) return void 0;\n        if (a instanceof Array) for (var b = 0; b < a.length; b++) e(a[b]);else {\n          var c = d ? +a[d] : +a;\n          g && c > f.high && (f.high = c), h && c < f.low && (f.low = c);\n        }\n      }\n      b = c.extend({}, b, d ? b[\"axis\" + d.toUpperCase()] : {});\n      var f = {\n          high: void 0 === b.high ? -Number.MAX_VALUE : +b.high,\n          low: void 0 === b.low ? Number.MAX_VALUE : +b.low\n        },\n        g = void 0 === b.high,\n        h = void 0 === b.low;\n      return (g || h) && e(a), (b.referenceValue || 0 === b.referenceValue) && (f.high = Math.max(b.referenceValue, f.high), f.low = Math.min(b.referenceValue, f.low)), f.high <= f.low && (0 === f.low ? f.high = 1 : f.low < 0 ? f.high = 0 : f.low = 0), f;\n    }, c.isNum = function (a) {\n      return !isNaN(a) && isFinite(a);\n    }, c.isFalseyButZero = function (a) {\n      return !a && 0 !== a;\n    }, c.getNumberOrUndefined = function (a) {\n      return isNaN(+a) ? void 0 : +a;\n    }, c.getMultiValue = function (a, b) {\n      return c.isNum(a) ? +a : a ? a[b || \"y\"] || 0 : 0;\n    }, c.rho = function (a) {\n      function b(a, c) {\n        return a % c === 0 ? c : b(c, a % c);\n      }\n      function c(a) {\n        return a * a + 1;\n      }\n      if (1 === a) return a;\n      var d,\n        e = 2,\n        f = 2;\n      if (a % 2 === 0) return 2;\n      do e = c(e) % a, f = c(c(f)) % a, d = b(Math.abs(e - f), a); while (1 === d);\n      return d;\n    }, c.getBounds = function (a, b, d, e) {\n      var f,\n        g,\n        h,\n        i = 0,\n        j = {\n          high: b.high,\n          low: b.low\n        };\n      j.valueRange = j.high - j.low, j.oom = c.orderOfMagnitude(j.valueRange), j.step = Math.pow(10, j.oom), j.min = Math.floor(j.low / j.step) * j.step, j.max = Math.ceil(j.high / j.step) * j.step, j.range = j.max - j.min, j.numberOfSteps = Math.round(j.range / j.step);\n      var k = c.projectLength(a, j.step, j),\n        l = d > k,\n        m = e ? c.rho(j.range) : 0;\n      if (e && c.projectLength(a, 1, j) >= d) j.step = 1;else if (e && m < j.step && c.projectLength(a, m, j) >= d) j.step = m;else for (;;) {\n        if (l && c.projectLength(a, j.step, j) <= d) j.step *= 2;else {\n          if (l || !(c.projectLength(a, j.step / 2, j) >= d)) break;\n          if (j.step /= 2, e && j.step % 1 !== 0) {\n            j.step *= 2;\n            break;\n          }\n        }\n        if (i++ > 1e3) throw new Error(\"Exceeded maximum number of iterations while optimizing scale step!\");\n      }\n      for (g = j.min, h = j.max; g + j.step <= j.low;) g += j.step;\n      for (; h - j.step >= j.high;) h -= j.step;\n      for (j.min = g, j.max = h, j.range = j.max - j.min, j.values = [], f = j.min; f <= j.max; f += j.step) j.values.push(c.roundWithPrecision(f));\n      return j;\n    }, c.polarToCartesian = function (a, b, c, d) {\n      var e = (d - 90) * Math.PI / 180;\n      return {\n        x: a + c * Math.cos(e),\n        y: b + c * Math.sin(e)\n      };\n    }, c.createChartRect = function (a, b, d) {\n      var e = !(!b.axisX && !b.axisY),\n        f = e ? b.axisY.offset : 0,\n        g = e ? b.axisX.offset : 0,\n        h = a.width() || c.stripUnit(b.width) || 0,\n        i = a.height() || c.stripUnit(b.height) || 0,\n        j = c.normalizePadding(b.chartPadding, d);\n      h = Math.max(h, f + j.left + j.right), i = Math.max(i, g + j.top + j.bottom);\n      var k = {\n        padding: j,\n        width: function width() {\n          return this.x2 - this.x1;\n        },\n        height: function height() {\n          return this.y1 - this.y2;\n        }\n      };\n      return e ? (\"start\" === b.axisX.position ? (k.y2 = j.top + g, k.y1 = Math.max(i - j.bottom, k.y2 + 1)) : (k.y2 = j.top, k.y1 = Math.max(i - j.bottom - g, k.y2 + 1)), \"start\" === b.axisY.position ? (k.x1 = j.left + f, k.x2 = Math.max(h - j.right, k.x1 + 1)) : (k.x1 = j.left, k.x2 = Math.max(h - j.right - f, k.x1 + 1))) : (k.x1 = j.left, k.x2 = Math.max(h - j.right, k.x1 + 1), k.y2 = j.top, k.y1 = Math.max(i - j.bottom, k.y2 + 1)), k;\n    }, c.createGrid = function (a, b, d, e, f, g, h, i) {\n      var j = {};\n      j[d.units.pos + \"1\"] = a, j[d.units.pos + \"2\"] = a, j[d.counterUnits.pos + \"1\"] = e, j[d.counterUnits.pos + \"2\"] = e + f;\n      var k = g.elem(\"line\", j, h.join(\" \"));\n      i.emit(\"draw\", c.extend({\n        type: \"grid\",\n        axis: d,\n        index: b,\n        group: g,\n        element: k\n      }, j));\n    }, c.createLabel = function (a, b, d, e, f, g, h, i, j, k, l) {\n      var m,\n        n = {};\n      if (n[f.units.pos] = a + h[f.units.pos], n[f.counterUnits.pos] = h[f.counterUnits.pos], n[f.units.len] = b, n[f.counterUnits.len] = g - 10, k) {\n        var o = '<span class=\"' + j.join(\" \") + '\" style=\"' + f.units.len + \": \" + Math.round(n[f.units.len]) + \"px; \" + f.counterUnits.len + \": \" + Math.round(n[f.counterUnits.len]) + 'px\">' + e[d] + \"</span>\";\n        m = i.foreignObject(o, c.extend({\n          style: \"overflow: visible;\"\n        }, n));\n      } else m = i.elem(\"text\", n, j.join(\" \")).text(e[d]);\n      l.emit(\"draw\", c.extend({\n        type: \"label\",\n        axis: f,\n        index: d,\n        group: i,\n        element: m,\n        text: e[d]\n      }, n));\n    }, c.getSeriesOption = function (a, b, c) {\n      if (a.name && b.series && b.series[a.name]) {\n        var d = b.series[a.name];\n        return d.hasOwnProperty(c) ? d[c] : b[c];\n      }\n      return b[c];\n    }, c.optionsProvider = function (b, d, e) {\n      function f(b) {\n        var f = h;\n        if (h = c.extend({}, j), d) for (i = 0; i < d.length; i++) {\n          var g = a.matchMedia(d[i][0]);\n          g.matches && (h = c.extend(h, d[i][1]));\n        }\n        e && !b && e.emit(\"optionsChanged\", {\n          previousOptions: f,\n          currentOptions: h\n        });\n      }\n      function g() {\n        k.forEach(function (a) {\n          a.removeListener(f);\n        });\n      }\n      var h,\n        i,\n        j = c.extend({}, b),\n        k = [];\n      if (!a.matchMedia) throw \"window.matchMedia not found! Make sure you're using a polyfill.\";\n      if (d) for (i = 0; i < d.length; i++) {\n        var l = a.matchMedia(d[i][0]);\n        l.addListener(f), k.push(l);\n      }\n      return f(!0), {\n        removeMediaQueryListeners: g,\n        getCurrentOptions: function getCurrentOptions() {\n          return c.extend({}, h);\n        }\n      };\n    };\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    c.Interpolation = {}, c.Interpolation.none = function () {\n      return function (a, b) {\n        for (var d = new c.Svg.Path(), e = !0, f = 1; f < a.length; f += 2) {\n          var g = b[(f - 1) / 2];\n          void 0 === g.value ? e = !0 : e ? (d.move(a[f - 1], a[f], !1, g), e = !1) : d.line(a[f - 1], a[f], !1, g);\n        }\n        return d;\n      };\n    }, c.Interpolation.simple = function (a) {\n      var b = {\n        divisor: 2\n      };\n      a = c.extend({}, b, a);\n      var d = 1 / Math.max(1, a.divisor);\n      return function (a, b) {\n        for (var e = new c.Svg.Path(), f = !0, g = 2; g < a.length; g += 2) {\n          var h = a[g - 2],\n            i = a[g - 1],\n            j = a[g],\n            k = a[g + 1],\n            l = (j - h) * d,\n            m = b[g / 2 - 1],\n            n = b[g / 2];\n          void 0 === m.value ? f = !0 : (f && e.move(h, i, !1, m), void 0 !== n.value && (e.curve(h + l, i, j - l, k, j, k, !1, n), f = !1));\n        }\n        return e;\n      };\n    }, c.Interpolation.cardinal = function (a) {\n      function b(a, b) {\n        for (var c = [], d = !0, e = 0; e < a.length; e += 2) void 0 === b[e / 2].value ? d = !0 : (d && (c.push({\n          pathCoordinates: [],\n          valueData: []\n        }), d = !1), c[c.length - 1].pathCoordinates.push(a[e], a[e + 1]), c[c.length - 1].valueData.push(b[e / 2]));\n        return c;\n      }\n      var d = {\n        tension: 1\n      };\n      a = c.extend({}, d, a);\n      var e = Math.min(1, Math.max(0, a.tension)),\n        f = 1 - e;\n      return function g(a, d) {\n        var h = b(a, d);\n        if (h.length > 1) {\n          var i = [];\n          return h.forEach(function (a) {\n            i.push(g(a.pathCoordinates, a.valueData));\n          }), c.Svg.Path.join(i);\n        }\n        if (a = h[0].pathCoordinates, d = h[0].valueData, a.length <= 4) return c.Interpolation.none()(a, d);\n        for (var j, k = new c.Svg.Path().move(a[0], a[1], !1, d[0]), l = 0, m = a.length; m - 2 * !j > l; l += 2) {\n          var n = [{\n            x: +a[l - 2],\n            y: +a[l - 1]\n          }, {\n            x: +a[l],\n            y: +a[l + 1]\n          }, {\n            x: +a[l + 2],\n            y: +a[l + 3]\n          }, {\n            x: +a[l + 4],\n            y: +a[l + 5]\n          }];\n          j ? l ? m - 4 === l ? n[3] = {\n            x: +a[0],\n            y: +a[1]\n          } : m - 2 === l && (n[2] = {\n            x: +a[0],\n            y: +a[1]\n          }, n[3] = {\n            x: +a[2],\n            y: +a[3]\n          }) : n[0] = {\n            x: +a[m - 2],\n            y: +a[m - 1]\n          } : m - 4 === l ? n[3] = n[2] : l || (n[0] = {\n            x: +a[l],\n            y: +a[l + 1]\n          }), k.curve(e * (-n[0].x + 6 * n[1].x + n[2].x) / 6 + f * n[2].x, e * (-n[0].y + 6 * n[1].y + n[2].y) / 6 + f * n[2].y, e * (n[1].x + 6 * n[2].x - n[3].x) / 6 + f * n[2].x, e * (n[1].y + 6 * n[2].y - n[3].y) / 6 + f * n[2].y, n[2].x, n[2].y, !1, d[(l + 2) / 2]);\n        }\n        return k;\n      };\n    }, c.Interpolation.step = function (a) {\n      var b = {\n        postpone: !0\n      };\n      return a = c.extend({}, b, a), function (b, d) {\n        for (var e = new c.Svg.Path(), f = !0, g = 2; g < b.length; g += 2) {\n          var h = b[g - 2],\n            i = b[g - 1],\n            j = b[g],\n            k = b[g + 1],\n            l = d[g / 2 - 1],\n            m = d[g / 2];\n          void 0 === l.value ? f = !0 : (f && e.move(h, i, !1, l), void 0 !== m.value && (a.postpone ? e.line(j, i, !1, l) : e.line(h, k, !1, m), e.line(j, k, !1, m), f = !1));\n        }\n        return e;\n      };\n    };\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    c.EventEmitter = function () {\n      function a(a, b) {\n        d[a] = d[a] || [], d[a].push(b);\n      }\n      function b(a, b) {\n        d[a] && (b ? (d[a].splice(d[a].indexOf(b), 1), 0 === d[a].length && delete d[a]) : delete d[a]);\n      }\n      function c(a, b) {\n        d[a] && d[a].forEach(function (a) {\n          a(b);\n        }), d[\"*\"] && d[\"*\"].forEach(function (c) {\n          c(a, b);\n        });\n      }\n      var d = [];\n      return {\n        addEventHandler: a,\n        removeEventHandler: b,\n        emit: c\n      };\n    };\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a) {\n      var b = [];\n      if (a.length) for (var c = 0; c < a.length; c++) b.push(a[c]);\n      return b;\n    }\n    function e(a, b) {\n      var d = b || this.prototype || c.Class,\n        e = Object.create(d);\n      c.Class.cloneDefinitions(e, a);\n      var f = function f() {\n        var a,\n          b = e.constructor || function () {};\n        return a = this === c ? Object.create(e) : this, b.apply(a, Array.prototype.slice.call(arguments, 0)), a;\n      };\n      return f.prototype = e, f[\"super\"] = d, f.extend = this.extend, f;\n    }\n    function f() {\n      var a = d(arguments),\n        b = a[0];\n      return a.splice(1, a.length - 1).forEach(function (a) {\n        Object.getOwnPropertyNames(a).forEach(function (c) {\n          delete b[c], Object.defineProperty(b, c, Object.getOwnPropertyDescriptor(a, c));\n        });\n      }), b;\n    }\n    c.Class = {\n      extend: e,\n      cloneDefinitions: f\n    };\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a, b, d) {\n      return a && (this.data = a, this.eventEmitter.emit(\"data\", {\n        type: \"update\",\n        data: this.data\n      })), b && (this.options = c.extend({}, d ? this.options : this.defaultOptions, b), this.initializeTimeoutId || (this.optionsProvider.removeMediaQueryListeners(), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter))), this.initializeTimeoutId || this.createChart(this.optionsProvider.getCurrentOptions()), this;\n    }\n    function e() {\n      return this.initializeTimeoutId ? a.clearTimeout(this.initializeTimeoutId) : (a.removeEventListener(\"resize\", this.resizeListener), this.optionsProvider.removeMediaQueryListeners()), this;\n    }\n    function f(a, b) {\n      return this.eventEmitter.addEventHandler(a, b), this;\n    }\n    function g(a, b) {\n      return this.eventEmitter.removeEventHandler(a, b), this;\n    }\n    function h() {\n      a.addEventListener(\"resize\", this.resizeListener), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter), this.eventEmitter.addEventHandler(\"optionsChanged\", function () {\n        this.update();\n      }.bind(this)), this.options.plugins && this.options.plugins.forEach(function (a) {\n        a instanceof Array ? a[0](this, a[1]) : a(this);\n      }.bind(this)), this.eventEmitter.emit(\"data\", {\n        type: \"initial\",\n        data: this.data\n      }), this.createChart(this.optionsProvider.getCurrentOptions()), this.initializeTimeoutId = void 0;\n    }\n    function i(a, b, d, e, f) {\n      this.container = c.querySelector(a), this.data = b, this.defaultOptions = d, this.options = e, this.responsiveOptions = f, this.eventEmitter = c.EventEmitter(), this.supportsForeignObject = c.Svg.isSupported(\"Extensibility\"), this.supportsAnimations = c.Svg.isSupported(\"AnimationEventsAttribute\"), this.resizeListener = function () {\n        this.update();\n      }.bind(this), this.container && (this.container.__chartist__ && this.container.__chartist__.detach(), this.container.__chartist__ = this), this.initializeTimeoutId = setTimeout(h.bind(this), 0);\n    }\n    c.Base = c.Class.extend({\n      constructor: i,\n      optionsProvider: void 0,\n      container: void 0,\n      svg: void 0,\n      eventEmitter: void 0,\n      createChart: function createChart() {\n        throw new Error(\"Base chart type can't be instantiated!\");\n      },\n      update: d,\n      detach: e,\n      on: f,\n      off: g,\n      version: c.version,\n      supportsForeignObject: !1\n    });\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a, d, e, f, g) {\n      a instanceof Element ? this._node = a : (this._node = b.createElementNS(z, a), \"svg\" === a && this._node.setAttributeNS(A, c.xmlNs.qualifiedName, c.xmlNs.uri)), d && this.attr(d), e && this.addClass(e), f && (g && f._node.firstChild ? f._node.insertBefore(this._node, f._node.firstChild) : f._node.appendChild(this._node));\n    }\n    function e(a, b) {\n      return \"string\" == typeof a ? b ? this._node.getAttributeNS(b, a) : this._node.getAttribute(a) : (Object.keys(a).forEach(function (d) {\n        void 0 !== a[d] && (b ? this._node.setAttributeNS(b, [c.xmlNs.prefix, \":\", d].join(\"\"), a[d]) : this._node.setAttribute(d, a[d]));\n      }.bind(this)), this);\n    }\n    function f(a, b, d, e) {\n      return new c.Svg(a, b, d, this, e);\n    }\n    function g() {\n      return this._node.parentNode instanceof SVGElement ? new c.Svg(this._node.parentNode) : null;\n    }\n    function h() {\n      for (var a = this._node; \"svg\" !== a.nodeName;) a = a.parentNode;\n      return new c.Svg(a);\n    }\n    function i(a) {\n      var b = this._node.querySelector(a);\n      return b ? new c.Svg(b) : null;\n    }\n    function j(a) {\n      var b = this._node.querySelectorAll(a);\n      return b.length ? new c.Svg.List(b) : null;\n    }\n    function k(a, c, d, e) {\n      if (\"string\" == typeof a) {\n        var f = b.createElement(\"div\");\n        f.innerHTML = a, a = f.firstChild;\n      }\n      a.setAttribute(\"xmlns\", B);\n      var g = this.elem(\"foreignObject\", c, d, e);\n      return g._node.appendChild(a), g;\n    }\n    function l(a) {\n      return this._node.appendChild(b.createTextNode(a)), this;\n    }\n    function m() {\n      for (; this._node.firstChild;) this._node.removeChild(this._node.firstChild);\n      return this;\n    }\n    function n() {\n      return this._node.parentNode.removeChild(this._node), this.parent();\n    }\n    function o(a) {\n      return this._node.parentNode.replaceChild(a._node, this._node), a;\n    }\n    function p(a, b) {\n      return b && this._node.firstChild ? this._node.insertBefore(a._node, this._node.firstChild) : this._node.appendChild(a._node), this;\n    }\n    function q() {\n      return this._node.getAttribute(\"class\") ? this._node.getAttribute(\"class\").trim().split(/\\s+/) : [];\n    }\n    function r(a) {\n      return this._node.setAttribute(\"class\", this.classes(this._node).concat(a.trim().split(/\\s+/)).filter(function (a, b, c) {\n        return c.indexOf(a) === b;\n      }).join(\" \")), this;\n    }\n    function s(a) {\n      var b = a.trim().split(/\\s+/);\n      return this._node.setAttribute(\"class\", this.classes(this._node).filter(function (a) {\n        return -1 === b.indexOf(a);\n      }).join(\" \")), this;\n    }\n    function t() {\n      return this._node.setAttribute(\"class\", \"\"), this;\n    }\n    function u(a, b) {\n      try {\n        return a.getBBox()[b];\n      } catch (c) {}\n      return 0;\n    }\n    function v() {\n      return this._node.clientHeight || Math.round(u(this._node, \"height\")) || this._node.parentNode.clientHeight;\n    }\n    function w() {\n      return this._node.clientWidth || Math.round(u(this._node, \"width\")) || this._node.parentNode.clientWidth;\n    }\n    function x(a, b, d) {\n      return void 0 === b && (b = !0), Object.keys(a).forEach(function (e) {\n        function f(a, b) {\n          var f,\n            g,\n            h,\n            i = {};\n          a.easing && (h = a.easing instanceof Array ? a.easing : c.Svg.Easing[a.easing], delete a.easing), a.begin = c.ensureUnit(a.begin, \"ms\"), a.dur = c.ensureUnit(a.dur, \"ms\"), h && (a.calcMode = \"spline\", a.keySplines = h.join(\" \"), a.keyTimes = \"0;1\"), b && (a.fill = \"freeze\", i[e] = a.from, this.attr(i), g = c.stripUnit(a.begin || 0), a.begin = \"indefinite\"), f = this.elem(\"animate\", c.extend({\n            attributeName: e\n          }, a)), b && setTimeout(function () {\n            try {\n              f._node.beginElement();\n            } catch (b) {\n              i[e] = a.to, this.attr(i), f.remove();\n            }\n          }.bind(this), g), d && f._node.addEventListener(\"beginEvent\", function () {\n            d.emit(\"animationBegin\", {\n              element: this,\n              animate: f._node,\n              params: a\n            });\n          }.bind(this)), f._node.addEventListener(\"endEvent\", function () {\n            d && d.emit(\"animationEnd\", {\n              element: this,\n              animate: f._node,\n              params: a\n            }), b && (i[e] = a.to, this.attr(i), f.remove());\n          }.bind(this));\n        }\n        a[e] instanceof Array ? a[e].forEach(function (a) {\n          f.bind(this)(a, !1);\n        }.bind(this)) : f.bind(this)(a[e], b);\n      }.bind(this)), this;\n    }\n    function y(a) {\n      var b = this;\n      this.svgElements = [];\n      for (var d = 0; d < a.length; d++) this.svgElements.push(new c.Svg(a[d]));\n      Object.keys(c.Svg.prototype).filter(function (a) {\n        return -1 === [\"constructor\", \"parent\", \"querySelector\", \"querySelectorAll\", \"replace\", \"append\", \"classes\", \"height\", \"width\"].indexOf(a);\n      }).forEach(function (a) {\n        b[a] = function () {\n          var d = Array.prototype.slice.call(arguments, 0);\n          return b.svgElements.forEach(function (b) {\n            c.Svg.prototype[a].apply(b, d);\n          }), b;\n        };\n      });\n    }\n    var z = \"http://www.w3.org/2000/svg\",\n      A = \"http://www.w3.org/2000/xmlns/\",\n      B = \"http://www.w3.org/1999/xhtml\";\n    c.xmlNs = {\n      qualifiedName: \"xmlns:ct\",\n      prefix: \"ct\",\n      uri: \"http://gionkunz.github.com/chartist-js/ct\"\n    }, c.Svg = c.Class.extend({\n      constructor: d,\n      attr: e,\n      elem: f,\n      parent: g,\n      root: h,\n      querySelector: i,\n      querySelectorAll: j,\n      foreignObject: k,\n      text: l,\n      empty: m,\n      remove: n,\n      replace: o,\n      append: p,\n      classes: q,\n      addClass: r,\n      removeClass: s,\n      removeAllClasses: t,\n      height: v,\n      width: w,\n      animate: x\n    }), c.Svg.isSupported = function (a) {\n      return b.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#\" + a, \"1.1\");\n    };\n    var C = {\n      easeInSine: [.47, 0, .745, .715],\n      easeOutSine: [.39, .575, .565, 1],\n      easeInOutSine: [.445, .05, .55, .95],\n      easeInQuad: [.55, .085, .68, .53],\n      easeOutQuad: [.25, .46, .45, .94],\n      easeInOutQuad: [.455, .03, .515, .955],\n      easeInCubic: [.55, .055, .675, .19],\n      easeOutCubic: [.215, .61, .355, 1],\n      easeInOutCubic: [.645, .045, .355, 1],\n      easeInQuart: [.895, .03, .685, .22],\n      easeOutQuart: [.165, .84, .44, 1],\n      easeInOutQuart: [.77, 0, .175, 1],\n      easeInQuint: [.755, .05, .855, .06],\n      easeOutQuint: [.23, 1, .32, 1],\n      easeInOutQuint: [.86, 0, .07, 1],\n      easeInExpo: [.95, .05, .795, .035],\n      easeOutExpo: [.19, 1, .22, 1],\n      easeInOutExpo: [1, 0, 0, 1],\n      easeInCirc: [.6, .04, .98, .335],\n      easeOutCirc: [.075, .82, .165, 1],\n      easeInOutCirc: [.785, .135, .15, .86],\n      easeInBack: [.6, -.28, .735, .045],\n      easeOutBack: [.175, .885, .32, 1.275],\n      easeInOutBack: [.68, -.55, .265, 1.55]\n    };\n    c.Svg.Easing = C, c.Svg.List = c.Class.extend({\n      constructor: y\n    });\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a, b, d, e, f, g) {\n      var h = c.extend({\n        command: f ? a.toLowerCase() : a.toUpperCase()\n      }, b, g ? {\n        data: g\n      } : {});\n      d.splice(e, 0, h);\n    }\n    function e(a, b) {\n      a.forEach(function (c, d) {\n        u[c.command.toLowerCase()].forEach(function (e, f) {\n          b(c, e, d, f, a);\n        });\n      });\n    }\n    function f(a, b) {\n      this.pathElements = [], this.pos = 0, this.close = a, this.options = c.extend({}, v, b);\n    }\n    function g(a) {\n      return void 0 !== a ? (this.pos = Math.max(0, Math.min(this.pathElements.length, a)), this) : this.pos;\n    }\n    function h(a) {\n      return this.pathElements.splice(this.pos, a), this;\n    }\n    function i(a, b, c, e) {\n      return d(\"M\", {\n        x: +a,\n        y: +b\n      }, this.pathElements, this.pos++, c, e), this;\n    }\n    function j(a, b, c, e) {\n      return d(\"L\", {\n        x: +a,\n        y: +b\n      }, this.pathElements, this.pos++, c, e), this;\n    }\n    function k(a, b, c, e, f, g, h, i) {\n      return d(\"C\", {\n        x1: +a,\n        y1: +b,\n        x2: +c,\n        y2: +e,\n        x: +f,\n        y: +g\n      }, this.pathElements, this.pos++, h, i), this;\n    }\n    function l(a, b, c, e, f, g, h, i, j) {\n      return d(\"A\", {\n        rx: +a,\n        ry: +b,\n        xAr: +c,\n        lAf: +e,\n        sf: +f,\n        x: +g,\n        y: +h\n      }, this.pathElements, this.pos++, i, j), this;\n    }\n    function m(a) {\n      var b = a.replace(/([A-Za-z])([0-9])/g, \"$1 $2\").replace(/([0-9])([A-Za-z])/g, \"$1 $2\").split(/[\\s,]+/).reduce(function (a, b) {\n        return b.match(/[A-Za-z]/) && a.push([]), a[a.length - 1].push(b), a;\n      }, []);\n      \"Z\" === b[b.length - 1][0].toUpperCase() && b.pop();\n      var d = b.map(function (a) {\n          var b = a.shift(),\n            d = u[b.toLowerCase()];\n          return c.extend({\n            command: b\n          }, d.reduce(function (b, c, d) {\n            return b[c] = +a[d], b;\n          }, {}));\n        }),\n        e = [this.pos, 0];\n      return Array.prototype.push.apply(e, d), Array.prototype.splice.apply(this.pathElements, e), this.pos += d.length, this;\n    }\n    function n() {\n      var a = Math.pow(10, this.options.accuracy);\n      return this.pathElements.reduce(function (b, c) {\n        var d = u[c.command.toLowerCase()].map(function (b) {\n          return this.options.accuracy ? Math.round(c[b] * a) / a : c[b];\n        }.bind(this));\n        return b + c.command + d.join(\",\");\n      }.bind(this), \"\") + (this.close ? \"Z\" : \"\");\n    }\n    function o(a, b) {\n      return e(this.pathElements, function (c, d) {\n        c[d] *= \"x\" === d[0] ? a : b;\n      }), this;\n    }\n    function p(a, b) {\n      return e(this.pathElements, function (c, d) {\n        c[d] += \"x\" === d[0] ? a : b;\n      }), this;\n    }\n    function q(a) {\n      return e(this.pathElements, function (b, c, d, e, f) {\n        var g = a(b, c, d, e, f);\n        (g || 0 === g) && (b[c] = g);\n      }), this;\n    }\n    function r(a) {\n      var b = new c.Svg.Path(a || this.close);\n      return b.pos = this.pos, b.pathElements = this.pathElements.slice().map(function (a) {\n        return c.extend({}, a);\n      }), b.options = c.extend({}, this.options), b;\n    }\n    function s(a) {\n      var b = [new c.Svg.Path()];\n      return this.pathElements.forEach(function (d) {\n        d.command === a.toUpperCase() && 0 !== b[b.length - 1].pathElements.length && b.push(new c.Svg.Path()), b[b.length - 1].pathElements.push(d);\n      }), b;\n    }\n    function t(a, b, d) {\n      for (var e = new c.Svg.Path(b, d), f = 0; f < a.length; f++) for (var g = a[f], h = 0; h < g.pathElements.length; h++) e.pathElements.push(g.pathElements[h]);\n      return e;\n    }\n    var u = {\n        m: [\"x\", \"y\"],\n        l: [\"x\", \"y\"],\n        c: [\"x1\", \"y1\", \"x2\", \"y2\", \"x\", \"y\"],\n        a: [\"rx\", \"ry\", \"xAr\", \"lAf\", \"sf\", \"x\", \"y\"]\n      },\n      v = {\n        accuracy: 3\n      };\n    c.Svg.Path = c.Class.extend({\n      constructor: f,\n      position: g,\n      remove: h,\n      move: i,\n      line: j,\n      curve: k,\n      arc: l,\n      scale: o,\n      translate: p,\n      transform: q,\n      parse: m,\n      stringify: n,\n      clone: r,\n      splitByCommand: s\n    }), c.Svg.Path.elementDescriptions = u, c.Svg.Path.join = t;\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a, b, c, d) {\n      this.units = a, this.counterUnits = a === f.x ? f.y : f.x, this.chartRect = b, this.axisLength = b[a.rectEnd] - b[a.rectStart], this.gridOffset = b[a.rectOffset], this.ticks = c, this.options = d;\n    }\n    function e(a, b, d, e, f) {\n      var g = e[\"axis\" + this.units.pos.toUpperCase()],\n        h = this.ticks.map(this.projectValue.bind(this)),\n        i = this.ticks.map(g.labelInterpolationFnc);\n      h.forEach(function (j, k) {\n        var l,\n          m = {\n            x: 0,\n            y: 0\n          };\n        l = h[k + 1] ? h[k + 1] - j : Math.max(this.axisLength - j, 30), (i[k] || 0 === i[k]) && (\"x\" === this.units.pos ? (j = this.chartRect.x1 + j, m.x = e.axisX.labelOffset.x, \"start\" === e.axisX.position ? m.y = this.chartRect.padding.top + e.axisX.labelOffset.y + (d ? 5 : 20) : m.y = this.chartRect.y1 + e.axisX.labelOffset.y + (d ? 5 : 20)) : (j = this.chartRect.y1 - j, m.y = e.axisY.labelOffset.y - (d ? l : 0), \"start\" === e.axisY.position ? m.x = d ? this.chartRect.padding.left + e.axisY.labelOffset.x : this.chartRect.x1 - 10 : m.x = this.chartRect.x2 + e.axisY.labelOffset.x + 10), g.showGrid && c.createGrid(j, k, this, this.gridOffset, this.chartRect[this.counterUnits.len](), a, [e.classNames.grid, e.classNames[this.units.dir]], f), g.showLabel && c.createLabel(j, l, k, i, this, g.offset, m, b, [e.classNames.label, e.classNames[this.units.dir], e.classNames[g.position]], d, f));\n      }.bind(this));\n    }\n    var f = {\n      x: {\n        pos: \"x\",\n        len: \"width\",\n        dir: \"horizontal\",\n        rectStart: \"x1\",\n        rectEnd: \"x2\",\n        rectOffset: \"y2\"\n      },\n      y: {\n        pos: \"y\",\n        len: \"height\",\n        dir: \"vertical\",\n        rectStart: \"y2\",\n        rectEnd: \"y1\",\n        rectOffset: \"x1\"\n      }\n    };\n    c.Axis = c.Class.extend({\n      constructor: d,\n      createGridAndLabels: e,\n      projectValue: function projectValue(a, b, c) {\n        throw new Error(\"Base axis can't be instantiated!\");\n      }\n    }), c.Axis.units = f;\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a, b, d, e) {\n      var f = e.highLow || c.getHighLow(b.normalized, e, a.pos);\n      this.bounds = c.getBounds(d[a.rectEnd] - d[a.rectStart], f, e.scaleMinSpace || 20, e.onlyInteger), this.range = {\n        min: this.bounds.min,\n        max: this.bounds.max\n      }, c.AutoScaleAxis[\"super\"].constructor.call(this, a, d, this.bounds.values, e);\n    }\n    function e(a) {\n      return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.bounds.min) / this.bounds.range;\n    }\n    c.AutoScaleAxis = c.Axis.extend({\n      constructor: d,\n      projectValue: e\n    });\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a, b, d, e) {\n      var f = e.highLow || c.getHighLow(b.normalized, e, a.pos);\n      this.divisor = e.divisor || 1, this.ticks = e.ticks || c.times(this.divisor).map(function (a, b) {\n        return f.low + (f.high - f.low) / this.divisor * b;\n      }.bind(this)), this.range = {\n        min: f.low,\n        max: f.high\n      }, c.FixedScaleAxis[\"super\"].constructor.call(this, a, d, this.ticks, e), this.stepLength = this.axisLength / this.divisor;\n    }\n    function e(a) {\n      return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.range.min) / (this.range.max - this.range.min);\n    }\n    c.FixedScaleAxis = c.Axis.extend({\n      constructor: d,\n      projectValue: e\n    });\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a, b, d, e) {\n      c.StepAxis[\"super\"].constructor.call(this, a, d, e.ticks, e), this.stepLength = this.axisLength / (e.ticks.length - (e.stretch ? 1 : 0));\n    }\n    function e(a, b) {\n      return this.stepLength * b;\n    }\n    c.StepAxis = c.Axis.extend({\n      constructor: d,\n      projectValue: e\n    });\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a) {\n      var b = {\n        raw: this.data,\n        normalized: c.getDataArray(this.data, a.reverseData, !0)\n      };\n      this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart);\n      var d,\n        e,\n        g = this.svg.elem(\"g\").addClass(a.classNames.gridGroup),\n        h = this.svg.elem(\"g\"),\n        i = this.svg.elem(\"g\").addClass(a.classNames.labelGroup),\n        j = c.createChartRect(this.svg, a, f.padding);\n      d = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b, j, c.extend({}, a.axisX, {\n        ticks: b.raw.labels,\n        stretch: a.fullWidth\n      })) : a.axisX.type.call(c, c.Axis.units.x, b, j, a.axisX), e = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b, j, c.extend({}, a.axisY, {\n        high: c.isNum(a.high) ? a.high : a.axisY.high,\n        low: c.isNum(a.low) ? a.low : a.axisY.low\n      })) : a.axisY.type.call(c, c.Axis.units.y, b, j, a.axisY), d.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), e.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), b.raw.series.forEach(function (f, g) {\n        var i = h.elem(\"g\");\n        i.attr({\n          \"series-name\": f.name,\n          meta: c.serialize(f.meta)\n        }, c.xmlNs.uri), i.addClass([a.classNames.series, f.className || a.classNames.series + \"-\" + c.alphaNumerate(g)].join(\" \"));\n        var k = [],\n          l = [];\n        b.normalized[g].forEach(function (a, h) {\n          var i = {\n            x: j.x1 + d.projectValue(a, h, b.normalized[g]),\n            y: j.y1 - e.projectValue(a, h, b.normalized[g])\n          };\n          k.push(i.x, i.y), l.push({\n            value: a,\n            valueIndex: h,\n            meta: c.getMetaData(f, h)\n          });\n        }.bind(this));\n        var m = {\n            lineSmooth: c.getSeriesOption(f, a, \"lineSmooth\"),\n            showPoint: c.getSeriesOption(f, a, \"showPoint\"),\n            showLine: c.getSeriesOption(f, a, \"showLine\"),\n            showArea: c.getSeriesOption(f, a, \"showArea\"),\n            areaBase: c.getSeriesOption(f, a, \"areaBase\")\n          },\n          n = \"function\" == typeof m.lineSmooth ? m.lineSmooth : m.lineSmooth ? c.Interpolation.cardinal() : c.Interpolation.none(),\n          o = n(k, l);\n        if (m.showPoint && o.pathElements.forEach(function (b) {\n          var h = i.elem(\"line\", {\n            x1: b.x,\n            y1: b.y,\n            x2: b.x + .01,\n            y2: b.y\n          }, a.classNames.point).attr({\n            value: [b.data.value.x, b.data.value.y].filter(function (a) {\n              return a;\n            }).join(\",\"),\n            meta: b.data.meta\n          }, c.xmlNs.uri);\n          this.eventEmitter.emit(\"draw\", {\n            type: \"point\",\n            value: b.data.value,\n            index: b.data.valueIndex,\n            meta: b.data.meta,\n            series: f,\n            seriesIndex: g,\n            axisX: d,\n            axisY: e,\n            group: i,\n            element: h,\n            x: b.x,\n            y: b.y\n          });\n        }.bind(this)), m.showLine) {\n          var p = i.elem(\"path\", {\n            d: o.stringify()\n          }, a.classNames.line, !0);\n          this.eventEmitter.emit(\"draw\", {\n            type: \"line\",\n            values: b.normalized[g],\n            path: o.clone(),\n            chartRect: j,\n            index: g,\n            series: f,\n            seriesIndex: g,\n            axisX: d,\n            axisY: e,\n            group: i,\n            element: p\n          });\n        }\n        if (m.showArea && e.range) {\n          var q = Math.max(Math.min(m.areaBase, e.range.max), e.range.min),\n            r = j.y1 - e.projectValue(q);\n          o.splitByCommand(\"M\").filter(function (a) {\n            return a.pathElements.length > 1;\n          }).map(function (a) {\n            var b = a.pathElements[0],\n              c = a.pathElements[a.pathElements.length - 1];\n            return a.clone(!0).position(0).remove(1).move(b.x, r).line(b.x, b.y).position(a.pathElements.length + 1).line(c.x, r);\n          }).forEach(function (h) {\n            var k = i.elem(\"path\", {\n              d: h.stringify()\n            }, a.classNames.area, !0).attr({\n              values: b.normalized[g]\n            }, c.xmlNs.uri);\n            this.eventEmitter.emit(\"draw\", {\n              type: \"area\",\n              values: b.normalized[g],\n              path: h.clone(),\n              series: f,\n              seriesIndex: g,\n              axisX: d,\n              axisY: e,\n              chartRect: j,\n              index: g,\n              group: i,\n              element: k\n            });\n          }.bind(this));\n        }\n      }.bind(this)), this.eventEmitter.emit(\"created\", {\n        bounds: e.bounds,\n        chartRect: j,\n        axisX: d,\n        axisY: e,\n        svg: this.svg,\n        options: a\n      });\n    }\n    function e(a, b, d, e) {\n      c.Line[\"super\"].constructor.call(this, a, b, f, c.extend({}, f, d), e);\n    }\n    var f = {\n      axisX: {\n        offset: 30,\n        position: \"end\",\n        labelOffset: {\n          x: 0,\n          y: 0\n        },\n        showLabel: !0,\n        showGrid: !0,\n        labelInterpolationFnc: c.noop,\n        type: void 0\n      },\n      axisY: {\n        offset: 40,\n        position: \"start\",\n        labelOffset: {\n          x: 0,\n          y: 0\n        },\n        showLabel: !0,\n        showGrid: !0,\n        labelInterpolationFnc: c.noop,\n        type: void 0,\n        scaleMinSpace: 20,\n        onlyInteger: !1\n      },\n      width: void 0,\n      height: void 0,\n      showLine: !0,\n      showPoint: !0,\n      showArea: !1,\n      areaBase: 0,\n      lineSmooth: !0,\n      low: void 0,\n      high: void 0,\n      chartPadding: {\n        top: 15,\n        right: 15,\n        bottom: 5,\n        left: 10\n      },\n      fullWidth: !1,\n      reverseData: !1,\n      classNames: {\n        chart: \"ct-chart-line\",\n        label: \"ct-label\",\n        labelGroup: \"ct-labels\",\n        series: \"ct-series\",\n        line: \"ct-line\",\n        point: \"ct-point\",\n        area: \"ct-area\",\n        grid: \"ct-grid\",\n        gridGroup: \"ct-grids\",\n        vertical: \"ct-vertical\",\n        horizontal: \"ct-horizontal\",\n        start: \"ct-start\",\n        end: \"ct-end\"\n      }\n    };\n    c.Line = c.Base.extend({\n      constructor: e,\n      createChart: d\n    });\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a) {\n      var b,\n        d = {\n          raw: this.data,\n          normalized: a.distributeSeries ? c.getDataArray(this.data, a.reverseData, a.horizontalBars ? \"x\" : \"y\").map(function (a) {\n            return [a];\n          }) : c.getDataArray(this.data, a.reverseData, a.horizontalBars ? \"x\" : \"y\")\n        };\n      this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart + (a.horizontalBars ? \" \" + a.classNames.horizontalBars : \"\"));\n      var e = this.svg.elem(\"g\").addClass(a.classNames.gridGroup),\n        g = this.svg.elem(\"g\"),\n        h = this.svg.elem(\"g\").addClass(a.classNames.labelGroup);\n      if (a.stackBars) {\n        var i = c.serialMap(d.normalized, function () {\n          return Array.prototype.slice.call(arguments).map(function (a) {\n            return a;\n          }).reduce(function (a, b) {\n            return {\n              x: a.x + b.x || 0,\n              y: a.y + b.y || 0\n            };\n          }, {\n            x: 0,\n            y: 0\n          });\n        });\n        b = c.getHighLow([i], c.extend({}, a, {\n          referenceValue: 0\n        }), a.horizontalBars ? \"x\" : \"y\");\n      } else b = c.getHighLow(d.normalized, c.extend({}, a, {\n        referenceValue: 0\n      }), a.horizontalBars ? \"x\" : \"y\");\n      b.high = +a.high || (0 === a.high ? 0 : b.high), b.low = +a.low || (0 === a.low ? 0 : b.low);\n      var j,\n        k,\n        l,\n        m,\n        n,\n        o = c.createChartRect(this.svg, a, f.padding);\n      k = a.distributeSeries && a.stackBars ? d.raw.labels.slice(0, 1) : d.raw.labels, a.horizontalBars ? (j = m = void 0 === a.axisX.type ? new c.AutoScaleAxis(c.Axis.units.x, d, o, c.extend({}, a.axisX, {\n        highLow: b,\n        referenceValue: 0\n      })) : a.axisX.type.call(c, c.Axis.units.x, d, o, c.extend({}, a.axisX, {\n        highLow: b,\n        referenceValue: 0\n      })), l = n = void 0 === a.axisY.type ? new c.StepAxis(c.Axis.units.y, d, o, {\n        ticks: k\n      }) : a.axisY.type.call(c, c.Axis.units.y, d, o, a.axisY)) : (l = m = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, d, o, {\n        ticks: k\n      }) : a.axisX.type.call(c, c.Axis.units.x, d, o, a.axisX), j = n = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, d, o, c.extend({}, a.axisY, {\n        highLow: b,\n        referenceValue: 0\n      })) : a.axisY.type.call(c, c.Axis.units.y, d, o, c.extend({}, a.axisY, {\n        highLow: b,\n        referenceValue: 0\n      })));\n      var p = a.horizontalBars ? o.x1 + j.projectValue(0) : o.y1 - j.projectValue(0),\n        q = [];\n      l.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), j.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), d.raw.series.forEach(function (b, e) {\n        var f,\n          h,\n          i = e - (d.raw.series.length - 1) / 2;\n        f = a.distributeSeries && !a.stackBars ? l.axisLength / d.normalized.length / 2 : a.distributeSeries && a.stackBars ? l.axisLength / 2 : l.axisLength / d.normalized[e].length / 2, h = g.elem(\"g\"), h.attr({\n          \"series-name\": b.name,\n          meta: c.serialize(b.meta)\n        }, c.xmlNs.uri), h.addClass([a.classNames.series, b.className || a.classNames.series + \"-\" + c.alphaNumerate(e)].join(\" \")), d.normalized[e].forEach(function (g, k) {\n          var r, s, t, u;\n          if (u = a.distributeSeries && !a.stackBars ? e : a.distributeSeries && a.stackBars ? 0 : k, r = a.horizontalBars ? {\n            x: o.x1 + j.projectValue(g && g.x ? g.x : 0, k, d.normalized[e]),\n            y: o.y1 - l.projectValue(g && g.y ? g.y : 0, u, d.normalized[e])\n          } : {\n            x: o.x1 + l.projectValue(g && g.x ? g.x : 0, u, d.normalized[e]),\n            y: o.y1 - j.projectValue(g && g.y ? g.y : 0, k, d.normalized[e])\n          }, l instanceof c.StepAxis && (l.options.stretch || (r[l.units.pos] += f * (a.horizontalBars ? -1 : 1)), r[l.units.pos] += a.stackBars || a.distributeSeries ? 0 : i * a.seriesBarDistance * (a.horizontalBars ? -1 : 1)), t = q[k] || p, q[k] = t - (p - r[l.counterUnits.pos]), void 0 !== g) {\n            var v = {};\n            v[l.units.pos + \"1\"] = r[l.units.pos], v[l.units.pos + \"2\"] = r[l.units.pos], v[l.counterUnits.pos + \"1\"] = a.stackBars ? t : p, v[l.counterUnits.pos + \"2\"] = a.stackBars ? q[k] : r[l.counterUnits.pos], v.x1 = Math.min(Math.max(v.x1, o.x1), o.x2), v.x2 = Math.min(Math.max(v.x2, o.x1), o.x2), v.y1 = Math.min(Math.max(v.y1, o.y2), o.y1), v.y2 = Math.min(Math.max(v.y2, o.y2), o.y1), s = h.elem(\"line\", v, a.classNames.bar).attr({\n              value: [g.x, g.y].filter(function (a) {\n                return a;\n              }).join(\",\"),\n              meta: c.getMetaData(b, k)\n            }, c.xmlNs.uri), this.eventEmitter.emit(\"draw\", c.extend({\n              type: \"bar\",\n              value: g,\n              index: k,\n              meta: c.getMetaData(b, k),\n              series: b,\n              seriesIndex: e,\n              axisX: m,\n              axisY: n,\n              chartRect: o,\n              group: h,\n              element: s\n            }, v));\n          }\n        }.bind(this));\n      }.bind(this)), this.eventEmitter.emit(\"created\", {\n        bounds: j.bounds,\n        chartRect: o,\n        axisX: m,\n        axisY: n,\n        svg: this.svg,\n        options: a\n      });\n    }\n    function e(a, b, d, e) {\n      c.Bar[\"super\"].constructor.call(this, a, b, f, c.extend({}, f, d), e);\n    }\n    var f = {\n      axisX: {\n        offset: 30,\n        position: \"end\",\n        labelOffset: {\n          x: 0,\n          y: 0\n        },\n        showLabel: !0,\n        showGrid: !0,\n        labelInterpolationFnc: c.noop,\n        scaleMinSpace: 30,\n        onlyInteger: !1\n      },\n      axisY: {\n        offset: 40,\n        position: \"start\",\n        labelOffset: {\n          x: 0,\n          y: 0\n        },\n        showLabel: !0,\n        showGrid: !0,\n        labelInterpolationFnc: c.noop,\n        scaleMinSpace: 20,\n        onlyInteger: !1\n      },\n      width: void 0,\n      height: void 0,\n      high: void 0,\n      low: void 0,\n      onlyInteger: !1,\n      chartPadding: {\n        top: 15,\n        right: 15,\n        bottom: 5,\n        left: 10\n      },\n      seriesBarDistance: 15,\n      stackBars: !1,\n      horizontalBars: !1,\n      distributeSeries: !1,\n      reverseData: !1,\n      classNames: {\n        chart: \"ct-chart-bar\",\n        horizontalBars: \"ct-horizontal-bars\",\n        label: \"ct-label\",\n        labelGroup: \"ct-labels\",\n        series: \"ct-series\",\n        bar: \"ct-bar\",\n        grid: \"ct-grid\",\n        gridGroup: \"ct-grids\",\n        vertical: \"ct-vertical\",\n        horizontal: \"ct-horizontal\",\n        start: \"ct-start\",\n        end: \"ct-end\"\n      }\n    };\n    c.Bar = c.Base.extend({\n      constructor: e,\n      createChart: d\n    });\n  }(window, document, a), function (a, b, c) {\n    \"use strict\";\n\n    function d(a, b, c) {\n      var d = b.x > a.x;\n      return d && \"explode\" === c || !d && \"implode\" === c ? \"start\" : d && \"implode\" === c || !d && \"explode\" === c ? \"end\" : \"middle\";\n    }\n    function e(a) {\n      var b,\n        e,\n        f,\n        h,\n        i,\n        j = [],\n        k = a.startAngle,\n        l = c.getDataArray(this.data, a.reverseData);\n      this.svg = c.createSvg(this.container, a.width, a.height, a.donut ? a.classNames.chartDonut : a.classNames.chartPie), e = c.createChartRect(this.svg, a, g.padding), f = Math.min(e.width() / 2, e.height() / 2), i = a.total || l.reduce(function (a, b) {\n        return a + b;\n      }, 0), f -= a.donut ? a.donutWidth / 2 : 0, h = \"outside\" === a.labelPosition || a.donut ? f : \"center\" === a.labelPosition ? 0 : f / 2, h += a.labelOffset;\n      var m = {\n          x: e.x1 + e.width() / 2,\n          y: e.y2 + e.height() / 2\n        },\n        n = 1 === this.data.series.filter(function (a) {\n          return a.hasOwnProperty(\"value\") ? 0 !== a.value : 0 !== a;\n        }).length;\n      a.showLabel && (b = this.svg.elem(\"g\", null, null, !0));\n      for (var o = 0; o < this.data.series.length; o++) {\n        var p = this.data.series[o];\n        j[o] = this.svg.elem(\"g\", null, null, !0), j[o].attr({\n          \"series-name\": p.name\n        }, c.xmlNs.uri), j[o].addClass([a.classNames.series, p.className || a.classNames.series + \"-\" + c.alphaNumerate(o)].join(\" \"));\n        var q = k + l[o] / i * 360;\n        q - k === 360 && (q -= .01);\n        var r = c.polarToCartesian(m.x, m.y, f, k - (0 === o || n ? 0 : .2)),\n          s = c.polarToCartesian(m.x, m.y, f, q),\n          t = new c.Svg.Path(!a.donut).move(s.x, s.y).arc(f, f, 0, q - k > 180, 0, r.x, r.y);\n        a.donut || t.line(m.x, m.y);\n        var u = j[o].elem(\"path\", {\n          d: t.stringify()\n        }, a.donut ? a.classNames.sliceDonut : a.classNames.slicePie);\n        if (u.attr({\n          value: l[o],\n          meta: c.serialize(p.meta)\n        }, c.xmlNs.uri), a.donut && u.attr({\n          style: \"stroke-width: \" + +a.donutWidth + \"px\"\n        }), this.eventEmitter.emit(\"draw\", {\n          type: \"slice\",\n          value: l[o],\n          totalDataSum: i,\n          index: o,\n          meta: p.meta,\n          series: p,\n          group: j[o],\n          element: u,\n          path: t.clone(),\n          center: m,\n          radius: f,\n          startAngle: k,\n          endAngle: q\n        }), a.showLabel) {\n          var v = c.polarToCartesian(m.x, m.y, h, k + (q - k) / 2),\n            w = a.labelInterpolationFnc(this.data.labels ? this.data.labels[o] : l[o], o);\n          if (w || 0 === w) {\n            var x = b.elem(\"text\", {\n              dx: v.x,\n              dy: v.y,\n              \"text-anchor\": d(m, v, a.labelDirection)\n            }, a.classNames.label).text(\"\" + w);\n            this.eventEmitter.emit(\"draw\", {\n              type: \"label\",\n              index: o,\n              group: b,\n              element: x,\n              text: \"\" + w,\n              x: v.x,\n              y: v.y\n            });\n          }\n        }\n        k = q;\n      }\n      this.eventEmitter.emit(\"created\", {\n        chartRect: e,\n        svg: this.svg,\n        options: a\n      });\n    }\n    function f(a, b, d, e) {\n      c.Pie[\"super\"].constructor.call(this, a, b, g, c.extend({}, g, d), e);\n    }\n    var g = {\n      width: void 0,\n      height: void 0,\n      chartPadding: 5,\n      classNames: {\n        chartPie: \"ct-chart-pie\",\n        chartDonut: \"ct-chart-donut\",\n        series: \"ct-series\",\n        slicePie: \"ct-slice-pie\",\n        sliceDonut: \"ct-slice-donut\",\n        label: \"ct-label\"\n      },\n      startAngle: 0,\n      total: void 0,\n      donut: !1,\n      donutWidth: 60,\n      showLabel: !0,\n      labelOffset: 0,\n      labelPosition: \"inside\",\n      labelInterpolationFnc: c.noop,\n      labelDirection: \"neutral\",\n      reverseData: !1\n    };\n    c.Pie = c.Base.extend({\n      constructor: f,\n      createChart: e,\n      determineAnchorPosition: d\n    });\n  }(window, document, a), a;\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/chartist.min.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/fullcalendar.min.js":
/*!*************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/fullcalendar.min.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*!\n * FullCalendar v3.0.1\n * Docs & License: http://fullcalendar.io/\n * (c) 2016 Adam Shaw\n */\n!function (t) {\n   true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\"), __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;\n}(function (t, e) {\n  function n(t) {\n    return q(t, qt);\n  }\n  function i(t, e) {\n    e.left && t.css({\n      \"border-left-width\": 1,\n      \"margin-left\": e.left - 1\n    }), e.right && t.css({\n      \"border-right-width\": 1,\n      \"margin-right\": e.right - 1\n    });\n  }\n  function r(t) {\n    t.css({\n      \"margin-left\": \"\",\n      \"margin-right\": \"\",\n      \"border-left-width\": \"\",\n      \"border-right-width\": \"\"\n    });\n  }\n  function s() {\n    t(\"body\").addClass(\"fc-not-allowed\");\n  }\n  function o() {\n    t(\"body\").removeClass(\"fc-not-allowed\");\n  }\n  function l(e, n, i) {\n    var r = Math.floor(n / e.length),\n      s = Math.floor(n - r * (e.length - 1)),\n      o = [],\n      l = [],\n      u = [],\n      d = 0;\n    a(e), e.each(function (n, i) {\n      var a = n === e.length - 1 ? s : r,\n        c = t(i).outerHeight(!0);\n      c < a ? (o.push(i), l.push(c), u.push(t(i).height())) : d += c;\n    }), i && (n -= d, r = Math.floor(n / o.length), s = Math.floor(n - r * (o.length - 1))), t(o).each(function (e, n) {\n      var i = e === o.length - 1 ? s : r,\n        a = l[e],\n        d = u[e],\n        c = i - (a - d);\n      a < i && t(n).height(c);\n    });\n  }\n  function a(t) {\n    t.height(\"\");\n  }\n  function u(e) {\n    var n = 0;\n    return e.find(\"> *\").each(function (e, i) {\n      var r = t(i).outerWidth();\n      r > n && (n = r);\n    }), n++, e.width(n), n;\n  }\n  function d(t, e) {\n    var n,\n      i = t.add(e);\n    return i.css({\n      position: \"relative\",\n      left: -1\n    }), n = t.outerHeight() - e.outerHeight(), i.css({\n      position: \"\",\n      left: \"\"\n    }), n;\n  }\n  function c(e) {\n    var n = e.css(\"position\"),\n      i = e.parents().filter(function () {\n        var e = t(this);\n        return /(auto|scroll)/.test(e.css(\"overflow\") + e.css(\"overflow-y\") + e.css(\"overflow-x\"));\n      }).eq(0);\n    return \"fixed\" !== n && i.length ? i : t(e[0].ownerDocument || document);\n  }\n  function h(t, e) {\n    var n = t.offset(),\n      i = n.left - (e ? e.left : 0),\n      r = n.top - (e ? e.top : 0);\n    return {\n      left: i,\n      right: i + t.outerWidth(),\n      top: r,\n      bottom: r + t.outerHeight()\n    };\n  }\n  function f(t, e) {\n    var n = t.offset(),\n      i = p(t),\n      r = n.left + y(t, \"border-left-width\") + i.left - (e ? e.left : 0),\n      s = n.top + y(t, \"border-top-width\") + i.top - (e ? e.top : 0);\n    return {\n      left: r,\n      right: r + t[0].clientWidth,\n      top: s,\n      bottom: s + t[0].clientHeight\n    };\n  }\n  function g(t, e) {\n    var n = t.offset(),\n      i = n.left + y(t, \"border-left-width\") + y(t, \"padding-left\") - (e ? e.left : 0),\n      r = n.top + y(t, \"border-top-width\") + y(t, \"padding-top\") - (e ? e.top : 0);\n    return {\n      left: i,\n      right: i + t.width(),\n      top: r,\n      bottom: r + t.height()\n    };\n  }\n  function p(t) {\n    var e = t.innerWidth() - t[0].clientWidth,\n      n = {\n        left: 0,\n        right: 0,\n        top: 0,\n        bottom: t.innerHeight() - t[0].clientHeight\n      };\n    return v() && \"rtl\" == t.css(\"direction\") ? n.left = e : n.right = e, n;\n  }\n  function v() {\n    return null === Zt && (Zt = m()), Zt;\n  }\n  function m() {\n    var e = t(\"<div><div/></div>\").css({\n        position: \"absolute\",\n        top: -1e3,\n        left: 0,\n        border: 0,\n        padding: 0,\n        overflow: \"scroll\",\n        direction: \"rtl\"\n      }).appendTo(\"body\"),\n      n = e.children(),\n      i = n.offset().left > e.offset().left;\n    return e.remove(), i;\n  }\n  function y(t, e) {\n    return parseFloat(t.css(e)) || 0;\n  }\n  function S(t) {\n    return 1 == t.which && !t.ctrlKey;\n  }\n  function w(t) {\n    if (void 0 !== t.pageX) return t.pageX;\n    var e = t.originalEvent.touches;\n    return e ? e[0].pageX : void 0;\n  }\n  function E(t) {\n    if (void 0 !== t.pageY) return t.pageY;\n    var e = t.originalEvent.touches;\n    return e ? e[0].pageY : void 0;\n  }\n  function D(t) {\n    return /^touch/.test(t.type);\n  }\n  function b(t) {\n    t.addClass(\"fc-unselectable\").on(\"selectstart\", C);\n  }\n  function C(t) {\n    t.preventDefault();\n  }\n  function H(t) {\n    return !!window.addEventListener && (window.addEventListener(\"scroll\", t, !0), !0);\n  }\n  function T(t) {\n    return !!window.removeEventListener && (window.removeEventListener(\"scroll\", t, !0), !0);\n  }\n  function x(t, e) {\n    var n = {\n      left: Math.max(t.left, e.left),\n      right: Math.min(t.right, e.right),\n      top: Math.max(t.top, e.top),\n      bottom: Math.min(t.bottom, e.bottom)\n    };\n    return n.left < n.right && n.top < n.bottom && n;\n  }\n  function R(t, e) {\n    return {\n      left: Math.min(Math.max(t.left, e.left), e.right),\n      top: Math.min(Math.max(t.top, e.top), e.bottom)\n    };\n  }\n  function I(t) {\n    return {\n      left: (t.left + t.right) / 2,\n      top: (t.top + t.bottom) / 2\n    };\n  }\n  function k(t, e) {\n    return {\n      left: t.left - e.left,\n      top: t.top - e.top\n    };\n  }\n  function M(e) {\n    var n,\n      i,\n      r = [],\n      s = [];\n    for (\"string\" == typeof e ? s = e.split(/\\s*,\\s*/) : \"function\" == typeof e ? s = [e] : t.isArray(e) && (s = e), n = 0; n < s.length; n++) i = s[n], \"string\" == typeof i ? r.push(\"-\" == i.charAt(0) ? {\n      field: i.substring(1),\n      order: -1\n    } : {\n      field: i,\n      order: 1\n    }) : \"function\" == typeof i && r.push({\n      func: i\n    });\n    return r;\n  }\n  function L(t, e, n) {\n    var i, r;\n    for (i = 0; i < n.length; i++) if (r = B(t, e, n[i])) return r;\n    return 0;\n  }\n  function B(t, e, n) {\n    return n.func ? n.func(t, e) : z(t[n.field], e[n.field]) * (n.order || 1);\n  }\n  function z(e, n) {\n    return e || n ? null == n ? -1 : null == e ? 1 : \"string\" === t.type(e) || \"string\" === t.type(n) ? String(e).localeCompare(String(n)) : e - n : 0;\n  }\n  function F(t, e) {\n    var n,\n      i,\n      r,\n      s,\n      o = t.start,\n      l = t.end,\n      a = e.start,\n      u = e.end;\n    if (l > a && o < u) return o >= a ? (n = o.clone(), r = !0) : (n = a.clone(), r = !1), l <= u ? (i = l.clone(), s = !0) : (i = u.clone(), s = !1), {\n      start: n,\n      end: i,\n      isStart: r,\n      isEnd: s\n    };\n  }\n  function N(t, n) {\n    return e.duration({\n      days: t.clone().stripTime().diff(n.clone().stripTime(), \"days\"),\n      ms: t.time() - n.time()\n    });\n  }\n  function G(t, n) {\n    return e.duration({\n      days: t.clone().stripTime().diff(n.clone().stripTime(), \"days\")\n    });\n  }\n  function A(t, n, i) {\n    return e.duration(Math.round(t.diff(n, i, !0)), i);\n  }\n  function O(t, e) {\n    var n, i, r;\n    for (n = 0; n < Xt.length && (i = Xt[n], r = V(i, t, e), !(r >= 1 && ot(r))); n++);\n    return i;\n  }\n  function V(t, n, i) {\n    return null != i ? i.diff(n, t, !0) : e.isDuration(n) ? n.as(t) : n.end.diff(n.start, t, !0);\n  }\n  function P(t, e, n) {\n    var i;\n    return W(n) ? (e - t) / n : (i = n.asMonths(), Math.abs(i) >= 1 && ot(i) ? e.diff(t, \"months\", !0) / i : e.diff(t, \"days\", !0) / n.asDays());\n  }\n  function _(t, e) {\n    var n, i;\n    return W(t) || W(e) ? t / e : (n = t.asMonths(), i = e.asMonths(), Math.abs(n) >= 1 && ot(n) && Math.abs(i) >= 1 && ot(i) ? n / i : t.asDays() / e.asDays());\n  }\n  function Y(t, n) {\n    var i;\n    return W(t) ? e.duration(t * n) : (i = t.asMonths(), Math.abs(i) >= 1 && ot(i) ? e.duration({\n      months: i * n\n    }) : e.duration({\n      days: t.asDays() * n\n    }));\n  }\n  function W(t) {\n    return Boolean(t.hours() || t.minutes() || t.seconds() || t.milliseconds());\n  }\n  function j(t) {\n    return \"[object Date]\" === Object.prototype.toString.call(t) || t instanceof Date;\n  }\n  function U(t) {\n    return /^\\d+\\:\\d+(?:\\:\\d+\\.?(?:\\d{3})?)?$/.test(t);\n  }\n  function q(t, e) {\n    var n,\n      i,\n      r,\n      s,\n      o,\n      l,\n      a = {};\n    if (e) for (n = 0; n < e.length; n++) {\n      for (i = e[n], r = [], s = t.length - 1; s >= 0; s--) if (o = t[s][i], \"object\" == _typeof(o)) r.unshift(o);else if (void 0 !== o) {\n        a[i] = o;\n        break;\n      }\n      r.length && (a[i] = q(r));\n    }\n    for (n = t.length - 1; n >= 0; n--) {\n      l = t[n];\n      for (i in l) i in a || (a[i] = l[i]);\n    }\n    return a;\n  }\n  function Z(t) {\n    var e = function e() {};\n    return e.prototype = t, new e();\n  }\n  function $(t, e) {\n    for (var n in t) X(t, n) && (e[n] = t[n]);\n  }\n  function X(t, e) {\n    return Kt.call(t, e);\n  }\n  function K(e) {\n    return /undefined|null|boolean|number|string/.test(t.type(e));\n  }\n  function Q(e, n, i) {\n    if (t.isFunction(e) && (e = [e]), e) {\n      var r, s;\n      for (r = 0; r < e.length; r++) s = e[r].apply(n, i) || s;\n      return s;\n    }\n  }\n  function J() {\n    for (var t = 0; t < arguments.length; t++) if (void 0 !== arguments[t]) return arguments[t];\n  }\n  function tt(t) {\n    return (t + \"\").replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/'/g, \"&#039;\").replace(/\"/g, \"&quot;\").replace(/\\n/g, \"<br />\");\n  }\n  function et(t) {\n    return t.replace(/&.*?;/g, \"\");\n  }\n  function nt(e) {\n    var n = [];\n    return t.each(e, function (t, e) {\n      null != e && n.push(t + \":\" + e);\n    }), n.join(\";\");\n  }\n  function it(e) {\n    var n = [];\n    return t.each(e, function (t, e) {\n      null != e && n.push(t + '=\"' + tt(e) + '\"');\n    }), n.join(\" \");\n  }\n  function rt(t) {\n    return t.charAt(0).toUpperCase() + t.slice(1);\n  }\n  function st(t, e) {\n    return t - e;\n  }\n  function ot(t) {\n    return t % 1 === 0;\n  }\n  function lt(t, e) {\n    var n = t[e];\n    return function () {\n      return n.apply(t, arguments);\n    };\n  }\n  function at(t, e, n) {\n    var i,\n      r,\n      s,\n      o,\n      l,\n      a = function a() {\n        var u = +new Date() - o;\n        u < e ? i = setTimeout(a, e - u) : (i = null, n || (l = t.apply(s, r), s = r = null));\n      };\n    return function () {\n      s = this, r = arguments, o = +new Date();\n      var u = n && !i;\n      return i || (i = setTimeout(a, e)), u && (l = t.apply(s, r), s = r = null), l;\n    };\n  }\n  function ut(e, n) {\n    return e && e.then && \"resolved\" !== e.state() ? n ? e.then(n) : void 0 : t.when(n());\n  }\n  function dt(n, i, r) {\n    var s,\n      o,\n      l,\n      a,\n      u = n[0],\n      d = 1 == n.length && \"string\" == typeof u;\n    return e.isMoment(u) || j(u) || void 0 === u ? a = e.apply(null, n) : (s = !1, o = !1, d ? Qt.test(u) ? (u += \"-01\", n = [u], s = !0, o = !0) : (l = Jt.exec(u)) && (s = !l[5], o = !0) : t.isArray(u) && (o = !0), a = i || s ? e.utc.apply(e, n) : e.apply(null, n), s ? (a._ambigTime = !0, a._ambigZone = !0) : r && (o ? a._ambigZone = !0 : d && a.utcOffset(u))), a._fullCalendar = !0, a;\n  }\n  function ct(t, e) {\n    return ee.format.call(t, e);\n  }\n  function ht(t, e) {\n    return ft(t, yt(e));\n  }\n  function ft(t, e) {\n    var n,\n      i = \"\";\n    for (n = 0; n < e.length; n++) i += gt(t, e[n]);\n    return i;\n  }\n  function gt(t, e) {\n    var n, i;\n    return \"string\" == typeof e ? e : (n = e.token) ? ie[n] ? ie[n](t) : ct(t, n) : e.maybe && (i = ft(t, e.maybe), i.match(/[1-9]/)) ? i : \"\";\n  }\n  function pt(t, e, n, i, r) {\n    var s;\n    return t = jt.moment.parseZone(t), e = jt.moment.parseZone(e), s = t.localeData(), n = s.longDateFormat(n) || n, i = i || \" - \", vt(t, e, yt(n), i, r);\n  }\n  function vt(t, e, n, i, r) {\n    var s,\n      o,\n      l,\n      a,\n      u = t.clone().stripZone(),\n      d = e.clone().stripZone(),\n      c = \"\",\n      h = \"\",\n      f = \"\",\n      g = \"\",\n      p = \"\";\n    for (o = 0; o < n.length && (s = mt(t, e, u, d, n[o]), s !== !1); o++) c += s;\n    for (l = n.length - 1; l > o && (s = mt(t, e, u, d, n[l]), s !== !1); l--) h = s + h;\n    for (a = o; a <= l; a++) f += gt(t, n[a]), g += gt(e, n[a]);\n    return (f || g) && (p = r ? g + i + f : f + i + g), c + p + h;\n  }\n  function mt(t, e, n, i, r) {\n    var s, o;\n    return \"string\" == typeof r ? r : !!((s = r.token) && (o = re[s.charAt(0)], o && n.isSame(i, o))) && ct(t, s);\n  }\n  function yt(t) {\n    return t in se ? se[t] : se[t] = St(t);\n  }\n  function St(t) {\n    for (var e, n = [], i = /\\[([^\\]]*)\\]|\\(([^\\)]*)\\)|(LTS|LT|(\\w)\\4*o?)|([^\\w\\[\\(]+)/g; e = i.exec(t);) e[1] ? n.push(e[1]) : e[2] ? n.push({\n      maybe: St(e[2])\n    }) : e[3] ? n.push({\n      token: e[3]\n    }) : e[5] && n.push(e[5]);\n    return n;\n  }\n  function wt() {}\n  function Et(t, e) {\n    var n;\n    return X(e, \"constructor\") && (n = e.constructor), \"function\" != typeof n && (n = e.constructor = function () {\n      t.apply(this, arguments);\n    }), n.prototype = Z(t.prototype), $(e, n.prototype), $(t, n), n;\n  }\n  function Dt(t, e) {\n    $(e, t.prototype);\n  }\n  function bt(t, e) {\n    return !t && !e || !(!t || !e) && t.component === e.component && Ct(t, e) && Ct(e, t);\n  }\n  function Ct(t, e) {\n    for (var n in t) if (!/^(component|left|right|top|bottom)$/.test(n) && t[n] !== e[n]) return !1;\n    return !0;\n  }\n  function Ht(t) {\n    return {\n      start: t.start.clone(),\n      end: t.end ? t.end.clone() : null,\n      allDay: t.allDay\n    };\n  }\n  function Tt(t) {\n    var e = Rt(t);\n    return \"background\" === e || \"inverse-background\" === e;\n  }\n  function xt(t) {\n    return \"inverse-background\" === Rt(t);\n  }\n  function Rt(t) {\n    return J((t.source || {}).rendering, t.rendering);\n  }\n  function It(t) {\n    var e,\n      n,\n      i = {};\n    for (e = 0; e < t.length; e++) n = t[e], (i[n._id] || (i[n._id] = [])).push(n);\n    return i;\n  }\n  function kt(t, e) {\n    return t.start - e.start;\n  }\n  function Mt(n) {\n    var i,\n      r,\n      s,\n      o,\n      l = jt.dataAttrPrefix;\n    return l && (l += \"-\"), i = n.data(l + \"event\") || null, i && (i = \"object\" == _typeof(i) ? t.extend({}, i) : {}, r = i.start, null == r && (r = i.time), s = i.duration, o = i.stick, delete i.start, delete i.time, delete i.duration, delete i.stick), null == r && (r = n.data(l + \"start\")), null == r && (r = n.data(l + \"time\")), null == s && (s = n.data(l + \"duration\")), null == o && (o = n.data(l + \"stick\")), r = null != r ? e.duration(r) : null, s = null != s ? e.duration(s) : null, o = Boolean(o), {\n      eventProps: i,\n      startTime: r,\n      duration: s,\n      stick: o\n    };\n  }\n  function Lt(t, e) {\n    var n, i;\n    for (n = 0; n < e.length; n++) if (i = e[n], i.leftCol <= t.rightCol && i.rightCol >= t.leftCol) return !0;\n    return !1;\n  }\n  function Bt(t, e) {\n    return t.leftCol - e.leftCol;\n  }\n  function zt(t) {\n    var e,\n      n,\n      i,\n      r = [];\n    for (e = 0; e < t.length; e++) {\n      for (n = t[e], i = 0; i < r.length && Gt(n, r[i]).length; i++);\n      n.level = i, (r[i] || (r[i] = [])).push(n);\n    }\n    return r;\n  }\n  function Ft(t) {\n    var e, n, i, r, s;\n    for (e = 0; e < t.length; e++) for (n = t[e], i = 0; i < n.length; i++) for (r = n[i], r.forwardSegs = [], s = e + 1; s < t.length; s++) Gt(r, t[s], r.forwardSegs);\n  }\n  function Nt(t) {\n    var e,\n      n,\n      i = t.forwardSegs,\n      r = 0;\n    if (void 0 === t.forwardPressure) {\n      for (e = 0; e < i.length; e++) n = i[e], Nt(n), r = Math.max(r, 1 + n.forwardPressure);\n      t.forwardPressure = r;\n    }\n  }\n  function Gt(t, e, n) {\n    n = n || [];\n    for (var i = 0; i < e.length; i++) At(t, e[i]) && n.push(e[i]);\n    return n;\n  }\n  function At(t, e) {\n    return t.bottom > e.top && t.top < e.bottom;\n  }\n  function Ot(n, i) {\n    function r(t) {\n      t._locale = U;\n    }\n    function s() {\n      $ ? u() && (g(), d()) : o();\n    }\n    function o() {\n      n.addClass(\"fc\"), n.on(\"click.fc\", \"a[data-goto]\", function (e) {\n        var n = t(this),\n          i = n.data(\"goto\"),\n          r = j.moment(i.date),\n          s = i.type,\n          o = K.opt(\"navLink\" + rt(s) + \"Click\");\n        \"function\" == typeof o ? o(r, e) : (\"string\" == typeof o && (s = o), N(r, s));\n      }), j.bindOption(\"theme\", function (t) {\n        X = t ? \"ui\" : \"fc\", n.toggleClass(\"ui-widget\", t), n.toggleClass(\"fc-unthemed\", !t);\n      }), j.bindOptions([\"isRTL\", \"locale\"], function (t) {\n        n.toggleClass(\"fc-ltr\", !t), n.toggleClass(\"fc-rtl\", t);\n      }), $ = t(\"<div class='fc-view-container'/>\").prependTo(n), q = j.header = new _t(j), l(), d(j.options.defaultView), j.options.handleWindowResize && (J = at(m, j.options.windowResizeDelay), t(window).resize(J));\n    }\n    function l() {\n      q.render(), q.el && n.prepend(q.el);\n    }\n    function a() {\n      K && K.removeElement(), q.removeElement(), $.remove(), n.removeClass(\"fc fc-ltr fc-rtl fc-unthemed ui-widget\"), n.off(\".fc\"), J && t(window).unbind(\"resize\", J);\n    }\n    function u() {\n      return n.is(\":visible\");\n    }\n    function d(e, n) {\n      lt++, K && e && K.type !== e && (A(), c()), !K && e && (K = j.view = ot[e] || (ot[e] = j.instantiateView(e)), K.setElement(t(\"<div class='fc-view fc-\" + e + \"-view' />\").appendTo($)), q.activateButton(e)), K && (tt = K.massageCurrentDate(tt), K.displaying && tt >= K.intervalStart && tt < K.intervalEnd || u() && (K.display(tt, n), O(), H(), T(), E())), O(), lt--;\n    }\n    function c() {\n      q.deactivateButton(K.type), K.removeElement(), K = j.view = null;\n    }\n    function h() {\n      lt++, A();\n      var t = K.type,\n        e = K.queryScroll();\n      c(), d(t, e), O(), lt--;\n    }\n    function f(t) {\n      if (u()) return t && p(), lt++, K.updateSize(!0), lt--, !0;\n    }\n    function g() {\n      u() && p();\n    }\n    function p() {\n      var t = j.options.contentHeight,\n        e = j.options.height;\n      Q = \"number\" == typeof t ? t : \"function\" == typeof t ? t() : \"number\" == typeof e ? e - v() : \"function\" == typeof e ? e() - v() : \"parent\" === e ? n.parent().height() - v() : Math.round($.width() / Math.max(j.options.aspectRatio, .5));\n    }\n    function v() {\n      return q.el ? q.el.outerHeight(!0) : 0;\n    }\n    function m(t) {\n      !lt && t.target === window && K.start && f(!0) && K.trigger(\"windowResize\", st);\n    }\n    function y() {\n      D();\n    }\n    function S(t) {\n      it(j.getEventSourcesByMatchArray(t));\n    }\n    function w() {\n      u() && (A(), K.displayEvents(ut), O());\n    }\n    function E() {\n      !j.options.lazyFetching || et(K.start, K.end) ? D() : w();\n    }\n    function D() {\n      nt(K.start, K.end);\n    }\n    function b(t) {\n      ut = t, w();\n    }\n    function C() {\n      w();\n    }\n    function H() {\n      q.updateTitle(K.title);\n    }\n    function T() {\n      var t = j.getNow();\n      t >= K.intervalStart && t < K.intervalEnd ? q.disableButton(\"today\") : q.enableButton(\"today\");\n    }\n    function x(t, e) {\n      K.select(j.buildSelectSpan.apply(j, arguments));\n    }\n    function R() {\n      K && K.unselect();\n    }\n    function I() {\n      tt = K.computePrevDate(tt), d();\n    }\n    function k() {\n      tt = K.computeNextDate(tt), d();\n    }\n    function M() {\n      tt.add(-1, \"years\"), d();\n    }\n    function L() {\n      tt.add(1, \"years\"), d();\n    }\n    function B() {\n      tt = j.getNow(), d();\n    }\n    function z(t) {\n      tt = j.moment(t).stripZone(), d();\n    }\n    function F(t) {\n      tt.add(e.duration(t)), d();\n    }\n    function N(t, e) {\n      var n;\n      e = e || \"day\", n = j.getViewSpec(e) || j.getUnitViewSpec(e), tt = t.clone(), d(n ? n.type : null);\n    }\n    function G() {\n      return j.applyTimezone(tt);\n    }\n    function A() {\n      $.css({\n        width: \"100%\",\n        height: $.height(),\n        overflow: \"hidden\"\n      });\n    }\n    function O() {\n      $.css({\n        width: \"\",\n        height: \"\",\n        overflow: \"\"\n      });\n    }\n    function V() {\n      return j;\n    }\n    function P() {\n      return K;\n    }\n    function _(t, e) {\n      var n;\n      if (\"string\" == typeof t) {\n        if (void 0 === e) return j.options[t];\n        n = {}, n[t] = e, Y(n);\n      } else \"object\" == _typeof(t) && Y(t);\n    }\n    function Y(t) {\n      var e,\n        n = 0;\n      for (e in t) j.dynamicOverrides[e] = t[e];\n      j.viewSpecCache = {}, j.populateOptionsHash();\n      for (e in t) j.triggerOptionHandlers(e), n++;\n      if (1 === n) {\n        if (\"height\" === e || \"contentHeight\" === e || \"aspectRatio\" === e) return void f(!0);\n        if (\"defaultDate\" === e) return;\n        if (\"businessHours\" === e) return void (K && (K.unrenderBusinessHours(), K.renderBusinessHours()));\n        if (\"timezone\" === e) return j.rezoneArrayEventSources(), void y();\n      }\n      l(), ot = {}, h();\n    }\n    function W(t, e) {\n      var n = Array.prototype.slice.call(arguments, 2);\n      if (e = e || st, this.triggerWith(t, e, n), j.options[t]) return j.options[t].apply(e, n);\n    }\n    var j = this;\n    j.render = s, j.destroy = a, j.refetchEvents = y, j.refetchEventSources = S, j.reportEvents = b, j.reportEventChange = C, j.rerenderEvents = w, j.changeView = d, j.select = x, j.unselect = R, j.prev = I, j.next = k, j.prevYear = M, j.nextYear = L, j.today = B, j.gotoDate = z, j.incrementDate = F, j.zoomTo = N, j.getDate = G, j.getCalendar = V, j.getView = P, j.option = _, j.trigger = W, j.dynamicOverrides = {}, j.viewSpecCache = {}, j.optionHandlers = {}, j.overrides = t.extend({}, i), j.populateOptionsHash();\n    var U;\n    j.bindOptions([\"locale\", \"monthNames\", \"monthNamesShort\", \"dayNames\", \"dayNamesShort\", \"firstDay\", \"weekNumberCalculation\"], function (t, e, n, i, s, o, l) {\n      if (\"iso\" === l && (l = \"ISO\"), U = Z(Pt(t)), e && (U._months = e), n && (U._monthsShort = n), i && (U._weekdays = i), s && (U._weekdaysShort = s), null == o && \"ISO\" === l && (o = 1), null != o) {\n        var a = Z(U._week);\n        a.dow = o, U._week = a;\n      }\n      \"ISO\" !== l && \"local\" !== l && \"function\" != typeof l || (U._fullCalendar_weekCalc = l), tt && r(tt);\n    }), j.defaultAllDayEventDuration = e.duration(j.options.defaultAllDayEventDuration), j.defaultTimedEventDuration = e.duration(j.options.defaultTimedEventDuration), j.moment = function () {\n      var t;\n      return \"local\" === j.options.timezone ? (t = jt.moment.apply(null, arguments), t.hasTime() && t.local()) : t = \"UTC\" === j.options.timezone ? jt.moment.utc.apply(null, arguments) : jt.moment.parseZone.apply(null, arguments), r(t), t;\n    }, j.localizeMoment = r, j.getIsAmbigTimezone = function () {\n      return \"local\" !== j.options.timezone && \"UTC\" !== j.options.timezone;\n    }, j.applyTimezone = function (t) {\n      if (!t.hasTime()) return t.clone();\n      var e,\n        n = j.moment(t.toArray()),\n        i = t.time() - n.time();\n      return i && (e = n.clone().add(i), t.time() - e.time() === 0 && (n = e)), n;\n    }, j.getNow = function () {\n      var t = j.options.now;\n      return \"function\" == typeof t && (t = t()), j.moment(t).stripZone();\n    }, j.getEventEnd = function (t) {\n      return t.end ? t.end.clone() : j.getDefaultEventEnd(t.allDay, t.start);\n    }, j.getDefaultEventEnd = function (t, e) {\n      var n = e.clone();\n      return t ? n.stripTime().add(j.defaultAllDayEventDuration) : n.add(j.defaultTimedEventDuration), j.getIsAmbigTimezone() && n.stripZone(), n;\n    }, j.humanizeDuration = function (t) {\n      return t.locale(j.options.locale).humanize();\n    }, Yt.call(j);\n    var q,\n      $,\n      X,\n      K,\n      Q,\n      J,\n      tt,\n      et = j.isFetchNeeded,\n      nt = j.fetchEvents,\n      it = j.fetchEventSources,\n      st = n[0],\n      ot = {},\n      lt = 0,\n      ut = [];\n    tt = null != j.options.defaultDate ? j.moment(j.options.defaultDate).stripZone() : j.getNow(), j.getSuggestedViewHeight = function () {\n      return void 0 === Q && g(), Q;\n    }, j.isHeightAuto = function () {\n      return \"auto\" === j.options.contentHeight || \"auto\" === j.options.height;\n    }, j.freezeContentHeight = A, j.unfreezeContentHeight = O, j.initialize();\n  }\n  function Vt(e) {\n    t.each(He, function (t, n) {\n      null == e[t] && (e[t] = n(e));\n    });\n  }\n  function Pt(t) {\n    return e.localeData(t) || e.localeData(\"en\");\n  }\n  function _t(e) {\n    function n() {\n      var n = e.options,\n        s = n.header;\n      f = n.theme ? \"ui\" : \"fc\", s ? (h ? h.empty() : h = this.el = t(\"<div class='fc-toolbar'/>\"), h.append(r(\"left\")).append(r(\"right\")).append(r(\"center\")).append('<div class=\"fc-clear\"/>')) : i();\n    }\n    function i() {\n      h && (h.remove(), h = c.el = null);\n    }\n    function r(n) {\n      var i = t('<div class=\"fc-' + n + '\"/>'),\n        r = e.options,\n        s = r.header[n];\n      return s && t.each(s.split(\" \"), function (n) {\n        var s,\n          o = t(),\n          l = !0;\n        t.each(this.split(\",\"), function (n, i) {\n          var s, a, u, d, c, h, p, v, m, y;\n          \"title\" == i ? (o = o.add(t(\"<h2>&nbsp;</h2>\")), l = !1) : ((s = (r.customButtons || {})[i]) ? (u = function u(t) {\n            s.click && s.click.call(y[0], t);\n          }, d = \"\", c = s.text) : (a = e.getViewSpec(i)) ? (u = function u() {\n            e.changeView(i);\n          }, g.push(i), d = a.buttonTextOverride, c = a.buttonTextDefault) : e[i] && (u = function u() {\n            e[i]();\n          }, d = (e.overrides.buttonText || {})[i], c = r.buttonText[i]), u && (h = s ? s.themeIcon : r.themeButtonIcons[i], p = s ? s.icon : r.buttonIcons[i], v = d ? tt(d) : h && r.theme ? \"<span class='ui-icon ui-icon-\" + h + \"'></span>\" : p && !r.theme ? \"<span class='fc-icon fc-icon-\" + p + \"'></span>\" : tt(c), m = [\"fc-\" + i + \"-button\", f + \"-button\", f + \"-state-default\"], y = t('<button type=\"button\" class=\"' + m.join(\" \") + '\">' + v + \"</button>\").click(function (t) {\n            y.hasClass(f + \"-state-disabled\") || (u(t), (y.hasClass(f + \"-state-active\") || y.hasClass(f + \"-state-disabled\")) && y.removeClass(f + \"-state-hover\"));\n          }).mousedown(function () {\n            y.not(\".\" + f + \"-state-active\").not(\".\" + f + \"-state-disabled\").addClass(f + \"-state-down\");\n          }).mouseup(function () {\n            y.removeClass(f + \"-state-down\");\n          }).hover(function () {\n            y.not(\".\" + f + \"-state-active\").not(\".\" + f + \"-state-disabled\").addClass(f + \"-state-hover\");\n          }, function () {\n            y.removeClass(f + \"-state-hover\").removeClass(f + \"-state-down\");\n          }), o = o.add(y)));\n        }), l && o.first().addClass(f + \"-corner-left\").end().last().addClass(f + \"-corner-right\").end(), o.length > 1 ? (s = t(\"<div/>\"), l && s.addClass(\"fc-button-group\"), s.append(o), i.append(s)) : i.append(o);\n      }), i;\n    }\n    function s(t) {\n      h && h.find(\"h2\").text(t);\n    }\n    function o(t) {\n      h && h.find(\".fc-\" + t + \"-button\").addClass(f + \"-state-active\");\n    }\n    function l(t) {\n      h && h.find(\".fc-\" + t + \"-button\").removeClass(f + \"-state-active\");\n    }\n    function a(t) {\n      h && h.find(\".fc-\" + t + \"-button\").prop(\"disabled\", !0).addClass(f + \"-state-disabled\");\n    }\n    function u(t) {\n      h && h.find(\".fc-\" + t + \"-button\").prop(\"disabled\", !1).removeClass(f + \"-state-disabled\");\n    }\n    function d() {\n      return g;\n    }\n    var c = this;\n    c.render = n, c.removeElement = i, c.updateTitle = s, c.activateButton = o, c.deactivateButton = l, c.disableButton = a, c.enableButton = u, c.getViewsWithButtons = d, c.el = null;\n    var h,\n      f,\n      g = [];\n  }\n  function Yt() {\n    function n(t, e) {\n      return !O || t < O || e > V;\n    }\n    function i(t, e) {\n      O = t, V = e, r(Y, \"reset\");\n    }\n    function r(t, e) {\n      var n, i;\n      for (\"reset\" === e ? j = [] : \"add\" !== e && (j = w(j, t)), n = 0; n < t.length; n++) i = t[n], \"pending\" !== i._status && W++, i._fetchId = (i._fetchId || 0) + 1, i._status = \"pending\";\n      for (n = 0; n < t.length; n++) i = t[n], s(i, i._fetchId);\n    }\n    function s(e, n) {\n      a(e, function (i) {\n        var r,\n          s,\n          o,\n          a = t.isArray(e.events);\n        if (n === e._fetchId && \"rejected\" !== e._status) {\n          if (e._status = \"resolved\", i) for (r = 0; r < i.length; r++) s = i[r], o = a ? s : R(s, e), o && j.push.apply(j, L(o));\n          l();\n        }\n      });\n    }\n    function o(t) {\n      var e = \"pending\" === t._status;\n      t._status = \"rejected\", e && l();\n    }\n    function l() {\n      W--, W || P(j);\n    }\n    function a(e, n) {\n      var i,\n        r,\n        s = jt.sourceFetchers;\n      for (i = 0; i < s.length; i++) {\n        if (r = s[i].call(F, e, O.clone(), V.clone(), F.options.timezone, n), r === !0) return;\n        if (\"object\" == _typeof(r)) return void a(r, n);\n      }\n      var o = e.events;\n      if (o) t.isFunction(o) ? (F.pushLoading(), o.call(F, O.clone(), V.clone(), F.options.timezone, function (t) {\n        n(t), F.popLoading();\n      })) : t.isArray(o) ? n(o) : n();else {\n        var l = e.url;\n        if (l) {\n          var u,\n            d = e.success,\n            c = e.error,\n            h = e.complete;\n          u = t.isFunction(e.data) ? e.data() : e.data;\n          var f = t.extend({}, u || {}),\n            g = J(e.startParam, F.options.startParam),\n            p = J(e.endParam, F.options.endParam),\n            v = J(e.timezoneParam, F.options.timezoneParam);\n          g && (f[g] = O.format()), p && (f[p] = V.format()), F.options.timezone && \"local\" != F.options.timezone && (f[v] = F.options.timezone), F.pushLoading(), t.ajax(t.extend({}, Te, e, {\n            data: f,\n            success: function success(e) {\n              e = e || [];\n              var i = Q(d, this, arguments);\n              t.isArray(i) && (e = i), n(e);\n            },\n            error: function error() {\n              Q(c, this, arguments), n();\n            },\n            complete: function complete() {\n              Q(h, this, arguments), F.popLoading();\n            }\n          }));\n        } else n();\n      }\n    }\n    function u(t) {\n      var e = d(t);\n      e && (Y.push(e), r([e], \"add\"));\n    }\n    function d(e) {\n      var n,\n        i,\n        r = jt.sourceNormalizers;\n      if (t.isFunction(e) || t.isArray(e) ? n = {\n        events: e\n      } : \"string\" == typeof e ? n = {\n        url: e\n      } : \"object\" == _typeof(e) && (n = t.extend({}, e)), n) {\n        for (n.className ? \"string\" == typeof n.className && (n.className = n.className.split(/\\s+/)) : n.className = [], t.isArray(n.events) && (n.origArray = n.events, n.events = t.map(n.events, function (t) {\n          return R(t, n);\n        })), i = 0; i < r.length; i++) r[i].call(F, n);\n        return n;\n      }\n    }\n    function c(t) {\n      f(m(t));\n    }\n    function h(t) {\n      null == t ? f(Y, !0) : f(v(t));\n    }\n    function f(e, n) {\n      var i;\n      for (i = 0; i < e.length; i++) o(e[i]);\n      n ? (Y = [], j = []) : (Y = t.grep(Y, function (t) {\n        for (i = 0; i < e.length; i++) if (t === e[i]) return !1;\n        return !0;\n      }), j = w(j, e)), P(j);\n    }\n    function g() {\n      return Y.slice(1);\n    }\n    function p(e) {\n      return t.grep(Y, function (t) {\n        return t.id && t.id === e;\n      })[0];\n    }\n    function v(e) {\n      e ? t.isArray(e) || (e = [e]) : e = [];\n      var n,\n        i = [];\n      for (n = 0; n < e.length; n++) i.push.apply(i, m(e[n]));\n      return i;\n    }\n    function m(e) {\n      var n, i;\n      for (n = 0; n < Y.length; n++) if (i = Y[n], i === e) return [i];\n      return i = p(e), i ? [i] : t.grep(Y, function (t) {\n        return y(e, t);\n      });\n    }\n    function y(t, e) {\n      return t && e && S(t) == S(e);\n    }\n    function S(t) {\n      return (\"object\" == _typeof(t) ? t.origArray || t.googleCalendarId || t.url || t.events : null) || t;\n    }\n    function w(e, n) {\n      return t.grep(e, function (t) {\n        for (var e = 0; e < n.length; e++) if (t.source === n[e]) return !1;\n        return !0;\n      });\n    }\n    function E(t) {\n      t.start = F.moment(t.start), t.end ? t.end = F.moment(t.end) : t.end = null, B(t, D(t)), P(j);\n    }\n    function D(e) {\n      var n = {};\n      return t.each(e, function (t, e) {\n        b(t) && void 0 !== e && K(e) && (n[t] = e);\n      }), n;\n    }\n    function b(t) {\n      return !/^_|^(id|allDay|start|end)$/.test(t);\n    }\n    function C(t, e) {\n      var n,\n        i,\n        r,\n        s = R(t);\n      if (s) {\n        for (n = L(s), i = 0; i < n.length; i++) r = n[i], r.source || (e && (_.events.push(r), r.source = _), j.push(r));\n        return P(j), n;\n      }\n      return [];\n    }\n    function H(e) {\n      var n, i;\n      for (null == e ? e = function e() {\n        return !0;\n      } : t.isFunction(e) || (n = e + \"\", e = function e(t) {\n        return t._id == n;\n      }), j = t.grep(j, e, !0), i = 0; i < Y.length; i++) t.isArray(Y[i].events) && (Y[i].events = t.grep(Y[i].events, e, !0));\n      P(j);\n    }\n    function T(e) {\n      return t.isFunction(e) ? t.grep(j, e) : null != e ? (e += \"\", t.grep(j, function (t) {\n        return t._id == e;\n      })) : j;\n    }\n    function x(t) {\n      t.start = F.moment(t.start), t.end && (t.end = F.moment(t.end)), Wt(t);\n    }\n    function R(n, i) {\n      var r,\n        s,\n        o,\n        l = {};\n      if (F.options.eventDataTransform && (n = F.options.eventDataTransform(n)), i && i.eventDataTransform && (n = i.eventDataTransform(n)), t.extend(l, n), i && (l.source = i), l._id = n._id || (void 0 === n.id ? \"_fc\" + xe++ : n.id + \"\"), n.className ? \"string\" == typeof n.className ? l.className = n.className.split(/\\s+/) : l.className = n.className : l.className = [], r = n.start || n.date, s = n.end, U(r) && (r = e.duration(r)), U(s) && (s = e.duration(s)), n.dow || e.isDuration(r) || e.isDuration(s)) l.start = r ? e.duration(r) : null, l.end = s ? e.duration(s) : null, l._recurring = !0;else {\n        if (r && (r = F.moment(r), !r.isValid())) return !1;\n        s && (s = F.moment(s), s.isValid() || (s = null)), o = n.allDay, void 0 === o && (o = J(i ? i.allDayDefault : void 0, F.options.allDayDefault)), I(r, s, o, l);\n      }\n      return F.normalizeEvent(l), l;\n    }\n    function I(t, e, n, i) {\n      i.start = t, i.end = e, i.allDay = n, k(i), Wt(i);\n    }\n    function k(t) {\n      M(t), t.end && !t.end.isAfter(t.start) && (t.end = null), t.end || (F.options.forceEventDuration ? t.end = F.getDefaultEventEnd(t.allDay, t.start) : t.end = null);\n    }\n    function M(t) {\n      null == t.allDay && (t.allDay = !(t.start.hasTime() || t.end && t.end.hasTime())), t.allDay ? (t.start.stripTime(), t.end && t.end.stripTime()) : (t.start.hasTime() || (t.start = F.applyTimezone(t.start.time(0))), t.end && !t.end.hasTime() && (t.end = F.applyTimezone(t.end.time(0))));\n    }\n    function L(e, n, i) {\n      var r,\n        s,\n        o,\n        l,\n        a,\n        u,\n        d,\n        c,\n        h,\n        f = [];\n      if (n = n || O, i = i || V, e) if (e._recurring) {\n        if (s = e.dow) for (r = {}, o = 0; o < s.length; o++) r[s[o]] = !0;\n        for (l = n.clone().stripTime(); l.isBefore(i);) r && !r[l.day()] || (a = e.start, u = e.end, d = l.clone(), c = null, a && (d = d.time(a)), u && (c = l.clone().time(u)), h = t.extend({}, e), I(d, c, !a && !u, h), f.push(h)), l.add(1, \"days\");\n      } else f.push(e);\n      return f;\n    }\n    function B(e, n, i) {\n      function r(t, e) {\n        return i ? A(t, e, i) : n.allDay ? G(t, e) : N(t, e);\n      }\n      var s,\n        o,\n        l,\n        a,\n        u,\n        d,\n        c = {};\n      return n = n || {}, n.start || (n.start = e.start.clone()), void 0 === n.end && (n.end = e.end ? e.end.clone() : null), null == n.allDay && (n.allDay = e.allDay), k(n), s = {\n        start: e._start.clone(),\n        end: e._end ? e._end.clone() : F.getDefaultEventEnd(e._allDay, e._start),\n        allDay: n.allDay\n      }, k(s), o = null !== e._end && null === n.end, l = r(n.start, s.start), n.end ? (a = r(n.end, s.end), u = a.subtract(l)) : u = null, t.each(n, function (t, e) {\n        b(t) && void 0 !== e && (c[t] = e);\n      }), d = z(T(e._id), o, n.allDay, l, u, c), {\n        dateDelta: l,\n        durationDelta: u,\n        undo: d\n      };\n    }\n    function z(e, n, i, r, s, o) {\n      var l = F.getIsAmbigTimezone(),\n        a = [];\n      return r && !r.valueOf() && (r = null), s && !s.valueOf() && (s = null), t.each(e, function (e, u) {\n        var d, c;\n        d = {\n          start: u.start.clone(),\n          end: u.end ? u.end.clone() : null,\n          allDay: u.allDay\n        }, t.each(o, function (t) {\n          d[t] = u[t];\n        }), c = {\n          start: u._start,\n          end: u._end,\n          allDay: i\n        }, k(c), n ? c.end = null : s && !c.end && (c.end = F.getDefaultEventEnd(c.allDay, c.start)), r && (c.start.add(r), c.end && c.end.add(r)), s && c.end.add(s), l && !c.allDay && (r || s) && (c.start.stripZone(), c.end && c.end.stripZone()), t.extend(u, o, c), Wt(u), a.push(function () {\n          t.extend(u, d), Wt(u);\n        });\n      }), function () {\n        for (var t = 0; t < a.length; t++) a[t]();\n      };\n    }\n    var F = this;\n    F.isFetchNeeded = n, F.fetchEvents = i, F.fetchEventSources = r, F.getEventSources = g, F.getEventSourceById = p, F.getEventSourcesByMatchArray = v, F.getEventSourcesByMatch = m, F.addEventSource = u, F.removeEventSource = c, F.removeEventSources = h, F.updateEvent = E, F.renderEvent = C, F.removeEvents = H, F.clientEvents = T, F.mutateEvent = B, F.normalizeEventDates = k, F.normalizeEventTimes = M;\n    var O,\n      V,\n      P = F.reportEvents,\n      _ = {\n        events: []\n      },\n      Y = [_],\n      W = 0,\n      j = [];\n    t.each((F.options.events ? [F.options.events] : []).concat(F.options.eventSources || []), function (t, e) {\n      var n = d(e);\n      n && Y.push(n);\n    }), F.rezoneArrayEventSources = function () {\n      var e, n, i;\n      for (e = 0; e < Y.length; e++) if (n = Y[e].events, t.isArray(n)) for (i = 0; i < n.length; i++) x(n[i]);\n    }, F.buildEventFromInput = R, F.expandEvent = L, F.getEventCache = function () {\n      return j;\n    };\n  }\n  function Wt(t) {\n    t._allDay = t.allDay, t._start = t.start.clone(), t._end = t.end ? t.end.clone() : null;\n  }\n  var jt = t.fullCalendar = {\n      version: \"3.0.1\",\n      internalApiVersion: 6\n    },\n    Ut = jt.views = {};\n  t.fn.fullCalendar = function (e) {\n    var n = Array.prototype.slice.call(arguments, 1),\n      i = this;\n    return this.each(function (r, s) {\n      var o,\n        l = t(s),\n        a = l.data(\"fullCalendar\");\n      \"string\" == typeof e ? a && t.isFunction(a[e]) && (o = a[e].apply(a, n), r || (i = o), \"destroy\" === e && l.removeData(\"fullCalendar\")) : a || (a = new Ee(l, e), l.data(\"fullCalendar\", a), a.render());\n    }), i;\n  };\n  var qt = [\"header\", \"buttonText\", \"buttonIcons\", \"themeButtonIcons\"];\n  jt.intersectRanges = F, jt.applyAll = Q, jt.debounce = at, jt.isInt = ot, jt.htmlEscape = tt, jt.cssToStr = nt, jt.proxy = lt, jt.capitaliseFirstLetter = rt, jt.getOuterRect = h, jt.getClientRect = f, jt.getContentRect = g, jt.getScrollbarWidths = p;\n  var Zt = null;\n  jt.preventDefault = C, jt.intersectRects = x, jt.parseFieldSpecs = M, jt.compareByFieldSpecs = L, jt.compareByFieldSpec = B, jt.flexibleCompare = z, jt.computeIntervalUnit = O, jt.divideRangeByDuration = P, jt.divideDurationByDuration = _, jt.multiplyDuration = Y, jt.durationHasTime = W;\n  var $t = [\"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\"],\n    Xt = [\"year\", \"month\", \"week\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n  jt.log = function () {\n    var t = window.console;\n    if (t && t.log) return t.log.apply(t, arguments);\n  }, jt.warn = function () {\n    var t = window.console;\n    return t && t.warn ? t.warn.apply(t, arguments) : jt.log.apply(jt, arguments);\n  };\n  var Kt = {}.hasOwnProperty,\n    Qt = /^\\s*\\d{4}-\\d\\d$/,\n    Jt = /^\\s*\\d{4}-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?)?$/,\n    te = e.fn,\n    ee = t.extend({}, te),\n    ne = e.momentProperties;\n  ne.push(\"_fullCalendar\"), ne.push(\"_ambigTime\"), ne.push(\"_ambigZone\"), jt.moment = function () {\n    return dt(arguments);\n  }, jt.moment.utc = function () {\n    var t = dt(arguments, !0);\n    return t.hasTime() && t.utc(), t;\n  }, jt.moment.parseZone = function () {\n    return dt(arguments, !0, !0);\n  }, te.week = te.weeks = function (t) {\n    var e = this._locale._fullCalendar_weekCalc;\n    return null == t && \"function\" == typeof e ? e(this) : \"ISO\" === e ? ee.isoWeek.apply(this, arguments) : ee.week.apply(this, arguments);\n  }, te.time = function (t) {\n    if (!this._fullCalendar) return ee.time.apply(this, arguments);\n    if (null == t) return e.duration({\n      hours: this.hours(),\n      minutes: this.minutes(),\n      seconds: this.seconds(),\n      milliseconds: this.milliseconds()\n    });\n    this._ambigTime = !1, e.isDuration(t) || e.isMoment(t) || (t = e.duration(t));\n    var n = 0;\n    return e.isDuration(t) && (n = 24 * Math.floor(t.asDays())), this.hours(n + t.hours()).minutes(t.minutes()).seconds(t.seconds()).milliseconds(t.milliseconds());\n  }, te.stripTime = function () {\n    return this._ambigTime || (this.utc(!0), this.set({\n      hours: 0,\n      minutes: 0,\n      seconds: 0,\n      ms: 0\n    }), this._ambigTime = !0, this._ambigZone = !0), this;\n  }, te.hasTime = function () {\n    return !this._ambigTime;\n  }, te.stripZone = function () {\n    var t;\n    return this._ambigZone || (t = this._ambigTime, this.utc(!0), this._ambigTime = t || !1, this._ambigZone = !0), this;\n  }, te.hasZone = function () {\n    return !this._ambigZone;\n  }, te.local = function (t) {\n    return ee.local.call(this, this._ambigZone || t), this._ambigTime = !1, this._ambigZone = !1, this;\n  }, te.utc = function (t) {\n    return ee.utc.call(this, t), this._ambigTime = !1, this._ambigZone = !1, this;\n  }, te.utcOffset = function (t) {\n    return null != t && (this._ambigTime = !1, this._ambigZone = !1), ee.utcOffset.apply(this, arguments);\n  }, te.format = function () {\n    return this._fullCalendar && arguments[0] ? ht(this, arguments[0]) : this._ambigTime ? ct(this, \"YYYY-MM-DD\") : this._ambigZone ? ct(this, \"YYYY-MM-DD[T]HH:mm:ss\") : ee.format.apply(this, arguments);\n  }, te.toISOString = function () {\n    return this._ambigTime ? ct(this, \"YYYY-MM-DD\") : this._ambigZone ? ct(this, \"YYYY-MM-DD[T]HH:mm:ss\") : ee.toISOString.apply(this, arguments);\n  };\n  var ie = {\n    t: function t(_t2) {\n      return ct(_t2, \"a\").charAt(0);\n    },\n    T: function T(t) {\n      return ct(t, \"A\").charAt(0);\n    }\n  };\n  jt.formatRange = pt;\n  var re = {\n      Y: \"year\",\n      M: \"month\",\n      D: \"day\",\n      d: \"day\",\n      A: \"second\",\n      a: \"second\",\n      T: \"second\",\n      t: \"second\",\n      H: \"second\",\n      h: \"second\",\n      m: \"second\",\n      s: \"second\"\n    },\n    se = {},\n    oe = {\n      Y: {\n        value: 1,\n        unit: \"year\"\n      },\n      M: {\n        value: 2,\n        unit: \"month\"\n      },\n      W: {\n        value: 3,\n        unit: \"week\"\n      },\n      w: {\n        value: 3,\n        unit: \"week\"\n      },\n      D: {\n        value: 4,\n        unit: \"day\"\n      },\n      d: {\n        value: 4,\n        unit: \"day\"\n      }\n    };\n  jt.queryMostGranularFormatUnit = function (t) {\n    var e,\n      n,\n      i,\n      r,\n      s = yt(t);\n    for (e = 0; e < s.length; e++) n = s[e], n.token && (i = oe[n.token.charAt(0)], i && (!r || i.value > r.value) && (r = i));\n    return r ? r.unit : null;\n  }, jt.Class = wt, wt.extend = function () {\n    var t,\n      e,\n      n = arguments.length;\n    for (t = 0; t < n; t++) e = arguments[t], t < n - 1 && Dt(this, e);\n    return Et(this, e || {});\n  }, wt.mixin = function (t) {\n    Dt(this, t);\n  };\n  var le = jt.EmitterMixin = {\n      on: function on(e, n) {\n        var i = function i(t, e) {\n          return n.apply(e.context || this, e.args || []);\n        };\n        return n.guid || (n.guid = t.guid++), i.guid = n.guid, t(this).on(e, i), this;\n      },\n      off: function off(e, n) {\n        return t(this).off(e, n), this;\n      },\n      trigger: function trigger(e) {\n        var n = Array.prototype.slice.call(arguments, 1);\n        return t(this).triggerHandler(e, {\n          args: n\n        }), this;\n      },\n      triggerWith: function triggerWith(e, n, i) {\n        return t(this).triggerHandler(e, {\n          context: n,\n          args: i\n        }), this;\n      }\n    },\n    ae = jt.ListenerMixin = function () {\n      var e = 0,\n        n = {\n          listenerId: null,\n          listenTo: function listenTo(e, n, i) {\n            if (\"object\" == _typeof(n)) for (var r in n) n.hasOwnProperty(r) && this.listenTo(e, r, n[r]);else \"string\" == typeof n && e.on(n + \".\" + this.getListenerNamespace(), t.proxy(i, this));\n          },\n          stopListeningTo: function stopListeningTo(t, e) {\n            t.off((e || \"\") + \".\" + this.getListenerNamespace());\n          },\n          getListenerNamespace: function getListenerNamespace() {\n            return null == this.listenerId && (this.listenerId = e++), \"_listener\" + this.listenerId;\n          }\n        };\n      return n;\n    }(),\n    ue = {\n      isIgnoringMouse: !1,\n      delayUnignoreMouse: null,\n      initMouseIgnoring: function initMouseIgnoring(t) {\n        this.delayUnignoreMouse = at(lt(this, \"unignoreMouse\"), t || 1e3);\n      },\n      tempIgnoreMouse: function tempIgnoreMouse() {\n        this.isIgnoringMouse = !0, this.delayUnignoreMouse();\n      },\n      unignoreMouse: function unignoreMouse() {\n        this.isIgnoringMouse = !1;\n      }\n    },\n    de = wt.extend(ae, {\n      isHidden: !0,\n      options: null,\n      el: null,\n      margin: 10,\n      constructor: function constructor(t) {\n        this.options = t || {};\n      },\n      show: function show() {\n        this.isHidden && (this.el || this.render(), this.el.show(), this.position(), this.isHidden = !1, this.trigger(\"show\"));\n      },\n      hide: function hide() {\n        this.isHidden || (this.el.hide(), this.isHidden = !0, this.trigger(\"hide\"));\n      },\n      render: function render() {\n        var e = this,\n          n = this.options;\n        this.el = t('<div class=\"fc-popover\"/>').addClass(n.className || \"\").css({\n          top: 0,\n          left: 0\n        }).append(n.content).appendTo(n.parentEl), this.el.on(\"click\", \".fc-close\", function () {\n          e.hide();\n        }), n.autoHide && this.listenTo(t(document), \"mousedown\", this.documentMousedown);\n      },\n      documentMousedown: function documentMousedown(e) {\n        this.el && !t(e.target).closest(this.el).length && this.hide();\n      },\n      removeElement: function removeElement() {\n        this.hide(), this.el && (this.el.remove(), this.el = null), this.stopListeningTo(t(document), \"mousedown\");\n      },\n      position: function position() {\n        var e,\n          n,\n          i,\n          r,\n          s,\n          o = this.options,\n          l = this.el.offsetParent().offset(),\n          a = this.el.outerWidth(),\n          u = this.el.outerHeight(),\n          d = t(window),\n          h = c(this.el);\n        r = o.top || 0, s = void 0 !== o.left ? o.left : void 0 !== o.right ? o.right - a : 0, h.is(window) || h.is(document) ? (h = d, e = 0, n = 0) : (i = h.offset(), e = i.top, n = i.left), e += d.scrollTop(), n += d.scrollLeft(), o.viewportConstrain !== !1 && (r = Math.min(r, e + h.outerHeight() - u - this.margin), r = Math.max(r, e + this.margin), s = Math.min(s, n + h.outerWidth() - a - this.margin), s = Math.max(s, n + this.margin)), this.el.css({\n          top: r - l.top,\n          left: s - l.left\n        });\n      },\n      trigger: function trigger(t) {\n        this.options[t] && this.options[t].apply(this, Array.prototype.slice.call(arguments, 1));\n      }\n    }),\n    ce = jt.CoordCache = wt.extend({\n      els: null,\n      forcedOffsetParentEl: null,\n      origin: null,\n      boundingRect: null,\n      isHorizontal: !1,\n      isVertical: !1,\n      lefts: null,\n      rights: null,\n      tops: null,\n      bottoms: null,\n      constructor: function constructor(e) {\n        this.els = t(e.els), this.isHorizontal = e.isHorizontal, this.isVertical = e.isVertical, this.forcedOffsetParentEl = e.offsetParent ? t(e.offsetParent) : null;\n      },\n      build: function build() {\n        var t = this.forcedOffsetParentEl || this.els.eq(0).offsetParent();\n        this.origin = t.offset(), this.boundingRect = this.queryBoundingRect(), this.isHorizontal && this.buildElHorizontals(), this.isVertical && this.buildElVerticals();\n      },\n      clear: function clear() {\n        this.origin = null, this.boundingRect = null, this.lefts = null, this.rights = null, this.tops = null, this.bottoms = null;\n      },\n      ensureBuilt: function ensureBuilt() {\n        this.origin || this.build();\n      },\n      buildElHorizontals: function buildElHorizontals() {\n        var e = [],\n          n = [];\n        this.els.each(function (i, r) {\n          var s = t(r),\n            o = s.offset().left,\n            l = s.outerWidth();\n          e.push(o), n.push(o + l);\n        }), this.lefts = e, this.rights = n;\n      },\n      buildElVerticals: function buildElVerticals() {\n        var e = [],\n          n = [];\n        this.els.each(function (i, r) {\n          var s = t(r),\n            o = s.offset().top,\n            l = s.outerHeight();\n          e.push(o), n.push(o + l);\n        }), this.tops = e, this.bottoms = n;\n      },\n      getHorizontalIndex: function getHorizontalIndex(t) {\n        this.ensureBuilt();\n        var e,\n          n = this.lefts,\n          i = this.rights,\n          r = n.length;\n        for (e = 0; e < r; e++) if (t >= n[e] && t < i[e]) return e;\n      },\n      getVerticalIndex: function getVerticalIndex(t) {\n        this.ensureBuilt();\n        var e,\n          n = this.tops,\n          i = this.bottoms,\n          r = n.length;\n        for (e = 0; e < r; e++) if (t >= n[e] && t < i[e]) return e;\n      },\n      getLeftOffset: function getLeftOffset(t) {\n        return this.ensureBuilt(), this.lefts[t];\n      },\n      getLeftPosition: function getLeftPosition(t) {\n        return this.ensureBuilt(), this.lefts[t] - this.origin.left;\n      },\n      getRightOffset: function getRightOffset(t) {\n        return this.ensureBuilt(), this.rights[t];\n      },\n      getRightPosition: function getRightPosition(t) {\n        return this.ensureBuilt(), this.rights[t] - this.origin.left;\n      },\n      getWidth: function getWidth(t) {\n        return this.ensureBuilt(), this.rights[t] - this.lefts[t];\n      },\n      getTopOffset: function getTopOffset(t) {\n        return this.ensureBuilt(), this.tops[t];\n      },\n      getTopPosition: function getTopPosition(t) {\n        return this.ensureBuilt(), this.tops[t] - this.origin.top;\n      },\n      getBottomOffset: function getBottomOffset(t) {\n        return this.ensureBuilt(), this.bottoms[t];\n      },\n      getBottomPosition: function getBottomPosition(t) {\n        return this.ensureBuilt(), this.bottoms[t] - this.origin.top;\n      },\n      getHeight: function getHeight(t) {\n        return this.ensureBuilt(), this.bottoms[t] - this.tops[t];\n      },\n      queryBoundingRect: function queryBoundingRect() {\n        var t = c(this.els.eq(0));\n        if (!t.is(document)) return f(t);\n      },\n      isPointInBounds: function isPointInBounds(t, e) {\n        return this.isLeftInBounds(t) && this.isTopInBounds(e);\n      },\n      isLeftInBounds: function isLeftInBounds(t) {\n        return !this.boundingRect || t >= this.boundingRect.left && t < this.boundingRect.right;\n      },\n      isTopInBounds: function isTopInBounds(t) {\n        return !this.boundingRect || t >= this.boundingRect.top && t < this.boundingRect.bottom;\n      }\n    }),\n    he = jt.DragListener = wt.extend(ae, ue, {\n      options: null,\n      subjectEl: null,\n      originX: null,\n      originY: null,\n      scrollEl: null,\n      isInteracting: !1,\n      isDistanceSurpassed: !1,\n      isDelayEnded: !1,\n      isDragging: !1,\n      isTouch: !1,\n      delay: null,\n      delayTimeoutId: null,\n      minDistance: null,\n      handleTouchScrollProxy: null,\n      constructor: function constructor(t) {\n        this.options = t || {}, this.handleTouchScrollProxy = lt(this, \"handleTouchScroll\"), this.initMouseIgnoring(500);\n      },\n      startInteraction: function startInteraction(e, n) {\n        var i = D(e);\n        if (\"mousedown\" === e.type) {\n          if (this.isIgnoringMouse) return;\n          if (!S(e)) return;\n          e.preventDefault();\n        }\n        this.isInteracting || (n = n || {}, this.delay = J(n.delay, this.options.delay, 0), this.minDistance = J(n.distance, this.options.distance, 0), this.subjectEl = this.options.subjectEl, this.isInteracting = !0, this.isTouch = i, this.isDelayEnded = !1, this.isDistanceSurpassed = !1, this.originX = w(e), this.originY = E(e), this.scrollEl = c(t(e.target)), this.bindHandlers(), this.initAutoScroll(), this.handleInteractionStart(e), this.startDelay(e), this.minDistance || this.handleDistanceSurpassed(e));\n      },\n      handleInteractionStart: function handleInteractionStart(t) {\n        this.trigger(\"interactionStart\", t);\n      },\n      endInteraction: function endInteraction(t, e) {\n        this.isInteracting && (this.endDrag(t), this.delayTimeoutId && (clearTimeout(this.delayTimeoutId), this.delayTimeoutId = null), this.destroyAutoScroll(), this.unbindHandlers(), this.isInteracting = !1, this.handleInteractionEnd(t, e), this.isTouch && this.tempIgnoreMouse());\n      },\n      handleInteractionEnd: function handleInteractionEnd(t, e) {\n        this.trigger(\"interactionEnd\", t, e || !1);\n      },\n      bindHandlers: function bindHandlers() {\n        var e = this,\n          n = 1;\n        this.isTouch ? (this.listenTo(t(document), {\n          touchmove: this.handleTouchMove,\n          touchend: this.endInteraction,\n          touchcancel: this.endInteraction,\n          touchstart: function touchstart(t) {\n            n ? n-- : e.endInteraction(t, !0);\n          }\n        }), !H(this.handleTouchScrollProxy) && this.scrollEl && this.listenTo(this.scrollEl, \"scroll\", this.handleTouchScroll)) : this.listenTo(t(document), {\n          mousemove: this.handleMouseMove,\n          mouseup: this.endInteraction\n        }), this.listenTo(t(document), {\n          selectstart: C,\n          contextmenu: C\n        });\n      },\n      unbindHandlers: function unbindHandlers() {\n        this.stopListeningTo(t(document)), T(this.handleTouchScrollProxy), this.scrollEl && this.stopListeningTo(this.scrollEl, \"scroll\");\n      },\n      startDrag: function startDrag(t, e) {\n        this.startInteraction(t, e), this.isDragging || (this.isDragging = !0, this.handleDragStart(t));\n      },\n      handleDragStart: function handleDragStart(t) {\n        this.trigger(\"dragStart\", t);\n      },\n      handleMove: function handleMove(t) {\n        var e,\n          n = w(t) - this.originX,\n          i = E(t) - this.originY,\n          r = this.minDistance;\n        this.isDistanceSurpassed || (e = n * n + i * i, e >= r * r && this.handleDistanceSurpassed(t)), this.isDragging && this.handleDrag(n, i, t);\n      },\n      handleDrag: function handleDrag(t, e, n) {\n        this.trigger(\"drag\", t, e, n), this.updateAutoScroll(n);\n      },\n      endDrag: function endDrag(t) {\n        this.isDragging && (this.isDragging = !1, this.handleDragEnd(t));\n      },\n      handleDragEnd: function handleDragEnd(t) {\n        this.trigger(\"dragEnd\", t);\n      },\n      startDelay: function startDelay(t) {\n        var e = this;\n        this.delay ? this.delayTimeoutId = setTimeout(function () {\n          e.handleDelayEnd(t);\n        }, this.delay) : this.handleDelayEnd(t);\n      },\n      handleDelayEnd: function handleDelayEnd(t) {\n        this.isDelayEnded = !0, this.isDistanceSurpassed && this.startDrag(t);\n      },\n      handleDistanceSurpassed: function handleDistanceSurpassed(t) {\n        this.isDistanceSurpassed = !0, this.isDelayEnded && this.startDrag(t);\n      },\n      handleTouchMove: function handleTouchMove(t) {\n        this.isDragging && t.preventDefault(), this.handleMove(t);\n      },\n      handleMouseMove: function handleMouseMove(t) {\n        this.handleMove(t);\n      },\n      handleTouchScroll: function handleTouchScroll(t) {\n        this.isDragging || this.endInteraction(t, !0);\n      },\n      trigger: function trigger(t) {\n        this.options[t] && this.options[t].apply(this, Array.prototype.slice.call(arguments, 1)), this[\"_\" + t] && this[\"_\" + t].apply(this, Array.prototype.slice.call(arguments, 1));\n      }\n    });\n  he.mixin({\n    isAutoScroll: !1,\n    scrollBounds: null,\n    scrollTopVel: null,\n    scrollLeftVel: null,\n    scrollIntervalId: null,\n    scrollSensitivity: 30,\n    scrollSpeed: 200,\n    scrollIntervalMs: 50,\n    initAutoScroll: function initAutoScroll() {\n      var t = this.scrollEl;\n      this.isAutoScroll = this.options.scroll && t && !t.is(window) && !t.is(document), this.isAutoScroll && this.listenTo(t, \"scroll\", at(this.handleDebouncedScroll, 100));\n    },\n    destroyAutoScroll: function destroyAutoScroll() {\n      this.endAutoScroll(), this.isAutoScroll && this.stopListeningTo(this.scrollEl, \"scroll\");\n    },\n    computeScrollBounds: function computeScrollBounds() {\n      this.isAutoScroll && (this.scrollBounds = h(this.scrollEl));\n    },\n    updateAutoScroll: function updateAutoScroll(t) {\n      var e,\n        n,\n        i,\n        r,\n        s = this.scrollSensitivity,\n        o = this.scrollBounds,\n        l = 0,\n        a = 0;\n      o && (e = (s - (E(t) - o.top)) / s, n = (s - (o.bottom - E(t))) / s, i = (s - (w(t) - o.left)) / s, r = (s - (o.right - w(t))) / s, e >= 0 && e <= 1 ? l = e * this.scrollSpeed * -1 : n >= 0 && n <= 1 && (l = n * this.scrollSpeed), i >= 0 && i <= 1 ? a = i * this.scrollSpeed * -1 : r >= 0 && r <= 1 && (a = r * this.scrollSpeed)), this.setScrollVel(l, a);\n    },\n    setScrollVel: function setScrollVel(t, e) {\n      this.scrollTopVel = t, this.scrollLeftVel = e, this.constrainScrollVel(), !this.scrollTopVel && !this.scrollLeftVel || this.scrollIntervalId || (this.scrollIntervalId = setInterval(lt(this, \"scrollIntervalFunc\"), this.scrollIntervalMs));\n    },\n    constrainScrollVel: function constrainScrollVel() {\n      var t = this.scrollEl;\n      this.scrollTopVel < 0 ? t.scrollTop() <= 0 && (this.scrollTopVel = 0) : this.scrollTopVel > 0 && t.scrollTop() + t[0].clientHeight >= t[0].scrollHeight && (this.scrollTopVel = 0), this.scrollLeftVel < 0 ? t.scrollLeft() <= 0 && (this.scrollLeftVel = 0) : this.scrollLeftVel > 0 && t.scrollLeft() + t[0].clientWidth >= t[0].scrollWidth && (this.scrollLeftVel = 0);\n    },\n    scrollIntervalFunc: function scrollIntervalFunc() {\n      var t = this.scrollEl,\n        e = this.scrollIntervalMs / 1e3;\n      this.scrollTopVel && t.scrollTop(t.scrollTop() + this.scrollTopVel * e), this.scrollLeftVel && t.scrollLeft(t.scrollLeft() + this.scrollLeftVel * e), this.constrainScrollVel(), this.scrollTopVel || this.scrollLeftVel || this.endAutoScroll();\n    },\n    endAutoScroll: function endAutoScroll() {\n      this.scrollIntervalId && (clearInterval(this.scrollIntervalId), this.scrollIntervalId = null, this.handleScrollEnd());\n    },\n    handleDebouncedScroll: function handleDebouncedScroll() {\n      this.scrollIntervalId || this.handleScrollEnd();\n    },\n    handleScrollEnd: function handleScrollEnd() {}\n  });\n  var fe = he.extend({\n      component: null,\n      origHit: null,\n      hit: null,\n      coordAdjust: null,\n      constructor: function constructor(t, e) {\n        he.call(this, e), this.component = t;\n      },\n      handleInteractionStart: function handleInteractionStart(t) {\n        var e,\n          n,\n          i,\n          r = this.subjectEl;\n        this.computeCoords(), t ? (n = {\n          left: w(t),\n          top: E(t)\n        }, i = n, r && (e = h(r), i = R(i, e)), this.origHit = this.queryHit(i.left, i.top), r && this.options.subjectCenter && (this.origHit && (e = x(this.origHit, e) || e), i = I(e)), this.coordAdjust = k(i, n)) : (this.origHit = null, this.coordAdjust = null), he.prototype.handleInteractionStart.apply(this, arguments);\n      },\n      computeCoords: function computeCoords() {\n        this.component.prepareHits(), this.computeScrollBounds();\n      },\n      handleDragStart: function handleDragStart(t) {\n        var e;\n        he.prototype.handleDragStart.apply(this, arguments), e = this.queryHit(w(t), E(t)), e && this.handleHitOver(e);\n      },\n      handleDrag: function handleDrag(t, e, n) {\n        var i;\n        he.prototype.handleDrag.apply(this, arguments), i = this.queryHit(w(n), E(n)), bt(i, this.hit) || (this.hit && this.handleHitOut(), i && this.handleHitOver(i));\n      },\n      handleDragEnd: function handleDragEnd() {\n        this.handleHitDone(), he.prototype.handleDragEnd.apply(this, arguments);\n      },\n      handleHitOver: function handleHitOver(t) {\n        var e = bt(t, this.origHit);\n        this.hit = t, this.trigger(\"hitOver\", this.hit, e, this.origHit);\n      },\n      handleHitOut: function handleHitOut() {\n        this.hit && (this.trigger(\"hitOut\", this.hit), this.handleHitDone(), this.hit = null);\n      },\n      handleHitDone: function handleHitDone() {\n        this.hit && this.trigger(\"hitDone\", this.hit);\n      },\n      handleInteractionEnd: function handleInteractionEnd() {\n        he.prototype.handleInteractionEnd.apply(this, arguments), this.origHit = null, this.hit = null, this.component.releaseHits();\n      },\n      handleScrollEnd: function handleScrollEnd() {\n        he.prototype.handleScrollEnd.apply(this, arguments), this.computeCoords();\n      },\n      queryHit: function queryHit(t, e) {\n        return this.coordAdjust && (t += this.coordAdjust.left, e += this.coordAdjust.top), this.component.queryHit(t, e);\n      }\n    }),\n    ge = wt.extend(ae, {\n      options: null,\n      sourceEl: null,\n      el: null,\n      parentEl: null,\n      top0: null,\n      left0: null,\n      y0: null,\n      x0: null,\n      topDelta: null,\n      leftDelta: null,\n      isFollowing: !1,\n      isHidden: !1,\n      isAnimating: !1,\n      constructor: function constructor(e, n) {\n        this.options = n = n || {}, this.sourceEl = e, this.parentEl = n.parentEl ? t(n.parentEl) : e.parent();\n      },\n      start: function start(e) {\n        this.isFollowing || (this.isFollowing = !0, this.y0 = E(e), this.x0 = w(e), this.topDelta = 0, this.leftDelta = 0, this.isHidden || this.updatePosition(), D(e) ? this.listenTo(t(document), \"touchmove\", this.handleMove) : this.listenTo(t(document), \"mousemove\", this.handleMove));\n      },\n      stop: function stop(e, n) {\n        function i() {\n          r.isAnimating = !1, r.removeElement(), r.top0 = r.left0 = null, n && n();\n        }\n        var r = this,\n          s = this.options.revertDuration;\n        this.isFollowing && !this.isAnimating && (this.isFollowing = !1, this.stopListeningTo(t(document)), e && s && !this.isHidden ? (this.isAnimating = !0, this.el.animate({\n          top: this.top0,\n          left: this.left0\n        }, {\n          duration: s,\n          complete: i\n        })) : i());\n      },\n      getEl: function getEl() {\n        var t = this.el;\n        return t || (t = this.el = this.sourceEl.clone().addClass(this.options.additionalClass || \"\").css({\n          position: \"absolute\",\n          visibility: \"\",\n          display: this.isHidden ? \"none\" : \"\",\n          margin: 0,\n          right: \"auto\",\n          bottom: \"auto\",\n          width: this.sourceEl.width(),\n          height: this.sourceEl.height(),\n          opacity: this.options.opacity || \"\",\n          zIndex: this.options.zIndex\n        }), t.addClass(\"fc-unselectable\"), t.appendTo(this.parentEl)), t;\n      },\n      removeElement: function removeElement() {\n        this.el && (this.el.remove(), this.el = null);\n      },\n      updatePosition: function updatePosition() {\n        var t, e;\n        this.getEl(), null === this.top0 && (t = this.sourceEl.offset(), e = this.el.offsetParent().offset(), this.top0 = t.top - e.top, this.left0 = t.left - e.left), this.el.css({\n          top: this.top0 + this.topDelta,\n          left: this.left0 + this.leftDelta\n        });\n      },\n      handleMove: function handleMove(t) {\n        this.topDelta = E(t) - this.y0, this.leftDelta = w(t) - this.x0, this.isHidden || this.updatePosition();\n      },\n      hide: function hide() {\n        this.isHidden || (this.isHidden = !0, this.el && this.el.hide());\n      },\n      show: function show() {\n        this.isHidden && (this.isHidden = !1, this.updatePosition(), this.getEl().show());\n      }\n    }),\n    pe = jt.Grid = wt.extend(ae, ue, {\n      hasDayInteractions: !0,\n      view: null,\n      isRTL: null,\n      start: null,\n      end: null,\n      el: null,\n      elsByFill: null,\n      eventTimeFormat: null,\n      displayEventTime: null,\n      displayEventEnd: null,\n      minResizeDuration: null,\n      largeUnit: null,\n      dayDragListener: null,\n      segDragListener: null,\n      segResizeListener: null,\n      externalDragListener: null,\n      constructor: function constructor(t) {\n        this.view = t, this.isRTL = t.opt(\"isRTL\"), this.elsByFill = {}, this.dayDragListener = this.buildDayDragListener(), this.initMouseIgnoring();\n      },\n      computeEventTimeFormat: function computeEventTimeFormat() {\n        return this.view.opt(\"smallTimeFormat\");\n      },\n      computeDisplayEventTime: function computeDisplayEventTime() {\n        return !0;\n      },\n      computeDisplayEventEnd: function computeDisplayEventEnd() {\n        return !0;\n      },\n      setRange: function setRange(t) {\n        this.start = t.start.clone(), this.end = t.end.clone(), this.rangeUpdated(), this.processRangeOptions();\n      },\n      rangeUpdated: function rangeUpdated() {},\n      processRangeOptions: function processRangeOptions() {\n        var t,\n          e,\n          n = this.view;\n        this.eventTimeFormat = n.opt(\"eventTimeFormat\") || n.opt(\"timeFormat\") || this.computeEventTimeFormat(), t = n.opt(\"displayEventTime\"), null == t && (t = this.computeDisplayEventTime()), e = n.opt(\"displayEventEnd\"), null == e && (e = this.computeDisplayEventEnd()), this.displayEventTime = t, this.displayEventEnd = e;\n      },\n      spanToSegs: function spanToSegs(t) {},\n      diffDates: function diffDates(t, e) {\n        return this.largeUnit ? A(t, e, this.largeUnit) : N(t, e);\n      },\n      prepareHits: function prepareHits() {},\n      releaseHits: function releaseHits() {},\n      queryHit: function queryHit(t, e) {},\n      getHitSpan: function getHitSpan(t) {},\n      getHitEl: function getHitEl(t) {},\n      setElement: function setElement(t) {\n        this.el = t, this.hasDayInteractions && (b(t), this.bindDayHandler(\"touchstart\", this.dayTouchStart), this.bindDayHandler(\"mousedown\", this.dayMousedown)), this.bindSegHandlers(), this.bindGlobalHandlers();\n      },\n      bindDayHandler: function bindDayHandler(e, n) {\n        var i = this;\n        this.el.on(e, function (e) {\n          if (!t(e.target).is(i.segSelector + \",\" + i.segSelector + \" *,.fc-more,a[data-goto]\")) return n.call(i, e);\n        });\n      },\n      removeElement: function removeElement() {\n        this.unbindGlobalHandlers(), this.clearDragListeners(), this.el.remove();\n      },\n      renderSkeleton: function renderSkeleton() {},\n      renderDates: function renderDates() {},\n      unrenderDates: function unrenderDates() {},\n      bindGlobalHandlers: function bindGlobalHandlers() {\n        this.listenTo(t(document), {\n          dragstart: this.externalDragStart,\n          sortstart: this.externalDragStart\n        });\n      },\n      unbindGlobalHandlers: function unbindGlobalHandlers() {\n        this.stopListeningTo(t(document));\n      },\n      dayMousedown: function dayMousedown(t) {\n        this.isIgnoringMouse || this.dayDragListener.startInteraction(t, {});\n      },\n      dayTouchStart: function dayTouchStart(t) {\n        var e = this.view;\n        (e.isSelected || e.selectedEvent) && this.tempIgnoreMouse(), this.dayDragListener.startInteraction(t, {\n          delay: this.view.opt(\"longPressDelay\")\n        });\n      },\n      buildDayDragListener: function buildDayDragListener() {\n        var t,\n          e,\n          n = this,\n          i = this.view,\n          r = i.opt(\"selectable\"),\n          l = new fe(this, {\n            scroll: i.opt(\"dragScroll\"),\n            interactionStart: function interactionStart() {\n              t = l.origHit, e = null;\n            },\n            dragStart: function dragStart() {\n              i.unselect();\n            },\n            hitOver: function hitOver(i, o, l) {\n              l && (o || (t = null), r && (e = n.computeSelection(n.getHitSpan(l), n.getHitSpan(i)), e ? n.renderSelection(e) : e === !1 && s()));\n            },\n            hitOut: function hitOut() {\n              t = null, e = null, n.unrenderSelection();\n            },\n            hitDone: function hitDone() {\n              o();\n            },\n            interactionEnd: function interactionEnd(r, s) {\n              s || (t && !n.isIgnoringMouse && i.triggerDayClick(n.getHitSpan(t), n.getHitEl(t), r), e && i.reportSelection(e, r));\n            }\n          });\n        return l;\n      },\n      clearDragListeners: function clearDragListeners() {\n        this.dayDragListener.endInteraction(), this.segDragListener && this.segDragListener.endInteraction(), this.segResizeListener && this.segResizeListener.endInteraction(), this.externalDragListener && this.externalDragListener.endInteraction();\n      },\n      renderEventLocationHelper: function renderEventLocationHelper(t, e) {\n        var n = this.fabricateHelperEvent(t, e);\n        return this.renderHelper(n, e);\n      },\n      fabricateHelperEvent: function fabricateHelperEvent(t, e) {\n        var n = e ? Z(e.event) : {};\n        return n.start = t.start.clone(), n.end = t.end ? t.end.clone() : null, n.allDay = null, this.view.calendar.normalizeEventDates(n), n.className = (n.className || []).concat(\"fc-helper\"), e || (n.editable = !1), n;\n      },\n      renderHelper: function renderHelper(t, e) {},\n      unrenderHelper: function unrenderHelper() {},\n      renderSelection: function renderSelection(t) {\n        this.renderHighlight(t);\n      },\n      unrenderSelection: function unrenderSelection() {\n        this.unrenderHighlight();\n      },\n      computeSelection: function computeSelection(t, e) {\n        var n = this.computeSelectionSpan(t, e);\n        return !(n && !this.view.calendar.isSelectionSpanAllowed(n)) && n;\n      },\n      computeSelectionSpan: function computeSelectionSpan(t, e) {\n        var n = [t.start, t.end, e.start, e.end];\n        return n.sort(st), {\n          start: n[0].clone(),\n          end: n[3].clone()\n        };\n      },\n      renderHighlight: function renderHighlight(t) {\n        this.renderFill(\"highlight\", this.spanToSegs(t));\n      },\n      unrenderHighlight: function unrenderHighlight() {\n        this.unrenderFill(\"highlight\");\n      },\n      highlightSegClasses: function highlightSegClasses() {\n        return [\"fc-highlight\"];\n      },\n      renderBusinessHours: function renderBusinessHours() {},\n      unrenderBusinessHours: function unrenderBusinessHours() {},\n      getNowIndicatorUnit: function getNowIndicatorUnit() {},\n      renderNowIndicator: function renderNowIndicator(t) {},\n      unrenderNowIndicator: function unrenderNowIndicator() {},\n      renderFill: function renderFill(t, e) {},\n      unrenderFill: function unrenderFill(t) {\n        var e = this.elsByFill[t];\n        e && (e.remove(), delete this.elsByFill[t]);\n      },\n      renderFillSegEls: function renderFillSegEls(e, n) {\n        var i,\n          r = this,\n          s = this[e + \"SegEl\"],\n          o = \"\",\n          l = [];\n        if (n.length) {\n          for (i = 0; i < n.length; i++) o += this.fillSegHtml(e, n[i]);\n          t(o).each(function (e, i) {\n            var o = n[e],\n              a = t(i);\n            s && (a = s.call(r, o, a)), a && (a = t(a), a.is(r.fillSegTag) && (o.el = a, l.push(o)));\n          });\n        }\n        return l;\n      },\n      fillSegTag: \"div\",\n      fillSegHtml: function fillSegHtml(t, e) {\n        var n = this[t + \"SegClasses\"],\n          i = this[t + \"SegCss\"],\n          r = n ? n.call(this, e) : [],\n          s = nt(i ? i.call(this, e) : {});\n        return \"<\" + this.fillSegTag + (r.length ? ' class=\"' + r.join(\" \") + '\"' : \"\") + (s ? ' style=\"' + s + '\"' : \"\") + \" />\";\n      },\n      getDayClasses: function getDayClasses(t) {\n        var e = this.view,\n          n = e.calendar.getNow(),\n          i = [\"fc-\" + $t[t.day()]];\n        return 1 == e.intervalDuration.as(\"months\") && t.month() != e.intervalStart.month() && i.push(\"fc-other-month\"), t.isSame(n, \"day\") ? i.push(\"fc-today\", e.highlightStateClass) : t < n ? i.push(\"fc-past\") : i.push(\"fc-future\"), i;\n      }\n    });\n  pe.mixin({\n    segSelector: \".fc-event-container > *\",\n    mousedOverSeg: null,\n    isDraggingSeg: !1,\n    isResizingSeg: !1,\n    isDraggingExternal: !1,\n    segs: null,\n    renderEvents: function renderEvents(t) {\n      var e,\n        n = [],\n        i = [];\n      for (e = 0; e < t.length; e++) (Tt(t[e]) ? n : i).push(t[e]);\n      this.segs = [].concat(this.renderBgEvents(n), this.renderFgEvents(i));\n    },\n    renderBgEvents: function renderBgEvents(t) {\n      var e = this.eventsToSegs(t);\n      return this.renderBgSegs(e) || e;\n    },\n    renderFgEvents: function renderFgEvents(t) {\n      var e = this.eventsToSegs(t);\n      return this.renderFgSegs(e) || e;\n    },\n    unrenderEvents: function unrenderEvents() {\n      this.handleSegMouseout(), this.clearDragListeners(), this.unrenderFgSegs(), this.unrenderBgSegs(), this.segs = null;\n    },\n    getEventSegs: function getEventSegs() {\n      return this.segs || [];\n    },\n    renderFgSegs: function renderFgSegs(t) {},\n    unrenderFgSegs: function unrenderFgSegs() {},\n    renderFgSegEls: function renderFgSegEls(e, n) {\n      var i,\n        r = this.view,\n        s = \"\",\n        o = [];\n      if (e.length) {\n        for (i = 0; i < e.length; i++) s += this.fgSegHtml(e[i], n);\n        t(s).each(function (n, i) {\n          var s = e[n],\n            l = r.resolveEventEl(s.event, t(i));\n          l && (l.data(\"fc-seg\", s), s.el = l, o.push(s));\n        });\n      }\n      return o;\n    },\n    fgSegHtml: function fgSegHtml(t, e) {},\n    renderBgSegs: function renderBgSegs(t) {\n      return this.renderFill(\"bgEvent\", t);\n    },\n    unrenderBgSegs: function unrenderBgSegs() {\n      this.unrenderFill(\"bgEvent\");\n    },\n    bgEventSegEl: function bgEventSegEl(t, e) {\n      return this.view.resolveEventEl(t.event, e);\n    },\n    bgEventSegClasses: function bgEventSegClasses(t) {\n      var e = t.event,\n        n = e.source || {};\n      return [\"fc-bgevent\"].concat(e.className, n.className || []);\n    },\n    bgEventSegCss: function bgEventSegCss(t) {\n      return {\n        \"background-color\": this.getSegSkinCss(t)[\"background-color\"]\n      };\n    },\n    businessHoursSegClasses: function businessHoursSegClasses(t) {\n      return [\"fc-nonbusiness\", \"fc-bgevent\"];\n    },\n    buildBusinessHourSegs: function buildBusinessHourSegs(e) {\n      var n = this.view.calendar.getCurrentBusinessHourEvents(e);\n      return !n.length && this.view.calendar.options.businessHours && (n = [t.extend({}, Re, {\n        start: this.view.end,\n        end: this.view.end,\n        dow: null\n      })]), this.eventsToSegs(n);\n    },\n    bindSegHandlers: function bindSegHandlers() {\n      this.bindSegHandlersToEl(this.el);\n    },\n    bindSegHandlersToEl: function bindSegHandlersToEl(t) {\n      this.bindSegHandlerToEl(t, \"touchstart\", this.handleSegTouchStart), this.bindSegHandlerToEl(t, \"touchend\", this.handleSegTouchEnd), this.bindSegHandlerToEl(t, \"mouseenter\", this.handleSegMouseover), this.bindSegHandlerToEl(t, \"mouseleave\", this.handleSegMouseout), this.bindSegHandlerToEl(t, \"mousedown\", this.handleSegMousedown), this.bindSegHandlerToEl(t, \"click\", this.handleSegClick);\n    },\n    bindSegHandlerToEl: function bindSegHandlerToEl(e, n, i) {\n      var r = this;\n      e.on(n, this.segSelector, function (e) {\n        var n = t(this).data(\"fc-seg\");\n        if (n && !r.isDraggingSeg && !r.isResizingSeg) return i.call(r, n, e);\n      });\n    },\n    handleSegClick: function handleSegClick(t, e) {\n      var n = this.view.trigger(\"eventClick\", t.el[0], t.event, e);\n      n === !1 && e.preventDefault();\n    },\n    handleSegMouseover: function handleSegMouseover(t, e) {\n      this.isIgnoringMouse || this.mousedOverSeg || (this.mousedOverSeg = t, this.view.isEventResizable(t.event) && t.el.addClass(\"fc-allow-mouse-resize\"), this.view.trigger(\"eventMouseover\", t.el[0], t.event, e));\n    },\n    handleSegMouseout: function handleSegMouseout(t, e) {\n      e = e || {}, this.mousedOverSeg && (t = t || this.mousedOverSeg, this.mousedOverSeg = null, this.view.isEventResizable(t.event) && t.el.removeClass(\"fc-allow-mouse-resize\"), this.view.trigger(\"eventMouseout\", t.el[0], t.event, e));\n    },\n    handleSegMousedown: function handleSegMousedown(t, e) {\n      var n = this.startSegResize(t, e, {\n        distance: 5\n      });\n      !n && this.view.isEventDraggable(t.event) && this.buildSegDragListener(t).startInteraction(e, {\n        distance: 5\n      });\n    },\n    handleSegTouchStart: function handleSegTouchStart(t, e) {\n      var n,\n        i = this.view,\n        r = t.event,\n        s = i.isEventSelected(r),\n        o = i.isEventDraggable(r),\n        l = i.isEventResizable(r),\n        a = !1;\n      s && l && (a = this.startSegResize(t, e)), a || !o && !l || (n = o ? this.buildSegDragListener(t) : this.buildSegSelectListener(t), n.startInteraction(e, {\n        delay: s ? 0 : this.view.opt(\"longPressDelay\")\n      })), this.tempIgnoreMouse();\n    },\n    handleSegTouchEnd: function handleSegTouchEnd(t, e) {\n      this.tempIgnoreMouse();\n    },\n    startSegResize: function startSegResize(e, n, i) {\n      return !!t(n.target).is(\".fc-resizer\") && (this.buildSegResizeListener(e, t(n.target).is(\".fc-start-resizer\")).startInteraction(n, i), !0);\n    },\n    buildSegDragListener: function buildSegDragListener(t) {\n      var e,\n        n,\n        i,\n        r = this,\n        l = this.view,\n        a = l.calendar,\n        u = t.el,\n        d = t.event;\n      if (this.segDragListener) return this.segDragListener;\n      var c = this.segDragListener = new fe(l, {\n        scroll: l.opt(\"dragScroll\"),\n        subjectEl: u,\n        subjectCenter: !0,\n        interactionStart: function interactionStart(i) {\n          t.component = r, e = !1, n = new ge(t.el, {\n            additionalClass: \"fc-dragging\",\n            parentEl: l.el,\n            opacity: c.isTouch ? null : l.opt(\"dragOpacity\"),\n            revertDuration: l.opt(\"dragRevertDuration\"),\n            zIndex: 2\n          }), n.hide(), n.start(i);\n        },\n        dragStart: function dragStart(n) {\n          c.isTouch && !l.isEventSelected(d) && l.selectEvent(d), e = !0, r.handleSegMouseout(t, n), r.segDragStart(t, n), l.hideEvent(d);\n        },\n        hitOver: function hitOver(e, o, u) {\n          var h;\n          t.hit && (u = t.hit), i = r.computeEventDrop(u.component.getHitSpan(u), e.component.getHitSpan(e), d), i && !a.isEventSpanAllowed(r.eventToSpan(i), d) && (s(), i = null), i && (h = l.renderDrag(i, t)) ? (h.addClass(\"fc-dragging\"), c.isTouch || r.applyDragOpacity(h), n.hide()) : n.show(), o && (i = null);\n        },\n        hitOut: function hitOut() {\n          l.unrenderDrag(), n.show(), i = null;\n        },\n        hitDone: function hitDone() {\n          o();\n        },\n        interactionEnd: function interactionEnd(s) {\n          delete t.component, n.stop(!i, function () {\n            e && (l.unrenderDrag(), l.showEvent(d), r.segDragStop(t, s)), i && l.reportEventDrop(d, i, this.largeUnit, u, s);\n          }), r.segDragListener = null;\n        }\n      });\n      return c;\n    },\n    buildSegSelectListener: function buildSegSelectListener(t) {\n      var e = this,\n        n = this.view,\n        i = t.event;\n      if (this.segDragListener) return this.segDragListener;\n      var r = this.segDragListener = new he({\n        dragStart: function dragStart(t) {\n          r.isTouch && !n.isEventSelected(i) && n.selectEvent(i);\n        },\n        interactionEnd: function interactionEnd(t) {\n          e.segDragListener = null;\n        }\n      });\n      return r;\n    },\n    segDragStart: function segDragStart(t, e) {\n      this.isDraggingSeg = !0, this.view.trigger(\"eventDragStart\", t.el[0], t.event, e, {});\n    },\n    segDragStop: function segDragStop(t, e) {\n      this.isDraggingSeg = !1, this.view.trigger(\"eventDragStop\", t.el[0], t.event, e, {});\n    },\n    computeEventDrop: function computeEventDrop(t, e, n) {\n      var i,\n        r,\n        s = this.view.calendar,\n        o = t.start,\n        l = e.start;\n      return o.hasTime() === l.hasTime() ? (i = this.diffDates(l, o), n.allDay && W(i) ? (r = {\n        start: n.start.clone(),\n        end: s.getEventEnd(n),\n        allDay: !1\n      }, s.normalizeEventTimes(r)) : r = Ht(n), r.start.add(i), r.end && r.end.add(i)) : r = {\n        start: l.clone(),\n        end: null,\n        allDay: !l.hasTime()\n      }, r;\n    },\n    applyDragOpacity: function applyDragOpacity(t) {\n      var e = this.view.opt(\"dragOpacity\");\n      null != e && t.css(\"opacity\", e);\n    },\n    externalDragStart: function externalDragStart(e, n) {\n      var i,\n        r,\n        s = this.view;\n      s.opt(\"droppable\") && (i = t((n ? n.item : null) || e.target), r = s.opt(\"dropAccept\"), (t.isFunction(r) ? r.call(i[0], i) : i.is(r)) && (this.isDraggingExternal || this.listenToExternalDrag(i, e, n)));\n    },\n    listenToExternalDrag: function listenToExternalDrag(t, e, n) {\n      var i,\n        r = this,\n        l = this.view.calendar,\n        a = Mt(t),\n        u = r.externalDragListener = new fe(this, {\n          interactionStart: function interactionStart() {\n            r.isDraggingExternal = !0;\n          },\n          hitOver: function hitOver(t) {\n            i = r.computeExternalDrop(t.component.getHitSpan(t), a), i && !l.isExternalSpanAllowed(r.eventToSpan(i), i, a.eventProps) && (s(), i = null), i && r.renderDrag(i);\n          },\n          hitOut: function hitOut() {\n            i = null;\n          },\n          hitDone: function hitDone() {\n            o(), r.unrenderDrag();\n          },\n          interactionEnd: function interactionEnd(e) {\n            i && r.view.reportExternalDrop(a, i, t, e, n), r.isDraggingExternal = !1, r.externalDragListener = null;\n          }\n        });\n      u.startDrag(e);\n    },\n    computeExternalDrop: function computeExternalDrop(t, e) {\n      var n = this.view.calendar,\n        i = {\n          start: n.applyTimezone(t.start),\n          end: null\n        };\n      return e.startTime && !i.start.hasTime() && i.start.time(e.startTime), e.duration && (i.end = i.start.clone().add(e.duration)), i;\n    },\n    renderDrag: function renderDrag(t, e) {},\n    unrenderDrag: function unrenderDrag() {},\n    buildSegResizeListener: function buildSegResizeListener(t, e) {\n      var n,\n        i,\n        r = this,\n        l = this.view,\n        a = l.calendar,\n        u = t.el,\n        d = t.event,\n        c = a.getEventEnd(d),\n        h = this.segResizeListener = new fe(this, {\n          scroll: l.opt(\"dragScroll\"),\n          subjectEl: u,\n          interactionStart: function interactionStart() {\n            n = !1;\n          },\n          dragStart: function dragStart(e) {\n            n = !0, r.handleSegMouseout(t, e), r.segResizeStart(t, e);\n          },\n          hitOver: function hitOver(n, o, u) {\n            var h = r.getHitSpan(u),\n              f = r.getHitSpan(n);\n            i = e ? r.computeEventStartResize(h, f, d) : r.computeEventEndResize(h, f, d), i && (a.isEventSpanAllowed(r.eventToSpan(i), d) ? i.start.isSame(d.start.clone().stripZone()) && i.end.isSame(c.clone().stripZone()) && (i = null) : (s(), i = null)), i && (l.hideEvent(d), r.renderEventResize(i, t));\n          },\n          hitOut: function hitOut() {\n            i = null;\n          },\n          hitDone: function hitDone() {\n            r.unrenderEventResize(), l.showEvent(d), o();\n          },\n          interactionEnd: function interactionEnd(e) {\n            n && r.segResizeStop(t, e), i && l.reportEventResize(d, i, this.largeUnit, u, e), r.segResizeListener = null;\n          }\n        });\n      return h;\n    },\n    segResizeStart: function segResizeStart(t, e) {\n      this.isResizingSeg = !0, this.view.trigger(\"eventResizeStart\", t.el[0], t.event, e, {});\n    },\n    segResizeStop: function segResizeStop(t, e) {\n      this.isResizingSeg = !1, this.view.trigger(\"eventResizeStop\", t.el[0], t.event, e, {});\n    },\n    computeEventStartResize: function computeEventStartResize(t, e, n) {\n      return this.computeEventResize(\"start\", t, e, n);\n    },\n    computeEventEndResize: function computeEventEndResize(t, e, n) {\n      return this.computeEventResize(\"end\", t, e, n);\n    },\n    computeEventResize: function computeEventResize(t, e, n, i) {\n      var r,\n        s,\n        o = this.view.calendar,\n        l = this.diffDates(n[t], e[t]);\n      return r = {\n        start: i.start.clone(),\n        end: o.getEventEnd(i),\n        allDay: i.allDay\n      }, r.allDay && W(l) && (r.allDay = !1, o.normalizeEventTimes(r)), r[t].add(l), r.start.isBefore(r.end) || (s = this.minResizeDuration || (i.allDay ? o.defaultAllDayEventDuration : o.defaultTimedEventDuration), \"start\" == t ? r.start = r.end.clone().subtract(s) : r.end = r.start.clone().add(s)), r;\n    },\n    renderEventResize: function renderEventResize(t, e) {},\n    unrenderEventResize: function unrenderEventResize() {},\n    getEventTimeText: function getEventTimeText(t, e, n) {\n      return null == e && (e = this.eventTimeFormat), null == n && (n = this.displayEventEnd), this.displayEventTime && t.start.hasTime() ? n && t.end ? this.view.formatRange(t, e) : t.start.format(e) : \"\";\n    },\n    getSegClasses: function getSegClasses(t, e, n) {\n      var i = this.view,\n        r = [\"fc-event\", t.isStart ? \"fc-start\" : \"fc-not-start\", t.isEnd ? \"fc-end\" : \"fc-not-end\"].concat(this.getSegCustomClasses(t));\n      return e && r.push(\"fc-draggable\"), n && r.push(\"fc-resizable\"), i.isEventSelected(t.event) && r.push(\"fc-selected\"), r;\n    },\n    getSegCustomClasses: function getSegCustomClasses(t) {\n      var e = t.event;\n      return [].concat(e.className, e.source ? e.source.className : []);\n    },\n    getSegSkinCss: function getSegSkinCss(t) {\n      return {\n        \"background-color\": this.getSegBackgroundColor(t),\n        \"border-color\": this.getSegBorderColor(t),\n        color: this.getSegTextColor(t)\n      };\n    },\n    getSegBackgroundColor: function getSegBackgroundColor(t) {\n      return t.event.backgroundColor || t.event.color || this.getSegDefaultBackgroundColor(t);\n    },\n    getSegDefaultBackgroundColor: function getSegDefaultBackgroundColor(t) {\n      var e = t.event.source || {};\n      return e.backgroundColor || e.color || this.view.opt(\"eventBackgroundColor\") || this.view.opt(\"eventColor\");\n    },\n    getSegBorderColor: function getSegBorderColor(t) {\n      return t.event.borderColor || t.event.color || this.getSegDefaultBorderColor(t);\n    },\n    getSegDefaultBorderColor: function getSegDefaultBorderColor(t) {\n      var e = t.event.source || {};\n      return e.borderColor || e.color || this.view.opt(\"eventBorderColor\") || this.view.opt(\"eventColor\");\n    },\n    getSegTextColor: function getSegTextColor(t) {\n      return t.event.textColor || this.getSegDefaultTextColor(t);\n    },\n    getSegDefaultTextColor: function getSegDefaultTextColor(t) {\n      var e = t.event.source || {};\n      return e.textColor || this.view.opt(\"eventTextColor\");\n    },\n    eventToSegs: function eventToSegs(t) {\n      return this.eventsToSegs([t]);\n    },\n    eventToSpan: function eventToSpan(t) {\n      return this.eventToSpans(t)[0];\n    },\n    eventToSpans: function eventToSpans(t) {\n      var e = this.eventToRange(t);\n      return this.eventRangeToSpans(e, t);\n    },\n    eventsToSegs: function eventsToSegs(e, n) {\n      var i = this,\n        r = It(e),\n        s = [];\n      return t.each(r, function (t, e) {\n        var r,\n          o = [];\n        for (r = 0; r < e.length; r++) o.push(i.eventToRange(e[r]));\n        if (xt(e[0])) for (o = i.invertRanges(o), r = 0; r < o.length; r++) s.push.apply(s, i.eventRangeToSegs(o[r], e[0], n));else for (r = 0; r < o.length; r++) s.push.apply(s, i.eventRangeToSegs(o[r], e[r], n));\n      }), s;\n    },\n    eventToRange: function eventToRange(t) {\n      var e = this.view.calendar,\n        n = t.start.clone().stripZone(),\n        i = (t.end ? t.end.clone() : e.getDefaultEventEnd(null != t.allDay ? t.allDay : !t.start.hasTime(), t.start)).stripZone();\n      return e.localizeMoment(n), e.localizeMoment(i), {\n        start: n,\n        end: i\n      };\n    },\n    eventRangeToSegs: function eventRangeToSegs(t, e, n) {\n      var i,\n        r = this.eventRangeToSpans(t, e),\n        s = [];\n      for (i = 0; i < r.length; i++) s.push.apply(s, this.eventSpanToSegs(r[i], e, n));\n      return s;\n    },\n    eventRangeToSpans: function eventRangeToSpans(e, n) {\n      return [t.extend({}, e)];\n    },\n    eventSpanToSegs: function eventSpanToSegs(t, e, n) {\n      var i,\n        r,\n        s = n ? n(t) : this.spanToSegs(t);\n      for (i = 0; i < s.length; i++) r = s[i], r.event = e, r.eventStartMS = +t.start, r.eventDurationMS = t.end - t.start;\n      return s;\n    },\n    invertRanges: function invertRanges(t) {\n      var e,\n        n,\n        i = this.view,\n        r = i.start.clone(),\n        s = i.end.clone(),\n        o = [],\n        l = r;\n      for (t.sort(kt), e = 0; e < t.length; e++) n = t[e], n.start > l && o.push({\n        start: l,\n        end: n.start\n      }), l = n.end;\n      return l < s && o.push({\n        start: l,\n        end: s\n      }), o;\n    },\n    sortEventSegs: function sortEventSegs(t) {\n      t.sort(lt(this, \"compareEventSegs\"));\n    },\n    compareEventSegs: function compareEventSegs(t, e) {\n      return t.eventStartMS - e.eventStartMS || e.eventDurationMS - t.eventDurationMS || e.event.allDay - t.event.allDay || L(t.event, e.event, this.view.eventOrderSpecs);\n    }\n  }), jt.pluckEventDateProps = Ht, jt.isBgEvent = Tt, jt.dataAttrPrefix = \"\";\n  var ve = jt.DayTableMixin = {\n      breakOnWeeks: !1,\n      dayDates: null,\n      dayIndices: null,\n      daysPerRow: null,\n      rowCnt: null,\n      colCnt: null,\n      colHeadFormat: null,\n      updateDayTable: function updateDayTable() {\n        for (var t, e, n, i = this.view, r = this.start.clone(), s = -1, o = [], l = []; r.isBefore(this.end);) i.isHiddenDay(r) ? o.push(s + .5) : (s++, o.push(s), l.push(r.clone())), r.add(1, \"days\");\n        if (this.breakOnWeeks) {\n          for (e = l[0].day(), t = 1; t < l.length && l[t].day() != e; t++);\n          n = Math.ceil(l.length / t);\n        } else n = 1, t = l.length;\n        this.dayDates = l, this.dayIndices = o, this.daysPerRow = t, this.rowCnt = n, this.updateDayTableCols();\n      },\n      updateDayTableCols: function updateDayTableCols() {\n        this.colCnt = this.computeColCnt(), this.colHeadFormat = this.view.opt(\"columnFormat\") || this.computeColHeadFormat();\n      },\n      computeColCnt: function computeColCnt() {\n        return this.daysPerRow;\n      },\n      getCellDate: function getCellDate(t, e) {\n        return this.dayDates[this.getCellDayIndex(t, e)].clone();\n      },\n      getCellRange: function getCellRange(t, e) {\n        var n = this.getCellDate(t, e),\n          i = n.clone().add(1, \"days\");\n        return {\n          start: n,\n          end: i\n        };\n      },\n      getCellDayIndex: function getCellDayIndex(t, e) {\n        return t * this.daysPerRow + this.getColDayIndex(e);\n      },\n      getColDayIndex: function getColDayIndex(t) {\n        return this.isRTL ? this.colCnt - 1 - t : t;\n      },\n      getDateDayIndex: function getDateDayIndex(t) {\n        var e = this.dayIndices,\n          n = t.diff(this.start, \"days\");\n        return n < 0 ? e[0] - 1 : n >= e.length ? e[e.length - 1] + 1 : e[n];\n      },\n      computeColHeadFormat: function computeColHeadFormat() {\n        return this.rowCnt > 1 || this.colCnt > 10 ? \"ddd\" : this.colCnt > 1 ? this.view.opt(\"dayOfMonthFormat\") : \"dddd\";\n      },\n      sliceRangeByRow: function sliceRangeByRow(t) {\n        var e,\n          n,\n          i,\n          r,\n          s,\n          o = this.daysPerRow,\n          l = this.view.computeDayRange(t),\n          a = this.getDateDayIndex(l.start),\n          u = this.getDateDayIndex(l.end.clone().subtract(1, \"days\")),\n          d = [];\n        for (e = 0; e < this.rowCnt; e++) n = e * o, i = n + o - 1, r = Math.max(a, n), s = Math.min(u, i), r = Math.ceil(r), s = Math.floor(s), r <= s && d.push({\n          row: e,\n          firstRowDayIndex: r - n,\n          lastRowDayIndex: s - n,\n          isStart: r === a,\n          isEnd: s === u\n        });\n        return d;\n      },\n      sliceRangeByDay: function sliceRangeByDay(t) {\n        var e,\n          n,\n          i,\n          r,\n          s,\n          o,\n          l = this.daysPerRow,\n          a = this.view.computeDayRange(t),\n          u = this.getDateDayIndex(a.start),\n          d = this.getDateDayIndex(a.end.clone().subtract(1, \"days\")),\n          c = [];\n        for (e = 0; e < this.rowCnt; e++) for (n = e * l, i = n + l - 1, r = n; r <= i; r++) s = Math.max(u, r), o = Math.min(d, r), s = Math.ceil(s), o = Math.floor(o), s <= o && c.push({\n          row: e,\n          firstRowDayIndex: s - n,\n          lastRowDayIndex: o - n,\n          isStart: s === u,\n          isEnd: o === d\n        });\n        return c;\n      },\n      renderHeadHtml: function renderHeadHtml() {\n        var t = this.view;\n        return '<div class=\"fc-row ' + t.widgetHeaderClass + '\"><table><thead>' + this.renderHeadTrHtml() + \"</thead></table></div>\";\n      },\n      renderHeadIntroHtml: function renderHeadIntroHtml() {\n        return this.renderIntroHtml();\n      },\n      renderHeadTrHtml: function renderHeadTrHtml() {\n        return \"<tr>\" + (this.isRTL ? \"\" : this.renderHeadIntroHtml()) + this.renderHeadDateCellsHtml() + (this.isRTL ? this.renderHeadIntroHtml() : \"\") + \"</tr>\";\n      },\n      renderHeadDateCellsHtml: function renderHeadDateCellsHtml() {\n        var t,\n          e,\n          n = [];\n        for (t = 0; t < this.colCnt; t++) e = this.getCellDate(0, t), n.push(this.renderHeadDateCellHtml(e));\n        return n.join(\"\");\n      },\n      renderHeadDateCellHtml: function renderHeadDateCellHtml(t, e, n) {\n        var i = this.view;\n        return '<th class=\"fc-day-header ' + i.widgetHeaderClass + \" fc-\" + $t[t.day()] + '\"' + (1 === this.rowCnt ? ' data-date=\"' + t.format(\"YYYY-MM-DD\") + '\"' : \"\") + (e > 1 ? ' colspan=\"' + e + '\"' : \"\") + (n ? \" \" + n : \"\") + \">\" + i.buildGotoAnchorHtml({\n          date: t,\n          forceOff: this.rowCnt > 1 || 1 === this.colCnt\n        }, tt(t.format(this.colHeadFormat))) + \"</th>\";\n      },\n      renderBgTrHtml: function renderBgTrHtml(t) {\n        return \"<tr>\" + (this.isRTL ? \"\" : this.renderBgIntroHtml(t)) + this.renderBgCellsHtml(t) + (this.isRTL ? this.renderBgIntroHtml(t) : \"\") + \"</tr>\";\n      },\n      renderBgIntroHtml: function renderBgIntroHtml(t) {\n        return this.renderIntroHtml();\n      },\n      renderBgCellsHtml: function renderBgCellsHtml(t) {\n        var e,\n          n,\n          i = [];\n        for (e = 0; e < this.colCnt; e++) n = this.getCellDate(t, e), i.push(this.renderBgCellHtml(n));\n        return i.join(\"\");\n      },\n      renderBgCellHtml: function renderBgCellHtml(t, e) {\n        var n = this.view,\n          i = this.getDayClasses(t);\n        return i.unshift(\"fc-day\", n.widgetContentClass), '<td class=\"' + i.join(\" \") + '\" data-date=\"' + t.format(\"YYYY-MM-DD\") + '\"' + (e ? \" \" + e : \"\") + \"></td>\";\n      },\n      renderIntroHtml: function renderIntroHtml() {},\n      bookendCells: function bookendCells(t) {\n        var e = this.renderIntroHtml();\n        e && (this.isRTL ? t.append(e) : t.prepend(e));\n      }\n    },\n    me = jt.DayGrid = pe.extend(ve, {\n      numbersVisible: !1,\n      bottomCoordPadding: 0,\n      rowEls: null,\n      cellEls: null,\n      helperEls: null,\n      rowCoordCache: null,\n      colCoordCache: null,\n      renderDates: function renderDates(t) {\n        var e,\n          n,\n          i = this.view,\n          r = this.rowCnt,\n          s = this.colCnt,\n          o = \"\";\n        for (e = 0; e < r; e++) o += this.renderDayRowHtml(e, t);\n        for (this.el.html(o), this.rowEls = this.el.find(\".fc-row\"), this.cellEls = this.el.find(\".fc-day\"), this.rowCoordCache = new ce({\n          els: this.rowEls,\n          isVertical: !0\n        }), this.colCoordCache = new ce({\n          els: this.cellEls.slice(0, this.colCnt),\n          isHorizontal: !0\n        }), e = 0; e < r; e++) for (n = 0; n < s; n++) i.trigger(\"dayRender\", null, this.getCellDate(e, n), this.getCellEl(e, n));\n      },\n      unrenderDates: function unrenderDates() {\n        this.removeSegPopover();\n      },\n      renderBusinessHours: function renderBusinessHours() {\n        var t = this.buildBusinessHourSegs(!0);\n        this.renderFill(\"businessHours\", t, \"bgevent\");\n      },\n      unrenderBusinessHours: function unrenderBusinessHours() {\n        this.unrenderFill(\"businessHours\");\n      },\n      renderDayRowHtml: function renderDayRowHtml(t, e) {\n        var n = this.view,\n          i = [\"fc-row\", \"fc-week\", n.widgetContentClass];\n        return e && i.push(\"fc-rigid\"), '<div class=\"' + i.join(\" \") + '\"><div class=\"fc-bg\"><table>' + this.renderBgTrHtml(t) + '</table></div><div class=\"fc-content-skeleton\"><table>' + (this.numbersVisible ? \"<thead>\" + this.renderNumberTrHtml(t) + \"</thead>\" : \"\") + \"</table></div></div>\";\n      },\n      renderNumberTrHtml: function renderNumberTrHtml(t) {\n        return \"<tr>\" + (this.isRTL ? \"\" : this.renderNumberIntroHtml(t)) + this.renderNumberCellsHtml(t) + (this.isRTL ? this.renderNumberIntroHtml(t) : \"\") + \"</tr>\";\n      },\n      renderNumberIntroHtml: function renderNumberIntroHtml(t) {\n        return this.renderIntroHtml();\n      },\n      renderNumberCellsHtml: function renderNumberCellsHtml(t) {\n        var e,\n          n,\n          i = [];\n        for (e = 0; e < this.colCnt; e++) n = this.getCellDate(t, e), i.push(this.renderNumberCellHtml(n));\n        return i.join(\"\");\n      },\n      renderNumberCellHtml: function renderNumberCellHtml(t) {\n        var e,\n          n,\n          i = \"\";\n        return this.view.dayNumbersVisible || this.view.cellWeekNumbersVisible ? (e = this.getDayClasses(t), e.unshift(\"fc-day-top\"), this.view.cellWeekNumbersVisible && (n = \"ISO\" === t._locale._fullCalendar_weekCalc ? 1 : t._locale.firstDayOfWeek()), i += '<td class=\"' + e.join(\" \") + '\" data-date=\"' + t.format() + '\">', this.view.cellWeekNumbersVisible && t.day() == n && (i += this.view.buildGotoAnchorHtml({\n          date: t,\n          type: \"week\"\n        }, {\n          \"class\": \"fc-week-number\"\n        }, t.format(\"w\"))), this.view.dayNumbersVisible && (i += this.view.buildGotoAnchorHtml(t, {\n          \"class\": \"fc-day-number\"\n        }, t.date())), i += \"</td>\") : \"<td/>\";\n      },\n      computeEventTimeFormat: function computeEventTimeFormat() {\n        return this.view.opt(\"extraSmallTimeFormat\");\n      },\n      computeDisplayEventEnd: function computeDisplayEventEnd() {\n        return 1 == this.colCnt;\n      },\n      rangeUpdated: function rangeUpdated() {\n        this.updateDayTable();\n      },\n      spanToSegs: function spanToSegs(t) {\n        var e,\n          n,\n          i = this.sliceRangeByRow(t);\n        for (e = 0; e < i.length; e++) n = i[e], this.isRTL ? (n.leftCol = this.daysPerRow - 1 - n.lastRowDayIndex, n.rightCol = this.daysPerRow - 1 - n.firstRowDayIndex) : (n.leftCol = n.firstRowDayIndex, n.rightCol = n.lastRowDayIndex);\n        return i;\n      },\n      prepareHits: function prepareHits() {\n        this.colCoordCache.build(), this.rowCoordCache.build(), this.rowCoordCache.bottoms[this.rowCnt - 1] += this.bottomCoordPadding;\n      },\n      releaseHits: function releaseHits() {\n        this.colCoordCache.clear(), this.rowCoordCache.clear();\n      },\n      queryHit: function queryHit(t, e) {\n        if (this.colCoordCache.isLeftInBounds(t) && this.rowCoordCache.isTopInBounds(e)) {\n          var n = this.colCoordCache.getHorizontalIndex(t),\n            i = this.rowCoordCache.getVerticalIndex(e);\n          if (null != i && null != n) return this.getCellHit(i, n);\n        }\n      },\n      getHitSpan: function getHitSpan(t) {\n        return this.getCellRange(t.row, t.col);\n      },\n      getHitEl: function getHitEl(t) {\n        return this.getCellEl(t.row, t.col);\n      },\n      getCellHit: function getCellHit(t, e) {\n        return {\n          row: t,\n          col: e,\n          component: this,\n          left: this.colCoordCache.getLeftOffset(e),\n          right: this.colCoordCache.getRightOffset(e),\n          top: this.rowCoordCache.getTopOffset(t),\n          bottom: this.rowCoordCache.getBottomOffset(t)\n        };\n      },\n      getCellEl: function getCellEl(t, e) {\n        return this.cellEls.eq(t * this.colCnt + e);\n      },\n      renderDrag: function renderDrag(t, e) {\n        if (this.renderHighlight(this.eventToSpan(t)), e && e.component !== this) return this.renderEventLocationHelper(t, e);\n      },\n      unrenderDrag: function unrenderDrag() {\n        this.unrenderHighlight(), this.unrenderHelper();\n      },\n      renderEventResize: function renderEventResize(t, e) {\n        return this.renderHighlight(this.eventToSpan(t)), this.renderEventLocationHelper(t, e);\n      },\n      unrenderEventResize: function unrenderEventResize() {\n        this.unrenderHighlight(), this.unrenderHelper();\n      },\n      renderHelper: function renderHelper(e, n) {\n        var i,\n          r = [],\n          s = this.eventToSegs(e);\n        return s = this.renderFgSegEls(s), i = this.renderSegRows(s), this.rowEls.each(function (e, s) {\n          var o,\n            l = t(s),\n            a = t('<div class=\"fc-helper-skeleton\"><table/></div>');\n          o = n && n.row === e ? n.el.position().top : l.find(\".fc-content-skeleton tbody\").position().top, a.css(\"top\", o).find(\"table\").append(i[e].tbodyEl), l.append(a), r.push(a[0]);\n        }), this.helperEls = t(r);\n      },\n      unrenderHelper: function unrenderHelper() {\n        this.helperEls && (this.helperEls.remove(), this.helperEls = null);\n      },\n      fillSegTag: \"td\",\n      renderFill: function renderFill(e, n, i) {\n        var r,\n          s,\n          o,\n          l = [];\n        for (n = this.renderFillSegEls(e, n), r = 0; r < n.length; r++) s = n[r], o = this.renderFillRow(e, s, i), this.rowEls.eq(s.row).append(o), l.push(o[0]);\n        return this.elsByFill[e] = t(l), n;\n      },\n      renderFillRow: function renderFillRow(e, n, i) {\n        var r,\n          s,\n          o = this.colCnt,\n          l = n.leftCol,\n          a = n.rightCol + 1;\n        return i = i || e.toLowerCase(), r = t('<div class=\"fc-' + i + '-skeleton\"><table><tr/></table></div>'), s = r.find(\"tr\"), l > 0 && s.append('<td colspan=\"' + l + '\"/>'), s.append(n.el.attr(\"colspan\", a - l)), a < o && s.append('<td colspan=\"' + (o - a) + '\"/>'), this.bookendCells(s), r;\n      }\n    });\n  me.mixin({\n    rowStructs: null,\n    unrenderEvents: function unrenderEvents() {\n      this.removeSegPopover(), pe.prototype.unrenderEvents.apply(this, arguments);\n    },\n    getEventSegs: function getEventSegs() {\n      return pe.prototype.getEventSegs.call(this).concat(this.popoverSegs || []);\n    },\n    renderBgSegs: function renderBgSegs(e) {\n      var n = t.grep(e, function (t) {\n        return t.event.allDay;\n      });\n      return pe.prototype.renderBgSegs.call(this, n);\n    },\n    renderFgSegs: function renderFgSegs(e) {\n      var n;\n      return e = this.renderFgSegEls(e), n = this.rowStructs = this.renderSegRows(e), this.rowEls.each(function (e, i) {\n        t(i).find(\".fc-content-skeleton > table\").append(n[e].tbodyEl);\n      }), e;\n    },\n    unrenderFgSegs: function unrenderFgSegs() {\n      for (var t, e = this.rowStructs || []; t = e.pop();) t.tbodyEl.remove();\n      this.rowStructs = null;\n    },\n    renderSegRows: function renderSegRows(t) {\n      var e,\n        n,\n        i = [];\n      for (e = this.groupSegRows(t), n = 0; n < e.length; n++) i.push(this.renderSegRow(n, e[n]));\n      return i;\n    },\n    fgSegHtml: function fgSegHtml(t, e) {\n      var n,\n        i,\n        r = this.view,\n        s = t.event,\n        o = r.isEventDraggable(s),\n        l = !e && s.allDay && t.isStart && r.isEventResizableFromStart(s),\n        a = !e && s.allDay && t.isEnd && r.isEventResizableFromEnd(s),\n        u = this.getSegClasses(t, o, l || a),\n        d = nt(this.getSegSkinCss(t)),\n        c = \"\";\n      return u.unshift(\"fc-day-grid-event\", \"fc-h-event\"), t.isStart && (n = this.getEventTimeText(s), n && (c = '<span class=\"fc-time\">' + tt(n) + \"</span>\")), i = '<span class=\"fc-title\">' + (tt(s.title || \"\") || \"&nbsp;\") + \"</span>\", '<a class=\"' + u.join(\" \") + '\"' + (s.url ? ' href=\"' + tt(s.url) + '\"' : \"\") + (d ? ' style=\"' + d + '\"' : \"\") + '><div class=\"fc-content\">' + (this.isRTL ? i + \" \" + c : c + \" \" + i) + \"</div>\" + (l ? '<div class=\"fc-resizer fc-start-resizer\" />' : \"\") + (a ? '<div class=\"fc-resizer fc-end-resizer\" />' : \"\") + \"</a>\";\n    },\n    renderSegRow: function renderSegRow(e, n) {\n      function i(e) {\n        for (; o < e;) d = (m[r - 1] || [])[o], d ? d.attr(\"rowspan\", parseInt(d.attr(\"rowspan\") || 1, 10) + 1) : (d = t(\"<td/>\"), l.append(d)), v[r][o] = d, m[r][o] = d, o++;\n      }\n      var r,\n        s,\n        o,\n        l,\n        a,\n        u,\n        d,\n        c = this.colCnt,\n        h = this.buildSegLevels(n),\n        f = Math.max(1, h.length),\n        g = t(\"<tbody/>\"),\n        p = [],\n        v = [],\n        m = [];\n      for (r = 0; r < f; r++) {\n        if (s = h[r], o = 0, l = t(\"<tr/>\"), p.push([]), v.push([]), m.push([]), s) for (a = 0; a < s.length; a++) {\n          for (u = s[a], i(u.leftCol), d = t('<td class=\"fc-event-container\"/>').append(u.el), u.leftCol != u.rightCol ? d.attr(\"colspan\", u.rightCol - u.leftCol + 1) : m[r][o] = d; o <= u.rightCol;) v[r][o] = d, p[r][o] = u, o++;\n          l.append(d);\n        }\n        i(c), this.bookendCells(l), g.append(l);\n      }\n      return {\n        row: e,\n        tbodyEl: g,\n        cellMatrix: v,\n        segMatrix: p,\n        segLevels: h,\n        segs: n\n      };\n    },\n    buildSegLevels: function buildSegLevels(t) {\n      var e,\n        n,\n        i,\n        r = [];\n      for (this.sortEventSegs(t), e = 0; e < t.length; e++) {\n        for (n = t[e], i = 0; i < r.length && Lt(n, r[i]); i++);\n        n.level = i, (r[i] || (r[i] = [])).push(n);\n      }\n      for (i = 0; i < r.length; i++) r[i].sort(Bt);\n      return r;\n    },\n    groupSegRows: function groupSegRows(t) {\n      var e,\n        n = [];\n      for (e = 0; e < this.rowCnt; e++) n.push([]);\n      for (e = 0; e < t.length; e++) n[t[e].row].push(t[e]);\n      return n;\n    }\n  }), me.mixin({\n    segPopover: null,\n    popoverSegs: null,\n    removeSegPopover: function removeSegPopover() {\n      this.segPopover && this.segPopover.hide();\n    },\n    limitRows: function limitRows(t) {\n      var e,\n        n,\n        i = this.rowStructs || [];\n      for (e = 0; e < i.length; e++) this.unlimitRow(e), n = !!t && (\"number\" == typeof t ? t : this.computeRowLevelLimit(e)), n !== !1 && this.limitRow(e, n);\n    },\n    computeRowLevelLimit: function computeRowLevelLimit(e) {\n      function n(e, n) {\n        s = Math.max(s, t(n).outerHeight());\n      }\n      var i,\n        r,\n        s,\n        o = this.rowEls.eq(e),\n        l = o.height(),\n        a = this.rowStructs[e].tbodyEl.children();\n      for (i = 0; i < a.length; i++) if (r = a.eq(i).removeClass(\"fc-limited\"), s = 0, r.find(\"> td > :first-child\").each(n), r.position().top + s > l) return i;\n      return !1;\n    },\n    limitRow: function limitRow(e, n) {\n      function i(i) {\n        for (; D < i;) u = S.getCellSegs(e, D, n), u.length && (h = s[n - 1][D], y = S.renderMoreLink(e, D, u), m = t(\"<div/>\").append(y), h.append(m), E.push(m[0])), D++;\n      }\n      var r,\n        s,\n        o,\n        l,\n        a,\n        u,\n        d,\n        c,\n        h,\n        f,\n        g,\n        p,\n        v,\n        m,\n        y,\n        S = this,\n        w = this.rowStructs[e],\n        E = [],\n        D = 0;\n      if (n && n < w.segLevels.length) {\n        for (r = w.segLevels[n - 1], s = w.cellMatrix, o = w.tbodyEl.children().slice(n).addClass(\"fc-limited\").get(), l = 0; l < r.length; l++) {\n          for (a = r[l], i(a.leftCol), c = [], d = 0; D <= a.rightCol;) u = this.getCellSegs(e, D, n), c.push(u), d += u.length, D++;\n          if (d) {\n            for (h = s[n - 1][a.leftCol], f = h.attr(\"rowspan\") || 1, g = [], p = 0; p < c.length; p++) v = t('<td class=\"fc-more-cell\"/>').attr(\"rowspan\", f), u = c[p], y = this.renderMoreLink(e, a.leftCol + p, [a].concat(u)), m = t(\"<div/>\").append(y), v.append(m), g.push(v[0]), E.push(v[0]);\n            h.addClass(\"fc-limited\").after(t(g)), o.push(h[0]);\n          }\n        }\n        i(this.colCnt), w.moreEls = t(E), w.limitedEls = t(o);\n      }\n    },\n    unlimitRow: function unlimitRow(t) {\n      var e = this.rowStructs[t];\n      e.moreEls && (e.moreEls.remove(), e.moreEls = null), e.limitedEls && (e.limitedEls.removeClass(\"fc-limited\"), e.limitedEls = null);\n    },\n    renderMoreLink: function renderMoreLink(e, n, i) {\n      var r = this,\n        s = this.view;\n      return t('<a class=\"fc-more\"/>').text(this.getMoreLinkText(i.length)).on(\"click\", function (o) {\n        var l = s.opt(\"eventLimitClick\"),\n          a = r.getCellDate(e, n),\n          u = t(this),\n          d = r.getCellEl(e, n),\n          c = r.getCellSegs(e, n),\n          h = r.resliceDaySegs(c, a),\n          f = r.resliceDaySegs(i, a);\n        \"function\" == typeof l && (l = s.trigger(\"eventLimitClick\", null, {\n          date: a,\n          dayEl: d,\n          moreEl: u,\n          segs: h,\n          hiddenSegs: f\n        }, o)), \"popover\" === l ? r.showSegPopover(e, n, u, h) : \"string\" == typeof l && s.calendar.zoomTo(a, l);\n      });\n    },\n    showSegPopover: function showSegPopover(t, e, n, i) {\n      var r,\n        s,\n        o = this,\n        l = this.view,\n        a = n.parent();\n      r = 1 == this.rowCnt ? l.el : this.rowEls.eq(t), s = {\n        className: \"fc-more-popover\",\n        content: this.renderSegPopoverContent(t, e, i),\n        parentEl: this.view.el,\n        top: r.offset().top,\n        autoHide: !0,\n        viewportConstrain: l.opt(\"popoverViewportConstrain\"),\n        hide: function hide() {\n          o.segPopover.removeElement(), o.segPopover = null, o.popoverSegs = null;\n        }\n      }, this.isRTL ? s.right = a.offset().left + a.outerWidth() + 1 : s.left = a.offset().left - 1, this.segPopover = new de(s), this.segPopover.show(), this.bindSegHandlersToEl(this.segPopover.el);\n    },\n    renderSegPopoverContent: function renderSegPopoverContent(e, n, i) {\n      var r,\n        s = this.view,\n        o = s.opt(\"theme\"),\n        l = this.getCellDate(e, n).format(s.opt(\"dayPopoverFormat\")),\n        a = t('<div class=\"fc-header ' + s.widgetHeaderClass + '\"><span class=\"fc-close ' + (o ? \"ui-icon ui-icon-closethick\" : \"fc-icon fc-icon-x\") + '\"></span><span class=\"fc-title\">' + tt(l) + '</span><div class=\"fc-clear\"/></div><div class=\"fc-body ' + s.widgetContentClass + '\"><div class=\"fc-event-container\"></div></div>'),\n        u = a.find(\".fc-event-container\");\n      for (i = this.renderFgSegEls(i, !0), this.popoverSegs = i, r = 0; r < i.length; r++) this.prepareHits(), i[r].hit = this.getCellHit(e, n), this.releaseHits(), u.append(i[r].el);\n      return a;\n    },\n    resliceDaySegs: function resliceDaySegs(e, n) {\n      var i = t.map(e, function (t) {\n          return t.event;\n        }),\n        r = n.clone(),\n        s = r.clone().add(1, \"days\"),\n        o = {\n          start: r,\n          end: s\n        };\n      return e = this.eventsToSegs(i, function (t) {\n        var e = F(t, o);\n        return e ? [e] : [];\n      }), this.sortEventSegs(e), e;\n    },\n    getMoreLinkText: function getMoreLinkText(t) {\n      var e = this.view.opt(\"eventLimitText\");\n      return \"function\" == typeof e ? e(t) : \"+\" + t + \" \" + e;\n    },\n    getCellSegs: function getCellSegs(t, e, n) {\n      for (var i, r = this.rowStructs[t].segMatrix, s = n || 0, o = []; s < r.length;) i = r[s][e], i && o.push(i), s++;\n      return o;\n    }\n  });\n  var ye = jt.TimeGrid = pe.extend(ve, {\n    slotDuration: null,\n    snapDuration: null,\n    snapsPerSlot: null,\n    minTime: null,\n    maxTime: null,\n    labelFormat: null,\n    labelInterval: null,\n    colEls: null,\n    slatContainerEl: null,\n    slatEls: null,\n    nowIndicatorEls: null,\n    colCoordCache: null,\n    slatCoordCache: null,\n    constructor: function constructor() {\n      pe.apply(this, arguments), this.processOptions();\n    },\n    renderDates: function renderDates() {\n      this.el.html(this.renderHtml()), this.colEls = this.el.find(\".fc-day\"), this.slatContainerEl = this.el.find(\".fc-slats\"), this.slatEls = this.slatContainerEl.find(\"tr\"), this.colCoordCache = new ce({\n        els: this.colEls,\n        isHorizontal: !0\n      }), this.slatCoordCache = new ce({\n        els: this.slatEls,\n        isVertical: !0\n      }), this.renderContentSkeleton();\n    },\n    renderHtml: function renderHtml() {\n      return '<div class=\"fc-bg\"><table>' + this.renderBgTrHtml(0) + '</table></div><div class=\"fc-slats\"><table>' + this.renderSlatRowHtml() + \"</table></div>\";\n    },\n    renderSlatRowHtml: function renderSlatRowHtml() {\n      for (var t, n, i, r = this.view, s = this.isRTL, o = \"\", l = e.duration(+this.minTime); l < this.maxTime;) t = this.start.clone().time(l), n = ot(_(l, this.labelInterval)), i = '<td class=\"fc-axis fc-time ' + r.widgetContentClass + '\" ' + r.axisStyleAttr() + \">\" + (n ? \"<span>\" + tt(t.format(this.labelFormat)) + \"</span>\" : \"\") + \"</td>\", o += '<tr data-time=\"' + t.format(\"HH:mm:ss\") + '\"' + (n ? \"\" : ' class=\"fc-minor\"') + \">\" + (s ? \"\" : i) + '<td class=\"' + r.widgetContentClass + '\"/>' + (s ? i : \"\") + \"</tr>\", l.add(this.slotDuration);\n      return o;\n    },\n    processOptions: function processOptions() {\n      var n,\n        i = this.view,\n        r = i.opt(\"slotDuration\"),\n        s = i.opt(\"snapDuration\");\n      r = e.duration(r), s = s ? e.duration(s) : r, this.slotDuration = r, this.snapDuration = s, this.snapsPerSlot = r / s, this.minResizeDuration = s, this.minTime = e.duration(i.opt(\"minTime\")), this.maxTime = e.duration(i.opt(\"maxTime\")), n = i.opt(\"slotLabelFormat\"), t.isArray(n) && (n = n[n.length - 1]), this.labelFormat = n || i.opt(\"smallTimeFormat\"), n = i.opt(\"slotLabelInterval\"), this.labelInterval = n ? e.duration(n) : this.computeLabelInterval(r);\n    },\n    computeLabelInterval: function computeLabelInterval(t) {\n      var n, i, r;\n      for (n = Ne.length - 1; n >= 0; n--) if (i = e.duration(Ne[n]), r = _(i, t), ot(r) && r > 1) return i;\n      return e.duration(t);\n    },\n    computeEventTimeFormat: function computeEventTimeFormat() {\n      return this.view.opt(\"noMeridiemTimeFormat\");\n    },\n    computeDisplayEventEnd: function computeDisplayEventEnd() {\n      return !0;\n    },\n    prepareHits: function prepareHits() {\n      this.colCoordCache.build(), this.slatCoordCache.build();\n    },\n    releaseHits: function releaseHits() {\n      this.colCoordCache.clear();\n    },\n    queryHit: function queryHit(t, e) {\n      var n = this.snapsPerSlot,\n        i = this.colCoordCache,\n        r = this.slatCoordCache;\n      if (i.isLeftInBounds(t) && r.isTopInBounds(e)) {\n        var s = i.getHorizontalIndex(t),\n          o = r.getVerticalIndex(e);\n        if (null != s && null != o) {\n          var l = r.getTopOffset(o),\n            a = r.getHeight(o),\n            u = (e - l) / a,\n            d = Math.floor(u * n),\n            c = o * n + d,\n            h = l + d / n * a,\n            f = l + (d + 1) / n * a;\n          return {\n            col: s,\n            snap: c,\n            component: this,\n            left: i.getLeftOffset(s),\n            right: i.getRightOffset(s),\n            top: h,\n            bottom: f\n          };\n        }\n      }\n    },\n    getHitSpan: function getHitSpan(t) {\n      var e,\n        n = this.getCellDate(0, t.col),\n        i = this.computeSnapTime(t.snap);\n      return n.time(i), e = n.clone().add(this.snapDuration), {\n        start: n,\n        end: e\n      };\n    },\n    getHitEl: function getHitEl(t) {\n      return this.colEls.eq(t.col);\n    },\n    rangeUpdated: function rangeUpdated() {\n      this.updateDayTable();\n    },\n    computeSnapTime: function computeSnapTime(t) {\n      return e.duration(this.minTime + this.snapDuration * t);\n    },\n    spanToSegs: function spanToSegs(t) {\n      var e,\n        n = this.sliceRangeByTimes(t);\n      for (e = 0; e < n.length; e++) this.isRTL ? n[e].col = this.daysPerRow - 1 - n[e].dayIndex : n[e].col = n[e].dayIndex;\n      return n;\n    },\n    sliceRangeByTimes: function sliceRangeByTimes(t) {\n      var e,\n        n,\n        i,\n        r,\n        s = [];\n      for (n = 0; n < this.daysPerRow; n++) i = this.dayDates[n].clone(), r = {\n        start: i.clone().time(this.minTime),\n        end: i.clone().time(this.maxTime)\n      }, e = F(t, r), e && (e.dayIndex = n, s.push(e));\n      return s;\n    },\n    updateSize: function updateSize(t) {\n      this.slatCoordCache.build(), t && this.updateSegVerticals([].concat(this.fgSegs || [], this.bgSegs || [], this.businessSegs || []));\n    },\n    getTotalSlatHeight: function getTotalSlatHeight() {\n      return this.slatContainerEl.outerHeight();\n    },\n    computeDateTop: function computeDateTop(t, n) {\n      return this.computeTimeTop(e.duration(t - n.clone().stripTime()));\n    },\n    computeTimeTop: function computeTimeTop(t) {\n      var e,\n        n,\n        i = this.slatEls.length,\n        r = (t - this.minTime) / this.slotDuration;\n      return r = Math.max(0, r), r = Math.min(i, r), e = Math.floor(r), e = Math.min(e, i - 1), n = r - e, this.slatCoordCache.getTopPosition(e) + this.slatCoordCache.getHeight(e) * n;\n    },\n    renderDrag: function renderDrag(t, e) {\n      return e ? this.renderEventLocationHelper(t, e) : void this.renderHighlight(this.eventToSpan(t));\n    },\n    unrenderDrag: function unrenderDrag() {\n      this.unrenderHelper(), this.unrenderHighlight();\n    },\n    renderEventResize: function renderEventResize(t, e) {\n      return this.renderEventLocationHelper(t, e);\n    },\n    unrenderEventResize: function unrenderEventResize() {\n      this.unrenderHelper();\n    },\n    renderHelper: function renderHelper(t, e) {\n      return this.renderHelperSegs(this.eventToSegs(t), e);\n    },\n    unrenderHelper: function unrenderHelper() {\n      this.unrenderHelperSegs();\n    },\n    renderBusinessHours: function renderBusinessHours() {\n      this.renderBusinessSegs(this.buildBusinessHourSegs());\n    },\n    unrenderBusinessHours: function unrenderBusinessHours() {\n      this.unrenderBusinessSegs();\n    },\n    getNowIndicatorUnit: function getNowIndicatorUnit() {\n      return \"minute\";\n    },\n    renderNowIndicator: function renderNowIndicator(e) {\n      var n,\n        i = this.spanToSegs({\n          start: e,\n          end: e\n        }),\n        r = this.computeDateTop(e, e),\n        s = [];\n      for (n = 0; n < i.length; n++) s.push(t('<div class=\"fc-now-indicator fc-now-indicator-line\"></div>').css(\"top\", r).appendTo(this.colContainerEls.eq(i[n].col))[0]);\n      i.length > 0 && s.push(t('<div class=\"fc-now-indicator fc-now-indicator-arrow\"></div>').css(\"top\", r).appendTo(this.el.find(\".fc-content-skeleton\"))[0]), this.nowIndicatorEls = t(s);\n    },\n    unrenderNowIndicator: function unrenderNowIndicator() {\n      this.nowIndicatorEls && (this.nowIndicatorEls.remove(), this.nowIndicatorEls = null);\n    },\n    renderSelection: function renderSelection(t) {\n      this.view.opt(\"selectHelper\") ? this.renderEventLocationHelper(t) : this.renderHighlight(t);\n    },\n    unrenderSelection: function unrenderSelection() {\n      this.unrenderHelper(), this.unrenderHighlight();\n    },\n    renderHighlight: function renderHighlight(t) {\n      this.renderHighlightSegs(this.spanToSegs(t));\n    },\n    unrenderHighlight: function unrenderHighlight() {\n      this.unrenderHighlightSegs();\n    }\n  });\n  ye.mixin({\n    colContainerEls: null,\n    fgContainerEls: null,\n    bgContainerEls: null,\n    helperContainerEls: null,\n    highlightContainerEls: null,\n    businessContainerEls: null,\n    fgSegs: null,\n    bgSegs: null,\n    helperSegs: null,\n    highlightSegs: null,\n    businessSegs: null,\n    renderContentSkeleton: function renderContentSkeleton() {\n      var e,\n        n,\n        i = \"\";\n      for (e = 0; e < this.colCnt; e++) i += '<td><div class=\"fc-content-col\"><div class=\"fc-event-container fc-helper-container\"></div><div class=\"fc-event-container\"></div><div class=\"fc-highlight-container\"></div><div class=\"fc-bgevent-container\"></div><div class=\"fc-business-container\"></div></div></td>';\n      n = t('<div class=\"fc-content-skeleton\"><table><tr>' + i + \"</tr></table></div>\"), this.colContainerEls = n.find(\".fc-content-col\"), this.helperContainerEls = n.find(\".fc-helper-container\"), this.fgContainerEls = n.find(\".fc-event-container:not(.fc-helper-container)\"), this.bgContainerEls = n.find(\".fc-bgevent-container\"), this.highlightContainerEls = n.find(\".fc-highlight-container\"), this.businessContainerEls = n.find(\".fc-business-container\"), this.bookendCells(n.find(\"tr\")), this.el.append(n);\n    },\n    renderFgSegs: function renderFgSegs(t) {\n      return t = this.renderFgSegsIntoContainers(t, this.fgContainerEls), this.fgSegs = t, t;\n    },\n    unrenderFgSegs: function unrenderFgSegs() {\n      this.unrenderNamedSegs(\"fgSegs\");\n    },\n    renderHelperSegs: function renderHelperSegs(e, n) {\n      var i,\n        r,\n        s,\n        o = [];\n      for (e = this.renderFgSegsIntoContainers(e, this.helperContainerEls), i = 0; i < e.length; i++) r = e[i], n && n.col === r.col && (s = n.el, r.el.css({\n        left: s.css(\"left\"),\n        right: s.css(\"right\"),\n        \"margin-left\": s.css(\"margin-left\"),\n        \"margin-right\": s.css(\"margin-right\")\n      })), o.push(r.el[0]);\n      return this.helperSegs = e, t(o);\n    },\n    unrenderHelperSegs: function unrenderHelperSegs() {\n      this.unrenderNamedSegs(\"helperSegs\");\n    },\n    renderBgSegs: function renderBgSegs(t) {\n      return t = this.renderFillSegEls(\"bgEvent\", t), this.updateSegVerticals(t), this.attachSegsByCol(this.groupSegsByCol(t), this.bgContainerEls), this.bgSegs = t, t;\n    },\n    unrenderBgSegs: function unrenderBgSegs() {\n      this.unrenderNamedSegs(\"bgSegs\");\n    },\n    renderHighlightSegs: function renderHighlightSegs(t) {\n      t = this.renderFillSegEls(\"highlight\", t), this.updateSegVerticals(t), this.attachSegsByCol(this.groupSegsByCol(t), this.highlightContainerEls), this.highlightSegs = t;\n    },\n    unrenderHighlightSegs: function unrenderHighlightSegs() {\n      this.unrenderNamedSegs(\"highlightSegs\");\n    },\n    renderBusinessSegs: function renderBusinessSegs(t) {\n      t = this.renderFillSegEls(\"businessHours\", t), this.updateSegVerticals(t), this.attachSegsByCol(this.groupSegsByCol(t), this.businessContainerEls), this.businessSegs = t;\n    },\n    unrenderBusinessSegs: function unrenderBusinessSegs() {\n      this.unrenderNamedSegs(\"businessSegs\");\n    },\n    groupSegsByCol: function groupSegsByCol(t) {\n      var e,\n        n = [];\n      for (e = 0; e < this.colCnt; e++) n.push([]);\n      for (e = 0; e < t.length; e++) n[t[e].col].push(t[e]);\n      return n;\n    },\n    attachSegsByCol: function attachSegsByCol(t, e) {\n      var n, i, r;\n      for (n = 0; n < this.colCnt; n++) for (i = t[n], r = 0; r < i.length; r++) e.eq(n).append(i[r].el);\n    },\n    unrenderNamedSegs: function unrenderNamedSegs(t) {\n      var e,\n        n = this[t];\n      if (n) {\n        for (e = 0; e < n.length; e++) n[e].el.remove();\n        this[t] = null;\n      }\n    },\n    renderFgSegsIntoContainers: function renderFgSegsIntoContainers(t, e) {\n      var n, i;\n      for (t = this.renderFgSegEls(t), n = this.groupSegsByCol(t), i = 0; i < this.colCnt; i++) this.updateFgSegCoords(n[i]);\n      return this.attachSegsByCol(n, e), t;\n    },\n    fgSegHtml: function fgSegHtml(t, e) {\n      var n,\n        i,\n        r,\n        s = this.view,\n        o = t.event,\n        l = s.isEventDraggable(o),\n        a = !e && t.isStart && s.isEventResizableFromStart(o),\n        u = !e && t.isEnd && s.isEventResizableFromEnd(o),\n        d = this.getSegClasses(t, l, a || u),\n        c = nt(this.getSegSkinCss(t));\n      return d.unshift(\"fc-time-grid-event\", \"fc-v-event\"), s.isMultiDayEvent(o) ? (t.isStart || t.isEnd) && (n = this.getEventTimeText(t), i = this.getEventTimeText(t, \"LT\"), r = this.getEventTimeText(t, null, !1)) : (n = this.getEventTimeText(o), i = this.getEventTimeText(o, \"LT\"), r = this.getEventTimeText(o, null, !1)), '<a class=\"' + d.join(\" \") + '\"' + (o.url ? ' href=\"' + tt(o.url) + '\"' : \"\") + (c ? ' style=\"' + c + '\"' : \"\") + '><div class=\"fc-content\">' + (n ? '<div class=\"fc-time\" data-start=\"' + tt(r) + '\" data-full=\"' + tt(i) + '\"><span>' + tt(n) + \"</span></div>\" : \"\") + (o.title ? '<div class=\"fc-title\">' + tt(o.title) + \"</div>\" : \"\") + '</div><div class=\"fc-bg\"/>' + (u ? '<div class=\"fc-resizer fc-end-resizer\" />' : \"\") + \"</a>\";\n    },\n    updateSegVerticals: function updateSegVerticals(t) {\n      this.computeSegVerticals(t), this.assignSegVerticals(t);\n    },\n    computeSegVerticals: function computeSegVerticals(t) {\n      var e, n;\n      for (e = 0; e < t.length; e++) n = t[e], n.top = this.computeDateTop(n.start, n.start), n.bottom = this.computeDateTop(n.end, n.start);\n    },\n    assignSegVerticals: function assignSegVerticals(t) {\n      var e, n;\n      for (e = 0; e < t.length; e++) n = t[e], n.el.css(this.generateSegVerticalCss(n));\n    },\n    generateSegVerticalCss: function generateSegVerticalCss(t) {\n      return {\n        top: t.top,\n        bottom: -t.bottom\n      };\n    },\n    updateFgSegCoords: function updateFgSegCoords(t) {\n      this.computeSegVerticals(t), this.computeFgSegHorizontals(t), this.assignSegVerticals(t), this.assignFgSegHorizontals(t);\n    },\n    computeFgSegHorizontals: function computeFgSegHorizontals(t) {\n      var e, n, i;\n      if (this.sortEventSegs(t), e = zt(t), Ft(e), n = e[0]) {\n        for (i = 0; i < n.length; i++) Nt(n[i]);\n        for (i = 0; i < n.length; i++) this.computeFgSegForwardBack(n[i], 0, 0);\n      }\n    },\n    computeFgSegForwardBack: function computeFgSegForwardBack(t, e, n) {\n      var i,\n        r = t.forwardSegs;\n      if (void 0 === t.forwardCoord) for (r.length ? (this.sortForwardSegs(r), this.computeFgSegForwardBack(r[0], e + 1, n), t.forwardCoord = r[0].backwardCoord) : t.forwardCoord = 1, t.backwardCoord = t.forwardCoord - (t.forwardCoord - n) / (e + 1), i = 0; i < r.length; i++) this.computeFgSegForwardBack(r[i], 0, t.forwardCoord);\n    },\n    sortForwardSegs: function sortForwardSegs(t) {\n      t.sort(lt(this, \"compareForwardSegs\"));\n    },\n    compareForwardSegs: function compareForwardSegs(t, e) {\n      return e.forwardPressure - t.forwardPressure || (t.backwardCoord || 0) - (e.backwardCoord || 0) || this.compareEventSegs(t, e);\n    },\n    assignFgSegHorizontals: function assignFgSegHorizontals(t) {\n      var e, n;\n      for (e = 0; e < t.length; e++) n = t[e], n.el.css(this.generateFgSegHorizontalCss(n)), n.bottom - n.top < 30 && n.el.addClass(\"fc-short\");\n    },\n    generateFgSegHorizontalCss: function generateFgSegHorizontalCss(t) {\n      var e,\n        n,\n        i = this.view.opt(\"slotEventOverlap\"),\n        r = t.backwardCoord,\n        s = t.forwardCoord,\n        o = this.generateSegVerticalCss(t);\n      return i && (s = Math.min(1, r + 2 * (s - r))), this.isRTL ? (e = 1 - s, n = r) : (e = r, n = 1 - s), o.zIndex = t.level + 1, o.left = 100 * e + \"%\", o.right = 100 * n + \"%\", i && t.forwardPressure && (o[this.isRTL ? \"marginLeft\" : \"marginRight\"] = 20), o;\n    }\n  });\n  var Se = jt.View = wt.extend(le, ae, {\n      type: null,\n      name: null,\n      title: null,\n      calendar: null,\n      options: null,\n      el: null,\n      displaying: null,\n      isSkeletonRendered: !1,\n      isEventsRendered: !1,\n      start: null,\n      end: null,\n      intervalStart: null,\n      intervalEnd: null,\n      intervalDuration: null,\n      intervalUnit: null,\n      isRTL: !1,\n      isSelected: !1,\n      selectedEvent: null,\n      eventOrderSpecs: null,\n      widgetHeaderClass: null,\n      widgetContentClass: null,\n      highlightStateClass: null,\n      nextDayThreshold: null,\n      isHiddenDayHash: null,\n      isNowIndicatorRendered: null,\n      initialNowDate: null,\n      initialNowQueriedMs: null,\n      nowIndicatorTimeoutID: null,\n      nowIndicatorIntervalID: null,\n      constructor: function constructor(t, n, i, r) {\n        this.calendar = t, this.type = this.name = n, this.options = i, this.intervalDuration = r || e.duration(1, \"day\"), this.nextDayThreshold = e.duration(this.opt(\"nextDayThreshold\")), this.initThemingProps(), this.initHiddenDays(), this.isRTL = this.opt(\"isRTL\"), this.eventOrderSpecs = M(this.opt(\"eventOrder\")), this.initialize();\n      },\n      initialize: function initialize() {},\n      opt: function opt(t) {\n        return this.options[t];\n      },\n      trigger: function trigger(t, e) {\n        var n = this.calendar;\n        return n.trigger.apply(n, [t, e || this].concat(Array.prototype.slice.call(arguments, 2), [this]));\n      },\n      setDate: function setDate(t) {\n        this.setRange(this.computeRange(t));\n      },\n      setRange: function setRange(e) {\n        t.extend(this, e), this.updateTitle();\n      },\n      computeRange: function computeRange(t) {\n        var e,\n          n,\n          i = O(this.intervalDuration),\n          r = t.clone().startOf(i),\n          s = r.clone().add(this.intervalDuration);\n        return /year|month|week|day/.test(i) ? (r.stripTime(), s.stripTime()) : (r.hasTime() || (r = this.calendar.time(0)), s.hasTime() || (s = this.calendar.time(0))), e = r.clone(), e = this.skipHiddenDays(e), n = s.clone(), n = this.skipHiddenDays(n, -1, !0), {\n          intervalUnit: i,\n          intervalStart: r,\n          intervalEnd: s,\n          start: e,\n          end: n\n        };\n      },\n      computePrevDate: function computePrevDate(t) {\n        return this.massageCurrentDate(t.clone().startOf(this.intervalUnit).subtract(this.intervalDuration), -1);\n      },\n      computeNextDate: function computeNextDate(t) {\n        return this.massageCurrentDate(t.clone().startOf(this.intervalUnit).add(this.intervalDuration));\n      },\n      massageCurrentDate: function massageCurrentDate(t, e) {\n        return this.intervalDuration.as(\"days\") <= 1 && this.isHiddenDay(t) && (t = this.skipHiddenDays(t, e), t.startOf(\"day\")), t;\n      },\n      updateTitle: function updateTitle() {\n        this.title = this.computeTitle();\n      },\n      computeTitle: function computeTitle() {\n        return this.formatRange({\n          start: this.calendar.applyTimezone(this.intervalStart),\n          end: this.calendar.applyTimezone(this.intervalEnd)\n        }, this.opt(\"titleFormat\") || this.computeTitleFormat(), this.opt(\"titleRangeSeparator\"));\n      },\n      computeTitleFormat: function computeTitleFormat() {\n        return \"year\" == this.intervalUnit ? \"YYYY\" : \"month\" == this.intervalUnit ? this.opt(\"monthYearFormat\") : this.intervalDuration.as(\"days\") > 1 ? \"ll\" : \"LL\";\n      },\n      formatRange: function formatRange(t, e, n) {\n        var i = t.end;\n        return i.hasTime() || (i = i.clone().subtract(1)), pt(t.start, i, e, n, this.opt(\"isRTL\"));\n      },\n      getAllDayHtml: function getAllDayHtml() {\n        return this.opt(\"allDayHtml\") || tt(this.opt(\"allDayText\"));\n      },\n      buildGotoAnchorHtml: function buildGotoAnchorHtml(e, n, i) {\n        var r, s, o, l;\n        return t.isPlainObject(e) ? (r = e.date, s = e.type, o = e.forceOff) : r = e, r = jt.moment(r), l = {\n          date: r.format(\"YYYY-MM-DD\"),\n          type: s || \"day\"\n        }, \"string\" == typeof n && (i = n, n = null), n = n ? \" \" + it(n) : \"\", i = i || \"\", !o && this.opt(\"navLinks\") ? \"<a\" + n + ' data-goto=\"' + tt(JSON.stringify(l)) + '\">' + i + \"</a>\" : \"<span\" + n + \">\" + i + \"</span>\";\n      },\n      setElement: function setElement(t) {\n        this.el = t, this.bindGlobalHandlers();\n      },\n      removeElement: function removeElement() {\n        this.clear(), this.isSkeletonRendered && (this.unrenderSkeleton(), this.isSkeletonRendered = !1), this.unbindGlobalHandlers(), this.el.remove();\n      },\n      display: function display(t, e) {\n        var n = this,\n          i = null;\n        return null != e && this.displaying && (i = this.queryScroll()), this.calendar.freezeContentHeight(), ut(this.clear(), function () {\n          return n.displaying = ut(n.displayView(t), function () {\n            null != e ? n.setScroll(e) : n.forceScroll(n.computeInitialScroll(i)), n.calendar.unfreezeContentHeight(), n.triggerRender();\n          });\n        });\n      },\n      clear: function clear() {\n        var e = this,\n          n = this.displaying;\n        return n ? ut(n, function () {\n          return e.displaying = null, e.clearEvents(), e.clearView();\n        }) : t.when();\n      },\n      displayView: function displayView(t) {\n        this.isSkeletonRendered || (this.renderSkeleton(), this.isSkeletonRendered = !0), t && this.setDate(t), this.render && this.render(), this.renderDates(), this.updateSize(), this.renderBusinessHours(), this.startNowIndicator();\n      },\n      clearView: function clearView() {\n        this.unselect(), this.stopNowIndicator(), this.triggerUnrender(), this.unrenderBusinessHours(), this.unrenderDates(), this.destroy && this.destroy();\n      },\n      renderSkeleton: function renderSkeleton() {},\n      unrenderSkeleton: function unrenderSkeleton() {},\n      renderDates: function renderDates() {},\n      unrenderDates: function unrenderDates() {},\n      triggerRender: function triggerRender() {\n        this.trigger(\"viewRender\", this, this, this.el);\n      },\n      triggerUnrender: function triggerUnrender() {\n        this.trigger(\"viewDestroy\", this, this, this.el);\n      },\n      bindGlobalHandlers: function bindGlobalHandlers() {\n        this.listenTo(t(document), \"mousedown\", this.handleDocumentMousedown), this.listenTo(t(document), \"touchstart\", this.processUnselect);\n      },\n      unbindGlobalHandlers: function unbindGlobalHandlers() {\n        this.stopListeningTo(t(document));\n      },\n      initThemingProps: function initThemingProps() {\n        var t = this.opt(\"theme\") ? \"ui\" : \"fc\";\n        this.widgetHeaderClass = t + \"-widget-header\", this.widgetContentClass = t + \"-widget-content\", this.highlightStateClass = t + \"-state-highlight\";\n      },\n      renderBusinessHours: function renderBusinessHours() {},\n      unrenderBusinessHours: function unrenderBusinessHours() {},\n      startNowIndicator: function startNowIndicator() {\n        var t,\n          n,\n          i,\n          r = this;\n        this.opt(\"nowIndicator\") && (t = this.getNowIndicatorUnit(), t && (n = lt(this, \"updateNowIndicator\"), this.initialNowDate = this.calendar.getNow(), this.initialNowQueriedMs = +new Date(), this.renderNowIndicator(this.initialNowDate), this.isNowIndicatorRendered = !0, i = this.initialNowDate.clone().startOf(t).add(1, t) - this.initialNowDate, this.nowIndicatorTimeoutID = setTimeout(function () {\n          r.nowIndicatorTimeoutID = null, n(), i = +e.duration(1, t), i = Math.max(100, i), r.nowIndicatorIntervalID = setInterval(n, i);\n        }, i)));\n      },\n      updateNowIndicator: function updateNowIndicator() {\n        this.isNowIndicatorRendered && (this.unrenderNowIndicator(), this.renderNowIndicator(this.initialNowDate.clone().add(new Date() - this.initialNowQueriedMs)));\n      },\n      stopNowIndicator: function stopNowIndicator() {\n        this.isNowIndicatorRendered && (this.nowIndicatorTimeoutID && (clearTimeout(this.nowIndicatorTimeoutID), this.nowIndicatorTimeoutID = null), this.nowIndicatorIntervalID && (clearTimeout(this.nowIndicatorIntervalID), this.nowIndicatorIntervalID = null), this.unrenderNowIndicator(), this.isNowIndicatorRendered = !1);\n      },\n      getNowIndicatorUnit: function getNowIndicatorUnit() {},\n      renderNowIndicator: function renderNowIndicator(t) {},\n      unrenderNowIndicator: function unrenderNowIndicator() {},\n      updateSize: function updateSize(t) {\n        var e;\n        t && (e = this.queryScroll()), this.updateHeight(t), this.updateWidth(t), this.updateNowIndicator(), t && this.setScroll(e);\n      },\n      updateWidth: function updateWidth(t) {},\n      updateHeight: function updateHeight(t) {\n        var e = this.calendar;\n        this.setHeight(e.getSuggestedViewHeight(), e.isHeightAuto());\n      },\n      setHeight: function setHeight(t, e) {},\n      computeInitialScroll: function computeInitialScroll(t) {\n        return 0;\n      },\n      queryScroll: function queryScroll() {},\n      setScroll: function setScroll(t) {},\n      forceScroll: function forceScroll(t) {\n        var e = this;\n        this.setScroll(t), setTimeout(function () {\n          e.setScroll(t);\n        }, 0);\n      },\n      displayEvents: function displayEvents(t) {\n        var e = this.queryScroll();\n        this.clearEvents(), this.renderEvents(t), this.isEventsRendered = !0, this.setScroll(e), this.triggerEventRender();\n      },\n      clearEvents: function clearEvents() {\n        var t;\n        this.isEventsRendered && (t = this.queryScroll(), this.triggerEventUnrender(), this.destroyEvents && this.destroyEvents(), this.unrenderEvents(), this.setScroll(t), this.isEventsRendered = !1);\n      },\n      renderEvents: function renderEvents(t) {},\n      unrenderEvents: function unrenderEvents() {},\n      triggerEventRender: function triggerEventRender() {\n        this.renderedEventSegEach(function (t) {\n          this.trigger(\"eventAfterRender\", t.event, t.event, t.el);\n        }), this.trigger(\"eventAfterAllRender\");\n      },\n      triggerEventUnrender: function triggerEventUnrender() {\n        this.renderedEventSegEach(function (t) {\n          this.trigger(\"eventDestroy\", t.event, t.event, t.el);\n        });\n      },\n      resolveEventEl: function resolveEventEl(e, n) {\n        var i = this.trigger(\"eventRender\", e, e, n);\n        return i === !1 ? n = null : i && i !== !0 && (n = t(i)), n;\n      },\n      showEvent: function showEvent(t) {\n        this.renderedEventSegEach(function (t) {\n          t.el.css(\"visibility\", \"\");\n        }, t);\n      },\n      hideEvent: function hideEvent(t) {\n        this.renderedEventSegEach(function (t) {\n          t.el.css(\"visibility\", \"hidden\");\n        }, t);\n      },\n      renderedEventSegEach: function renderedEventSegEach(t, e) {\n        var n,\n          i = this.getEventSegs();\n        for (n = 0; n < i.length; n++) e && i[n].event._id !== e._id || i[n].el && t.call(this, i[n]);\n      },\n      getEventSegs: function getEventSegs() {\n        return [];\n      },\n      isEventDraggable: function isEventDraggable(t) {\n        return this.isEventStartEditable(t);\n      },\n      isEventStartEditable: function isEventStartEditable(t) {\n        return J(t.startEditable, (t.source || {}).startEditable, this.opt(\"eventStartEditable\"), this.isEventGenerallyEditable(t));\n      },\n      isEventGenerallyEditable: function isEventGenerallyEditable(t) {\n        return J(t.editable, (t.source || {}).editable, this.opt(\"editable\"));\n      },\n      reportEventDrop: function reportEventDrop(t, e, n, i, r) {\n        var s = this.calendar,\n          o = s.mutateEvent(t, e, n),\n          l = function l() {\n            o.undo(), s.reportEventChange();\n          };\n        this.triggerEventDrop(t, o.dateDelta, l, i, r), s.reportEventChange();\n      },\n      triggerEventDrop: function triggerEventDrop(t, e, n, i, r) {\n        this.trigger(\"eventDrop\", i[0], t, e, n, r, {});\n      },\n      reportExternalDrop: function reportExternalDrop(e, n, i, r, s) {\n        var o,\n          l,\n          a = e.eventProps;\n        a && (o = t.extend({}, a, n), l = this.calendar.renderEvent(o, e.stick)[0]), this.triggerExternalDrop(l, n, i, r, s);\n      },\n      triggerExternalDrop: function triggerExternalDrop(t, e, n, i, r) {\n        this.trigger(\"drop\", n[0], e.start, i, r), t && this.trigger(\"eventReceive\", null, t);\n      },\n      renderDrag: function renderDrag(t, e) {},\n      unrenderDrag: function unrenderDrag() {},\n      isEventResizableFromStart: function isEventResizableFromStart(t) {\n        return this.opt(\"eventResizableFromStart\") && this.isEventResizable(t);\n      },\n      isEventResizableFromEnd: function isEventResizableFromEnd(t) {\n        return this.isEventResizable(t);\n      },\n      isEventResizable: function isEventResizable(t) {\n        var e = t.source || {};\n        return J(t.durationEditable, e.durationEditable, this.opt(\"eventDurationEditable\"), t.editable, e.editable, this.opt(\"editable\"));\n      },\n      reportEventResize: function reportEventResize(t, e, n, i, r) {\n        var s = this.calendar,\n          o = s.mutateEvent(t, e, n),\n          l = function l() {\n            o.undo(), s.reportEventChange();\n          };\n        this.triggerEventResize(t, o.durationDelta, l, i, r), s.reportEventChange();\n      },\n      triggerEventResize: function triggerEventResize(t, e, n, i, r) {\n        this.trigger(\"eventResize\", i[0], t, e, n, r, {});\n      },\n      select: function select(t, e) {\n        this.unselect(e), this.renderSelection(t), this.reportSelection(t, e);\n      },\n      renderSelection: function renderSelection(t) {},\n      reportSelection: function reportSelection(t, e) {\n        this.isSelected = !0, this.triggerSelect(t, e);\n      },\n      triggerSelect: function triggerSelect(t, e) {\n        this.trigger(\"select\", null, this.calendar.applyTimezone(t.start), this.calendar.applyTimezone(t.end), e);\n      },\n      unselect: function unselect(t) {\n        this.isSelected && (this.isSelected = !1, this.destroySelection && this.destroySelection(), this.unrenderSelection(), this.trigger(\"unselect\", null, t));\n      },\n      unrenderSelection: function unrenderSelection() {},\n      selectEvent: function selectEvent(t) {\n        this.selectedEvent && this.selectedEvent === t || (this.unselectEvent(), this.renderedEventSegEach(function (t) {\n          t.el.addClass(\"fc-selected\");\n        }, t), this.selectedEvent = t);\n      },\n      unselectEvent: function unselectEvent() {\n        this.selectedEvent && (this.renderedEventSegEach(function (t) {\n          t.el.removeClass(\"fc-selected\");\n        }, this.selectedEvent), this.selectedEvent = null);\n      },\n      isEventSelected: function isEventSelected(t) {\n        return this.selectedEvent && this.selectedEvent._id === t._id;\n      },\n      handleDocumentMousedown: function handleDocumentMousedown(t) {\n        S(t) && this.processUnselect(t);\n      },\n      processUnselect: function processUnselect(t) {\n        this.processRangeUnselect(t), this.processEventUnselect(t);\n      },\n      processRangeUnselect: function processRangeUnselect(e) {\n        var n;\n        this.isSelected && this.opt(\"unselectAuto\") && (n = this.opt(\"unselectCancel\"), n && t(e.target).closest(n).length || this.unselect(e));\n      },\n      processEventUnselect: function processEventUnselect(e) {\n        this.selectedEvent && (t(e.target).closest(\".fc-selected\").length || this.unselectEvent());\n      },\n      triggerDayClick: function triggerDayClick(t, e, n) {\n        this.trigger(\"dayClick\", e, this.calendar.applyTimezone(t.start), n);\n      },\n      initHiddenDays: function initHiddenDays() {\n        var e,\n          n = this.opt(\"hiddenDays\") || [],\n          i = [],\n          r = 0;\n        for (this.opt(\"weekends\") === !1 && n.push(0, 6), e = 0; e < 7; e++) (i[e] = t.inArray(e, n) !== -1) || r++;\n        if (!r) throw \"invalid hiddenDays\";\n        this.isHiddenDayHash = i;\n      },\n      isHiddenDay: function isHiddenDay(t) {\n        return e.isMoment(t) && (t = t.day()), this.isHiddenDayHash[t];\n      },\n      skipHiddenDays: function skipHiddenDays(t, e, n) {\n        var i = t.clone();\n        for (e = e || 1; this.isHiddenDayHash[(i.day() + (n ? e : 0) + 7) % 7];) i.add(e, \"days\");\n        return i;\n      },\n      computeDayRange: function computeDayRange(t) {\n        var e,\n          n = t.start.clone().stripTime(),\n          i = t.end,\n          r = null;\n        return i && (r = i.clone().stripTime(), e = +i.time(), e && e >= this.nextDayThreshold && r.add(1, \"days\")), (!i || r <= n) && (r = n.clone().add(1, \"days\")), {\n          start: n,\n          end: r\n        };\n      },\n      isMultiDayEvent: function isMultiDayEvent(t) {\n        var e = this.computeDayRange(t);\n        return e.end.diff(e.start, \"days\") > 1;\n      }\n    }),\n    we = jt.Scroller = wt.extend({\n      el: null,\n      scrollEl: null,\n      overflowX: null,\n      overflowY: null,\n      constructor: function constructor(t) {\n        t = t || {}, this.overflowX = t.overflowX || t.overflow || \"auto\", this.overflowY = t.overflowY || t.overflow || \"auto\";\n      },\n      render: function render() {\n        this.el = this.renderEl(), this.applyOverflow();\n      },\n      renderEl: function renderEl() {\n        return this.scrollEl = t('<div class=\"fc-scroller\"></div>');\n      },\n      clear: function clear() {\n        this.setHeight(\"auto\"), this.applyOverflow();\n      },\n      destroy: function destroy() {\n        this.el.remove();\n      },\n      applyOverflow: function applyOverflow() {\n        this.scrollEl.css({\n          \"overflow-x\": this.overflowX,\n          \"overflow-y\": this.overflowY\n        });\n      },\n      lockOverflow: function lockOverflow(t) {\n        var e = this.overflowX,\n          n = this.overflowY;\n        t = t || this.getScrollbarWidths(), \"auto\" === e && (e = t.top || t.bottom || this.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth ? \"scroll\" : \"hidden\"), \"auto\" === n && (n = t.left || t.right || this.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight ? \"scroll\" : \"hidden\"), this.scrollEl.css({\n          \"overflow-x\": e,\n          \"overflow-y\": n\n        });\n      },\n      setHeight: function setHeight(t) {\n        this.scrollEl.height(t);\n      },\n      getScrollTop: function getScrollTop() {\n        return this.scrollEl.scrollTop();\n      },\n      setScrollTop: function setScrollTop(t) {\n        this.scrollEl.scrollTop(t);\n      },\n      getClientWidth: function getClientWidth() {\n        return this.scrollEl[0].clientWidth;\n      },\n      getClientHeight: function getClientHeight() {\n        return this.scrollEl[0].clientHeight;\n      },\n      getScrollbarWidths: function getScrollbarWidths() {\n        return p(this.scrollEl);\n      }\n    }),\n    Ee = jt.Calendar = wt.extend({\n      dirDefaults: null,\n      localeDefaults: null,\n      overrides: null,\n      dynamicOverrides: null,\n      options: null,\n      viewSpecCache: null,\n      view: null,\n      header: null,\n      loadingLevel: 0,\n      constructor: Ot,\n      initialize: function initialize() {},\n      populateOptionsHash: function populateOptionsHash() {\n        var t, e, i, r;\n        t = J(this.dynamicOverrides.locale, this.overrides.locale), e = De[t], e || (t = Ee.defaults.locale, e = De[t] || {}), i = J(this.dynamicOverrides.isRTL, this.overrides.isRTL, e.isRTL, Ee.defaults.isRTL), r = i ? Ee.rtlDefaults : {}, this.dirDefaults = r, this.localeDefaults = e, this.options = n([Ee.defaults, r, e, this.overrides, this.dynamicOverrides]), Vt(this.options);\n      },\n      getViewSpec: function getViewSpec(t) {\n        var e = this.viewSpecCache;\n        return e[t] || (e[t] = this.buildViewSpec(t));\n      },\n      getUnitViewSpec: function getUnitViewSpec(e) {\n        var n, i, r;\n        if (t.inArray(e, Xt) != -1) for (n = this.header.getViewsWithButtons(), t.each(jt.views, function (t) {\n          n.push(t);\n        }), i = 0; i < n.length; i++) if (r = this.getViewSpec(n[i]), r && r.singleUnit == e) return r;\n      },\n      buildViewSpec: function buildViewSpec(t) {\n        for (var i, r, s, o, l = this.overrides.views || {}, a = [], u = [], d = [], c = t; c;) i = Ut[c], r = l[c], c = null, \"function\" == typeof i && (i = {\n          \"class\": i\n        }), i && (a.unshift(i), u.unshift(i.defaults || {}), s = s || i.duration, c = c || i.type), r && (d.unshift(r), s = s || r.duration, c = c || r.type);\n        return i = q(a), i.type = t, !!i[\"class\"] && (s && (s = e.duration(s), s.valueOf() && (i.duration = s, o = O(s), 1 === s.as(o) && (i.singleUnit = o, d.unshift(l[o] || {})))), i.defaults = n(u), i.overrides = n(d), this.buildViewSpecOptions(i), this.buildViewSpecButtonText(i, t), i);\n      },\n      buildViewSpecOptions: function buildViewSpecOptions(t) {\n        t.options = n([Ee.defaults, t.defaults, this.dirDefaults, this.localeDefaults, this.overrides, t.overrides, this.dynamicOverrides]), Vt(t.options);\n      },\n      buildViewSpecButtonText: function buildViewSpecButtonText(t, e) {\n        function n(n) {\n          var i = n.buttonText || {};\n          return i[e] || (t.buttonTextKey ? i[t.buttonTextKey] : null) || (t.singleUnit ? i[t.singleUnit] : null);\n        }\n        t.buttonTextOverride = n(this.dynamicOverrides) || n(this.overrides) || t.overrides.buttonText, t.buttonTextDefault = n(this.localeDefaults) || n(this.dirDefaults) || t.defaults.buttonText || n(Ee.defaults) || (t.duration ? this.humanizeDuration(t.duration) : null) || e;\n      },\n      instantiateView: function instantiateView(t) {\n        var e = this.getViewSpec(t);\n        return new e[\"class\"](this, t, e.options, e.duration);\n      },\n      isValidViewType: function isValidViewType(t) {\n        return Boolean(this.getViewSpec(t));\n      },\n      pushLoading: function pushLoading() {\n        this.loadingLevel++ || this.trigger(\"loading\", null, !0, this.view);\n      },\n      popLoading: function popLoading() {\n        --this.loadingLevel || this.trigger(\"loading\", null, !1, this.view);\n      },\n      buildSelectSpan: function buildSelectSpan(t, e) {\n        var n,\n          i = this.moment(t).stripZone();\n        return n = e ? this.moment(e).stripZone() : i.hasTime() ? i.clone().add(this.defaultTimedEventDuration) : i.clone().add(this.defaultAllDayEventDuration), {\n          start: i,\n          end: n\n        };\n      }\n    });\n  Ee.mixin(le), Ee.mixin({\n    optionHandlers: null,\n    bindOption: function bindOption(t, e) {\n      this.bindOptions([t], e);\n    },\n    bindOptions: function bindOptions(t, e) {\n      var n,\n        i = {\n          func: e,\n          names: t\n        };\n      for (n = 0; n < t.length; n++) this.registerOptionHandlerObj(t[n], i);\n      this.triggerOptionHandlerObj(i);\n    },\n    registerOptionHandlerObj: function registerOptionHandlerObj(t, e) {\n      (this.optionHandlers[t] || (this.optionHandlers[t] = [])).push(e);\n    },\n    triggerOptionHandlers: function triggerOptionHandlers(t) {\n      var e,\n        n = this.optionHandlers[t] || [];\n      for (e = 0; e < n.length; e++) this.triggerOptionHandlerObj(n[e]);\n    },\n    triggerOptionHandlerObj: function triggerOptionHandlerObj(t) {\n      var e,\n        n = t.names,\n        i = [];\n      for (e = 0; e < n.length; e++) i.push(this.options[n[e]]);\n      t.func.apply(this, i);\n    }\n  }), Ee.defaults = {\n    titleRangeSeparator: \" – \",\n    monthYearFormat: \"MMMM YYYY\",\n    defaultTimedEventDuration: \"02:00:00\",\n    defaultAllDayEventDuration: {\n      days: 1\n    },\n    forceEventDuration: !1,\n    nextDayThreshold: \"09:00:00\",\n    defaultView: \"month\",\n    aspectRatio: 1.35,\n    header: {\n      left: \"title\",\n      center: \"\",\n      right: \"today prev,next\"\n    },\n    weekends: !0,\n    weekNumbers: !1,\n    weekNumberTitle: \"W\",\n    weekNumberCalculation: \"local\",\n    scrollTime: \"06:00:00\",\n    lazyFetching: !0,\n    startParam: \"start\",\n    endParam: \"end\",\n    timezoneParam: \"timezone\",\n    timezone: !1,\n    isRTL: !1,\n    buttonText: {\n      prev: \"prev\",\n      next: \"next\",\n      prevYear: \"prev year\",\n      nextYear: \"next year\",\n      year: \"year\",\n      today: \"today\",\n      month: \"month\",\n      week: \"week\",\n      day: \"day\"\n    },\n    buttonIcons: {\n      prev: \"left-single-arrow\",\n      next: \"right-single-arrow\",\n      prevYear: \"left-double-arrow\",\n      nextYear: \"right-double-arrow\"\n    },\n    allDayText: \"all-day\",\n    theme: !1,\n    themeButtonIcons: {\n      prev: \"circle-triangle-w\",\n      next: \"circle-triangle-e\",\n      prevYear: \"seek-prev\",\n      nextYear: \"seek-next\"\n    },\n    dragOpacity: .75,\n    dragRevertDuration: 500,\n    dragScroll: !0,\n    unselectAuto: !0,\n    dropAccept: \"*\",\n    eventOrder: \"title\",\n    eventLimit: !1,\n    eventLimitText: \"more\",\n    eventLimitClick: \"popover\",\n    dayPopoverFormat: \"LL\",\n    handleWindowResize: !0,\n    windowResizeDelay: 100,\n    longPressDelay: 1e3\n  }, Ee.englishDefaults = {\n    dayPopoverFormat: \"dddd, MMMM D\"\n  }, Ee.rtlDefaults = {\n    header: {\n      left: \"next,prev today\",\n      center: \"\",\n      right: \"title\"\n    },\n    buttonIcons: {\n      prev: \"right-single-arrow\",\n      next: \"left-single-arrow\",\n      prevYear: \"right-double-arrow\",\n      nextYear: \"left-double-arrow\"\n    },\n    themeButtonIcons: {\n      prev: \"circle-triangle-e\",\n      next: \"circle-triangle-w\",\n      nextYear: \"seek-prev\",\n      prevYear: \"seek-next\"\n    }\n  };\n  var De = jt.locales = {};\n  jt.datepickerLocale = function (e, n, i) {\n    var r = De[e] || (De[e] = {});\n    r.isRTL = i.isRTL, r.weekNumberTitle = i.weekHeader, t.each(be, function (t, e) {\n      r[t] = e(i);\n    }), t.datepicker && (t.datepicker.regional[n] = t.datepicker.regional[e] = i, t.datepicker.regional.en = t.datepicker.regional[\"\"], t.datepicker.setDefaults(i));\n  }, jt.locale = function (e, i) {\n    var r, s;\n    r = De[e] || (De[e] = {}), i && (r = De[e] = n([r, i])), s = Pt(e), t.each(Ce, function (t, e) {\n      null == r[t] && (r[t] = e(s, r));\n    }), Ee.defaults.locale = e;\n  };\n  var be = {\n      buttonText: function buttonText(t) {\n        return {\n          prev: et(t.prevText),\n          next: et(t.nextText),\n          today: et(t.currentText)\n        };\n      },\n      monthYearFormat: function monthYearFormat(t) {\n        return t.showMonthAfterYear ? \"YYYY[\" + t.yearSuffix + \"] MMMM\" : \"MMMM YYYY[\" + t.yearSuffix + \"]\";\n      }\n    },\n    Ce = {\n      dayOfMonthFormat: function dayOfMonthFormat(t, e) {\n        var n = t.longDateFormat(\"l\");\n        return n = n.replace(/^Y+[^\\w\\s]*|[^\\w\\s]*Y+$/g, \"\"), e.isRTL ? n += \" ddd\" : n = \"ddd \" + n, n;\n      },\n      mediumTimeFormat: function mediumTimeFormat(t) {\n        return t.longDateFormat(\"LT\").replace(/\\s*a$/i, \"a\");\n      },\n      smallTimeFormat: function smallTimeFormat(t) {\n        return t.longDateFormat(\"LT\").replace(\":mm\", \"(:mm)\").replace(/(\\Wmm)$/, \"($1)\").replace(/\\s*a$/i, \"a\");\n      },\n      extraSmallTimeFormat: function extraSmallTimeFormat(t) {\n        return t.longDateFormat(\"LT\").replace(\":mm\", \"(:mm)\").replace(/(\\Wmm)$/, \"($1)\").replace(/\\s*a$/i, \"t\");\n      },\n      hourFormat: function hourFormat(t) {\n        return t.longDateFormat(\"LT\").replace(\":mm\", \"\").replace(/(\\Wmm)$/, \"\").replace(/\\s*a$/i, \"a\");\n      },\n      noMeridiemTimeFormat: function noMeridiemTimeFormat(t) {\n        return t.longDateFormat(\"LT\").replace(/\\s*a$/i, \"\");\n      }\n    },\n    He = {\n      smallDayDateFormat: function smallDayDateFormat(t) {\n        return t.isRTL ? \"D dd\" : \"dd D\";\n      },\n      weekFormat: function weekFormat(t) {\n        return t.isRTL ? \"w[ \" + t.weekNumberTitle + \"]\" : \"[\" + t.weekNumberTitle + \" ]w\";\n      },\n      smallWeekFormat: function smallWeekFormat(t) {\n        return t.isRTL ? \"w[\" + t.weekNumberTitle + \"]\" : \"[\" + t.weekNumberTitle + \"]w\";\n      }\n    };\n  jt.locale(\"en\", Ee.englishDefaults), jt.sourceNormalizers = [], jt.sourceFetchers = [];\n  var Te = {\n      dataType: \"json\",\n      cache: !1\n    },\n    xe = 1;\n  Ee.prototype.normalizeEvent = function (t) {}, Ee.prototype.spanContainsSpan = function (t, e) {\n    var n = t.start.clone().stripZone(),\n      i = this.getEventEnd(t).stripZone();\n    return e.start >= n && e.end <= i;\n  }, Ee.prototype.getPeerEvents = function (t, e) {\n    var n,\n      i,\n      r = this.getEventCache(),\n      s = [];\n    for (n = 0; n < r.length; n++) i = r[n], e && e._id === i._id || s.push(i);\n    return s;\n  }, Ee.prototype.isEventSpanAllowed = function (t, e) {\n    var n = e.source || {},\n      i = J(e.constraint, n.constraint, this.options.eventConstraint),\n      r = J(e.overlap, n.overlap, this.options.eventOverlap);\n    return this.isSpanAllowed(t, i, r, e) && (!this.options.eventAllow || this.options.eventAllow(t, e) !== !1);\n  }, Ee.prototype.isExternalSpanAllowed = function (e, n, i) {\n    var r, s;\n    return i && (r = t.extend({}, i, n), s = this.expandEvent(this.buildEventFromInput(r))[0]), s ? this.isEventSpanAllowed(e, s) : this.isSelectionSpanAllowed(e);\n  }, Ee.prototype.isSelectionSpanAllowed = function (t) {\n    return this.isSpanAllowed(t, this.options.selectConstraint, this.options.selectOverlap) && (!this.options.selectAllow || this.options.selectAllow(t) !== !1);\n  }, Ee.prototype.isSpanAllowed = function (t, e, n, i) {\n    var r, s, o, l, a, u;\n    if (null != e && (r = this.constraintToEvents(e))) {\n      for (s = !1, l = 0; l < r.length; l++) if (this.spanContainsSpan(r[l], t)) {\n        s = !0;\n        break;\n      }\n      if (!s) return !1;\n    }\n    for (o = this.getPeerEvents(t, i), l = 0; l < o.length; l++) if (a = o[l], this.eventIntersectsRange(a, t)) {\n      if (n === !1) return !1;\n      if (\"function\" == typeof n && !n(a, i)) return !1;\n      if (i) {\n        if (u = J(a.overlap, (a.source || {}).overlap), u === !1) return !1;\n        if (\"function\" == typeof u && !u(i, a)) return !1;\n      }\n    }\n    return !0;\n  }, Ee.prototype.constraintToEvents = function (t) {\n    return \"businessHours\" === t ? this.getCurrentBusinessHourEvents() : \"object\" == _typeof(t) ? null != t.start ? this.expandEvent(this.buildEventFromInput(t)) : null : this.clientEvents(t);\n  }, Ee.prototype.eventIntersectsRange = function (t, e) {\n    var n = t.start.clone().stripZone(),\n      i = this.getEventEnd(t).stripZone();\n    return e.start < i && e.end > n;\n  };\n  var Re = {\n    id: \"_fcBusinessHours\",\n    start: \"09:00\",\n    end: \"17:00\",\n    dow: [1, 2, 3, 4, 5],\n    rendering: \"inverse-background\"\n  };\n  Ee.prototype.getCurrentBusinessHourEvents = function (t) {\n    return this.computeBusinessHourEvents(t, this.options.businessHours);\n  }, Ee.prototype.computeBusinessHourEvents = function (e, n) {\n    return n === !0 ? this.expandBusinessHourEvents(e, [{}]) : t.isPlainObject(n) ? this.expandBusinessHourEvents(e, [n]) : t.isArray(n) ? this.expandBusinessHourEvents(e, n, !0) : [];\n  }, Ee.prototype.expandBusinessHourEvents = function (e, n, i) {\n    var r,\n      s,\n      o = this.getView(),\n      l = [];\n    for (r = 0; r < n.length; r++) s = n[r], i && !s.dow || (s = t.extend({}, Re, s), e && (s.start = null, s.end = null), l.push.apply(l, this.expandEvent(this.buildEventFromInput(s), o.start, o.end)));\n    return l;\n  };\n  var Ie = jt.BasicView = Se.extend({\n      scroller: null,\n      dayGridClass: me,\n      dayGrid: null,\n      dayNumbersVisible: !1,\n      colWeekNumbersVisible: !1,\n      cellWeekNumbersVisible: !1,\n      weekNumberWidth: null,\n      headContainerEl: null,\n      headRowEl: null,\n      initialize: function initialize() {\n        this.dayGrid = this.instantiateDayGrid(), this.scroller = new we({\n          overflowX: \"hidden\",\n          overflowY: \"auto\"\n        });\n      },\n      instantiateDayGrid: function instantiateDayGrid() {\n        var t = this.dayGridClass.extend(ke);\n        return new t(this);\n      },\n      setRange: function setRange(t) {\n        Se.prototype.setRange.call(this, t), this.dayGrid.breakOnWeeks = /year|month|week/.test(this.intervalUnit), this.dayGrid.setRange(t);\n      },\n      computeRange: function computeRange(t) {\n        var e = Se.prototype.computeRange.call(this, t);\n        return /year|month/.test(e.intervalUnit) && (e.start.startOf(\"week\"), e.start = this.skipHiddenDays(e.start), e.end.weekday() && (e.end.add(1, \"week\").startOf(\"week\"), e.end = this.skipHiddenDays(e.end, -1, !0))), e;\n      },\n      renderDates: function renderDates() {\n        this.dayNumbersVisible = this.dayGrid.rowCnt > 1, this.opt(\"weekNumbers\") && (this.opt(\"weekNumbersWithinDays\") ? (this.cellWeekNumbersVisible = !0, this.colWeekNumbersVisible = !1) : (this.cellWeekNumbersVisible = !1, this.colWeekNumbersVisible = !0)), this.dayGrid.numbersVisible = this.dayNumbersVisible || this.cellWeekNumbersVisible || this.colWeekNumbersVisible, this.el.addClass(\"fc-basic-view\").html(this.renderSkeletonHtml()), this.renderHead(), this.scroller.render();\n        var e = this.scroller.el.addClass(\"fc-day-grid-container\"),\n          n = t('<div class=\"fc-day-grid\" />').appendTo(e);\n        this.el.find(\".fc-body > tr > td\").append(e), this.dayGrid.setElement(n), this.dayGrid.renderDates(this.hasRigidRows());\n      },\n      renderHead: function renderHead() {\n        this.headContainerEl = this.el.find(\".fc-head-container\").html(this.dayGrid.renderHeadHtml()), this.headRowEl = this.headContainerEl.find(\".fc-row\");\n      },\n      unrenderDates: function unrenderDates() {\n        this.dayGrid.unrenderDates(), this.dayGrid.removeElement(), this.scroller.destroy();\n      },\n      renderBusinessHours: function renderBusinessHours() {\n        this.dayGrid.renderBusinessHours();\n      },\n      unrenderBusinessHours: function unrenderBusinessHours() {\n        this.dayGrid.unrenderBusinessHours();\n      },\n      renderSkeletonHtml: function renderSkeletonHtml() {\n        return '<table><thead class=\"fc-head\"><tr><td class=\"fc-head-container ' + this.widgetHeaderClass + '\"></td></tr></thead><tbody class=\"fc-body\"><tr><td class=\"' + this.widgetContentClass + '\"></td></tr></tbody></table>';\n      },\n      weekNumberStyleAttr: function weekNumberStyleAttr() {\n        return null !== this.weekNumberWidth ? 'style=\"width:' + this.weekNumberWidth + 'px\"' : \"\";\n      },\n      hasRigidRows: function hasRigidRows() {\n        var t = this.opt(\"eventLimit\");\n        return t && \"number\" != typeof t;\n      },\n      updateWidth: function updateWidth() {\n        this.colWeekNumbersVisible && (this.weekNumberWidth = u(this.el.find(\".fc-week-number\")));\n      },\n      setHeight: function setHeight(t, e) {\n        var n,\n          s,\n          o = this.opt(\"eventLimit\");\n        this.scroller.clear(), r(this.headRowEl), this.dayGrid.removeSegPopover(), o && \"number\" == typeof o && this.dayGrid.limitRows(o), n = this.computeScrollerHeight(t), this.setGridHeight(n, e), o && \"number\" != typeof o && this.dayGrid.limitRows(o), e || (this.scroller.setHeight(n), s = this.scroller.getScrollbarWidths(), (s.left || s.right) && (i(this.headRowEl, s), n = this.computeScrollerHeight(t), this.scroller.setHeight(n)), this.scroller.lockOverflow(s));\n      },\n      computeScrollerHeight: function computeScrollerHeight(t) {\n        return t - d(this.el, this.scroller.el);\n      },\n      setGridHeight: function setGridHeight(t, e) {\n        e ? a(this.dayGrid.rowEls) : l(this.dayGrid.rowEls, t, !0);\n      },\n      queryScroll: function queryScroll() {\n        return this.scroller.getScrollTop();\n      },\n      setScroll: function setScroll(t) {\n        this.scroller.setScrollTop(t);\n      },\n      prepareHits: function prepareHits() {\n        this.dayGrid.prepareHits();\n      },\n      releaseHits: function releaseHits() {\n        this.dayGrid.releaseHits();\n      },\n      queryHit: function queryHit(t, e) {\n        return this.dayGrid.queryHit(t, e);\n      },\n      getHitSpan: function getHitSpan(t) {\n        return this.dayGrid.getHitSpan(t);\n      },\n      getHitEl: function getHitEl(t) {\n        return this.dayGrid.getHitEl(t);\n      },\n      renderEvents: function renderEvents(t) {\n        this.dayGrid.renderEvents(t), this.updateHeight();\n      },\n      getEventSegs: function getEventSegs() {\n        return this.dayGrid.getEventSegs();\n      },\n      unrenderEvents: function unrenderEvents() {\n        this.dayGrid.unrenderEvents();\n      },\n      renderDrag: function renderDrag(t, e) {\n        return this.dayGrid.renderDrag(t, e);\n      },\n      unrenderDrag: function unrenderDrag() {\n        this.dayGrid.unrenderDrag();\n      },\n      renderSelection: function renderSelection(t) {\n        this.dayGrid.renderSelection(t);\n      },\n      unrenderSelection: function unrenderSelection() {\n        this.dayGrid.unrenderSelection();\n      }\n    }),\n    ke = {\n      renderHeadIntroHtml: function renderHeadIntroHtml() {\n        var t = this.view;\n        return t.colWeekNumbersVisible ? '<th class=\"fc-week-number ' + t.widgetHeaderClass + '\" ' + t.weekNumberStyleAttr() + \"><span>\" + tt(t.opt(\"weekNumberTitle\")) + \"</span></th>\" : \"\";\n      },\n      renderNumberIntroHtml: function renderNumberIntroHtml(t) {\n        var e = this.view,\n          n = this.getCellDate(t, 0);\n        return e.colWeekNumbersVisible ? '<td class=\"fc-week-number\" ' + e.weekNumberStyleAttr() + \">\" + e.buildGotoAnchorHtml({\n          date: n,\n          type: \"week\",\n          forceOff: 1 === this.colCnt\n        }, n.format(\"w\")) + \"</td>\" : \"\";\n      },\n      renderBgIntroHtml: function renderBgIntroHtml() {\n        var t = this.view;\n        return t.colWeekNumbersVisible ? '<td class=\"fc-week-number ' + t.widgetContentClass + '\" ' + t.weekNumberStyleAttr() + \"></td>\" : \"\";\n      },\n      renderIntroHtml: function renderIntroHtml() {\n        var t = this.view;\n        return t.colWeekNumbersVisible ? '<td class=\"fc-week-number\" ' + t.weekNumberStyleAttr() + \"></td>\" : \"\";\n      }\n    },\n    Me = jt.MonthView = Ie.extend({\n      computeRange: function computeRange(t) {\n        var e,\n          n = Ie.prototype.computeRange.call(this, t);\n        return this.isFixedWeeks() && (e = Math.ceil(n.end.diff(n.start, \"weeks\", !0)), n.end.add(6 - e, \"weeks\")), n;\n      },\n      setGridHeight: function setGridHeight(t, e) {\n        e && (t *= this.rowCnt / 6), l(this.dayGrid.rowEls, t, !e);\n      },\n      isFixedWeeks: function isFixedWeeks() {\n        return this.opt(\"fixedWeekCount\");\n      }\n    });\n  Ut.basic = {\n    \"class\": Ie\n  }, Ut.basicDay = {\n    type: \"basic\",\n    duration: {\n      days: 1\n    }\n  }, Ut.basicWeek = {\n    type: \"basic\",\n    duration: {\n      weeks: 1\n    }\n  }, Ut.month = {\n    \"class\": Me,\n    duration: {\n      months: 1\n    },\n    defaults: {\n      fixedWeekCount: !0\n    }\n  };\n  var Le = jt.AgendaView = Se.extend({\n      scroller: null,\n      timeGridClass: ye,\n      timeGrid: null,\n      dayGridClass: me,\n      dayGrid: null,\n      axisWidth: null,\n      headContainerEl: null,\n      noScrollRowEls: null,\n      bottomRuleEl: null,\n      initialize: function initialize() {\n        this.timeGrid = this.instantiateTimeGrid(), this.opt(\"allDaySlot\") && (this.dayGrid = this.instantiateDayGrid()), this.scroller = new we({\n          overflowX: \"hidden\",\n          overflowY: \"auto\"\n        });\n      },\n      instantiateTimeGrid: function instantiateTimeGrid() {\n        var t = this.timeGridClass.extend(Be);\n        return new t(this);\n      },\n      instantiateDayGrid: function instantiateDayGrid() {\n        var t = this.dayGridClass.extend(ze);\n        return new t(this);\n      },\n      setRange: function setRange(t) {\n        Se.prototype.setRange.call(this, t), this.timeGrid.setRange(t), this.dayGrid && this.dayGrid.setRange(t);\n      },\n      renderDates: function renderDates() {\n        this.el.addClass(\"fc-agenda-view\").html(this.renderSkeletonHtml()), this.renderHead(), this.scroller.render();\n        var e = this.scroller.el.addClass(\"fc-time-grid-container\"),\n          n = t('<div class=\"fc-time-grid\" />').appendTo(e);\n        this.el.find(\".fc-body > tr > td\").append(e), this.timeGrid.setElement(n), this.timeGrid.renderDates(), this.bottomRuleEl = t('<hr class=\"fc-divider ' + this.widgetHeaderClass + '\"/>').appendTo(this.timeGrid.el), this.dayGrid && (this.dayGrid.setElement(this.el.find(\".fc-day-grid\")), this.dayGrid.renderDates(), this.dayGrid.bottomCoordPadding = this.dayGrid.el.next(\"hr\").outerHeight()), this.noScrollRowEls = this.el.find(\".fc-row:not(.fc-scroller *)\");\n      },\n      renderHead: function renderHead() {\n        this.headContainerEl = this.el.find(\".fc-head-container\").html(this.timeGrid.renderHeadHtml());\n      },\n      unrenderDates: function unrenderDates() {\n        this.timeGrid.unrenderDates(), this.timeGrid.removeElement(), this.dayGrid && (this.dayGrid.unrenderDates(), this.dayGrid.removeElement()), this.scroller.destroy();\n      },\n      renderSkeletonHtml: function renderSkeletonHtml() {\n        return '<table><thead class=\"fc-head\"><tr><td class=\"fc-head-container ' + this.widgetHeaderClass + '\"></td></tr></thead><tbody class=\"fc-body\"><tr><td class=\"' + this.widgetContentClass + '\">' + (this.dayGrid ? '<div class=\"fc-day-grid\"/><hr class=\"fc-divider ' + this.widgetHeaderClass + '\"/>' : \"\") + \"</td></tr></tbody></table>\";\n      },\n      axisStyleAttr: function axisStyleAttr() {\n        return null !== this.axisWidth ? 'style=\"width:' + this.axisWidth + 'px\"' : \"\";\n      },\n      renderBusinessHours: function renderBusinessHours() {\n        this.timeGrid.renderBusinessHours(), this.dayGrid && this.dayGrid.renderBusinessHours();\n      },\n      unrenderBusinessHours: function unrenderBusinessHours() {\n        this.timeGrid.unrenderBusinessHours(), this.dayGrid && this.dayGrid.unrenderBusinessHours();\n      },\n      getNowIndicatorUnit: function getNowIndicatorUnit() {\n        return this.timeGrid.getNowIndicatorUnit();\n      },\n      renderNowIndicator: function renderNowIndicator(t) {\n        this.timeGrid.renderNowIndicator(t);\n      },\n      unrenderNowIndicator: function unrenderNowIndicator() {\n        this.timeGrid.unrenderNowIndicator();\n      },\n      updateSize: function updateSize(t) {\n        this.timeGrid.updateSize(t), Se.prototype.updateSize.call(this, t);\n      },\n      updateWidth: function updateWidth() {\n        this.axisWidth = u(this.el.find(\".fc-axis\"));\n      },\n      setHeight: function setHeight(t, e) {\n        var n, s, o;\n        this.bottomRuleEl.hide(), this.scroller.clear(), r(this.noScrollRowEls), this.dayGrid && (this.dayGrid.removeSegPopover(), n = this.opt(\"eventLimit\"), n && \"number\" != typeof n && (n = Fe), n && this.dayGrid.limitRows(n)), e || (s = this.computeScrollerHeight(t), this.scroller.setHeight(s), o = this.scroller.getScrollbarWidths(), (o.left || o.right) && (i(this.noScrollRowEls, o), s = this.computeScrollerHeight(t), this.scroller.setHeight(s)), this.scroller.lockOverflow(o), this.timeGrid.getTotalSlatHeight() < s && this.bottomRuleEl.show());\n      },\n      computeScrollerHeight: function computeScrollerHeight(t) {\n        return t - d(this.el, this.scroller.el);\n      },\n      computeInitialScroll: function computeInitialScroll() {\n        var t = e.duration(this.opt(\"scrollTime\")),\n          n = this.timeGrid.computeTimeTop(t);\n        return n = Math.ceil(n), n && n++, n;\n      },\n      queryScroll: function queryScroll() {\n        return this.scroller.getScrollTop();\n      },\n      setScroll: function setScroll(t) {\n        this.scroller.setScrollTop(t);\n      },\n      prepareHits: function prepareHits() {\n        this.timeGrid.prepareHits(), this.dayGrid && this.dayGrid.prepareHits();\n      },\n      releaseHits: function releaseHits() {\n        this.timeGrid.releaseHits(), this.dayGrid && this.dayGrid.releaseHits();\n      },\n      queryHit: function queryHit(t, e) {\n        var n = this.timeGrid.queryHit(t, e);\n        return !n && this.dayGrid && (n = this.dayGrid.queryHit(t, e)), n;\n      },\n      getHitSpan: function getHitSpan(t) {\n        return t.component.getHitSpan(t);\n      },\n      getHitEl: function getHitEl(t) {\n        return t.component.getHitEl(t);\n      },\n      renderEvents: function renderEvents(t) {\n        var e,\n          n,\n          i = [],\n          r = [],\n          s = [];\n        for (n = 0; n < t.length; n++) t[n].allDay ? i.push(t[n]) : r.push(t[n]);\n        e = this.timeGrid.renderEvents(r), this.dayGrid && (s = this.dayGrid.renderEvents(i)), this.updateHeight();\n      },\n      getEventSegs: function getEventSegs() {\n        return this.timeGrid.getEventSegs().concat(this.dayGrid ? this.dayGrid.getEventSegs() : []);\n      },\n      unrenderEvents: function unrenderEvents() {\n        this.timeGrid.unrenderEvents(), this.dayGrid && this.dayGrid.unrenderEvents();\n      },\n      renderDrag: function renderDrag(t, e) {\n        return t.start.hasTime() ? this.timeGrid.renderDrag(t, e) : this.dayGrid ? this.dayGrid.renderDrag(t, e) : void 0;\n      },\n      unrenderDrag: function unrenderDrag() {\n        this.timeGrid.unrenderDrag(), this.dayGrid && this.dayGrid.unrenderDrag();\n      },\n      renderSelection: function renderSelection(t) {\n        t.start.hasTime() || t.end.hasTime() ? this.timeGrid.renderSelection(t) : this.dayGrid && this.dayGrid.renderSelection(t);\n      },\n      unrenderSelection: function unrenderSelection() {\n        this.timeGrid.unrenderSelection(), this.dayGrid && this.dayGrid.unrenderSelection();\n      }\n    }),\n    Be = {\n      renderHeadIntroHtml: function renderHeadIntroHtml() {\n        var t,\n          e = this.view;\n        return e.opt(\"weekNumbers\") ? (t = this.start.format(e.opt(\"smallWeekFormat\")), '<th class=\"fc-axis fc-week-number ' + e.widgetHeaderClass + '\" ' + e.axisStyleAttr() + \">\" + e.buildGotoAnchorHtml({\n          date: this.start,\n          type: \"week\",\n          forceOff: this.colCnt > 1\n        }, tt(t)) + \"</th>\") : '<th class=\"fc-axis ' + e.widgetHeaderClass + '\" ' + e.axisStyleAttr() + \"></th>\";\n      },\n      renderBgIntroHtml: function renderBgIntroHtml() {\n        var t = this.view;\n        return '<td class=\"fc-axis ' + t.widgetContentClass + '\" ' + t.axisStyleAttr() + \"></td>\";\n      },\n      renderIntroHtml: function renderIntroHtml() {\n        var t = this.view;\n        return '<td class=\"fc-axis\" ' + t.axisStyleAttr() + \"></td>\";\n      }\n    },\n    ze = {\n      renderBgIntroHtml: function renderBgIntroHtml() {\n        var t = this.view;\n        return '<td class=\"fc-axis ' + t.widgetContentClass + '\" ' + t.axisStyleAttr() + \"><span>\" + t.getAllDayHtml() + \"</span></td>\";\n      },\n      renderIntroHtml: function renderIntroHtml() {\n        var t = this.view;\n        return '<td class=\"fc-axis\" ' + t.axisStyleAttr() + \"></td>\";\n      }\n    },\n    Fe = 5,\n    Ne = [{\n      hours: 1\n    }, {\n      minutes: 30\n    }, {\n      minutes: 15\n    }, {\n      seconds: 30\n    }, {\n      seconds: 15\n    }];\n  Ut.agenda = {\n    \"class\": Le,\n    defaults: {\n      allDaySlot: !0,\n      slotDuration: \"00:30:00\",\n      minTime: \"00:00:00\",\n      maxTime: \"24:00:00\",\n      slotEventOverlap: !0\n    }\n  }, Ut.agendaDay = {\n    type: \"agenda\",\n    duration: {\n      days: 1\n    }\n  }, Ut.agendaWeek = {\n    type: \"agenda\",\n    duration: {\n      weeks: 1\n    }\n  };\n  var Ge = Se.extend({\n      grid: null,\n      scroller: null,\n      initialize: function initialize() {\n        this.grid = new Ae(this), this.scroller = new we({\n          overflowX: \"hidden\",\n          overflowY: \"auto\"\n        });\n      },\n      setRange: function setRange(t) {\n        Se.prototype.setRange.call(this, t), this.grid.setRange(t);\n      },\n      renderSkeleton: function renderSkeleton() {\n        this.el.addClass(\"fc-list-view \" + this.widgetContentClass), this.scroller.render(), this.scroller.el.appendTo(this.el), this.grid.setElement(this.scroller.scrollEl);\n      },\n      unrenderSkeleton: function unrenderSkeleton() {\n        this.scroller.destroy();\n      },\n      setHeight: function setHeight(t, e) {\n        this.scroller.setHeight(this.computeScrollerHeight(t));\n      },\n      computeScrollerHeight: function computeScrollerHeight(t) {\n        return t - d(this.el, this.scroller.el);\n      },\n      renderEvents: function renderEvents(t) {\n        this.grid.renderEvents(t);\n      },\n      unrenderEvents: function unrenderEvents() {\n        this.grid.unrenderEvents();\n      },\n      isEventResizable: function isEventResizable(t) {\n        return !1;\n      },\n      isEventDraggable: function isEventDraggable(t) {\n        return !1;\n      }\n    }),\n    Ae = pe.extend({\n      segSelector: \".fc-list-item\",\n      hasDayInteractions: !1,\n      spanToSegs: function spanToSegs(t) {\n        for (var e, n = this.view, i = n.start.clone().time(0), r = 0, s = []; i < n.end;) if (e = F(t, {\n          start: i,\n          end: i.clone().add(1, \"day\")\n        }), e && (e.dayIndex = r, s.push(e)), i.add(1, \"day\"), r++, e && !e.isEnd && t.end.hasTime() && t.end < i.clone().add(this.view.nextDayThreshold)) {\n          e.end = t.end.clone(), e.isEnd = !0;\n          break;\n        }\n        return s;\n      },\n      computeEventTimeFormat: function computeEventTimeFormat() {\n        return this.view.opt(\"mediumTimeFormat\");\n      },\n      handleSegClick: function handleSegClick(e, n) {\n        var i;\n        pe.prototype.handleSegClick.apply(this, arguments), t(n.target).closest(\"a[href]\").length || (i = e.event.url, i && !n.isDefaultPrevented() && (window.location.href = i));\n      },\n      renderFgSegs: function renderFgSegs(t) {\n        return t = this.renderFgSegEls(t), t.length ? this.renderSegList(t) : this.renderEmptyMessage(), t;\n      },\n      renderEmptyMessage: function renderEmptyMessage() {\n        this.el.html('<div class=\"fc-list-empty-wrap2\"><div class=\"fc-list-empty-wrap1\"><div class=\"fc-list-empty\">' + tt(this.view.opt(\"noEventsMessage\")) + \"</div></div></div>\");\n      },\n      renderSegList: function renderSegList(e) {\n        var n,\n          i,\n          r,\n          s = this.groupSegsByDay(e),\n          o = t('<table class=\"fc-list-table\"><tbody/></table>'),\n          l = o.find(\"tbody\");\n        for (n = 0; n < s.length; n++) if (i = s[n]) for (l.append(this.dayHeaderHtml(this.view.start.clone().add(n, \"days\"))), this.sortEventSegs(i), r = 0; r < i.length; r++) l.append(i[r].el);\n        this.el.empty().append(o);\n      },\n      groupSegsByDay: function groupSegsByDay(t) {\n        var e,\n          n,\n          i = [];\n        for (e = 0; e < t.length; e++) n = t[e], (i[n.dayIndex] || (i[n.dayIndex] = [])).push(n);\n        return i;\n      },\n      dayHeaderHtml: function dayHeaderHtml(t) {\n        var e = this.view,\n          n = e.opt(\"listDayFormat\"),\n          i = e.opt(\"listDayAltFormat\");\n        return '<tr class=\"fc-list-heading\" data-date=\"' + t.format(\"YYYY-MM-DD\") + '\"><td class=\"' + e.widgetHeaderClass + '\" colspan=\"3\">' + (n ? e.buildGotoAnchorHtml(t, {\n          \"class\": \"fc-list-heading-main\"\n        }, tt(t.format(n))) : \"\") + (i ? e.buildGotoAnchorHtml(t, {\n          \"class\": \"fc-list-heading-alt\"\n        }, tt(t.format(i))) : \"\") + \"</td></tr>\";\n      },\n      fgSegHtml: function fgSegHtml(t) {\n        var e,\n          n = this.view,\n          i = [\"fc-list-item\"].concat(this.getSegCustomClasses(t)),\n          r = this.getSegBackgroundColor(t),\n          s = t.event,\n          o = s.url;\n        return e = s.allDay ? n.getAllDayHtml() : n.isMultiDayEvent(s) ? t.isStart || t.isEnd ? tt(this.getEventTimeText(t)) : n.getAllDayHtml() : tt(this.getEventTimeText(s)), o && i.push(\"fc-has-url\"), '<tr class=\"' + i.join(\" \") + '\">' + (this.displayEventTime ? '<td class=\"fc-list-item-time ' + n.widgetContentClass + '\">' + (e || \"\") + \"</td>\" : \"\") + '<td class=\"fc-list-item-marker ' + n.widgetContentClass + '\"><span class=\"fc-event-dot\"' + (r ? ' style=\"background-color:' + r + '\"' : \"\") + '></span></td><td class=\"fc-list-item-title ' + n.widgetContentClass + '\"><a' + (o ? ' href=\"' + tt(o) + '\"' : \"\") + \">\" + tt(t.event.title || \"\") + \"</a></td></tr>\";\n      }\n    });\n  return Ut.list = {\n    \"class\": Ge,\n    buttonTextKey: \"list\",\n    defaults: {\n      buttonText: \"list\",\n      listDayFormat: \"LL\",\n      noEventsMessage: \"No events to display\"\n    }\n  }, Ut.listDay = {\n    type: \"list\",\n    duration: {\n      days: 1\n    },\n    defaults: {\n      listDayFormat: \"dddd\"\n    }\n  }, Ut.listWeek = {\n    type: \"list\",\n    duration: {\n      weeks: 1\n    },\n    defaults: {\n      listDayFormat: \"dddd\",\n      listDayAltFormat: \"LL\"\n    }\n  }, Ut.listMonth = {\n    type: \"list\",\n    duration: {\n      month: 1\n    },\n    defaults: {\n      listDayAltFormat: \"dddd\"\n    }\n  }, Ut.listYear = {\n    type: \"list\",\n    duration: {\n      year: 1\n    },\n    defaults: {\n      listDayAltFormat: \"dddd\"\n    }\n  }, jt;\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/fullcalendar.min.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/gsdk-bootstrap-wizard.js":
/*!******************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/gsdk-bootstrap-wizard.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/*!\n\n =========================================================\n * Bootstrap Wizard - v1.1.1\n =========================================================\n \n * Product Page: https://www.creative-tim.com/product/bootstrap-wizard\n * Copyright 2017 Creative Tim (http://www.creative-tim.com)\n * Licensed under MIT (https://github.com/creativetimofficial/bootstrap-wizard/blob/master/LICENSE.md)\n \n =========================================================\n \n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n */\n\n// Get Shit Done Kit Bootstrap Wizard Functions\n\nvar searchVisible = 0;\nvar transparent = true;\n$(document).ready(function () {\n  /*  Activate the tooltips      */\n  $('[rel=\"tooltip\"]').tooltip();\n\n  // Code for the Validator\n  var $validator = $('.wizard-card form').validate({\n    rules: {\n      firstname: {\n        required: true,\n        minlength: 3\n      },\n      lastname: {\n        required: true,\n        minlength: 3\n      },\n      email: {\n        required: true,\n        minlength: 3\n      }\n    }\n  });\n\n  // Wizard Initialization\n  $('.wizard-card').bootstrapWizard({\n    'tabClass': 'nav nav-pills',\n    'nextSelector': '.btn-next',\n    'previousSelector': '.btn-previous',\n    onNext: function onNext(tab, navigation, index) {\n      var $valid = $('.wizard-card form').valid();\n      if (!$valid) {\n        $validator.focusInvalid();\n        return false;\n      }\n    },\n    onInit: function onInit(tab, navigation, index) {\n      //check number of tabs and fill the entire row\n      var $total = navigation.find('li').length,\n        $width = 100 / $total,\n        $wizard = navigation.closest('.wizard-card'),\n        $display_width = $(document).width();\n      if ($display_width < 600 && $total > 3) {\n        $width = 50;\n      }\n      navigation.find('li').css('width', $width + '%');\n      var $first_li = navigation.find('li:first-child a').html();\n      var $moving_div = $('<div class=\"moving-tab\">' + $first_li + '</div>');\n      $('.wizard-card .wizard-navigation').append($moving_div);\n      refreshAnimation($wizard, index);\n      $('.moving-tab').css('transition', 'transform 0s');\n    },\n    onTabClick: function onTabClick(tab, navigation, index) {\n      var $valid = $('.wizard-card form').valid();\n      if (!$valid) {\n        return false;\n      } else {\n        return true;\n      }\n    },\n    onTabShow: function onTabShow(tab, navigation, index) {\n      var $total = navigation.find('li').length;\n      var $current = index + 1;\n      var $wizard = navigation.closest('.wizard-card');\n\n      // If it's the last tab then hide the last button and show the finish instead\n      if ($current >= $total) {\n        $($wizard).find('.btn-next').hide();\n        $($wizard).find('.btn-finish').show();\n      } else {\n        $($wizard).find('.btn-next').show();\n        $($wizard).find('.btn-finish').hide();\n      }\n      var button_text = navigation.find('li:nth-child(' + $current + ') a').html();\n      setTimeout(function () {\n        $('.moving-tab').text(button_text);\n      }, 150);\n      var checkbox = $('.footer-checkbox');\n      if (!index == 0) {\n        $(checkbox).css({\n          'opacity': '0',\n          'visibility': 'hidden',\n          'position': 'absolute'\n        });\n      } else {\n        $(checkbox).css({\n          'opacity': '1',\n          'visibility': 'visible'\n        });\n      }\n      refreshAnimation($wizard, index);\n    }\n  });\n\n  // Prepare the preview for profile picture\n  $(\"#wizard-picture\").change(function () {\n    readURL(this);\n  });\n  $('[data-toggle=\"wizard-radio\"]').click(function () {\n    var $wizard = $(this).closest('.wizard-card');\n    $wizard.find('[data-toggle=\"wizard-radio\"]').removeClass('active');\n    $(this).addClass('active');\n    $wizard.find('[type=\"radio\"]').prop('checked', false);\n    $(this).find('[type=\"radio\"]').prop('checked', true);\n    $(this).trigger('change:value');\n  });\n  $('[data-toggle=\"wizard-checkbox\"]').click(function () {\n    if ($(this).hasClass('active')) {\n      $(this).removeClass('active');\n      $(this).find('[type=\"checkbox\"]').prop('checked', false);\n    } else {\n      $(this).addClass('active');\n      $(this).find('[type=\"checkbox\"]').prop('checked', true);\n    }\n    $(this).trigger('change:value');\n  });\n  $('.set-full-height').css('height', 'auto');\n});\n\n//Function to show image before upload\n\nfunction readURL(input) {\n  if (input.files && input.files[0]) {\n    var reader = new FileReader();\n    reader.onload = function (e) {\n      $('#wizardPicturePreview').attr('src', e.target.result).fadeIn('slow');\n    };\n    reader.readAsDataURL(input.files[0]);\n  }\n}\n$(window).resize(function () {\n  $('.wizard-card').each(function () {\n    var $wizard = $(this),\n      index = $wizard.bootstrapWizard('currentIndex');\n    refreshAnimation($wizard, index);\n    $('.moving-tab').css({\n      'transition': 'transform 0s'\n    });\n  });\n});\nfunction refreshAnimation($wizard, index) {\n  var total_steps = $wizard.find('li').length,\n    move_distance = $wizard.width() / total_steps,\n    step_width = move_distance;\n  move_distance *= index;\n  $wizard.find('.moving-tab').css('width', step_width);\n  $('.moving-tab').css({\n    'transform': 'translate3d(' + move_distance + 'px, 0, 0)',\n    'transition': 'all 0.3s ease-out'\n  });\n}\nfunction debounce(func, wait, immediate) {\n  var timeout;\n  return function () {\n    var context = this,\n      args = arguments;\n    clearTimeout(timeout);\n    timeout = setTimeout(function () {\n      timeout = null;\n      if (!immediate) func.apply(context, args);\n    }, wait);\n    if (immediate && !timeout) func.apply(context, args);\n  };\n}\n;\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/gsdk-bootstrap-wizard.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/jasny-bootstrap.min.js":
/*!****************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/jasny-bootstrap.min.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*!\n * Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap)\n * Copyright 2012-2014 Arnold Daniels\n * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE)\n */\nif (\"undefined\" == typeof jQuery) throw new Error(\"Jasny Bootstrap's JavaScript requires jQuery\");\n+function (a) {\n  \"use strict\";\n\n  function b() {\n    var a = document.createElement(\"bootstrap\"),\n      b = {\n        WebkitTransition: \"webkitTransitionEnd\",\n        MozTransition: \"transitionend\",\n        OTransition: \"oTransitionEnd otransitionend\",\n        transition: \"transitionend\"\n      };\n    for (var c in b) if (void 0 !== a.style[c]) return {\n      end: b[c]\n    };\n    return !1;\n  }\n  void 0 === a.support.transition && (a.fn.emulateTransitionEnd = function (b) {\n    var c = !1,\n      d = this;\n    a(this).one(a.support.transition.end, function () {\n      c = !0;\n    });\n    var e = function e() {\n      c || a(d).trigger(a.support.transition.end);\n    };\n    return setTimeout(e, b), this;\n  }, a(function () {\n    a.support.transition = b();\n  }));\n}(window.jQuery), +function (a) {\n  \"use strict\";\n\n  var b = function b(c, d) {\n    this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.state = null, this.placement = null, this.options.recalc && (this.calcClone(), a(window).on(\"resize\", a.proxy(this.recalc, this))), this.options.autohide && a(document).on(\"click\", a.proxy(this.autohide, this)), this.options.toggle && this.toggle(), this.options.disablescrolling && (this.options.disableScrolling = this.options.disablescrolling, delete this.options.disablescrolling);\n  };\n  b.DEFAULTS = {\n    toggle: !0,\n    placement: \"auto\",\n    autohide: !0,\n    recalc: !0,\n    disableScrolling: !0\n  }, b.prototype.offset = function () {\n    switch (this.placement) {\n      case \"left\":\n      case \"right\":\n        return this.$element.outerWidth();\n      case \"top\":\n      case \"bottom\":\n        return this.$element.outerHeight();\n    }\n  }, b.prototype.calcPlacement = function () {\n    function b(a, b) {\n      if (\"auto\" === e.css(b)) return a;\n      if (\"auto\" === e.css(a)) return b;\n      var c = parseInt(e.css(a), 10),\n        d = parseInt(e.css(b), 10);\n      return c > d ? b : a;\n    }\n    if (\"auto\" !== this.options.placement) return void (this.placement = this.options.placement);\n    this.$element.hasClass(\"in\") || this.$element.css(\"visiblity\", \"hidden !important\").addClass(\"in\");\n    var c = a(window).width() / this.$element.width(),\n      d = a(window).height() / this.$element.height(),\n      e = this.$element;\n    this.placement = c >= d ? b(\"left\", \"right\") : b(\"top\", \"bottom\"), \"hidden !important\" === this.$element.css(\"visibility\") && this.$element.removeClass(\"in\").css(\"visiblity\", \"\");\n  }, b.prototype.opposite = function (a) {\n    switch (a) {\n      case \"top\":\n        return \"bottom\";\n      case \"left\":\n        return \"right\";\n      case \"bottom\":\n        return \"top\";\n      case \"right\":\n        return \"left\";\n    }\n  }, b.prototype.getCanvasElements = function () {\n    var b = this.options.canvas ? a(this.options.canvas) : this.$element,\n      c = b.find(\"*\").filter(function () {\n        return \"fixed\" === a(this).css(\"position\");\n      }).not(this.options.exclude);\n    return b.add(c);\n  }, b.prototype.slide = function (b, c, d) {\n    if (!a.support.transition) {\n      var e = {};\n      return e[this.placement] = \"+=\" + c, b.animate(e, 350, d);\n    }\n    var f = this.placement,\n      g = this.opposite(f);\n    b.each(function () {\n      \"auto\" !== a(this).css(f) && a(this).css(f, (parseInt(a(this).css(f), 10) || 0) + c), \"auto\" !== a(this).css(g) && a(this).css(g, (parseInt(a(this).css(g), 10) || 0) - c);\n    }), this.$element.one(a.support.transition.end, d).emulateTransitionEnd(350);\n  }, b.prototype.disableScrolling = function () {\n    var b = a(\"body\").width(),\n      c = \"padding-\" + this.opposite(this.placement);\n    if (void 0 === a(\"body\").data(\"offcanvas-style\") && a(\"body\").data(\"offcanvas-style\", a(\"body\").attr(\"style\") || \"\"), a(\"body\").css(\"overflow\", \"hidden\"), a(\"body\").width() > b) {\n      var d = parseInt(a(\"body\").css(c), 10) + a(\"body\").width() - b;\n      setTimeout(function () {\n        a(\"body\").css(c, d);\n      }, 1);\n    }\n  }, b.prototype.show = function () {\n    if (!this.state) {\n      var b = a.Event(\"show.bs.offcanvas\");\n      if (this.$element.trigger(b), !b.isDefaultPrevented()) {\n        this.state = \"slide-in\", this.calcPlacement();\n        var c = this.getCanvasElements(),\n          d = this.placement,\n          e = this.opposite(d),\n          f = this.offset();\n        -1 !== c.index(this.$element) && (a(this.$element).data(\"offcanvas-style\", a(this.$element).attr(\"style\") || \"\"), this.$element.css(d, -1 * f), this.$element.css(d)), c.addClass(\"canvas-sliding\").each(function () {\n          void 0 === a(this).data(\"offcanvas-style\") && a(this).data(\"offcanvas-style\", a(this).attr(\"style\") || \"\"), \"static\" === a(this).css(\"position\") && a(this).css(\"position\", \"relative\"), \"auto\" !== a(this).css(d) && \"0px\" !== a(this).css(d) || \"auto\" !== a(this).css(e) && \"0px\" !== a(this).css(e) || a(this).css(d, 0);\n        }), this.options.disableScrolling && this.disableScrolling();\n        var g = function g() {\n          \"slide-in\" == this.state && (this.state = \"slid\", c.removeClass(\"canvas-sliding\").addClass(\"canvas-slid\"), this.$element.trigger(\"shown.bs.offcanvas\"));\n        };\n        setTimeout(a.proxy(function () {\n          this.$element.addClass(\"in\"), this.slide(c, f, a.proxy(g, this));\n        }, this), 1);\n      }\n    }\n  }, b.prototype.hide = function () {\n    if (\"slid\" === this.state) {\n      var b = a.Event(\"hide.bs.offcanvas\");\n      if (this.$element.trigger(b), !b.isDefaultPrevented()) {\n        this.state = \"slide-out\";\n        var c = a(\".canvas-slid\"),\n          d = (this.placement, -1 * this.offset()),\n          e = function e() {\n            \"slide-out\" == this.state && (this.state = null, this.placement = null, this.$element.removeClass(\"in\"), c.removeClass(\"canvas-sliding\"), c.add(this.$element).add(\"body\").each(function () {\n              a(this).attr(\"style\", a(this).data(\"offcanvas-style\")).removeData(\"offcanvas-style\");\n            }), this.$element.trigger(\"hidden.bs.offcanvas\"));\n          };\n        c.removeClass(\"canvas-slid\").addClass(\"canvas-sliding\"), setTimeout(a.proxy(function () {\n          this.slide(c, d, a.proxy(e, this));\n        }, this), 1);\n      }\n    }\n  }, b.prototype.toggle = function () {\n    \"slide-in\" !== this.state && \"slide-out\" !== this.state && this[\"slid\" === this.state ? \"hide\" : \"show\"]();\n  }, b.prototype.calcClone = function () {\n    this.$calcClone = this.$element.clone().html(\"\").addClass(\"offcanvas-clone\").removeClass(\"in\").appendTo(a(\"body\"));\n  }, b.prototype.recalc = function () {\n    if (\"none\" !== this.$calcClone.css(\"display\") && (\"slid\" === this.state || \"slide-in\" === this.state)) {\n      this.state = null, this.placement = null;\n      var b = this.getCanvasElements();\n      this.$element.removeClass(\"in\"), b.removeClass(\"canvas-slid\"), b.add(this.$element).add(\"body\").each(function () {\n        a(this).attr(\"style\", a(this).data(\"offcanvas-style\")).removeData(\"offcanvas-style\");\n      });\n    }\n  }, b.prototype.autohide = function (b) {\n    0 === a(b.target).closest(this.$element).length && this.hide();\n  };\n  var c = a.fn.offcanvas;\n  a.fn.offcanvas = function (c) {\n    return this.each(function () {\n      var d = a(this),\n        e = d.data(\"bs.offcanvas\"),\n        f = a.extend({}, b.DEFAULTS, d.data(), \"object\" == _typeof(c) && c);\n      e || d.data(\"bs.offcanvas\", e = new b(this, f)), \"string\" == typeof c && e[c]();\n    });\n  }, a.fn.offcanvas.Constructor = b, a.fn.offcanvas.noConflict = function () {\n    return a.fn.offcanvas = c, this;\n  }, a(document).on(\"click.bs.offcanvas.data-api\", \"[data-toggle=offcanvas]\", function (b) {\n    var c,\n      d = a(this),\n      e = d.attr(\"data-target\") || b.preventDefault() || (c = d.attr(\"href\")) && c.replace(/.*(?=#[^\\s]+$)/, \"\"),\n      f = a(e),\n      g = f.data(\"bs.offcanvas\"),\n      h = g ? \"toggle\" : d.data();\n    b.stopPropagation(), g ? g.toggle() : f.offcanvas(h);\n  });\n}(window.jQuery), +function (a) {\n  \"use strict\";\n\n  var b = function b(c, d) {\n    this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.$element.on(\"click.bs.rowlink\", \"td:not(.rowlink-skip)\", a.proxy(this.click, this));\n  };\n  b.DEFAULTS = {\n    target: \"a\"\n  }, b.prototype.click = function (b) {\n    var c = a(b.currentTarget).closest(\"tr\").find(this.options.target)[0];\n    if (a(b.target)[0] !== c) if (b.preventDefault(), c.click) c.click();else if (document.createEvent) {\n      var d = document.createEvent(\"MouseEvents\");\n      d.initMouseEvent(\"click\", !0, !0, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), c.dispatchEvent(d);\n    }\n  };\n  var c = a.fn.rowlink;\n  a.fn.rowlink = function (c) {\n    return this.each(function () {\n      var d = a(this),\n        e = d.data(\"bs.rowlink\");\n      e || d.data(\"bs.rowlink\", e = new b(this, c));\n    });\n  }, a.fn.rowlink.Constructor = b, a.fn.rowlink.noConflict = function () {\n    return a.fn.rowlink = c, this;\n  }, a(document).on(\"click.bs.rowlink.data-api\", '[data-link=\"row\"]', function (b) {\n    if (0 === a(b.target).closest(\".rowlink-skip\").length) {\n      var c = a(this);\n      c.data(\"bs.rowlink\") || (c.rowlink(c.data()), a(b.target).trigger(\"click.bs.rowlink\"));\n    }\n  });\n}(window.jQuery), +function (a) {\n  \"use strict\";\n\n  var b = void 0 !== window.orientation,\n    c = navigator.userAgent.toLowerCase().indexOf(\"android\") > -1,\n    d = \"Microsoft Internet Explorer\" == window.navigator.appName,\n    e = function e(b, d) {\n      c || (this.$element = a(b), this.options = a.extend({}, e.DEFAULTS, d), this.mask = String(this.options.mask), this.init(), this.listen(), this.checkVal());\n    };\n  e.DEFAULTS = {\n    mask: \"\",\n    placeholder: \"_\",\n    definitions: {\n      9: \"[0-9]\",\n      a: \"[A-Za-z]\",\n      w: \"[A-Za-z0-9]\",\n      \"*\": \".\"\n    }\n  }, e.prototype.init = function () {\n    var b = this.options.definitions,\n      c = this.mask.length;\n    this.tests = [], this.partialPosition = this.mask.length, this.firstNonMaskPos = null, a.each(this.mask.split(\"\"), a.proxy(function (a, d) {\n      \"?\" == d ? (c--, this.partialPosition = a) : b[d] ? (this.tests.push(new RegExp(b[d])), null === this.firstNonMaskPos && (this.firstNonMaskPos = this.tests.length - 1)) : this.tests.push(null);\n    }, this)), this.buffer = a.map(this.mask.split(\"\"), a.proxy(function (a) {\n      return \"?\" != a ? b[a] ? this.options.placeholder : a : void 0;\n    }, this)), this.focusText = this.$element.val(), this.$element.data(\"rawMaskFn\", a.proxy(function () {\n      return a.map(this.buffer, function (a, b) {\n        return this.tests[b] && a != this.options.placeholder ? a : null;\n      }).join(\"\");\n    }, this));\n  }, e.prototype.listen = function () {\n    if (!this.$element.attr(\"readonly\")) {\n      var b = (d ? \"paste\" : \"input\") + \".mask\";\n      this.$element.on(\"unmask.bs.inputmask\", a.proxy(this.unmask, this)).on(\"focus.bs.inputmask\", a.proxy(this.focusEvent, this)).on(\"blur.bs.inputmask\", a.proxy(this.blurEvent, this)).on(\"keydown.bs.inputmask\", a.proxy(this.keydownEvent, this)).on(\"keypress.bs.inputmask\", a.proxy(this.keypressEvent, this)).on(b, a.proxy(this.pasteEvent, this));\n    }\n  }, e.prototype.caret = function (a, b) {\n    if (0 !== this.$element.length) {\n      if (\"number\" == typeof a) return b = \"number\" == typeof b ? b : a, this.$element.each(function () {\n        if (this.setSelectionRange) this.setSelectionRange(a, b);else if (this.createTextRange) {\n          var c = this.createTextRange();\n          c.collapse(!0), c.moveEnd(\"character\", b), c.moveStart(\"character\", a), c.select();\n        }\n      });\n      if (this.$element[0].setSelectionRange) a = this.$element[0].selectionStart, b = this.$element[0].selectionEnd;else if (document.selection && document.selection.createRange) {\n        var c = document.selection.createRange();\n        a = 0 - c.duplicate().moveStart(\"character\", -1e5), b = a + c.text.length;\n      }\n      return {\n        begin: a,\n        end: b\n      };\n    }\n  }, e.prototype.seekNext = function (a) {\n    for (var b = this.mask.length; ++a <= b && !this.tests[a];);\n    return a;\n  }, e.prototype.seekPrev = function (a) {\n    for (; --a >= 0 && !this.tests[a];);\n    return a;\n  }, e.prototype.shiftL = function (a, b) {\n    var c = this.mask.length;\n    if (!(0 > a)) {\n      for (var d = a, e = this.seekNext(b); c > d; d++) if (this.tests[d]) {\n        if (!(c > e && this.tests[d].test(this.buffer[e]))) break;\n        this.buffer[d] = this.buffer[e], this.buffer[e] = this.options.placeholder, e = this.seekNext(e);\n      }\n      this.writeBuffer(), this.caret(Math.max(this.firstNonMaskPos, a));\n    }\n  }, e.prototype.shiftR = function (a) {\n    for (var b = this.mask.length, c = a, d = this.options.placeholder; b > c; c++) if (this.tests[c]) {\n      var e = this.seekNext(c),\n        f = this.buffer[c];\n      if (this.buffer[c] = d, !(b > e && this.tests[e].test(f))) break;\n      d = f;\n    }\n  }, e.prototype.unmask = function () {\n    this.$element.unbind(\".mask\").removeData(\"inputmask\");\n  }, e.prototype.focusEvent = function () {\n    this.focusText = this.$element.val();\n    var a = this.mask.length,\n      b = this.checkVal();\n    this.writeBuffer();\n    var c = this,\n      d = function d() {\n        b == a ? c.caret(0, b) : c.caret(b);\n      };\n    d(), setTimeout(d, 50);\n  }, e.prototype.blurEvent = function () {\n    this.checkVal(), this.$element.val() !== this.focusText && this.$element.trigger(\"change\");\n  }, e.prototype.keydownEvent = function (a) {\n    var c = a.which;\n    if (8 == c || 46 == c || b && 127 == c) {\n      var d = this.caret(),\n        e = d.begin,\n        f = d.end;\n      return f - e === 0 && (e = 46 != c ? this.seekPrev(e) : f = this.seekNext(e - 1), f = 46 == c ? this.seekNext(f) : f), this.clearBuffer(e, f), this.shiftL(e, f - 1), !1;\n    }\n    return 27 == c ? (this.$element.val(this.focusText), this.caret(0, this.checkVal()), !1) : void 0;\n  }, e.prototype.keypressEvent = function (a) {\n    var b = this.mask.length,\n      c = a.which,\n      d = this.caret();\n    if (a.ctrlKey || a.altKey || a.metaKey || 32 > c) return !0;\n    if (c) {\n      d.end - d.begin !== 0 && (this.clearBuffer(d.begin, d.end), this.shiftL(d.begin, d.end - 1));\n      var e = this.seekNext(d.begin - 1);\n      if (b > e) {\n        var f = String.fromCharCode(c);\n        if (this.tests[e].test(f)) {\n          this.shiftR(e), this.buffer[e] = f, this.writeBuffer();\n          var g = this.seekNext(e);\n          this.caret(g);\n        }\n      }\n      return !1;\n    }\n  }, e.prototype.pasteEvent = function () {\n    var a = this;\n    setTimeout(function () {\n      a.caret(a.checkVal(!0));\n    }, 0);\n  }, e.prototype.clearBuffer = function (a, b) {\n    for (var c = this.mask.length, d = a; b > d && c > d; d++) this.tests[d] && (this.buffer[d] = this.options.placeholder);\n  }, e.prototype.writeBuffer = function () {\n    return this.$element.val(this.buffer.join(\"\")).val();\n  }, e.prototype.checkVal = function (a) {\n    for (var b = this.mask.length, c = this.$element.val(), d = -1, e = 0, f = 0; b > e; e++) if (this.tests[e]) {\n      for (this.buffer[e] = this.options.placeholder; f++ < c.length;) {\n        var g = c.charAt(f - 1);\n        if (this.tests[e].test(g)) {\n          this.buffer[e] = g, d = e;\n          break;\n        }\n      }\n      if (f > c.length) break;\n    } else this.buffer[e] == c.charAt(f) && e != this.partialPosition && (f++, d = e);\n    return !a && d + 1 < this.partialPosition ? (this.$element.val(\"\"), this.clearBuffer(0, b)) : (a || d + 1 >= this.partialPosition) && (this.writeBuffer(), a || this.$element.val(this.$element.val().substring(0, d + 1))), this.partialPosition ? e : this.firstNonMaskPos;\n  };\n  var f = a.fn.inputmask;\n  a.fn.inputmask = function (b) {\n    return this.each(function () {\n      var c = a(this),\n        d = c.data(\"bs.inputmask\");\n      d || c.data(\"bs.inputmask\", d = new e(this, b));\n    });\n  }, a.fn.inputmask.Constructor = e, a.fn.inputmask.noConflict = function () {\n    return a.fn.inputmask = f, this;\n  }, a(document).on(\"focus.bs.inputmask.data-api\", \"[data-mask]\", function () {\n    var b = a(this);\n    b.data(\"bs.inputmask\") || b.inputmask(b.data());\n  });\n}(window.jQuery), +function (a) {\n  \"use strict\";\n\n  var b = \"Microsoft Internet Explorer\" == window.navigator.appName,\n    c = function c(b, _c) {\n      if (this.$element = a(b), this.$input = this.$element.find(\":file\"), 0 !== this.$input.length) {\n        this.name = this.$input.attr(\"name\") || _c.name, this.$hidden = this.$element.find('input[type=hidden][name=\"' + this.name + '\"]'), 0 === this.$hidden.length && (this.$hidden = a('<input type=\"hidden\">').insertBefore(this.$input)), this.$preview = this.$element.find(\".fileinput-preview\");\n        var d = this.$preview.css(\"height\");\n        \"inline\" !== this.$preview.css(\"display\") && \"0px\" !== d && \"none\" !== d && this.$preview.css(\"line-height\", d), this.original = {\n          exists: this.$element.hasClass(\"fileinput-exists\"),\n          preview: this.$preview.html(),\n          hiddenVal: this.$hidden.val()\n        }, this.listen();\n      }\n    };\n  c.prototype.listen = function () {\n    this.$input.on(\"change.bs.fileinput\", a.proxy(this.change, this)), a(this.$input[0].form).on(\"reset.bs.fileinput\", a.proxy(this.reset, this)), this.$element.find('[data-trigger=\"fileinput\"]').on(\"click.bs.fileinput\", a.proxy(this.trigger, this)), this.$element.find('[data-dismiss=\"fileinput\"]').on(\"click.bs.fileinput\", a.proxy(this.clear, this));\n  }, c.prototype.change = function (b) {\n    var c = void 0 === b.target.files ? b.target && b.target.value ? [{\n      name: b.target.value.replace(/^.+\\\\/, \"\")\n    }] : [] : b.target.files;\n    if (b.stopPropagation(), 0 === c.length) return void this.clear();\n    this.$hidden.val(\"\"), this.$hidden.attr(\"name\", \"\"), this.$input.attr(\"name\", this.name);\n    var d = c[0];\n    if (this.$preview.length > 0 && (\"undefined\" != typeof d.type ? d.type.match(/^image\\/(gif|png|jpeg)$/) : d.name.match(/\\.(gif|png|jpe?g)$/i)) && \"undefined\" != typeof FileReader) {\n      var e = new FileReader(),\n        f = this.$preview,\n        g = this.$element;\n      e.onload = function (b) {\n        var e = a(\"<img>\");\n        e[0].src = b.target.result, c[0].result = b.target.result, g.find(\".fileinput-filename\").text(d.name), \"none\" != f.css(\"max-height\") && e.css(\"max-height\", parseInt(f.css(\"max-height\"), 10) - parseInt(f.css(\"padding-top\"), 10) - parseInt(f.css(\"padding-bottom\"), 10) - parseInt(f.css(\"border-top\"), 10) - parseInt(f.css(\"border-bottom\"), 10)), f.html(e), g.addClass(\"fileinput-exists\").removeClass(\"fileinput-new\"), g.trigger(\"change.bs.fileinput\", c);\n      }, e.readAsDataURL(d);\n    } else this.$element.find(\".fileinput-filename\").text(d.name), this.$preview.text(d.name), this.$element.addClass(\"fileinput-exists\").removeClass(\"fileinput-new\"), this.$element.trigger(\"change.bs.fileinput\");\n  }, c.prototype.clear = function (a) {\n    if (a && a.preventDefault(), this.$hidden.val(\"\"), this.$hidden.attr(\"name\", this.name), this.$input.attr(\"name\", \"\"), b) {\n      var c = this.$input.clone(!0);\n      this.$input.after(c), this.$input.remove(), this.$input = c;\n    } else this.$input.val(\"\");\n    this.$preview.html(\"\"), this.$element.find(\".fileinput-filename\").text(\"\"), this.$element.addClass(\"fileinput-new\").removeClass(\"fileinput-exists\"), void 0 !== a && (this.$input.trigger(\"change\"), this.$element.trigger(\"clear.bs.fileinput\"));\n  }, c.prototype.reset = function () {\n    this.clear(), this.$hidden.val(this.original.hiddenVal), this.$preview.html(this.original.preview), this.$element.find(\".fileinput-filename\").text(\"\"), this.original.exists ? this.$element.addClass(\"fileinput-exists\").removeClass(\"fileinput-new\") : this.$element.addClass(\"fileinput-new\").removeClass(\"fileinput-exists\"), this.$element.trigger(\"reset.bs.fileinput\");\n  }, c.prototype.trigger = function (a) {\n    this.$input.trigger(\"click\"), a.preventDefault();\n  };\n  var d = a.fn.fileinput;\n  a.fn.fileinput = function (b) {\n    return this.each(function () {\n      var d = a(this),\n        e = d.data(\"bs.fileinput\");\n      e || d.data(\"bs.fileinput\", e = new c(this, b)), \"string\" == typeof b && e[b]();\n    });\n  }, a.fn.fileinput.Constructor = c, a.fn.fileinput.noConflict = function () {\n    return a.fn.fileinput = d, this;\n  }, a(document).on(\"click.fileinput.data-api\", '[data-provides=\"fileinput\"]', function (b) {\n    var c = a(this);\n    if (!c.data(\"bs.fileinput\")) {\n      c.fileinput(c.data());\n      var d = a(b.target).closest('[data-dismiss=\"fileinput\"],[data-trigger=\"fileinput\"]');\n      d.length > 0 && (b.preventDefault(), d.trigger(\"click.bs.fileinput\"));\n    }\n  });\n}(window.jQuery);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jasny-bootstrap.min.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/jquery-jvectormap.js":
/*!**************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/jquery-jvectormap.js ***!
  \**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/**\n * jVectorMap version 2.0.4\n *\n * Copyright 2011-2014, Kirill Lebedev\n *\n */\n\n(function ($) {\n  var apiParams = {\n    set: {\n      colors: 1,\n      values: 1,\n      backgroundColor: 1,\n      scaleColors: 1,\n      normalizeFunction: 1,\n      focus: 1\n    },\n    get: {\n      selectedRegions: 1,\n      selectedMarkers: 1,\n      mapObject: 1,\n      regionName: 1\n    }\n  };\n  $.fn.vectorMap = function (options) {\n    var map,\n      methodName,\n      map = this.children('.jvectormap-container').data('mapObject');\n    if (options === 'addMap') {\n      jvm.Map.maps[arguments[1]] = arguments[2];\n    } else if ((options === 'set' || options === 'get') && apiParams[options][arguments[1]]) {\n      methodName = arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1);\n      return map[options + methodName].apply(map, Array.prototype.slice.call(arguments, 2));\n    } else {\n      options = options || {};\n      options.container = this;\n      map = new jvm.Map(options);\n    }\n    return this;\n  };\n})(jQuery);\n/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Version: 3.1.9\n *\n * Requires: jQuery 1.2.2+\n */\n\n(function (factory) {\n  if (true) {\n    // AMD. Register as an anonymous module.\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n})(function ($) {\n  var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n    toBind = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n    slice = Array.prototype.slice,\n    nullLowestDeltaTimeout,\n    lowestDelta;\n  if ($.event.fixHooks) {\n    for (var i = toFix.length; i;) {\n      $.event.fixHooks[toFix[--i]] = $.event.mouseHooks;\n    }\n  }\n  var special = $.event.special.mousewheel = {\n    version: '3.1.9',\n    setup: function setup() {\n      if (this.addEventListener) {\n        for (var i = toBind.length; i;) {\n          this.addEventListener(toBind[--i], handler, false);\n        }\n      } else {\n        this.onmousewheel = handler;\n      }\n      // Store the line height and page height for this particular element\n      $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n      $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n    },\n    teardown: function teardown() {\n      if (this.removeEventListener) {\n        for (var i = toBind.length; i;) {\n          this.removeEventListener(toBind[--i], handler, false);\n        }\n      } else {\n        this.onmousewheel = null;\n      }\n    },\n    getLineHeight: function getLineHeight(elem) {\n      return parseInt($(elem)['offsetParent' in $.fn ? 'offsetParent' : 'parent']().css('fontSize'), 10);\n    },\n    getPageHeight: function getPageHeight(elem) {\n      return $(elem).height();\n    },\n    settings: {\n      adjustOldDeltas: true\n    }\n  };\n  $.fn.extend({\n    mousewheel: function mousewheel(fn) {\n      return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n    },\n    unmousewheel: function unmousewheel(fn) {\n      return this.unbind('mousewheel', fn);\n    }\n  });\n  function handler(event) {\n    var orgEvent = event || window.event,\n      args = slice.call(arguments, 1),\n      delta = 0,\n      deltaX = 0,\n      deltaY = 0,\n      absDelta = 0;\n    event = $.event.fix(orgEvent);\n    event.type = 'mousewheel';\n\n    // Old school scrollwheel delta\n    if ('detail' in orgEvent) {\n      deltaY = orgEvent.detail * -1;\n    }\n    if ('wheelDelta' in orgEvent) {\n      deltaY = orgEvent.wheelDelta;\n    }\n    if ('wheelDeltaY' in orgEvent) {\n      deltaY = orgEvent.wheelDeltaY;\n    }\n    if ('wheelDeltaX' in orgEvent) {\n      deltaX = orgEvent.wheelDeltaX * -1;\n    }\n\n    // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n    if ('axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) {\n      deltaX = deltaY * -1;\n      deltaY = 0;\n    }\n\n    // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n    delta = deltaY === 0 ? deltaX : deltaY;\n\n    // New school wheel delta (wheel event)\n    if ('deltaY' in orgEvent) {\n      deltaY = orgEvent.deltaY * -1;\n      delta = deltaY;\n    }\n    if ('deltaX' in orgEvent) {\n      deltaX = orgEvent.deltaX;\n      if (deltaY === 0) {\n        delta = deltaX * -1;\n      }\n    }\n\n    // No change actually happened, no reason to go any further\n    if (deltaY === 0 && deltaX === 0) {\n      return;\n    }\n\n    // Need to convert lines and pages to pixels if we aren't already in pixels\n    // There are three delta modes:\n    //   * deltaMode 0 is by pixels, nothing to do\n    //   * deltaMode 1 is by lines\n    //   * deltaMode 2 is by pages\n    if (orgEvent.deltaMode === 1) {\n      var lineHeight = $.data(this, 'mousewheel-line-height');\n      delta *= lineHeight;\n      deltaY *= lineHeight;\n      deltaX *= lineHeight;\n    } else if (orgEvent.deltaMode === 2) {\n      var pageHeight = $.data(this, 'mousewheel-page-height');\n      delta *= pageHeight;\n      deltaY *= pageHeight;\n      deltaX *= pageHeight;\n    }\n\n    // Store lowest absolute delta to normalize the delta values\n    absDelta = Math.max(Math.abs(deltaY), Math.abs(deltaX));\n    if (!lowestDelta || absDelta < lowestDelta) {\n      lowestDelta = absDelta;\n\n      // Adjust older deltas if necessary\n      if (shouldAdjustOldDeltas(orgEvent, absDelta)) {\n        lowestDelta /= 40;\n      }\n    }\n\n    // Adjust older deltas if necessary\n    if (shouldAdjustOldDeltas(orgEvent, absDelta)) {\n      // Divide all the things by 40!\n      delta /= 40;\n      deltaX /= 40;\n      deltaY /= 40;\n    }\n\n    // Get a whole, normalized value for the deltas\n    delta = Math[delta >= 1 ? 'floor' : 'ceil'](delta / lowestDelta);\n    deltaX = Math[deltaX >= 1 ? 'floor' : 'ceil'](deltaX / lowestDelta);\n    deltaY = Math[deltaY >= 1 ? 'floor' : 'ceil'](deltaY / lowestDelta);\n\n    // Add information to the event object\n    event.deltaX = deltaX;\n    event.deltaY = deltaY;\n    event.deltaFactor = lowestDelta;\n    // Go ahead and set deltaMode to 0 since we converted to pixels\n    // Although this is a little odd since we overwrite the deltaX/Y\n    // properties with normalized deltas.\n    event.deltaMode = 0;\n\n    // Add event and delta to the front of the arguments\n    args.unshift(event, delta, deltaX, deltaY);\n\n    // Clearout lowestDelta after sometime to better\n    // handle multiple device types that give different\n    // a different lowestDelta\n    // Ex: trackpad = 3 and mouse wheel = 120\n    if (nullLowestDeltaTimeout) {\n      clearTimeout(nullLowestDeltaTimeout);\n    }\n    nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n    return ($.event.dispatch || $.event.handle).apply(this, args);\n  }\n  function nullLowestDelta() {\n    lowestDelta = null;\n  }\n  function shouldAdjustOldDeltas(orgEvent, absDelta) {\n    // If this is an older event and the delta is divisable by 120,\n    // then we are assuming that the browser is treating this as an\n    // older mouse wheel event and that we should divide the deltas\n    // by 40 to try and get a more usable deltaFactor.\n    // Side note, this actually impacts the reported scroll distance\n    // in older browsers and can cause scrolling to be slower than native.\n    // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n    return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n  }\n}); /**\n    * @namespace jvm Holds core methods and classes used by jVectorMap.\n    */\nvar jvm = {\n  /**\n   * Inherits child's prototype from the parent's one.\n   * @param {Function} child\n   * @param {Function} parent\n   */\n  inherits: function inherits(child, parent) {\n    function temp() {}\n    temp.prototype = parent.prototype;\n    child.prototype = new temp();\n    child.prototype.constructor = child;\n    child.parentClass = parent;\n  },\n  /**\n   * Mixes in methods from the source constructor to the target one.\n   * @param {Function} target\n   * @param {Function} source\n   */\n  mixin: function mixin(target, source) {\n    var prop;\n    for (prop in source.prototype) {\n      if (source.prototype.hasOwnProperty(prop)) {\n        target.prototype[prop] = source.prototype[prop];\n      }\n    }\n  },\n  min: function min(values) {\n    var min = Number.MAX_VALUE,\n      i;\n    if (values instanceof Array) {\n      for (i = 0; i < values.length; i++) {\n        if (values[i] < min) {\n          min = values[i];\n        }\n      }\n    } else {\n      for (i in values) {\n        if (values[i] < min) {\n          min = values[i];\n        }\n      }\n    }\n    return min;\n  },\n  max: function max(values) {\n    var max = Number.MIN_VALUE,\n      i;\n    if (values instanceof Array) {\n      for (i = 0; i < values.length; i++) {\n        if (values[i] > max) {\n          max = values[i];\n        }\n      }\n    } else {\n      for (i in values) {\n        if (values[i] > max) {\n          max = values[i];\n        }\n      }\n    }\n    return max;\n  },\n  keys: function keys(object) {\n    var keys = [],\n      key;\n    for (key in object) {\n      keys.push(key);\n    }\n    return keys;\n  },\n  values: function values(object) {\n    var values = [],\n      key,\n      i;\n    for (i = 0; i < arguments.length; i++) {\n      object = arguments[i];\n      for (key in object) {\n        values.push(object[key]);\n      }\n    }\n    return values;\n  },\n  whenImageLoaded: function whenImageLoaded(url) {\n    var deferred = new jvm.$.Deferred(),\n      img = jvm.$('<img/>');\n    img.error(function () {\n      deferred.reject();\n    }).load(function () {\n      deferred.resolve(img);\n    });\n    img.attr('src', url);\n    return deferred;\n  },\n  isImageUrl: function isImageUrl(s) {\n    return /\\.\\w{3,4}$/.test(s);\n  }\n};\njvm.$ = jQuery;\n\n/**\n * indexOf polyfill for IE < 9\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf\n */\nif (!Array.prototype.indexOf) {\n  Array.prototype.indexOf = function (searchElement, fromIndex) {\n    var k;\n\n    // 1. Let O be the result of calling ToObject passing\n    //    the this value as the argument.\n    if (this == null) {\n      throw new TypeError('\"this\" is null or not defined');\n    }\n    var O = Object(this);\n\n    // 2. Let lenValue be the result of calling the Get\n    //    internal method of O with the argument \"length\".\n    // 3. Let len be ToUint32(lenValue).\n    var len = O.length >>> 0;\n\n    // 4. If len is 0, return -1.\n    if (len === 0) {\n      return -1;\n    }\n\n    // 5. If argument fromIndex was passed let n be\n    //    ToInteger(fromIndex); else let n be 0.\n    var n = +fromIndex || 0;\n    if (Math.abs(n) === Infinity) {\n      n = 0;\n    }\n\n    // 6. If n >= len, return -1.\n    if (n >= len) {\n      return -1;\n    }\n\n    // 7. If n >= 0, then Let k be n.\n    // 8. Else, n<0, Let k be len - abs(n).\n    //    If k is less than 0, then let k be 0.\n    k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n    // 9. Repeat, while k < len\n    while (k < len) {\n      // a. Let Pk be ToString(k).\n      //   This is implicit for LHS operands of the in operator\n      // b. Let kPresent be the result of calling the\n      //    HasProperty internal method of O with argument Pk.\n      //   This step can be combined with c\n      // c. If kPresent is true, then\n      //    i.  Let elementK be the result of calling the Get\n      //        internal method of O with the argument ToString(k).\n      //   ii.  Let same be the result of applying the\n      //        Strict Equality Comparison Algorithm to\n      //        searchElement and elementK.\n      //  iii.  If same is true, return k.\n      if (k in O && O[k] === searchElement) {\n        return k;\n      }\n      k++;\n    }\n    return -1;\n  };\n} /**\n  * Basic wrapper for DOM element.\n  * @constructor\n  * @param {String} name Tag name of the element\n  * @param {Object} config Set of parameters to initialize element with\n  */\njvm.AbstractElement = function (name, config) {\n  /**\n   * Underlying DOM element\n   * @type {DOMElement}\n   * @private\n   */\n  this.node = this.createElement(name);\n\n  /**\n   * Name of underlying element\n   * @type {String}\n   * @private\n   */\n  this.name = name;\n\n  /**\n   * Internal store of attributes\n   * @type {Object}\n   * @private\n   */\n  this.properties = {};\n  if (config) {\n    this.set(config);\n  }\n};\n\n/**\n * Set attribute of the underlying DOM element.\n * @param {String} name Name of attribute\n * @param {Number|String} config Set of parameters to initialize element with\n */\njvm.AbstractElement.prototype.set = function (property, value) {\n  var key;\n  if (_typeof(property) === 'object') {\n    for (key in property) {\n      this.properties[key] = property[key];\n      this.applyAttr(key, property[key]);\n    }\n  } else {\n    this.properties[property] = value;\n    this.applyAttr(property, value);\n  }\n};\n\n/**\n * Returns value of attribute.\n * @param {String} name Name of attribute\n */\njvm.AbstractElement.prototype.get = function (property) {\n  return this.properties[property];\n};\n\n/**\n * Applies attribute value to the underlying DOM element.\n * @param {String} name Name of attribute\n * @param {Number|String} config Value of attribute to apply\n * @private\n */\njvm.AbstractElement.prototype.applyAttr = function (property, value) {\n  this.node.setAttribute(property, value);\n};\njvm.AbstractElement.prototype.remove = function () {\n  jvm.$(this.node).remove();\n}; /**\n   * Implements abstract vector canvas.\n   * @constructor\n   * @param {HTMLElement} container Container to put element to.\n   * @param {Number} width Width of canvas.\n   * @param {Number} height Height of canvas.\n   */\njvm.AbstractCanvasElement = function (container, width, height) {\n  this.container = container;\n  this.setSize(width, height);\n  this.rootElement = new jvm[this.classPrefix + 'GroupElement']();\n  this.node.appendChild(this.rootElement.node);\n  this.container.appendChild(this.node);\n};\n\n/**\n * Add element to the certain group inside of the canvas.\n * @param {HTMLElement} element Element to add to canvas.\n * @param {HTMLElement} group Group to add element into or into root group if not provided.\n */\njvm.AbstractCanvasElement.prototype.add = function (element, group) {\n  group = group || this.rootElement;\n  group.add(element);\n  element.canvas = this;\n};\n\n/**\n * Create path and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add path into.\n */\njvm.AbstractCanvasElement.prototype.addPath = function (config, style, group) {\n  var el = new jvm[this.classPrefix + 'PathElement'](config, style);\n  this.add(el, group);\n  return el;\n};\n\n/**\n * Create circle and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add circle into.\n */\njvm.AbstractCanvasElement.prototype.addCircle = function (config, style, group) {\n  var el = new jvm[this.classPrefix + 'CircleElement'](config, style);\n  this.add(el, group);\n  return el;\n};\n\n/**\n * Create circle and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add circle into.\n */\njvm.AbstractCanvasElement.prototype.addImage = function (config, style, group) {\n  var el = new jvm[this.classPrefix + 'ImageElement'](config, style);\n  this.add(el, group);\n  return el;\n};\n\n/**\n * Create text and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add circle into.\n */\njvm.AbstractCanvasElement.prototype.addText = function (config, style, group) {\n  var el = new jvm[this.classPrefix + 'TextElement'](config, style);\n  this.add(el, group);\n  return el;\n};\n\n/**\n * Add group to the another group inside of the canvas.\n * @param {HTMLElement} group Group to add circle into or root group if not provided.\n */\njvm.AbstractCanvasElement.prototype.addGroup = function (parentGroup) {\n  var el = new jvm[this.classPrefix + 'GroupElement']();\n  if (parentGroup) {\n    parentGroup.node.appendChild(el.node);\n  } else {\n    this.node.appendChild(el.node);\n  }\n  el.canvas = this;\n  return el;\n}; /**\n   * Abstract shape element. Shape element represents some visual vector or raster object.\n   * @constructor\n   * @param {String} name Tag name of the element.\n   * @param {Object} config Set of parameters to initialize element with.\n   * @param {Object} style Object with styles to set on element initialization.\n   */\njvm.AbstractShapeElement = function (name, config, style) {\n  this.style = style || {};\n  this.style.current = this.style.current || {};\n  this.isHovered = false;\n  this.isSelected = false;\n  this.updateStyle();\n};\n\n/**\n * Set element's style.\n * @param {Object|String} property Could be string to set only one property or object to set several style properties at once.\n * @param {String} value Value to set in case only one property should be set.\n */\njvm.AbstractShapeElement.prototype.setStyle = function (property, value) {\n  var styles = {};\n  if (_typeof(property) === 'object') {\n    styles = property;\n  } else {\n    styles[property] = value;\n  }\n  jvm.$.extend(this.style.current, styles);\n  this.updateStyle();\n};\njvm.AbstractShapeElement.prototype.updateStyle = function () {\n  var attrs = {};\n  jvm.AbstractShapeElement.mergeStyles(attrs, this.style.initial);\n  jvm.AbstractShapeElement.mergeStyles(attrs, this.style.current);\n  if (this.isHovered) {\n    jvm.AbstractShapeElement.mergeStyles(attrs, this.style.hover);\n  }\n  if (this.isSelected) {\n    jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selected);\n    if (this.isHovered) {\n      jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selectedHover);\n    }\n  }\n  this.set(attrs);\n};\njvm.AbstractShapeElement.mergeStyles = function (styles, newStyles) {\n  var key;\n  newStyles = newStyles || {};\n  for (key in newStyles) {\n    if (newStyles[key] === null) {\n      delete styles[key];\n    } else {\n      styles[key] = newStyles[key];\n    }\n  }\n}; /**\n   * Wrapper for SVG element.\n   * @constructor\n   * @extends jvm.AbstractElement\n   * @param {String} name Tag name of the element\n   * @param {Object} config Set of parameters to initialize element with\n   */\n\njvm.SVGElement = function (name, config) {\n  jvm.SVGElement.parentClass.apply(this, arguments);\n};\njvm.inherits(jvm.SVGElement, jvm.AbstractElement);\njvm.SVGElement.svgns = \"http://www.w3.org/2000/svg\";\n\n/**\n * Creates DOM element.\n * @param {String} tagName Name of element\n * @private\n * @returns DOMElement\n */\njvm.SVGElement.prototype.createElement = function (tagName) {\n  return document.createElementNS(jvm.SVGElement.svgns, tagName);\n};\n\n/**\n * Adds CSS class for underlying DOM element.\n * @param {String} className Name of CSS class name\n */\njvm.SVGElement.prototype.addClass = function (className) {\n  this.node.setAttribute('class', className);\n};\n\n/**\n * Returns constructor for element by name prefixed with 'VML'.\n * @param {String} ctr Name of basic constructor to return\n * proper implementation for.\n * @returns Function\n * @private\n */\njvm.SVGElement.prototype.getElementCtr = function (ctr) {\n  return jvm['SVG' + ctr];\n};\njvm.SVGElement.prototype.getBBox = function () {\n  return this.node.getBBox();\n};\njvm.SVGGroupElement = function () {\n  jvm.SVGGroupElement.parentClass.call(this, 'g');\n};\njvm.inherits(jvm.SVGGroupElement, jvm.SVGElement);\njvm.SVGGroupElement.prototype.add = function (element) {\n  this.node.appendChild(element.node);\n};\njvm.SVGCanvasElement = function (container, width, height) {\n  this.classPrefix = 'SVG';\n  jvm.SVGCanvasElement.parentClass.call(this, 'svg');\n  this.defsElement = new jvm.SVGElement('defs');\n  this.node.appendChild(this.defsElement.node);\n  jvm.AbstractCanvasElement.apply(this, arguments);\n};\njvm.inherits(jvm.SVGCanvasElement, jvm.SVGElement);\njvm.mixin(jvm.SVGCanvasElement, jvm.AbstractCanvasElement);\njvm.SVGCanvasElement.prototype.setSize = function (width, height) {\n  this.width = width;\n  this.height = height;\n  this.node.setAttribute('width', width);\n  this.node.setAttribute('height', height);\n};\njvm.SVGCanvasElement.prototype.applyTransformParams = function (scale, transX, transY) {\n  this.scale = scale;\n  this.transX = transX;\n  this.transY = transY;\n  this.rootElement.node.setAttribute('transform', 'scale(' + scale + ') translate(' + transX + ', ' + transY + ')');\n};\njvm.SVGShapeElement = function (name, config, style) {\n  jvm.SVGShapeElement.parentClass.call(this, name, config);\n  jvm.AbstractShapeElement.apply(this, arguments);\n};\njvm.inherits(jvm.SVGShapeElement, jvm.SVGElement);\njvm.mixin(jvm.SVGShapeElement, jvm.AbstractShapeElement);\njvm.SVGShapeElement.prototype.applyAttr = function (attr, value) {\n  var patternEl,\n    imageEl,\n    that = this;\n  if (attr === 'fill' && jvm.isImageUrl(value)) {\n    if (!jvm.SVGShapeElement.images[value]) {\n      jvm.whenImageLoaded(value).then(function (img) {\n        imageEl = new jvm.SVGElement('image');\n        imageEl.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', value);\n        imageEl.applyAttr('x', '0');\n        imageEl.applyAttr('y', '0');\n        imageEl.applyAttr('width', img[0].width);\n        imageEl.applyAttr('height', img[0].height);\n        patternEl = new jvm.SVGElement('pattern');\n        patternEl.applyAttr('id', 'image' + jvm.SVGShapeElement.imageCounter);\n        patternEl.applyAttr('x', 0);\n        patternEl.applyAttr('y', 0);\n        patternEl.applyAttr('width', img[0].width / 2);\n        patternEl.applyAttr('height', img[0].height / 2);\n        patternEl.applyAttr('viewBox', '0 0 ' + img[0].width + ' ' + img[0].height);\n        patternEl.applyAttr('patternUnits', 'userSpaceOnUse');\n        patternEl.node.appendChild(imageEl.node);\n        that.canvas.defsElement.node.appendChild(patternEl.node);\n        jvm.SVGShapeElement.images[value] = jvm.SVGShapeElement.imageCounter++;\n        that.applyAttr('fill', 'url(#image' + jvm.SVGShapeElement.images[value] + ')');\n      });\n    } else {\n      this.applyAttr('fill', 'url(#image' + jvm.SVGShapeElement.images[value] + ')');\n    }\n  } else {\n    jvm.SVGShapeElement.parentClass.prototype.applyAttr.apply(this, arguments);\n  }\n};\njvm.SVGShapeElement.imageCounter = 1;\njvm.SVGShapeElement.images = {};\njvm.SVGPathElement = function (config, style) {\n  jvm.SVGPathElement.parentClass.call(this, 'path', config, style);\n  this.node.setAttribute('fill-rule', 'evenodd');\n};\njvm.inherits(jvm.SVGPathElement, jvm.SVGShapeElement);\njvm.SVGCircleElement = function (config, style) {\n  jvm.SVGCircleElement.parentClass.call(this, 'circle', config, style);\n};\njvm.inherits(jvm.SVGCircleElement, jvm.SVGShapeElement);\njvm.SVGImageElement = function (config, style) {\n  jvm.SVGImageElement.parentClass.call(this, 'image', config, style);\n};\njvm.inherits(jvm.SVGImageElement, jvm.SVGShapeElement);\njvm.SVGImageElement.prototype.applyAttr = function (attr, value) {\n  var that = this;\n  if (attr == 'image') {\n    jvm.whenImageLoaded(value).then(function (img) {\n      that.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', value);\n      that.width = img[0].width;\n      that.height = img[0].height;\n      that.applyAttr('width', that.width);\n      that.applyAttr('height', that.height);\n      that.applyAttr('x', that.cx - that.width / 2);\n      that.applyAttr('y', that.cy - that.height / 2);\n      jvm.$(that.node).trigger('imageloaded', [img]);\n    });\n  } else if (attr == 'cx') {\n    this.cx = value;\n    if (this.width) {\n      this.applyAttr('x', value - this.width / 2);\n    }\n  } else if (attr == 'cy') {\n    this.cy = value;\n    if (this.height) {\n      this.applyAttr('y', value - this.height / 2);\n    }\n  } else {\n    jvm.SVGImageElement.parentClass.prototype.applyAttr.apply(this, arguments);\n  }\n};\njvm.SVGTextElement = function (config, style) {\n  jvm.SVGTextElement.parentClass.call(this, 'text', config, style);\n};\njvm.inherits(jvm.SVGTextElement, jvm.SVGShapeElement);\njvm.SVGTextElement.prototype.applyAttr = function (attr, value) {\n  if (attr === 'text') {\n    this.node.textContent = value;\n  } else {\n    jvm.SVGTextElement.parentClass.prototype.applyAttr.apply(this, arguments);\n  }\n}; /**\n   * Wrapper for VML element.\n   * @constructor\n   * @extends jvm.AbstractElement\n   * @param {String} name Tag name of the element\n   * @param {Object} config Set of parameters to initialize element with\n   */\n\njvm.VMLElement = function (name, config) {\n  if (!jvm.VMLElement.VMLInitialized) {\n    jvm.VMLElement.initializeVML();\n  }\n  jvm.VMLElement.parentClass.apply(this, arguments);\n};\njvm.inherits(jvm.VMLElement, jvm.AbstractElement);\n\n/**\n * Shows if VML was already initialized for the current document or not.\n * @static\n * @private\n * @type {Boolean}\n */\njvm.VMLElement.VMLInitialized = false;\n\n/**\n * Initializes VML handling before creating the first element\n * (adds CSS class and creates namespace). Adds one of two forms\n * of createElement method depending of support by browser.\n * @static\n * @private\n */\n\n// The following method of VML handling is borrowed from the\n// Raphael library by Dmitry Baranovsky.\n\njvm.VMLElement.initializeVML = function () {\n  try {\n    if (!document.namespaces.rvml) {\n      document.namespaces.add(\"rvml\", \"urn:schemas-microsoft-com:vml\");\n    }\n    /**\n     * Creates DOM element.\n     * @param {String} tagName Name of element\n     * @private\n     * @returns DOMElement\n     */\n    jvm.VMLElement.prototype.createElement = function (tagName) {\n      return document.createElement('<rvml:' + tagName + ' class=\"rvml\">');\n    };\n  } catch (e) {\n    /**\n     * @private\n     */\n    jvm.VMLElement.prototype.createElement = function (tagName) {\n      return document.createElement('<' + tagName + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">');\n    };\n  }\n  document.createStyleSheet().addRule(\".rvml\", \"behavior:url(#default#VML)\");\n  jvm.VMLElement.VMLInitialized = true;\n};\n\n/**\n * Returns constructor for element by name prefixed with 'VML'.\n * @param {String} ctr Name of basic constructor to return\n * proper implementation for.\n * @returns Function\n * @private\n */\njvm.VMLElement.prototype.getElementCtr = function (ctr) {\n  return jvm['VML' + ctr];\n};\n\n/**\n * Adds CSS class for underlying DOM element.\n * @param {String} className Name of CSS class name\n */\njvm.VMLElement.prototype.addClass = function (className) {\n  jvm.$(this.node).addClass(className);\n};\n\n/**\n * Applies attribute value to the underlying DOM element.\n * @param {String} name Name of attribute\n * @param {Number|String} config Value of attribute to apply\n * @private\n */\njvm.VMLElement.prototype.applyAttr = function (attr, value) {\n  this.node[attr] = value;\n};\n\n/**\n * Returns boundary box for the element.\n * @returns {Object} Boundary box with numeric fields: x, y, width, height\n * @override\n */\njvm.VMLElement.prototype.getBBox = function () {\n  var node = jvm.$(this.node);\n  return {\n    x: node.position().left / this.canvas.scale,\n    y: node.position().top / this.canvas.scale,\n    width: node.width() / this.canvas.scale,\n    height: node.height() / this.canvas.scale\n  };\n};\njvm.VMLGroupElement = function () {\n  jvm.VMLGroupElement.parentClass.call(this, 'group');\n  this.node.style.left = '0px';\n  this.node.style.top = '0px';\n  this.node.coordorigin = \"0 0\";\n};\njvm.inherits(jvm.VMLGroupElement, jvm.VMLElement);\njvm.VMLGroupElement.prototype.add = function (element) {\n  this.node.appendChild(element.node);\n};\njvm.VMLCanvasElement = function (container, width, height) {\n  this.classPrefix = 'VML';\n  jvm.VMLCanvasElement.parentClass.call(this, 'group');\n  jvm.AbstractCanvasElement.apply(this, arguments);\n  this.node.style.position = 'absolute';\n};\njvm.inherits(jvm.VMLCanvasElement, jvm.VMLElement);\njvm.mixin(jvm.VMLCanvasElement, jvm.AbstractCanvasElement);\njvm.VMLCanvasElement.prototype.setSize = function (width, height) {\n  var paths, groups, i, l;\n  this.width = width;\n  this.height = height;\n  this.node.style.width = width + \"px\";\n  this.node.style.height = height + \"px\";\n  this.node.coordsize = width + ' ' + height;\n  this.node.coordorigin = \"0 0\";\n  if (this.rootElement) {\n    paths = this.rootElement.node.getElementsByTagName('shape');\n    for (i = 0, l = paths.length; i < l; i++) {\n      paths[i].coordsize = width + ' ' + height;\n      paths[i].style.width = width + 'px';\n      paths[i].style.height = height + 'px';\n    }\n    groups = this.node.getElementsByTagName('group');\n    for (i = 0, l = groups.length; i < l; i++) {\n      groups[i].coordsize = width + ' ' + height;\n      groups[i].style.width = width + 'px';\n      groups[i].style.height = height + 'px';\n    }\n  }\n};\njvm.VMLCanvasElement.prototype.applyTransformParams = function (scale, transX, transY) {\n  this.scale = scale;\n  this.transX = transX;\n  this.transY = transY;\n  this.rootElement.node.coordorigin = this.width - transX - this.width / 100 + ',' + (this.height - transY - this.height / 100);\n  this.rootElement.node.coordsize = this.width / scale + ',' + this.height / scale;\n};\njvm.VMLShapeElement = function (name, config) {\n  jvm.VMLShapeElement.parentClass.call(this, name, config);\n  this.fillElement = new jvm.VMLElement('fill');\n  this.strokeElement = new jvm.VMLElement('stroke');\n  this.node.appendChild(this.fillElement.node);\n  this.node.appendChild(this.strokeElement.node);\n  this.node.stroked = false;\n  jvm.AbstractShapeElement.apply(this, arguments);\n};\njvm.inherits(jvm.VMLShapeElement, jvm.VMLElement);\njvm.mixin(jvm.VMLShapeElement, jvm.AbstractShapeElement);\njvm.VMLShapeElement.prototype.applyAttr = function (attr, value) {\n  switch (attr) {\n    case 'fill':\n      this.node.fillcolor = value;\n      break;\n    case 'fill-opacity':\n      this.fillElement.node.opacity = Math.round(value * 100) + '%';\n      break;\n    case 'stroke':\n      if (value === 'none') {\n        this.node.stroked = false;\n      } else {\n        this.node.stroked = true;\n      }\n      this.node.strokecolor = value;\n      break;\n    case 'stroke-opacity':\n      this.strokeElement.node.opacity = Math.round(value * 100) + '%';\n      break;\n    case 'stroke-width':\n      if (parseInt(value, 10) === 0) {\n        this.node.stroked = false;\n      } else {\n        this.node.stroked = true;\n      }\n      this.node.strokeweight = value;\n      break;\n    case 'd':\n      this.node.path = jvm.VMLPathElement.pathSvgToVml(value);\n      break;\n    default:\n      jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this, arguments);\n  }\n};\njvm.VMLPathElement = function (config, style) {\n  var scale = new jvm.VMLElement('skew');\n  jvm.VMLPathElement.parentClass.call(this, 'shape', config, style);\n  this.node.coordorigin = \"0 0\";\n  scale.node.on = true;\n  scale.node.matrix = '0.01,0,0,0.01,0,0';\n  scale.node.offset = '0,0';\n  this.node.appendChild(scale.node);\n};\njvm.inherits(jvm.VMLPathElement, jvm.VMLShapeElement);\njvm.VMLPathElement.prototype.applyAttr = function (attr, value) {\n  if (attr === 'd') {\n    this.node.path = jvm.VMLPathElement.pathSvgToVml(value);\n  } else {\n    jvm.VMLShapeElement.prototype.applyAttr.call(this, attr, value);\n  }\n};\njvm.VMLPathElement.pathSvgToVml = function (path) {\n  var cx = 0,\n    cy = 0,\n    ctrlx,\n    ctrly;\n  path = path.replace(/(-?\\d+)e(-?\\d+)/g, '0');\n  return path.replace(/([MmLlHhVvCcSs])\\s*((?:-?\\d*(?:\\.\\d+)?\\s*,?\\s*)+)/g, function (segment, letter, coords, index) {\n    coords = coords.replace(/(\\d)-/g, '$1,-').replace(/^\\s+/g, '').replace(/\\s+$/g, '').replace(/\\s+/g, ',').split(',');\n    if (!coords[0]) coords.shift();\n    for (var i = 0, l = coords.length; i < l; i++) {\n      coords[i] = Math.round(100 * coords[i]);\n    }\n    switch (letter) {\n      case 'm':\n        cx += coords[0];\n        cy += coords[1];\n        return 't' + coords.join(',');\n      case 'M':\n        cx = coords[0];\n        cy = coords[1];\n        return 'm' + coords.join(',');\n      case 'l':\n        cx += coords[0];\n        cy += coords[1];\n        return 'r' + coords.join(',');\n      case 'L':\n        cx = coords[0];\n        cy = coords[1];\n        return 'l' + coords.join(',');\n      case 'h':\n        cx += coords[0];\n        return 'r' + coords[0] + ',0';\n      case 'H':\n        cx = coords[0];\n        return 'l' + cx + ',' + cy;\n      case 'v':\n        cy += coords[0];\n        return 'r0,' + coords[0];\n      case 'V':\n        cy = coords[0];\n        return 'l' + cx + ',' + cy;\n      case 'c':\n        ctrlx = cx + coords[coords.length - 4];\n        ctrly = cy + coords[coords.length - 3];\n        cx += coords[coords.length - 2];\n        cy += coords[coords.length - 1];\n        return 'v' + coords.join(',');\n      case 'C':\n        ctrlx = coords[coords.length - 4];\n        ctrly = coords[coords.length - 3];\n        cx = coords[coords.length - 2];\n        cy = coords[coords.length - 1];\n        return 'c' + coords.join(',');\n      case 's':\n        coords.unshift(cy - ctrly);\n        coords.unshift(cx - ctrlx);\n        ctrlx = cx + coords[coords.length - 4];\n        ctrly = cy + coords[coords.length - 3];\n        cx += coords[coords.length - 2];\n        cy += coords[coords.length - 1];\n        return 'v' + coords.join(',');\n      case 'S':\n        coords.unshift(cy + cy - ctrly);\n        coords.unshift(cx + cx - ctrlx);\n        ctrlx = coords[coords.length - 4];\n        ctrly = coords[coords.length - 3];\n        cx = coords[coords.length - 2];\n        cy = coords[coords.length - 1];\n        return 'c' + coords.join(',');\n    }\n    return '';\n  }).replace(/z/g, 'e');\n};\njvm.VMLCircleElement = function (config, style) {\n  jvm.VMLCircleElement.parentClass.call(this, 'oval', config, style);\n};\njvm.inherits(jvm.VMLCircleElement, jvm.VMLShapeElement);\njvm.VMLCircleElement.prototype.applyAttr = function (attr, value) {\n  switch (attr) {\n    case 'r':\n      this.node.style.width = value * 2 + 'px';\n      this.node.style.height = value * 2 + 'px';\n      this.applyAttr('cx', this.get('cx') || 0);\n      this.applyAttr('cy', this.get('cy') || 0);\n      break;\n    case 'cx':\n      if (!value) return;\n      this.node.style.left = value - (this.get('r') || 0) + 'px';\n      break;\n    case 'cy':\n      if (!value) return;\n      this.node.style.top = value - (this.get('r') || 0) + 'px';\n      break;\n    default:\n      jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this, attr, value);\n  }\n}; /**\n   * Class for vector images manipulations.\n   * @constructor\n   * @param {DOMElement} container to place canvas to\n   * @param {Number} width\n   * @param {Number} height\n   */\njvm.VectorCanvas = function (container, width, height) {\n  this.mode = window.SVGAngle ? 'svg' : 'vml';\n  if (this.mode == 'svg') {\n    this.impl = new jvm.SVGCanvasElement(container, width, height);\n  } else {\n    this.impl = new jvm.VMLCanvasElement(container, width, height);\n  }\n  this.impl.mode = this.mode;\n  return this.impl;\n};\njvm.SimpleScale = function (scale) {\n  this.scale = scale;\n};\njvm.SimpleScale.prototype.getValue = function (value) {\n  return value;\n};\njvm.OrdinalScale = function (scale) {\n  this.scale = scale;\n};\njvm.OrdinalScale.prototype.getValue = function (value) {\n  return this.scale[value];\n};\njvm.OrdinalScale.prototype.getTicks = function () {\n  var ticks = [],\n    key;\n  for (key in this.scale) {\n    ticks.push({\n      label: key,\n      value: this.scale[key]\n    });\n  }\n  return ticks;\n};\njvm.NumericScale = function (scale, normalizeFunction, minValue, maxValue) {\n  this.scale = [];\n  normalizeFunction = normalizeFunction || 'linear';\n  if (scale) this.setScale(scale);\n  if (normalizeFunction) this.setNormalizeFunction(normalizeFunction);\n  if (typeof minValue !== 'undefined') this.setMin(minValue);\n  if (typeof maxValue !== 'undefined') this.setMax(maxValue);\n};\njvm.NumericScale.prototype = {\n  setMin: function setMin(min) {\n    this.clearMinValue = min;\n    if (typeof this.normalize === 'function') {\n      this.minValue = this.normalize(min);\n    } else {\n      this.minValue = min;\n    }\n  },\n  setMax: function setMax(max) {\n    this.clearMaxValue = max;\n    if (typeof this.normalize === 'function') {\n      this.maxValue = this.normalize(max);\n    } else {\n      this.maxValue = max;\n    }\n  },\n  setScale: function setScale(scale) {\n    var i;\n    this.scale = [];\n    for (i = 0; i < scale.length; i++) {\n      this.scale[i] = [scale[i]];\n    }\n  },\n  setNormalizeFunction: function setNormalizeFunction(f) {\n    if (f === 'polynomial') {\n      this.normalize = function (value) {\n        return Math.pow(value, 0.2);\n      };\n    } else if (f === 'linear') {\n      delete this.normalize;\n    } else {\n      this.normalize = f;\n    }\n    this.setMin(this.clearMinValue);\n    this.setMax(this.clearMaxValue);\n  },\n  getValue: function getValue(value) {\n    var lengthes = [],\n      fullLength = 0,\n      l,\n      i = 0,\n      c;\n    if (typeof this.normalize === 'function') {\n      value = this.normalize(value);\n    }\n    for (i = 0; i < this.scale.length - 1; i++) {\n      l = this.vectorLength(this.vectorSubtract(this.scale[i + 1], this.scale[i]));\n      lengthes.push(l);\n      fullLength += l;\n    }\n    c = (this.maxValue - this.minValue) / fullLength;\n    for (i = 0; i < lengthes.length; i++) {\n      lengthes[i] *= c;\n    }\n    i = 0;\n    value -= this.minValue;\n    while (value - lengthes[i] >= 0) {\n      value -= lengthes[i];\n      i++;\n    }\n    if (i == this.scale.length - 1) {\n      value = this.vectorToNum(this.scale[i]);\n    } else {\n      value = this.vectorToNum(this.vectorAdd(this.scale[i], this.vectorMult(this.vectorSubtract(this.scale[i + 1], this.scale[i]), value / lengthes[i])));\n    }\n    return value;\n  },\n  vectorToNum: function vectorToNum(vector) {\n    var num = 0,\n      i;\n    for (i = 0; i < vector.length; i++) {\n      num += Math.round(vector[i]) * Math.pow(256, vector.length - i - 1);\n    }\n    return num;\n  },\n  vectorSubtract: function vectorSubtract(vector1, vector2) {\n    var vector = [],\n      i;\n    for (i = 0; i < vector1.length; i++) {\n      vector[i] = vector1[i] - vector2[i];\n    }\n    return vector;\n  },\n  vectorAdd: function vectorAdd(vector1, vector2) {\n    var vector = [],\n      i;\n    for (i = 0; i < vector1.length; i++) {\n      vector[i] = vector1[i] + vector2[i];\n    }\n    return vector;\n  },\n  vectorMult: function vectorMult(vector, num) {\n    var result = [],\n      i;\n    for (i = 0; i < vector.length; i++) {\n      result[i] = vector[i] * num;\n    }\n    return result;\n  },\n  vectorLength: function vectorLength(vector) {\n    var result = 0,\n      i;\n    for (i = 0; i < vector.length; i++) {\n      result += vector[i] * vector[i];\n    }\n    return Math.sqrt(result);\n  },\n  /* Derived from d3 implementation https://github.com/mbostock/d3/blob/master/src/scale/linear.js#L94 */\n  getTicks: function getTicks() {\n    var m = 5,\n      extent = [this.clearMinValue, this.clearMaxValue],\n      span = extent[1] - extent[0],\n      step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)),\n      err = m / span * step,\n      ticks = [],\n      tick,\n      v;\n    if (err <= .15) step *= 10;else if (err <= .35) step *= 5;else if (err <= .75) step *= 2;\n    extent[0] = Math.floor(extent[0] / step) * step;\n    extent[1] = Math.ceil(extent[1] / step) * step;\n    tick = extent[0];\n    while (tick <= extent[1]) {\n      if (tick == extent[0]) {\n        v = this.clearMinValue;\n      } else if (tick == extent[1]) {\n        v = this.clearMaxValue;\n      } else {\n        v = tick;\n      }\n      ticks.push({\n        label: tick,\n        value: this.getValue(v)\n      });\n      tick += step;\n    }\n    return ticks;\n  }\n};\njvm.ColorScale = function (colors, normalizeFunction, minValue, maxValue) {\n  jvm.ColorScale.parentClass.apply(this, arguments);\n};\njvm.inherits(jvm.ColorScale, jvm.NumericScale);\njvm.ColorScale.prototype.setScale = function (scale) {\n  var i;\n  for (i = 0; i < scale.length; i++) {\n    this.scale[i] = jvm.ColorScale.rgbToArray(scale[i]);\n  }\n};\njvm.ColorScale.prototype.getValue = function (value) {\n  return jvm.ColorScale.numToRgb(jvm.ColorScale.parentClass.prototype.getValue.call(this, value));\n};\njvm.ColorScale.arrayToRgb = function (ar) {\n  var rgb = '#',\n    d,\n    i;\n  for (i = 0; i < ar.length; i++) {\n    d = ar[i].toString(16);\n    rgb += d.length == 1 ? '0' + d : d;\n  }\n  return rgb;\n};\njvm.ColorScale.numToRgb = function (num) {\n  num = num.toString(16);\n  while (num.length < 6) {\n    num = '0' + num;\n  }\n  return '#' + num;\n};\njvm.ColorScale.rgbToArray = function (rgb) {\n  rgb = rgb.substr(1);\n  return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)];\n}; /**\n   * Represents map legend.\n   * @constructor\n   * @param {Object} params Configuration parameters.\n   * @param {String} params.cssClass Additional CSS class to apply to legend element.\n   * @param {Boolean} params.vertical If <code>true</code> legend will be rendered as vertical.\n   * @param {String} params.title Legend title.\n   * @param {Function} params.labelRender Method to convert series values to legend labels.\n   */\njvm.Legend = function (params) {\n  this.params = params || {};\n  this.map = this.params.map;\n  this.series = this.params.series;\n  this.body = jvm.$('<div/>');\n  this.body.addClass('jvectormap-legend');\n  if (this.params.cssClass) {\n    this.body.addClass(this.params.cssClass);\n  }\n  if (params.vertical) {\n    this.map.legendCntVertical.append(this.body);\n  } else {\n    this.map.legendCntHorizontal.append(this.body);\n  }\n  this.render();\n};\njvm.Legend.prototype.render = function () {\n  var ticks = this.series.scale.getTicks(),\n    i,\n    inner = jvm.$('<div/>').addClass('jvectormap-legend-inner'),\n    tick,\n    sample,\n    label;\n  this.body.html('');\n  if (this.params.title) {\n    this.body.append(jvm.$('<div/>').addClass('jvectormap-legend-title').html(this.params.title));\n  }\n  this.body.append(inner);\n  for (i = 0; i < ticks.length; i++) {\n    tick = jvm.$('<div/>').addClass('jvectormap-legend-tick');\n    sample = jvm.$('<div/>').addClass('jvectormap-legend-tick-sample');\n    switch (this.series.params.attribute) {\n      case 'fill':\n        if (jvm.isImageUrl(ticks[i].value)) {\n          sample.css('background', 'url(' + ticks[i].value + ')');\n        } else {\n          sample.css('background', ticks[i].value);\n        }\n        break;\n      case 'stroke':\n        sample.css('background', ticks[i].value);\n        break;\n      case 'image':\n        sample.css('background', 'url(' + ticks[i].value + ') no-repeat center center');\n        break;\n      case 'r':\n        jvm.$('<div/>').css({\n          'border-radius': ticks[i].value,\n          border: this.map.params.markerStyle.initial['stroke-width'] + 'px ' + this.map.params.markerStyle.initial['stroke'] + ' solid',\n          width: ticks[i].value * 2 + 'px',\n          height: ticks[i].value * 2 + 'px',\n          background: this.map.params.markerStyle.initial['fill']\n        }).appendTo(sample);\n        break;\n    }\n    tick.append(sample);\n    label = ticks[i].label;\n    if (this.params.labelRender) {\n      label = this.params.labelRender(label);\n    }\n    tick.append(jvm.$('<div>' + label + ' </div>').addClass('jvectormap-legend-tick-text'));\n    inner.append(tick);\n  }\n  inner.append(jvm.$('<div/>').css('clear', 'both'));\n}; /**\n   * Creates data series.\n   * @constructor\n   * @param {Object} params Parameters to initialize series with.\n   * @param {Array} params.values The data set to visualize.\n   * @param {String} params.attribute Numberic or color attribute to use for data visualization. This could be: <code>fill</code>, <code>stroke</code>, <code>fill-opacity</code>, <code>stroke-opacity</code> for markers and regions and <code>r</code> (radius) for markers only.\n   * @param {Array} params.scale Values used to map a dimension of data to a visual representation. The first value sets visualization for minimum value from the data set and the last value sets visualization for the maximum value. There also could be intermidiate values. Default value is <code>['#C8EEFF', '#0071A4']</code>\n   * @param {Function|String} params.normalizeFunction The function used to map input values to the provided scale. This parameter could be provided as function or one of the strings: <code>'linear'</code> or <code>'polynomial'</code>, while <code>'linear'</code> is used by default. The function provided takes value from the data set as an input and returns corresponding value from the scale.\n   * @param {Number} params.min Minimum value of the data set. Could be calculated automatically if not provided.\n   * @param {Number} params.min Maximum value of the data set. Could be calculated automatically if not provided.\n   */\njvm.DataSeries = function (params, elements, map) {\n  var scaleConstructor;\n  params = params || {};\n  params.attribute = params.attribute || 'fill';\n  this.elements = elements;\n  this.params = params;\n  this.map = map;\n  if (params.attributes) {\n    this.setAttributes(params.attributes);\n  }\n  if (jvm.$.isArray(params.scale)) {\n    scaleConstructor = params.attribute === 'fill' || params.attribute === 'stroke' ? jvm.ColorScale : jvm.NumericScale;\n    this.scale = new scaleConstructor(params.scale, params.normalizeFunction, params.min, params.max);\n  } else if (params.scale) {\n    this.scale = new jvm.OrdinalScale(params.scale);\n  } else {\n    this.scale = new jvm.SimpleScale(params.scale);\n  }\n  this.values = params.values || {};\n  this.setValues(this.values);\n  if (this.params.legend) {\n    this.legend = new jvm.Legend($.extend({\n      map: this.map,\n      series: this\n    }, this.params.legend));\n  }\n};\njvm.DataSeries.prototype = {\n  setAttributes: function setAttributes(key, attr) {\n    var attrs = key,\n      code;\n    if (typeof key == 'string') {\n      if (this.elements[key]) {\n        this.elements[key].setStyle(this.params.attribute, attr);\n      }\n    } else {\n      for (code in attrs) {\n        if (this.elements[code]) {\n          this.elements[code].element.setStyle(this.params.attribute, attrs[code]);\n        }\n      }\n    }\n  },\n  /**\n   * Set values for the data set.\n   * @param {Object} values Object which maps codes of regions or markers to values.\n   */\n  setValues: function setValues(values) {\n    var max = -Number.MAX_VALUE,\n      min = Number.MAX_VALUE,\n      val,\n      cc,\n      attrs = {};\n    if (!(this.scale instanceof jvm.OrdinalScale) && !(this.scale instanceof jvm.SimpleScale)) {\n      // we have a color scale as an array\n      if (typeof this.params.min === 'undefined' || typeof this.params.max === 'undefined') {\n        // min and/or max are not defined, so calculate them\n        for (cc in values) {\n          val = parseFloat(values[cc]);\n          if (val > max) max = val;\n          if (val < min) min = val;\n        }\n      }\n      if (typeof this.params.min === 'undefined') {\n        this.scale.setMin(min);\n        this.params.min = min;\n      } else {\n        this.scale.setMin(this.params.min);\n      }\n      if (typeof this.params.max === 'undefined') {\n        this.scale.setMax(max);\n        this.params.max = max;\n      } else {\n        this.scale.setMax(this.params.max);\n      }\n      for (cc in values) {\n        if (cc != 'indexOf') {\n          val = parseFloat(values[cc]);\n          if (!isNaN(val)) {\n            attrs[cc] = this.scale.getValue(val);\n          } else {\n            attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute];\n          }\n        }\n      }\n    } else {\n      for (cc in values) {\n        if (values[cc]) {\n          attrs[cc] = this.scale.getValue(values[cc]);\n        } else {\n          attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute];\n        }\n      }\n    }\n    this.setAttributes(attrs);\n    jvm.$.extend(this.values, values);\n  },\n  clear: function clear() {\n    var key,\n      attrs = {};\n    for (key in this.values) {\n      if (this.elements[key]) {\n        attrs[key] = this.elements[key].element.shape.style.initial[this.params.attribute];\n      }\n    }\n    this.setAttributes(attrs);\n    this.values = {};\n  },\n  /**\n   * Set scale of the data series.\n   * @param {Array} scale Values representing scale.\n   */\n  setScale: function setScale(scale) {\n    this.scale.setScale(scale);\n    if (this.values) {\n      this.setValues(this.values);\n    }\n  },\n  /**\n   * Set normalize function of the data series.\n   * @param {Function|String} normilizeFunction.\n   */\n  setNormalizeFunction: function setNormalizeFunction(f) {\n    this.scale.setNormalizeFunction(f);\n    if (this.values) {\n      this.setValues(this.values);\n    }\n  }\n};\n/**\n * Contains methods for transforming point on sphere to\n * Cartesian coordinates using various projections.\n * @class\n */\njvm.Proj = {\n  degRad: 180 / Math.PI,\n  radDeg: Math.PI / 180,\n  radius: 6381372,\n  sgn: function sgn(n) {\n    if (n > 0) {\n      return 1;\n    } else if (n < 0) {\n      return -1;\n    } else {\n      return n;\n    }\n  },\n  /**\n   * Converts point on sphere to the Cartesian coordinates using Miller projection\n   * @param {Number} lat Latitude in degrees\n   * @param {Number} lng Longitude in degrees\n   * @param {Number} c Central meridian in degrees\n   */\n  mill: function mill(lat, lng, c) {\n    return {\n      x: this.radius * (lng - c) * this.radDeg,\n      y: -this.radius * Math.log(Math.tan((45 + 0.4 * lat) * this.radDeg)) / 0.8\n    };\n  },\n  /**\n   * Inverse function of mill()\n   * Converts Cartesian coordinates to point on sphere using Miller projection\n   * @param {Number} x X of point in Cartesian system as integer\n   * @param {Number} y Y of point in Cartesian system as integer\n   * @param {Number} c Central meridian in degrees\n   */\n  mill_inv: function mill_inv(x, y, c) {\n    return {\n      lat: (2.5 * Math.atan(Math.exp(0.8 * y / this.radius)) - 5 * Math.PI / 8) * this.degRad,\n      lng: (c * this.radDeg + x / this.radius) * this.degRad\n    };\n  },\n  /**\n   * Converts point on sphere to the Cartesian coordinates using Mercator projection\n   * @param {Number} lat Latitude in degrees\n   * @param {Number} lng Longitude in degrees\n   * @param {Number} c Central meridian in degrees\n   */\n  merc: function merc(lat, lng, c) {\n    return {\n      x: this.radius * (lng - c) * this.radDeg,\n      y: -this.radius * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360))\n    };\n  },\n  /**\n   * Inverse function of merc()\n   * Converts Cartesian coordinates to point on sphere using Mercator projection\n   * @param {Number} x X of point in Cartesian system as integer\n   * @param {Number} y Y of point in Cartesian system as integer\n   * @param {Number} c Central meridian in degrees\n   */\n  merc_inv: function merc_inv(x, y, c) {\n    return {\n      lat: (2 * Math.atan(Math.exp(y / this.radius)) - Math.PI / 2) * this.degRad,\n      lng: (c * this.radDeg + x / this.radius) * this.degRad\n    };\n  },\n  /**\n   * Converts point on sphere to the Cartesian coordinates using Albers Equal-Area Conic\n   * projection\n   * @see <a href=\"http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html\">Albers Equal-Area Conic projection</a>\n   * @param {Number} lat Latitude in degrees\n   * @param {Number} lng Longitude in degrees\n   * @param {Number} c Central meridian in degrees\n   */\n  aea: function aea(lat, lng, c) {\n    var fi0 = 0,\n      lambda0 = c * this.radDeg,\n      fi1 = 29.5 * this.radDeg,\n      fi2 = 45.5 * this.radDeg,\n      fi = lat * this.radDeg,\n      lambda = lng * this.radDeg,\n      n = (Math.sin(fi1) + Math.sin(fi2)) / 2,\n      C = Math.cos(fi1) * Math.cos(fi1) + 2 * n * Math.sin(fi1),\n      theta = n * (lambda - lambda0),\n      ro = Math.sqrt(C - 2 * n * Math.sin(fi)) / n,\n      ro0 = Math.sqrt(C - 2 * n * Math.sin(fi0)) / n;\n    return {\n      x: ro * Math.sin(theta) * this.radius,\n      y: -(ro0 - ro * Math.cos(theta)) * this.radius\n    };\n  },\n  /**\n   * Converts Cartesian coordinates to the point on sphere using Albers Equal-Area Conic\n   * projection\n   * @see <a href=\"http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html\">Albers Equal-Area Conic projection</a>\n   * @param {Number} x X of point in Cartesian system as integer\n   * @param {Number} y Y of point in Cartesian system as integer\n   * @param {Number} c Central meridian in degrees\n   */\n  aea_inv: function aea_inv(xCoord, yCoord, c) {\n    var x = xCoord / this.radius,\n      y = yCoord / this.radius,\n      fi0 = 0,\n      lambda0 = c * this.radDeg,\n      fi1 = 29.5 * this.radDeg,\n      fi2 = 45.5 * this.radDeg,\n      n = (Math.sin(fi1) + Math.sin(fi2)) / 2,\n      C = Math.cos(fi1) * Math.cos(fi1) + 2 * n * Math.sin(fi1),\n      ro0 = Math.sqrt(C - 2 * n * Math.sin(fi0)) / n,\n      ro = Math.sqrt(x * x + (ro0 - y) * (ro0 - y)),\n      theta = Math.atan(x / (ro0 - y));\n    return {\n      lat: Math.asin((C - ro * ro * n * n) / (2 * n)) * this.degRad,\n      lng: (lambda0 + theta / n) * this.degRad\n    };\n  },\n  /**\n   * Converts point on sphere to the Cartesian coordinates using Lambert conformal\n   * conic projection\n   * @see <a href=\"http://mathworld.wolfram.com/LambertConformalConicProjection.html\">Lambert Conformal Conic Projection</a>\n   * @param {Number} lat Latitude in degrees\n   * @param {Number} lng Longitude in degrees\n   * @param {Number} c Central meridian in degrees\n   */\n  lcc: function lcc(lat, lng, c) {\n    var fi0 = 0,\n      lambda0 = c * this.radDeg,\n      lambda = lng * this.radDeg,\n      fi1 = 33 * this.radDeg,\n      fi2 = 45 * this.radDeg,\n      fi = lat * this.radDeg,\n      n = Math.log(Math.cos(fi1) * (1 / Math.cos(fi2))) / Math.log(Math.tan(Math.PI / 4 + fi2 / 2) * (1 / Math.tan(Math.PI / 4 + fi1 / 2))),\n      F = Math.cos(fi1) * Math.pow(Math.tan(Math.PI / 4 + fi1 / 2), n) / n,\n      ro = F * Math.pow(1 / Math.tan(Math.PI / 4 + fi / 2), n),\n      ro0 = F * Math.pow(1 / Math.tan(Math.PI / 4 + fi0 / 2), n);\n    return {\n      x: ro * Math.sin(n * (lambda - lambda0)) * this.radius,\n      y: -(ro0 - ro * Math.cos(n * (lambda - lambda0))) * this.radius\n    };\n  },\n  /**\n   * Converts Cartesian coordinates to the point on sphere using Lambert conformal conic\n   * projection\n   * @see <a href=\"http://mathworld.wolfram.com/LambertConformalConicProjection.html\">Lambert Conformal Conic Projection</a>\n   * @param {Number} x X of point in Cartesian system as integer\n   * @param {Number} y Y of point in Cartesian system as integer\n   * @param {Number} c Central meridian in degrees\n   */\n  lcc_inv: function lcc_inv(xCoord, yCoord, c) {\n    var x = xCoord / this.radius,\n      y = yCoord / this.radius,\n      fi0 = 0,\n      lambda0 = c * this.radDeg,\n      fi1 = 33 * this.radDeg,\n      fi2 = 45 * this.radDeg,\n      n = Math.log(Math.cos(fi1) * (1 / Math.cos(fi2))) / Math.log(Math.tan(Math.PI / 4 + fi2 / 2) * (1 / Math.tan(Math.PI / 4 + fi1 / 2))),\n      F = Math.cos(fi1) * Math.pow(Math.tan(Math.PI / 4 + fi1 / 2), n) / n,\n      ro0 = F * Math.pow(1 / Math.tan(Math.PI / 4 + fi0 / 2), n),\n      ro = this.sgn(n) * Math.sqrt(x * x + (ro0 - y) * (ro0 - y)),\n      theta = Math.atan(x / (ro0 - y));\n    return {\n      lat: (2 * Math.atan(Math.pow(F / ro, 1 / n)) - Math.PI / 2) * this.degRad,\n      lng: (lambda0 + theta / n) * this.degRad\n    };\n  }\n};\njvm.MapObject = function (config) {};\njvm.MapObject.prototype.getLabelText = function (key) {\n  var text;\n  if (this.config.label) {\n    if (typeof this.config.label.render === 'function') {\n      text = this.config.label.render(key);\n    } else {\n      text = key;\n    }\n  } else {\n    text = null;\n  }\n  return text;\n};\njvm.MapObject.prototype.getLabelOffsets = function (key) {\n  var offsets;\n  if (this.config.label) {\n    if (typeof this.config.label.offsets === 'function') {\n      offsets = this.config.label.offsets(key);\n    } else if (_typeof(this.config.label.offsets) === 'object') {\n      offsets = this.config.label.offsets[key];\n    }\n  }\n  return offsets || [0, 0];\n};\n\n/**\n * Set hovered state to the element. Hovered state means mouse cursor is over element. Styles will be updates respectively.\n * @param {Boolean} isHovered <code>true</code> to make element hovered, <code>false</code> otherwise.\n */\njvm.MapObject.prototype.setHovered = function (isHovered) {\n  if (this.isHovered !== isHovered) {\n    this.isHovered = isHovered;\n    this.shape.isHovered = isHovered;\n    this.shape.updateStyle();\n    if (this.label) {\n      this.label.isHovered = isHovered;\n      this.label.updateStyle();\n    }\n  }\n};\n\n/**\n * Set selected state to the element. Styles will be updates respectively.\n * @param {Boolean} isSelected <code>true</code> to make element selected, <code>false</code> otherwise.\n */\njvm.MapObject.prototype.setSelected = function (isSelected) {\n  if (this.isSelected !== isSelected) {\n    this.isSelected = isSelected;\n    this.shape.isSelected = isSelected;\n    this.shape.updateStyle();\n    if (this.label) {\n      this.label.isSelected = isSelected;\n      this.label.updateStyle();\n    }\n    jvm.$(this.shape).trigger('selected', [isSelected]);\n  }\n};\njvm.MapObject.prototype.setStyle = function () {\n  this.shape.setStyle.apply(this.shape, arguments);\n};\njvm.MapObject.prototype.remove = function () {\n  this.shape.remove();\n  if (this.label) {\n    this.label.remove();\n  }\n};\njvm.Region = function (config) {\n  var bbox, text, offsets, labelDx, labelDy;\n  this.config = config;\n  this.map = this.config.map;\n  this.shape = config.canvas.addPath({\n    d: config.path,\n    'data-code': config.code\n  }, config.style, config.canvas.rootElement);\n  this.shape.addClass('jvectormap-region jvectormap-element');\n  bbox = this.shape.getBBox();\n  text = this.getLabelText(config.code);\n  if (this.config.label && text) {\n    offsets = this.getLabelOffsets(config.code);\n    this.labelX = bbox.x + bbox.width / 2 + offsets[0];\n    this.labelY = bbox.y + bbox.height / 2 + offsets[1];\n    this.label = config.canvas.addText({\n      text: text,\n      'text-anchor': 'middle',\n      'alignment-baseline': 'central',\n      x: this.labelX,\n      y: this.labelY,\n      'data-code': config.code\n    }, config.labelStyle, config.labelsGroup);\n    this.label.addClass('jvectormap-region jvectormap-element');\n  }\n};\njvm.inherits(jvm.Region, jvm.MapObject);\njvm.Region.prototype.updateLabelPosition = function () {\n  if (this.label) {\n    this.label.set({\n      x: this.labelX * this.map.scale + this.map.transX * this.map.scale,\n      y: this.labelY * this.map.scale + this.map.transY * this.map.scale\n    });\n  }\n};\njvm.Marker = function (config) {\n  var text, offsets;\n  this.config = config;\n  this.map = this.config.map;\n  this.isImage = !!this.config.style.initial.image;\n  this.createShape();\n  text = this.getLabelText(config.index);\n  if (this.config.label && text) {\n    this.offsets = this.getLabelOffsets(config.index);\n    this.labelX = config.cx / this.map.scale - this.map.transX;\n    this.labelY = config.cy / this.map.scale - this.map.transY;\n    this.label = config.canvas.addText({\n      text: text,\n      'data-index': config.index,\n      dy: \"0.6ex\",\n      x: this.labelX,\n      y: this.labelY\n    }, config.labelStyle, config.labelsGroup);\n    this.label.addClass('jvectormap-marker jvectormap-element');\n  }\n};\njvm.inherits(jvm.Marker, jvm.MapObject);\njvm.Marker.prototype.createShape = function () {\n  var that = this;\n  if (this.shape) {\n    this.shape.remove();\n  }\n  this.shape = this.config.canvas[this.isImage ? 'addImage' : 'addCircle']({\n    \"data-index\": this.config.index,\n    cx: this.config.cx,\n    cy: this.config.cy\n  }, this.config.style, this.config.group);\n  this.shape.addClass('jvectormap-marker jvectormap-element');\n  if (this.isImage) {\n    jvm.$(this.shape.node).on('imageloaded', function () {\n      that.updateLabelPosition();\n    });\n  }\n};\njvm.Marker.prototype.updateLabelPosition = function () {\n  if (this.label) {\n    this.label.set({\n      x: this.labelX * this.map.scale + this.offsets[0] + this.map.transX * this.map.scale + 5 + (this.isImage ? (this.shape.width || 0) / 2 : this.shape.properties.r),\n      y: this.labelY * this.map.scale + this.map.transY * this.map.scale + this.offsets[1]\n    });\n  }\n};\njvm.Marker.prototype.setStyle = function (property, value) {\n  var isImage;\n  jvm.Marker.parentClass.prototype.setStyle.apply(this, arguments);\n  if (property === 'r') {\n    this.updateLabelPosition();\n  }\n  isImage = !!this.shape.get('image');\n  if (isImage != this.isImage) {\n    this.isImage = isImage;\n    this.config.style = jvm.$.extend(true, {}, this.shape.style);\n    this.createShape();\n  }\n}; /**\n   * Creates map, draws paths, binds events.\n   * @constructor\n   * @param {Object} params Parameters to initialize map with.\n   * @param {String} params.map Name of the map in the format <code>territory_proj_lang</code> where <code>territory</code> is a unique code or name of the territory which the map represents (ISO 3166 standard is used where possible), <code>proj</code> is a name of projection used to generate representation of the map on the plane (projections are named according to the conventions of proj4 utility) and <code>lang</code> is a code of the language, used for the names of regions.\n   * @param {String} params.backgroundColor Background color of the map in CSS format.\n   * @param {Boolean} params.zoomOnScroll When set to true map could be zoomed using mouse scroll. Default value is <code>true</code>.\n   * @param {Boolean} params.zoomOnScrollSpeed Mouse scroll speed. Number from 1 to 10. Default value is <code>3</code>.\n   * @param {Boolean} params.panOnDrag When set to true, the map pans when being dragged. Default value is <code>true</code>.\n   * @param {Number} params.zoomMax Indicates the maximum zoom ratio which could be reached zooming the map. Default value is <code>8</code>.\n   * @param {Number} params.zoomMin Indicates the minimum zoom ratio which could be reached zooming the map. Default value is <code>1</code>.\n   * @param {Number} params.zoomStep Indicates the multiplier used to zoom map with +/- buttons. Default value is <code>1.6</code>.\n   * @param {Boolean} params.zoomAnimate Indicates whether or not to animate changing of map zoom with zoom buttons.\n   * @param {Boolean} params.regionsSelectable When set to true regions of the map could be selected. Default value is <code>false</code>.\n   * @param {Boolean} params.regionsSelectableOne Allow only one region to be selected at the moment. Default value is <code>false</code>.\n   * @param {Boolean} params.markersSelectable When set to true markers on the map could be selected. Default value is <code>false</code>.\n   * @param {Boolean} params.markersSelectableOne Allow only one marker to be selected at the moment. Default value is <code>false</code>.\n   * @param {Object} params.regionStyle Set the styles for the map's regions. Each region or marker has four states: <code>initial</code> (default state), <code>hover</code> (when the mouse cursor is over the region or marker), <code>selected</code> (when region or marker is selected), <code>selectedHover</code> (when the mouse cursor is over the region or marker and it's selected simultaneously). Styles could be set for each of this states. Default value for that parameter is:\n   <pre>{\n   initial: {\n     fill: 'white',\n     \"fill-opacity\": 1,\n     stroke: 'none',\n     \"stroke-width\": 0,\n     \"stroke-opacity\": 1\n   },\n   hover: {\n     \"fill-opacity\": 0.8,\n     cursor: 'pointer'\n   },\n   selected: {\n     fill: 'yellow'\n   },\n   selectedHover: {\n   }\n   }</pre>\n   * @param {Object} params.regionLabelStyle Set the styles for the regions' labels. Each region or marker has four states: <code>initial</code> (default state), <code>hover</code> (when the mouse cursor is over the region or marker), <code>selected</code> (when region or marker is selected), <code>selectedHover</code> (when the mouse cursor is over the region or marker and it's selected simultaneously). Styles could be set for each of this states. Default value for that parameter is:\n   <pre>{\n   initial: {\n     'font-family': 'Verdana',\n     'font-size': '12',\n     'font-weight': 'bold',\n     cursor: 'default',\n     fill: 'black'\n   },\n   hover: {\n     cursor: 'pointer'\n   }\n   }</pre>\n   * @param {Object} params.markerStyle Set the styles for the map's markers. Any parameter suitable for <code>regionStyle</code> could be used as well as numeric parameter <code>r</code> to set the marker's radius. Default value for that parameter is:\n   <pre>{\n   initial: {\n     fill: 'grey',\n     stroke: '#505050',\n     \"fill-opacity\": 1,\n     \"stroke-width\": 1,\n     \"stroke-opacity\": 1,\n     r: 5\n   },\n   hover: {\n     stroke: 'black',\n     \"stroke-width\": 2,\n     cursor: 'pointer'\n   },\n   selected: {\n     fill: 'blue'\n   },\n   selectedHover: {\n   }\n   }</pre>\n   * @param {Object} params.markerLabelStyle Set the styles for the markers' labels. Default value for that parameter is:\n   <pre>{\n   initial: {\n     'font-family': 'Verdana',\n     'font-size': '12',\n     'font-weight': 'bold',\n     cursor: 'default',\n     fill: 'black'\n   },\n   hover: {\n     cursor: 'pointer'\n   }\n   }</pre>\n   * @param {Object|Array} params.markers Set of markers to add to the map during initialization. In case of array is provided, codes of markers will be set as string representations of array indexes. Each marker is represented by <code>latLng</code> (array of two numeric values), <code>name</code> (string which will be show on marker's tip) and any marker styles.\n   * @param {Object} params.series Object with two keys: <code>markers</code> and <code>regions</code>. Each of which is an array of series configs to be applied to the respective map elements. See <a href=\"jvm.DataSeries.html\">DataSeries</a> description for a list of parameters available.\n   * @param {Object|String} params.focusOn This parameter sets the initial position and scale of the map viewport. See <code>setFocus</code> docuemntation for possible parameters.\n   * @param {Object} params.labels Defines parameters for rendering static labels. Object could contain two keys: <code>regions</code> and <code>markers</code>. Each key value defines configuration object with the following possible options:\n   <ul>\n   <li><code>render {Function}</code> - defines method for converting region code or marker index to actual label value.</li>\n   <li><code>offsets {Object|Function}</code> - provides method or object which could be used to define label offset by region code or marker index.</li>\n   </ul>\n   <b>Plase note: static labels feature is not supported in Internet Explorer 8 and below.</b>\n   * @param {Array|Object|String} params.selectedRegions Set initially selected regions.\n   * @param {Array|Object|String} params.selectedMarkers Set initially selected markers.\n   * @param {Function} params.onRegionTipShow <code>(Event e, Object tip, String code)</code> Will be called right before the region tip is going to be shown.\n   * @param {Function} params.onRegionOver <code>(Event e, String code)</code> Will be called on region mouse over event.\n   * @param {Function} params.onRegionOut <code>(Event e, String code)</code> Will be called on region mouse out event.\n   * @param {Function} params.onRegionClick <code>(Event e, String code)</code> Will be called on region click event.\n   * @param {Function} params.onRegionSelected <code>(Event e, String code, Boolean isSelected, Array selectedRegions)</code> Will be called when region is (de)selected. <code>isSelected</code> parameter of the callback indicates whether region is selected or not. <code>selectedRegions</code> contains codes of all currently selected regions.\n   * @param {Function} params.onMarkerTipShow <code>(Event e, Object tip, String code)</code> Will be called right before the marker tip is going to be shown.\n   * @param {Function} params.onMarkerOver <code>(Event e, String code)</code> Will be called on marker mouse over event.\n   * @param {Function} params.onMarkerOut <code>(Event e, String code)</code> Will be called on marker mouse out event.\n   * @param {Function} params.onMarkerClick <code>(Event e, String code)</code> Will be called on marker click event.\n   * @param {Function} params.onMarkerSelected <code>(Event e, String code, Boolean isSelected, Array selectedMarkers)</code> Will be called when marker is (de)selected. <code>isSelected</code> parameter of the callback indicates whether marker is selected or not. <code>selectedMarkers</code> contains codes of all currently selected markers.\n   * @param {Function} params.onViewportChange <code>(Event e, Number scale)</code> Triggered when the map's viewport is changed (map was panned or zoomed).\n   */\njvm.Map = function (params) {\n  var map = this,\n    e;\n  this.params = jvm.$.extend(true, {}, jvm.Map.defaultParams, params);\n  if (!jvm.Map.maps[this.params.map]) {\n    throw new Error('Attempt to use map which was not loaded: ' + this.params.map);\n  }\n  this.mapData = jvm.Map.maps[this.params.map];\n  this.markers = {};\n  this.regions = {};\n  this.regionsColors = {};\n  this.regionsData = {};\n  this.container = jvm.$('<div>').addClass('jvectormap-container');\n  if (this.params.container) {\n    this.params.container.append(this.container);\n  }\n  this.container.data('mapObject', this);\n  this.defaultWidth = this.mapData.width;\n  this.defaultHeight = this.mapData.height;\n  this.setBackgroundColor(this.params.backgroundColor);\n  this.onResize = function () {\n    map.updateSize();\n  };\n  jvm.$(window).resize(this.onResize);\n  for (e in jvm.Map.apiEvents) {\n    if (this.params[e]) {\n      this.container.bind(jvm.Map.apiEvents[e] + '.jvectormap', this.params[e]);\n    }\n  }\n  this.canvas = new jvm.VectorCanvas(this.container[0], this.width, this.height);\n  if (this.params.bindTouchEvents) {\n    if ('ontouchstart' in window || window.DocumentTouch && document instanceof DocumentTouch) {\n      this.bindContainerTouchEvents();\n    } else if (window.MSGesture) {\n      this.bindContainerPointerEvents();\n    }\n  }\n  this.bindContainerEvents();\n  this.bindElementEvents();\n  this.createTip();\n  if (this.params.zoomButtons) {\n    this.bindZoomButtons();\n  }\n  this.createRegions();\n  this.createMarkers(this.params.markers || {});\n  this.updateSize();\n  if (this.params.focusOn) {\n    if (typeof this.params.focusOn === 'string') {\n      this.params.focusOn = {\n        region: this.params.focusOn\n      };\n    } else if (jvm.$.isArray(this.params.focusOn)) {\n      this.params.focusOn = {\n        regions: this.params.focusOn\n      };\n    }\n    this.setFocus(this.params.focusOn);\n  }\n  if (this.params.selectedRegions) {\n    this.setSelectedRegions(this.params.selectedRegions);\n  }\n  if (this.params.selectedMarkers) {\n    this.setSelectedMarkers(this.params.selectedMarkers);\n  }\n  this.legendCntHorizontal = jvm.$('<div/>').addClass('jvectormap-legend-cnt jvectormap-legend-cnt-h');\n  this.legendCntVertical = jvm.$('<div/>').addClass('jvectormap-legend-cnt jvectormap-legend-cnt-v');\n  this.container.append(this.legendCntHorizontal);\n  this.container.append(this.legendCntVertical);\n  if (this.params.series) {\n    this.createSeries();\n  }\n};\njvm.Map.prototype = {\n  transX: 0,\n  transY: 0,\n  scale: 1,\n  baseTransX: 0,\n  baseTransY: 0,\n  baseScale: 1,\n  width: 0,\n  height: 0,\n  /**\n   * Set background color of the map.\n   * @param {String} backgroundColor Background color in CSS format.\n   */\n  setBackgroundColor: function setBackgroundColor(backgroundColor) {\n    this.container.css('background-color', backgroundColor);\n  },\n  resize: function resize() {\n    var curBaseScale = this.baseScale;\n    if (this.width / this.height > this.defaultWidth / this.defaultHeight) {\n      this.baseScale = this.height / this.defaultHeight;\n      this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale);\n    } else {\n      this.baseScale = this.width / this.defaultWidth;\n      this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale);\n    }\n    this.scale *= this.baseScale / curBaseScale;\n    this.transX *= this.baseScale / curBaseScale;\n    this.transY *= this.baseScale / curBaseScale;\n  },\n  /**\n   * Synchronize the size of the map with the size of the container. Suitable in situations where the size of the container is changed programmatically or container is shown after it became visible.\n   */\n  updateSize: function updateSize() {\n    this.width = this.container.width();\n    this.height = this.container.height();\n    this.resize();\n    this.canvas.setSize(this.width, this.height);\n    this.applyTransform();\n  },\n  /**\n   * Reset all the series and show the map with the initial zoom.\n   */\n  reset: function reset() {\n    var key, i;\n    for (key in this.series) {\n      for (i = 0; i < this.series[key].length; i++) {\n        this.series[key][i].clear();\n      }\n    }\n    this.scale = this.baseScale;\n    this.transX = this.baseTransX;\n    this.transY = this.baseTransY;\n    this.applyTransform();\n  },\n  applyTransform: function applyTransform() {\n    var maxTransX, maxTransY, minTransX, minTransY;\n    if (this.defaultWidth * this.scale <= this.width) {\n      maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n      minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n    } else {\n      maxTransX = 0;\n      minTransX = (this.width - this.defaultWidth * this.scale) / this.scale;\n    }\n    if (this.defaultHeight * this.scale <= this.height) {\n      maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n      minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n    } else {\n      maxTransY = 0;\n      minTransY = (this.height - this.defaultHeight * this.scale) / this.scale;\n    }\n    if (this.transY > maxTransY) {\n      this.transY = maxTransY;\n    } else if (this.transY < minTransY) {\n      this.transY = minTransY;\n    }\n    if (this.transX > maxTransX) {\n      this.transX = maxTransX;\n    } else if (this.transX < minTransX) {\n      this.transX = minTransX;\n    }\n    this.canvas.applyTransformParams(this.scale, this.transX, this.transY);\n    if (this.markers) {\n      this.repositionMarkers();\n    }\n    this.repositionLabels();\n    this.container.trigger('viewportChange', [this.scale / this.baseScale, this.transX, this.transY]);\n  },\n  bindContainerEvents: function bindContainerEvents() {\n    var mouseDown = false,\n      oldPageX,\n      oldPageY,\n      map = this;\n    if (this.params.panOnDrag) {\n      this.container.mousemove(function (e) {\n        if (mouseDown) {\n          map.transX -= (oldPageX - e.pageX) / map.scale;\n          map.transY -= (oldPageY - e.pageY) / map.scale;\n          map.applyTransform();\n          oldPageX = e.pageX;\n          oldPageY = e.pageY;\n        }\n        return false;\n      }).mousedown(function (e) {\n        mouseDown = true;\n        oldPageX = e.pageX;\n        oldPageY = e.pageY;\n        return false;\n      });\n      this.onContainerMouseUp = function () {\n        mouseDown = false;\n      };\n      jvm.$('body').mouseup(this.onContainerMouseUp);\n    }\n    if (this.params.zoomOnScroll) {\n      this.container.mousewheel(function (event, delta, deltaX, deltaY) {\n        var offset = jvm.$(map.container).offset(),\n          centerX = event.pageX - offset.left,\n          centerY = event.pageY - offset.top,\n          zoomStep = Math.pow(1 + map.params.zoomOnScrollSpeed / 1000, event.deltaFactor * event.deltaY);\n        map.tip.hide();\n        map.setScale(map.scale * zoomStep, centerX, centerY);\n        event.preventDefault();\n      });\n    }\n  },\n  bindContainerTouchEvents: function bindContainerTouchEvents() {\n    var touchStartScale,\n      touchStartDistance,\n      map = this,\n      touchX,\n      touchY,\n      centerTouchX,\n      centerTouchY,\n      lastTouchesLength,\n      handleTouchEvent = function handleTouchEvent(e) {\n        var touches = e.originalEvent.touches,\n          offset,\n          scale,\n          transXOld,\n          transYOld;\n        if (e.type == 'touchstart') {\n          lastTouchesLength = 0;\n        }\n        if (touches.length == 1) {\n          if (lastTouchesLength == 1) {\n            transXOld = map.transX;\n            transYOld = map.transY;\n            map.transX -= (touchX - touches[0].pageX) / map.scale;\n            map.transY -= (touchY - touches[0].pageY) / map.scale;\n            map.applyTransform();\n            map.tip.hide();\n            if (transXOld != map.transX || transYOld != map.transY) {\n              e.preventDefault();\n            }\n          }\n          touchX = touches[0].pageX;\n          touchY = touches[0].pageY;\n        } else if (touches.length == 2) {\n          if (lastTouchesLength == 2) {\n            scale = Math.sqrt(Math.pow(touches[0].pageX - touches[1].pageX, 2) + Math.pow(touches[0].pageY - touches[1].pageY, 2)) / touchStartDistance;\n            map.setScale(touchStartScale * scale, centerTouchX, centerTouchY);\n            map.tip.hide();\n            e.preventDefault();\n          } else {\n            offset = jvm.$(map.container).offset();\n            if (touches[0].pageX > touches[1].pageX) {\n              centerTouchX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2;\n            } else {\n              centerTouchX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2;\n            }\n            if (touches[0].pageY > touches[1].pageY) {\n              centerTouchY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2;\n            } else {\n              centerTouchY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2;\n            }\n            centerTouchX -= offset.left;\n            centerTouchY -= offset.top;\n            touchStartScale = map.scale;\n            touchStartDistance = Math.sqrt(Math.pow(touches[0].pageX - touches[1].pageX, 2) + Math.pow(touches[0].pageY - touches[1].pageY, 2));\n          }\n        }\n        lastTouchesLength = touches.length;\n      };\n    jvm.$(this.container).bind('touchstart', handleTouchEvent);\n    jvm.$(this.container).bind('touchmove', handleTouchEvent);\n  },\n  bindContainerPointerEvents: function bindContainerPointerEvents() {\n    var map = this,\n      gesture = new MSGesture(),\n      element = this.container[0],\n      handlePointerDownEvent = function handlePointerDownEvent(e) {\n        gesture.addPointer(e.pointerId);\n      },\n      handleGestureEvent = function handleGestureEvent(e) {\n        var offset, scale, transXOld, transYOld;\n        if (e.translationX != 0 || e.translationY != 0) {\n          transXOld = map.transX;\n          transYOld = map.transY;\n          map.transX += e.translationX / map.scale;\n          map.transY += e.translationY / map.scale;\n          map.applyTransform();\n          map.tip.hide();\n          if (transXOld != map.transX || transYOld != map.transY) {\n            e.preventDefault();\n          }\n        }\n        if (e.scale != 1) {\n          map.setScale(map.scale * e.scale, e.offsetX, e.offsetY);\n          map.tip.hide();\n          e.preventDefault();\n        }\n      };\n    gesture.target = element;\n    element.addEventListener(\"MSGestureChange\", handleGestureEvent, false);\n    element.addEventListener(\"pointerdown\", handlePointerDownEvent, false);\n  },\n  bindElementEvents: function bindElementEvents() {\n    var map = this,\n      pageX,\n      pageY,\n      mouseMoved;\n    this.container.mousemove(function (e) {\n      if (Math.abs(pageX - e.pageX) + Math.abs(pageY - e.pageY) > 2) {\n        mouseMoved = true;\n      }\n    });\n\n    /* Can not use common class selectors here because of the bug in jQuery\n       SVG handling, use with caution. */\n    this.container.delegate(\"[class~='jvectormap-element']\", 'mouseover mouseout', function (e) {\n      var baseVal = jvm.$(this).attr('class').baseVal || jvm.$(this).attr('class'),\n        type = baseVal.indexOf('jvectormap-region') === -1 ? 'marker' : 'region',\n        code = type == 'region' ? jvm.$(this).attr('data-code') : jvm.$(this).attr('data-index'),\n        element = type == 'region' ? map.regions[code].element : map.markers[code].element,\n        tipText = type == 'region' ? map.mapData.paths[code].name : map.markers[code].config.name || '',\n        tipShowEvent = jvm.$.Event(type + 'TipShow.jvectormap'),\n        overEvent = jvm.$.Event(type + 'Over.jvectormap');\n      if (e.type == 'mouseover') {\n        map.container.trigger(overEvent, [code]);\n        if (!overEvent.isDefaultPrevented()) {\n          element.setHovered(true);\n        }\n        map.tip.text(tipText);\n        map.container.trigger(tipShowEvent, [map.tip, code]);\n        if (!tipShowEvent.isDefaultPrevented()) {\n          map.tip.show();\n          map.tipWidth = map.tip.width();\n          map.tipHeight = map.tip.height();\n        }\n      } else {\n        element.setHovered(false);\n        map.tip.hide();\n        map.container.trigger(type + 'Out.jvectormap', [code]);\n      }\n    });\n\n    /* Can not use common class selectors here because of the bug in jQuery\n       SVG handling, use with caution. */\n    this.container.delegate(\"[class~='jvectormap-element']\", 'mousedown', function (e) {\n      pageX = e.pageX;\n      pageY = e.pageY;\n      mouseMoved = false;\n    });\n\n    /* Can not use common class selectors here because of the bug in jQuery\n       SVG handling, use with caution. */\n    this.container.delegate(\"[class~='jvectormap-element']\", 'mouseup', function () {\n      var baseVal = jvm.$(this).attr('class').baseVal ? jvm.$(this).attr('class').baseVal : jvm.$(this).attr('class'),\n        type = baseVal.indexOf('jvectormap-region') === -1 ? 'marker' : 'region',\n        code = type == 'region' ? jvm.$(this).attr('data-code') : jvm.$(this).attr('data-index'),\n        clickEvent = jvm.$.Event(type + 'Click.jvectormap'),\n        element = type == 'region' ? map.regions[code].element : map.markers[code].element;\n      if (!mouseMoved) {\n        map.container.trigger(clickEvent, [code]);\n        if (type === 'region' && map.params.regionsSelectable || type === 'marker' && map.params.markersSelectable) {\n          if (!clickEvent.isDefaultPrevented()) {\n            if (map.params[type + 'sSelectableOne']) {\n              map.clearSelected(type + 's');\n            }\n            element.setSelected(!element.isSelected);\n          }\n        }\n      }\n    });\n  },\n  bindZoomButtons: function bindZoomButtons() {\n    var map = this;\n    jvm.$('<div/>').addClass('jvectormap-zoomin').text('+').appendTo(this.container);\n    jvm.$('<div/>').addClass('jvectormap-zoomout').html('&#x2212;').appendTo(this.container);\n    this.container.find('.jvectormap-zoomin').click(function () {\n      map.setScale(map.scale * map.params.zoomStep, map.width / 2, map.height / 2, false, map.params.zoomAnimate);\n    });\n    this.container.find('.jvectormap-zoomout').click(function () {\n      map.setScale(map.scale / map.params.zoomStep, map.width / 2, map.height / 2, false, map.params.zoomAnimate);\n    });\n  },\n  createTip: function createTip() {\n    var map = this;\n    this.tip = jvm.$('<div/>').addClass('jvectormap-tip').appendTo(jvm.$('body'));\n    this.container.mousemove(function (e) {\n      var left = e.pageX - 15 - map.tipWidth,\n        top = e.pageY - 15 - map.tipHeight;\n      if (left < 5) {\n        left = e.pageX + 15;\n      }\n      if (top < 5) {\n        top = e.pageY + 15;\n      }\n      map.tip.css({\n        left: left,\n        top: top\n      });\n    });\n  },\n  setScale: function setScale(scale, anchorX, anchorY, isCentered, animate) {\n    var viewportChangeEvent = jvm.$.Event('zoom.jvectormap'),\n      interval,\n      that = this,\n      i = 0,\n      count = Math.abs(Math.round((scale - this.scale) * 60 / Math.max(scale, this.scale))),\n      scaleStart,\n      scaleDiff,\n      transXStart,\n      transXDiff,\n      transYStart,\n      transYDiff,\n      transX,\n      transY,\n      deferred = new jvm.$.Deferred();\n    if (scale > this.params.zoomMax * this.baseScale) {\n      scale = this.params.zoomMax * this.baseScale;\n    } else if (scale < this.params.zoomMin * this.baseScale) {\n      scale = this.params.zoomMin * this.baseScale;\n    }\n    if (typeof anchorX != 'undefined' && typeof anchorY != 'undefined') {\n      zoomStep = scale / this.scale;\n      if (isCentered) {\n        transX = anchorX + this.defaultWidth * (this.width / (this.defaultWidth * scale)) / 2;\n        transY = anchorY + this.defaultHeight * (this.height / (this.defaultHeight * scale)) / 2;\n      } else {\n        transX = this.transX - (zoomStep - 1) / scale * anchorX;\n        transY = this.transY - (zoomStep - 1) / scale * anchorY;\n      }\n    }\n    if (animate && count > 0) {\n      scaleStart = this.scale;\n      scaleDiff = (scale - scaleStart) / count;\n      transXStart = this.transX * this.scale;\n      transYStart = this.transY * this.scale;\n      transXDiff = (transX * scale - transXStart) / count;\n      transYDiff = (transY * scale - transYStart) / count;\n      interval = setInterval(function () {\n        i += 1;\n        that.scale = scaleStart + scaleDiff * i;\n        that.transX = (transXStart + transXDiff * i) / that.scale;\n        that.transY = (transYStart + transYDiff * i) / that.scale;\n        that.applyTransform();\n        if (i == count) {\n          clearInterval(interval);\n          that.container.trigger(viewportChangeEvent, [scale / that.baseScale]);\n          deferred.resolve();\n        }\n      }, 10);\n    } else {\n      this.transX = transX;\n      this.transY = transY;\n      this.scale = scale;\n      this.applyTransform();\n      this.container.trigger(viewportChangeEvent, [scale / this.baseScale]);\n      deferred.resolve();\n    }\n    return deferred;\n  },\n  /**\n   * Set the map's viewport to the specific point and set zoom of the map to the specific level. Point and zoom level could be defined in two ways: using the code of some region to focus on or a central point and zoom level as numbers.\n   * @param This method takes a configuration object as the single argument. The options passed to it are the following:\n   * @param {Array} params.regions Array of region codes to zoom to.\n   * @param {String} params.region Region code to zoom to.\n   * @param {Number} params.scale Map scale to set.\n   * @param {Number} params.lat Latitude to set viewport to.\n   * @param {Number} params.lng Longitude to set viewport to.\n   * @param {Number} params.x Number from 0 to 1 specifying the horizontal coordinate of the central point of the viewport.\n   * @param {Number} params.y Number from 0 to 1 specifying the vertical coordinate of the central point of the viewport.\n   * @param {Boolean} params.animate Indicates whether or not to animate the scale change and transition.\n   */\n  setFocus: function setFocus(config) {\n    var bbox, itemBbox, newBbox, codes, i, point;\n    config = config || {};\n    if (config.region) {\n      codes = [config.region];\n    } else if (config.regions) {\n      codes = config.regions;\n    }\n    if (codes) {\n      for (i = 0; i < codes.length; i++) {\n        if (this.regions[codes[i]]) {\n          itemBbox = this.regions[codes[i]].element.shape.getBBox();\n          if (itemBbox) {\n            if (typeof bbox == 'undefined') {\n              bbox = itemBbox;\n            } else {\n              newBbox = {\n                x: Math.min(bbox.x, itemBbox.x),\n                y: Math.min(bbox.y, itemBbox.y),\n                width: Math.max(bbox.x + bbox.width, itemBbox.x + itemBbox.width) - Math.min(bbox.x, itemBbox.x),\n                height: Math.max(bbox.y + bbox.height, itemBbox.y + itemBbox.height) - Math.min(bbox.y, itemBbox.y)\n              };\n              bbox = newBbox;\n            }\n          }\n        }\n      }\n      return this.setScale(Math.min(this.width / bbox.width, this.height / bbox.height), -(bbox.x + bbox.width / 2), -(bbox.y + bbox.height / 2), true, config.animate);\n    } else {\n      if (config.lat && config.lng) {\n        point = this.latLngToPoint(config.lat, config.lng);\n        config.x = this.transX - point.x / this.scale;\n        config.y = this.transY - point.y / this.scale;\n      } else if (config.x && config.y) {\n        config.x *= -this.defaultWidth;\n        config.y *= -this.defaultHeight;\n      }\n      return this.setScale(config.scale * this.baseScale, config.x, config.y, true, config.animate);\n    }\n  },\n  getSelected: function getSelected(type) {\n    var key,\n      selected = [];\n    for (key in this[type]) {\n      if (this[type][key].element.isSelected) {\n        selected.push(key);\n      }\n    }\n    return selected;\n  },\n  /**\n   * Return the codes of currently selected regions.\n   * @returns {Array}\n   */\n  getSelectedRegions: function getSelectedRegions() {\n    return this.getSelected('regions');\n  },\n  /**\n   * Return the codes of currently selected markers.\n   * @returns {Array}\n   */\n  getSelectedMarkers: function getSelectedMarkers() {\n    return this.getSelected('markers');\n  },\n  setSelected: function setSelected(type, keys) {\n    var i;\n    if (_typeof(keys) != 'object') {\n      keys = [keys];\n    }\n    if (jvm.$.isArray(keys)) {\n      for (i = 0; i < keys.length; i++) {\n        this[type][keys[i]].element.setSelected(true);\n      }\n    } else {\n      for (i in keys) {\n        this[type][i].element.setSelected(!!keys[i]);\n      }\n    }\n  },\n  /**\n   * Set or remove selected state for the regions.\n   * @param {String|Array|Object} keys If <code>String</code> or <code>Array</code> the region(s) with the corresponding code(s) will be selected. If <code>Object</code> was provided its keys are  codes of regions, state of which should be changed. Selected state will be set if value is true, removed otherwise.\n   */\n  setSelectedRegions: function setSelectedRegions(keys) {\n    this.setSelected('regions', keys);\n  },\n  /**\n   * Set or remove selected state for the markers.\n   * @param {String|Array|Object} keys If <code>String</code> or <code>Array</code> the marker(s) with the corresponding code(s) will be selected. If <code>Object</code> was provided its keys are  codes of markers, state of which should be changed. Selected state will be set if value is true, removed otherwise.\n   */\n  setSelectedMarkers: function setSelectedMarkers(keys) {\n    this.setSelected('markers', keys);\n  },\n  clearSelected: function clearSelected(type) {\n    var select = {},\n      selected = this.getSelected(type),\n      i;\n    for (i = 0; i < selected.length; i++) {\n      select[selected[i]] = false;\n    }\n    ;\n    this.setSelected(type, select);\n  },\n  /**\n   * Remove the selected state from all the currently selected regions.\n   */\n  clearSelectedRegions: function clearSelectedRegions() {\n    this.clearSelected('regions');\n  },\n  /**\n   * Remove the selected state from all the currently selected markers.\n   */\n  clearSelectedMarkers: function clearSelectedMarkers() {\n    this.clearSelected('markers');\n  },\n  /**\n   * Return the instance of Map. Useful when instantiated as a jQuery plug-in.\n   * @returns {Map}\n   */\n  getMapObject: function getMapObject() {\n    return this;\n  },\n  /**\n   * Return the name of the region by region code.\n   * @returns {String}\n   */\n  getRegionName: function getRegionName(code) {\n    return this.mapData.paths[code].name;\n  },\n  createRegions: function createRegions() {\n    var key,\n      region,\n      map = this;\n    this.regionLabelsGroup = this.regionLabelsGroup || this.canvas.addGroup();\n    for (key in this.mapData.paths) {\n      region = new jvm.Region({\n        map: this,\n        path: this.mapData.paths[key].path,\n        code: key,\n        style: jvm.$.extend(true, {}, this.params.regionStyle),\n        labelStyle: jvm.$.extend(true, {}, this.params.regionLabelStyle),\n        canvas: this.canvas,\n        labelsGroup: this.regionLabelsGroup,\n        label: this.canvas.mode != 'vml' ? this.params.labels && this.params.labels.regions : null\n      });\n      jvm.$(region.shape).bind('selected', function (e, isSelected) {\n        map.container.trigger('regionSelected.jvectormap', [jvm.$(this.node).attr('data-code'), isSelected, map.getSelectedRegions()]);\n      });\n      this.regions[key] = {\n        element: region,\n        config: this.mapData.paths[key]\n      };\n    }\n  },\n  createMarkers: function createMarkers(markers) {\n    var i,\n      marker,\n      point,\n      markerConfig,\n      markersArray,\n      map = this;\n    this.markersGroup = this.markersGroup || this.canvas.addGroup();\n    this.markerLabelsGroup = this.markerLabelsGroup || this.canvas.addGroup();\n    if (jvm.$.isArray(markers)) {\n      markersArray = markers.slice();\n      markers = {};\n      for (i = 0; i < markersArray.length; i++) {\n        markers[i] = markersArray[i];\n      }\n    }\n    for (i in markers) {\n      markerConfig = markers[i] instanceof Array ? {\n        latLng: markers[i]\n      } : markers[i];\n      point = this.getMarkerPosition(markerConfig);\n      if (point !== false) {\n        marker = new jvm.Marker({\n          map: this,\n          style: jvm.$.extend(true, {}, this.params.markerStyle, {\n            initial: markerConfig.style || {}\n          }),\n          labelStyle: jvm.$.extend(true, {}, this.params.markerLabelStyle),\n          index: i,\n          cx: point.x,\n          cy: point.y,\n          group: this.markersGroup,\n          canvas: this.canvas,\n          labelsGroup: this.markerLabelsGroup,\n          label: this.canvas.mode != 'vml' ? this.params.labels && this.params.labels.markers : null\n        });\n        jvm.$(marker.shape).bind('selected', function (e, isSelected) {\n          map.container.trigger('markerSelected.jvectormap', [jvm.$(this.node).attr('data-index'), isSelected, map.getSelectedMarkers()]);\n        });\n        if (this.markers[i]) {\n          this.removeMarkers([i]);\n        }\n        this.markers[i] = {\n          element: marker,\n          config: markerConfig\n        };\n      }\n    }\n  },\n  repositionMarkers: function repositionMarkers() {\n    var i, point;\n    for (i in this.markers) {\n      point = this.getMarkerPosition(this.markers[i].config);\n      if (point !== false) {\n        this.markers[i].element.setStyle({\n          cx: point.x,\n          cy: point.y\n        });\n      }\n    }\n  },\n  repositionLabels: function repositionLabels() {\n    var key;\n    for (key in this.regions) {\n      this.regions[key].element.updateLabelPosition();\n    }\n    for (key in this.markers) {\n      this.markers[key].element.updateLabelPosition();\n    }\n  },\n  getMarkerPosition: function getMarkerPosition(markerConfig) {\n    if (jvm.Map.maps[this.params.map].projection) {\n      return this.latLngToPoint.apply(this, markerConfig.latLng || [0, 0]);\n    } else {\n      return {\n        x: markerConfig.coords[0] * this.scale + this.transX * this.scale,\n        y: markerConfig.coords[1] * this.scale + this.transY * this.scale\n      };\n    }\n  },\n  /**\n   * Add one marker to the map.\n   * @param {String} key Marker unique code.\n   * @param {Object} marker Marker configuration parameters.\n   * @param {Array} seriesData Values to add to the data series.\n   */\n  addMarker: function addMarker(key, marker, seriesData) {\n    var markers = {},\n      data = [],\n      values,\n      i,\n      seriesData = seriesData || [];\n    markers[key] = marker;\n    for (i = 0; i < seriesData.length; i++) {\n      values = {};\n      if (typeof seriesData[i] !== 'undefined') {\n        values[key] = seriesData[i];\n      }\n      data.push(values);\n    }\n    this.addMarkers(markers, data);\n  },\n  /**\n   * Add set of marker to the map.\n   * @param {Object|Array} markers Markers to add to the map. In case of array is provided, codes of markers will be set as string representations of array indexes.\n   * @param {Array} seriesData Values to add to the data series.\n   */\n  addMarkers: function addMarkers(markers, seriesData) {\n    var i;\n    seriesData = seriesData || [];\n    this.createMarkers(markers);\n    for (i = 0; i < seriesData.length; i++) {\n      this.series.markers[i].setValues(seriesData[i] || {});\n    }\n    ;\n  },\n  /**\n   * Remove some markers from the map.\n   * @param {Array} markers Array of marker codes to be removed.\n   */\n  removeMarkers: function removeMarkers(markers) {\n    var i;\n    for (i = 0; i < markers.length; i++) {\n      this.markers[markers[i]].element.remove();\n      delete this.markers[markers[i]];\n    }\n    ;\n  },\n  /**\n   * Remove all markers from the map.\n   */\n  removeAllMarkers: function removeAllMarkers() {\n    var i,\n      markers = [];\n    for (i in this.markers) {\n      markers.push(i);\n    }\n    this.removeMarkers(markers);\n  },\n  /**\n   * Converts coordinates expressed as latitude and longitude to the coordinates in pixels on the map.\n   * @param {Number} lat Latitide of point in degrees.\n   * @param {Number} lng Longitude of point in degrees.\n   */\n  latLngToPoint: function latLngToPoint(lat, lng) {\n    var point,\n      proj = jvm.Map.maps[this.params.map].projection,\n      centralMeridian = proj.centralMeridian,\n      inset,\n      bbox;\n    if (lng < -180 + centralMeridian) {\n      lng += 360;\n    }\n    point = jvm.Proj[proj.type](lat, lng, centralMeridian);\n    inset = this.getInsetForPoint(point.x, point.y);\n    if (inset) {\n      bbox = inset.bbox;\n      point.x = (point.x - bbox[0].x) / (bbox[1].x - bbox[0].x) * inset.width * this.scale;\n      point.y = (point.y - bbox[0].y) / (bbox[1].y - bbox[0].y) * inset.height * this.scale;\n      return {\n        x: point.x + this.transX * this.scale + inset.left * this.scale,\n        y: point.y + this.transY * this.scale + inset.top * this.scale\n      };\n    } else {\n      return false;\n    }\n  },\n  /**\n   * Converts cartesian coordinates into coordinates expressed as latitude and longitude.\n   * @param {Number} x X-axis of point on map in pixels.\n   * @param {Number} y Y-axis of point on map in pixels.\n   */\n  pointToLatLng: function pointToLatLng(x, y) {\n    var proj = jvm.Map.maps[this.params.map].projection,\n      centralMeridian = proj.centralMeridian,\n      insets = jvm.Map.maps[this.params.map].insets,\n      i,\n      inset,\n      bbox,\n      nx,\n      ny;\n    for (i = 0; i < insets.length; i++) {\n      inset = insets[i];\n      bbox = inset.bbox;\n      nx = x - (this.transX * this.scale + inset.left * this.scale);\n      ny = y - (this.transY * this.scale + inset.top * this.scale);\n      nx = nx / (inset.width * this.scale) * (bbox[1].x - bbox[0].x) + bbox[0].x;\n      ny = ny / (inset.height * this.scale) * (bbox[1].y - bbox[0].y) + bbox[0].y;\n      if (nx > bbox[0].x && nx < bbox[1].x && ny > bbox[0].y && ny < bbox[1].y) {\n        return jvm.Proj[proj.type + '_inv'](nx, -ny, centralMeridian);\n      }\n    }\n    return false;\n  },\n  getInsetForPoint: function getInsetForPoint(x, y) {\n    var insets = jvm.Map.maps[this.params.map].insets,\n      i,\n      bbox;\n    for (i = 0; i < insets.length; i++) {\n      bbox = insets[i].bbox;\n      if (x > bbox[0].x && x < bbox[1].x && y > bbox[0].y && y < bbox[1].y) {\n        return insets[i];\n      }\n    }\n  },\n  createSeries: function createSeries() {\n    var i, key;\n    this.series = {\n      markers: [],\n      regions: []\n    };\n    for (key in this.params.series) {\n      for (i = 0; i < this.params.series[key].length; i++) {\n        this.series[key][i] = new jvm.DataSeries(this.params.series[key][i], this[key], this);\n      }\n    }\n  },\n  /**\n   * Gracefully remove the map and and all its accessories, unbind event handlers.\n   */\n  remove: function remove() {\n    this.tip.remove();\n    this.container.remove();\n    jvm.$(window).unbind('resize', this.onResize);\n    jvm.$('body').unbind('mouseup', this.onContainerMouseUp);\n  }\n};\njvm.Map.maps = {};\njvm.Map.defaultParams = {\n  map: 'world_mill_en',\n  backgroundColor: '#505050',\n  zoomButtons: true,\n  zoomOnScroll: true,\n  zoomOnScrollSpeed: 3,\n  panOnDrag: true,\n  zoomMax: 8,\n  zoomMin: 1,\n  zoomStep: 1.6,\n  zoomAnimate: true,\n  regionsSelectable: false,\n  markersSelectable: false,\n  bindTouchEvents: true,\n  regionStyle: {\n    initial: {\n      fill: 'white',\n      \"fill-opacity\": 1,\n      stroke: 'none',\n      \"stroke-width\": 0,\n      \"stroke-opacity\": 1\n    },\n    hover: {\n      \"fill-opacity\": 0.8,\n      cursor: 'pointer'\n    },\n    selected: {\n      fill: 'yellow'\n    },\n    selectedHover: {}\n  },\n  regionLabelStyle: {\n    initial: {\n      'font-family': 'Verdana',\n      'font-size': '12',\n      'font-weight': 'bold',\n      cursor: 'default',\n      fill: 'black'\n    },\n    hover: {\n      cursor: 'pointer'\n    }\n  },\n  markerStyle: {\n    initial: {\n      fill: 'grey',\n      stroke: '#505050',\n      \"fill-opacity\": 1,\n      \"stroke-width\": 1,\n      \"stroke-opacity\": 1,\n      r: 5\n    },\n    hover: {\n      stroke: 'black',\n      \"stroke-width\": 2,\n      cursor: 'pointer'\n    },\n    selected: {\n      fill: 'blue'\n    },\n    selectedHover: {}\n  },\n  markerLabelStyle: {\n    initial: {\n      'font-family': 'Verdana',\n      'font-size': '12',\n      'font-weight': 'bold',\n      cursor: 'default',\n      fill: 'black'\n    },\n    hover: {\n      cursor: 'pointer'\n    }\n  }\n};\njvm.Map.apiEvents = {\n  onRegionTipShow: 'regionTipShow',\n  onRegionOver: 'regionOver',\n  onRegionOut: 'regionOut',\n  onRegionClick: 'regionClick',\n  onRegionSelected: 'regionSelected',\n  onMarkerTipShow: 'markerTipShow',\n  onMarkerOver: 'markerOver',\n  onMarkerOut: 'markerOut',\n  onMarkerClick: 'markerClick',\n  onMarkerSelected: 'markerSelected',\n  onViewportChange: 'viewportChange'\n}; /**\n   * Creates map with drill-down functionality.\n   * @constructor\n   * @param {Object} params Parameters to initialize map with.\n   * @param {Number} params.maxLevel Maximum number of levels user can go through\n   * @param {Object} params.main Config of the main map. See <a href=\"./jvm-map/\">jvm.Map</a> for more information.\n   * @param {Function} params.mapNameByCode Function go generate map name by region code. Default value is:\n   <pre>\n   function(code, multiMap) {\n   return code.toLowerCase()+'_'+\n          multiMap.defaultProjection+'_en';\n   }\n   </pre>\n   * @param {Function} params.mapUrlByCode Function to generate map url by region code. Default value is:\n   <pre>\n   function(code, multiMap){\n   return 'jquery-jvectormap-data-'+\n          code.toLowerCase()+'-'+\n          multiMap.defaultProjection+'-en.js';\n   }\n   </pre>\n   */\njvm.MultiMap = function (params) {\n  var that = this;\n  this.maps = {};\n  this.params = jvm.$.extend(true, {}, jvm.MultiMap.defaultParams, params);\n  this.params.maxLevel = this.params.maxLevel || Number.MAX_VALUE;\n  this.params.main = this.params.main || {};\n  this.params.main.multiMapLevel = 0;\n  this.history = [this.addMap(this.params.main.map, this.params.main)];\n  this.defaultProjection = this.history[0].mapData.projection.type;\n  this.mapsLoaded = {};\n  this.params.container.css({\n    position: 'relative'\n  });\n  this.backButton = jvm.$('<div/>').addClass('jvectormap-goback').text('Back').appendTo(this.params.container);\n  this.backButton.hide();\n  this.backButton.click(function () {\n    that.goBack();\n  });\n  this.spinner = jvm.$('<div/>').addClass('jvectormap-spinner').appendTo(this.params.container);\n  this.spinner.hide();\n};\njvm.MultiMap.prototype = {\n  addMap: function addMap(name, config) {\n    var cnt = jvm.$('<div/>').css({\n      width: '100%',\n      height: '100%'\n    });\n    this.params.container.append(cnt);\n    this.maps[name] = new jvm.Map(jvm.$.extend(config, {\n      container: cnt\n    }));\n    if (this.params.maxLevel > config.multiMapLevel) {\n      this.maps[name].container.on('regionClick.jvectormap', {\n        scope: this\n      }, function (e, code) {\n        var multimap = e.data.scope,\n          mapName = multimap.params.mapNameByCode(code, multimap);\n        if (!multimap.drillDownPromise || multimap.drillDownPromise.state() !== 'pending') {\n          multimap.drillDown(mapName, code);\n        }\n      });\n    }\n    return this.maps[name];\n  },\n  downloadMap: function downloadMap(code) {\n    var that = this,\n      deferred = jvm.$.Deferred();\n    if (!this.mapsLoaded[code]) {\n      jvm.$.get(this.params.mapUrlByCode(code, this)).then(function () {\n        that.mapsLoaded[code] = true;\n        deferred.resolve();\n      }, function () {\n        deferred.reject();\n      });\n    } else {\n      deferred.resolve();\n    }\n    return deferred;\n  },\n  drillDown: function drillDown(name, code) {\n    var currentMap = this.history[this.history.length - 1],\n      that = this,\n      focusPromise = currentMap.setFocus({\n        region: code,\n        animate: true\n      }),\n      downloadPromise = this.downloadMap(code);\n    focusPromise.then(function () {\n      if (downloadPromise.state() === 'pending') {\n        that.spinner.show();\n      }\n    });\n    downloadPromise.always(function () {\n      that.spinner.hide();\n    });\n    this.drillDownPromise = jvm.$.when(downloadPromise, focusPromise);\n    this.drillDownPromise.then(function () {\n      currentMap.params.container.hide();\n      if (!that.maps[name]) {\n        that.addMap(name, {\n          map: name,\n          multiMapLevel: currentMap.params.multiMapLevel + 1\n        });\n      } else {\n        that.maps[name].params.container.show();\n      }\n      that.history.push(that.maps[name]);\n      that.backButton.show();\n    });\n  },\n  goBack: function goBack() {\n    var currentMap = this.history.pop(),\n      prevMap = this.history[this.history.length - 1],\n      that = this;\n    currentMap.setFocus({\n      scale: 1,\n      x: 0.5,\n      y: 0.5,\n      animate: true\n    }).then(function () {\n      currentMap.params.container.hide();\n      prevMap.params.container.show();\n      prevMap.updateSize();\n      if (that.history.length === 1) {\n        that.backButton.hide();\n      }\n      prevMap.setFocus({\n        scale: 1,\n        x: 0.5,\n        y: 0.5,\n        animate: true\n      });\n    });\n  }\n};\njvm.MultiMap.defaultParams = {\n  mapNameByCode: function mapNameByCode(code, multiMap) {\n    return code.toLowerCase() + '_' + multiMap.defaultProjection + '_en';\n  },\n  mapUrlByCode: function mapUrlByCode(code, multiMap) {\n    return 'jquery-jvectormap-data-' + code.toLowerCase() + '-' + multiMap.defaultProjection + '-en.js';\n  }\n};\n\n// World_mill_en code \n\n$.fn.vectorMap('addMap', 'world_mill_en', {\n  \"insets\": [{\n    \"width\": 900.0,\n    \"top\": 0,\n    \"height\": 440.7063107441331,\n    \"bbox\": [{\n      \"y\": -12671671.123330014,\n      \"x\": -20004297.151525836\n    }, {\n      \"y\": 6930392.02513512,\n      \"x\": 20026572.394749384\n    }],\n    \"left\": 0\n  }],\n  \"paths\": {\n    \"BD\": {\n      \"path\": \"M652.71,228.85l-0.04,1.38l-0.46,-0.21l-0.42,0.3l0.05,0.65l-0.17,-1.37l-0.48,-1.26l-1.08,-1.6l-0.23,-0.13l-2.31,-0.11l-0.31,0.36l0.21,0.98l-0.6,1.11l-0.8,-0.4l-0.37,0.09l-0.23,0.3l-0.54,-0.21l-0.78,-0.19l-0.38,-2.04l-0.83,-1.89l0.4,-1.5l-0.16,-0.35l-1.24,-0.57l0.36,-0.62l1.5,-0.95l0.02,-0.49l-1.62,-1.26l0.64,-1.31l1.7,1.0l0.12,0.04l0.96,0.11l0.19,1.62l0.25,0.26l2.38,0.37l2.32,-0.04l1.06,0.33l-0.92,1.79l-0.97,0.13l-0.23,0.16l-0.77,1.51l0.05,0.35l1.37,1.37l0.5,-0.14l0.35,-1.46l0.24,-0.0l1.24,3.92Z\",\n      \"name\": \"Bangladesh\"\n    },\n    \"BE\": {\n      \"path\": \"M429.28,143.95l1.76,0.25l0.13,-0.01l2.16,-0.64l1.46,1.34l1.26,0.71l-0.23,1.8l-0.44,0.08l-0.24,0.25l-0.2,1.36l-1.8,-1.22l-0.23,-0.05l-1.14,0.23l-1.62,-1.43l-1.15,-1.31l-0.21,-0.1l-0.95,-0.04l-0.21,-0.68l1.66,-0.54Z\",\n      \"name\": \"Belgium\"\n    },\n    \"BF\": {\n      \"path\": \"M413.48,260.21l-1.22,-0.46l-0.13,-0.02l-1.17,0.1l-0.15,0.06l-0.73,0.53l-0.87,-0.41l-0.39,-0.75l-0.13,-0.13l-0.98,-0.48l-0.14,-1.2l0.63,-0.99l0.05,-0.18l-0.05,-0.73l1.9,-2.01l0.08,-0.14l0.35,-1.65l0.49,-0.44l1.05,0.3l0.21,-0.02l1.05,-0.52l0.13,-0.13l0.3,-0.58l1.87,-1.1l0.11,-0.1l0.43,-0.72l2.23,-1.01l1.21,-0.32l0.51,0.4l0.19,0.06l1.25,-0.01l-0.14,0.89l0.01,0.13l0.34,1.16l0.06,0.11l1.35,1.59l0.07,1.13l0.24,0.28l2.64,0.53l-0.05,1.39l-0.42,0.59l-1.11,0.21l-0.22,0.17l-0.46,0.99l-0.69,0.23l-2.12,-0.05l-1.14,-0.2l-0.19,0.03l-0.72,0.36l-1.07,-0.17l-4.35,0.12l-0.29,0.29l-0.06,1.44l0.25,1.45Z\",\n      \"name\": \"Burkina Faso\"\n    },\n    \"BG\": {\n      \"path\": \"M477.63,166.84l0.51,0.9l0.33,0.14l0.9,-0.21l1.91,0.47l3.68,0.16l0.17,-0.05l1.2,-0.75l2.78,-0.67l1.72,1.05l1.02,0.24l-0.97,0.97l-0.91,2.17l0.0,0.24l0.56,1.19l-1.58,-0.3l-0.16,0.01l-2.55,0.95l-0.2,0.28l-0.02,1.23l-1.92,0.24l-1.68,-0.99l-0.27,-0.02l-1.94,0.8l-1.52,-0.07l-0.15,-1.72l-0.12,-0.21l-0.99,-0.76l0.18,-0.18l0.02,-0.39l-0.17,-0.22l0.33,-0.75l0.91,-0.91l0.01,-0.42l-1.16,-1.25l-0.18,-0.89l0.24,-0.27Z\",\n      \"name\": \"Bulgaria\"\n    },\n    \"BA\": {\n      \"path\": \"M468.39,164.66l0.16,0.04l0.43,-0.0l-0.43,0.93l0.06,0.34l1.08,1.06l-0.28,1.09l-0.5,0.13l-0.47,0.28l-0.86,0.74l-0.1,0.16l-0.28,1.29l-1.81,-0.94l-0.9,-1.22l-1.0,-0.73l-1.1,-1.1l-0.55,-0.96l-1.11,-1.3l0.3,-0.75l0.59,0.46l0.42,-0.04l0.46,-0.54l1.0,-0.06l2.11,0.5l1.72,-0.03l1.06,0.64Z\",\n      \"name\": \"Bosnia and Herzegovina\"\n    },\n    \"BN\": {\n      \"path\": \"M707.34,273.57l0.76,-0.72l1.59,-1.03l-0.18,1.93l-0.9,-0.06l-0.28,0.14l-0.31,0.51l-0.68,-0.78Z\",\n      \"name\": \"Brunei\"\n    },\n    \"BO\": {\n      \"path\": \"M263.83,340.79l-0.23,-0.12l-2.86,-0.11l-0.28,0.17l-0.77,1.67l-1.17,-1.51l-0.18,-0.11l-3.28,-0.64l-0.28,0.1l-2.02,2.3l-1.43,0.29l-0.91,-3.35l-1.31,-2.88l0.75,-2.41l-0.09,-0.32l-1.23,-1.03l-0.31,-1.76l-0.05,-0.12l-1.12,-1.6l1.49,-2.62l0.01,-0.28l-1.0,-2.0l0.48,-0.72l0.02,-0.29l-0.37,-0.78l0.87,-1.13l0.06,-0.18l0.05,-2.17l0.12,-1.71l0.5,-0.8l0.01,-0.3l-1.9,-3.58l1.3,0.15l1.34,-0.05l0.23,-0.12l0.51,-0.7l2.12,-0.99l1.31,-0.93l2.81,-0.37l-0.21,1.51l0.01,0.13l0.29,0.91l-0.19,1.64l0.11,0.27l2.72,2.27l0.15,0.07l2.71,0.41l0.92,0.88l0.12,0.07l1.64,0.49l1.0,0.71l0.18,0.06l1.5,-0.02l1.24,0.64l0.1,1.31l0.05,0.14l0.44,0.68l0.02,0.73l-0.44,0.03l-0.27,0.39l0.96,2.99l0.28,0.21l4.43,0.1l-0.28,1.12l0.0,0.15l0.27,1.02l0.15,0.19l1.27,0.67l0.52,1.42l-0.42,1.91l-0.66,1.1l-0.04,0.2l0.21,1.3l-0.19,0.13l-0.01,-0.27l-0.15,-0.24l-2.33,-1.33l-0.14,-0.04l-2.38,-0.03l-4.36,0.76l-0.21,0.16l-1.2,2.29l-0.03,0.13l-0.06,1.37l-0.79,2.53l-0.05,-0.08Z\",\n      \"name\": \"Bolivia\"\n    },\n    \"JP\": {\n      \"path\": \"M781.17,166.78l1.8,0.67l0.28,-0.04l1.38,-1.01l0.43,2.67l-3.44,0.77l-0.18,0.12l-2.04,2.79l-3.71,-1.94l-0.42,0.15l-1.29,3.11l-2.32,0.04l-0.3,-2.63l1.12,-2.1l2.51,-0.16l0.28,-0.25l0.73,-4.22l0.58,-1.9l2.59,2.84l2.0,1.1ZM773.66,187.36l-0.92,2.24l-0.01,0.2l0.4,1.3l-1.18,1.81l-3.06,1.28l-4.35,0.17l-0.19,0.08l-3.4,3.06l-1.36,-0.87l-0.1,-1.95l-0.34,-0.28l-4.35,0.62l-2.99,1.33l-2.87,0.05l-0.28,0.2l0.09,0.33l2.37,1.93l-1.57,4.44l-1.35,0.97l-0.9,-0.79l0.57,-2.32l-0.15,-0.34l-1.5,-0.77l-0.81,-1.53l2.04,-0.75l0.14,-0.1l1.28,-1.72l2.47,-1.43l1.84,-1.92l4.83,-0.82l2.62,0.57l0.33,-0.16l2.45,-4.77l1.38,1.14l0.38,0.0l5.1,-4.02l0.09,-0.11l1.57,-3.57l0.02,-0.16l-0.42,-3.22l0.94,-1.67l2.27,-0.47l1.26,3.82l-0.07,2.23l-2.26,2.86l-0.06,0.19l0.04,2.93ZM757.85,196.18l0.22,0.66l-1.11,1.33l-0.8,-0.7l-0.33,-0.04l-1.28,0.65l-0.14,0.15l-0.54,1.34l-1.17,-0.57l0.02,-1.03l1.2,-1.45l1.24,0.28l0.29,-0.1l0.9,-1.03l1.51,0.5Z\",\n      \"name\": \"Japan\"\n    },\n    \"BI\": {\n      \"path\": \"M494.7,295.83l-0.14,-2.71l-0.04,-0.13l-0.34,-0.62l0.93,0.12l0.3,-0.16l0.67,-1.25l0.9,0.11l0.11,0.76l0.08,0.16l0.46,0.48l0.02,0.56l-0.55,0.48l-0.96,1.29l-0.82,0.82l-0.61,0.07Z\",\n      \"name\": \"Burundi\"\n    },\n    \"BJ\": {\n      \"path\": \"M427.4,268.94l-1.58,0.22l-0.52,-1.45l0.11,-5.73l-0.08,-0.21l-0.43,-0.44l-0.09,-1.13l-0.09,-0.19l-1.52,-1.52l0.24,-1.01l0.7,-0.23l0.18,-0.16l0.45,-0.97l1.07,-0.21l0.19,-0.12l0.53,-0.73l0.73,-0.65l0.68,-0.0l1.69,1.3l-0.08,0.67l0.02,0.14l0.52,1.38l-0.44,0.9l-0.01,0.24l0.2,0.52l-1.1,1.42l-0.76,0.76l-0.08,0.13l-0.47,1.59l0.05,1.69l-0.13,3.79Z\",\n      \"name\": \"Benin\"\n    },\n    \"BT\": {\n      \"path\": \"M650.38,213.78l0.88,0.75l-0.13,1.24l-1.77,0.07l-2.1,-0.18l-1.57,0.4l-2.02,-0.91l-0.02,-0.24l1.54,-1.87l1.18,-0.6l1.67,0.59l1.32,0.08l1.01,0.67Z\",\n      \"name\": \"Bhutan\"\n    },\n    \"JM\": {\n      \"path\": \"M226.67,238.37l1.64,0.23l1.2,0.56l0.11,0.19l-1.25,0.03l-0.14,0.04l-0.65,0.37l-1.24,-0.37l-1.17,-0.77l0.11,-0.22l0.86,-0.15l0.52,0.08Z\",\n      \"name\": \"Jamaica\"\n    },\n    \"BW\": {\n      \"path\": \"M484.91,331.96l0.53,0.52l0.82,1.53l2.83,2.86l0.14,0.08l0.85,0.22l0.03,0.81l0.74,1.66l0.21,0.17l1.87,0.39l1.17,0.87l-3.13,1.71l-2.3,2.01l-0.07,0.1l-0.82,1.74l-0.66,0.88l-1.24,0.19l-0.24,0.2l-0.65,1.98l-1.4,0.55l-1.9,-0.12l-1.2,-0.74l-1.06,-0.32l-0.22,0.02l-1.22,0.62l-0.14,0.14l-0.58,1.21l-1.16,0.79l-1.18,1.13l-1.5,0.23l-0.4,-0.68l0.22,-1.53l-0.04,-0.19l-1.48,-2.54l-0.11,-0.11l-0.53,-0.31l-0.0,-7.25l2.18,-0.08l0.29,-0.3l0.07,-9.0l1.63,-0.08l3.69,-0.86l0.84,0.93l0.38,0.05l1.53,-0.97l0.79,-0.03l1.3,-0.53l0.23,0.1l0.92,1.96Z\",\n      \"name\": \"Botswana\"\n    },\n    \"BR\": {\n      \"path\": \"M259.49,274.87l1.42,0.25l1.97,0.62l0.28,-0.05l0.67,-0.55l1.76,-0.38l2.8,-0.94l0.12,-0.08l0.92,-0.96l0.05,-0.33l-0.15,-0.32l0.73,-0.06l0.36,0.35l-0.27,0.93l0.17,0.36l0.76,0.34l0.44,0.9l-0.58,0.73l-0.06,0.13l-0.4,2.13l0.03,0.19l0.62,1.22l0.17,1.11l0.11,0.19l1.54,1.18l0.15,0.06l1.23,0.12l0.29,-0.15l0.2,-0.36l0.71,-0.11l1.13,-0.44l0.79,-0.63l1.25,0.19l0.65,-0.08l1.32,0.2l0.32,-0.18l0.23,-0.51l-0.05,-0.31l-0.31,-0.37l0.11,-0.31l0.75,0.17l0.13,0.0l1.1,-0.24l1.34,0.5l1.08,0.51l0.33,-0.05l0.67,-0.58l0.27,0.05l0.28,0.57l0.31,0.17l1.2,-0.18l0.17,-0.08l1.03,-1.05l0.76,-1.82l1.39,-2.16l0.49,-0.07l0.52,1.17l1.4,4.37l0.2,0.2l1.14,0.35l0.05,1.39l-1.8,1.97l0.01,0.42l0.78,0.75l0.18,0.08l4.16,0.37l0.08,2.25l0.5,0.22l1.78,-1.54l2.98,0.85l4.07,1.5l1.07,1.28l-0.37,1.23l0.36,0.38l2.83,-0.75l4.8,1.3l3.75,-0.09l3.6,2.02l3.27,2.84l1.93,0.72l2.13,0.11l0.76,0.66l1.22,4.56l-0.96,4.03l-1.22,1.58l-3.52,3.51l-1.63,2.91l-1.75,2.09l-0.5,0.04l-0.26,0.19l-0.72,1.99l0.18,4.76l-0.95,5.56l-0.74,0.96l-0.06,0.15l-0.43,3.39l-2.49,3.34l-0.06,0.13l-0.4,2.56l-1.9,1.07l-0.13,0.16l-0.51,1.38l-2.59,0.0l-3.94,1.01l-1.82,1.19l-2.85,0.81l-3.01,2.17l-2.12,2.65l-0.06,0.13l-0.36,2.0l0.01,0.13l0.4,1.42l-0.45,2.63l-0.53,1.23l-1.76,1.53l-2.76,4.79l-2.16,2.15l-1.69,1.29l-0.09,0.12l-1.12,2.6l-1.3,1.26l-0.45,-1.02l0.99,-1.18l0.01,-0.37l-1.5,-1.95l-1.98,-1.54l-2.58,-1.77l-0.2,-0.05l-0.81,0.07l-2.42,-2.05l-0.25,-0.07l-0.77,0.14l2.75,-3.07l2.8,-2.61l1.67,-1.09l2.11,-1.49l0.13,-0.24l0.05,-2.15l-0.07,-0.2l-1.26,-1.54l-0.35,-0.09l-0.64,0.27l0.3,-0.95l0.34,-1.57l0.01,-1.52l-0.16,-0.26l-0.9,-0.48l-0.27,-0.01l-0.86,0.39l-0.65,-0.08l-0.23,-0.8l-0.23,-2.39l-0.04,-0.12l-0.47,-0.79l-0.14,-0.12l-1.69,-0.71l-0.25,0.01l-0.93,0.47l-2.29,-0.44l0.15,-3.3l-0.03,-0.15l-0.62,-1.22l0.57,-0.39l0.13,-0.3l-0.22,-1.37l0.67,-1.13l0.44,-2.04l-0.01,-0.17l-0.59,-1.61l-0.14,-0.16l-1.25,-0.66l-0.22,-0.82l0.35,-1.41l-0.28,-0.37l-4.59,-0.1l-0.78,-2.41l0.34,-0.02l0.28,-0.31l-0.03,-1.1l-0.05,-0.16l-0.45,-0.68l-0.1,-1.4l-0.16,-0.24l-1.45,-0.76l-0.14,-0.03l-1.48,0.02l-1.04,-0.73l-1.62,-0.48l-0.93,-0.9l-0.16,-0.08l-2.72,-0.41l-2.53,-2.12l0.18,-1.54l-0.01,-0.13l-0.29,-0.91l0.26,-1.83l-0.34,-0.34l-3.28,0.43l-0.14,0.05l-1.3,0.93l-2.16,1.01l-0.12,0.09l-0.47,0.65l-1.12,0.05l-1.84,-0.21l-0.12,0.01l-1.33,0.41l-0.82,-0.21l0.16,-3.6l-0.48,-0.26l-1.97,1.43l-1.96,-0.06l-0.86,-1.23l-0.22,-0.13l-1.23,-0.11l0.34,-0.69l-0.05,-0.33l-1.36,-1.5l-0.92,-2.0l0.45,-0.32l0.13,-0.25l-0.0,-0.87l1.34,-0.64l0.17,-0.32l-0.23,-1.23l0.56,-0.77l0.05,-0.13l0.16,-1.03l2.7,-1.61l2.01,-0.47l0.16,-0.09l0.24,-0.27l2.11,0.11l0.31,-0.25l1.13,-6.87l0.06,-1.12l-0.4,-1.53l-0.1,-0.15l-1.0,-0.82l0.01,-1.45l1.08,-0.32l0.39,0.2l0.44,-0.24l0.08,-0.96l-0.25,-0.32l-1.22,-0.22l-0.02,-1.01l4.57,0.05l0.22,-0.09l0.6,-0.63l0.44,0.5l0.47,1.42l0.45,0.16l0.27,-0.18l1.21,1.16l0.23,0.08l1.95,-0.16l0.23,-0.14l0.43,-0.67l1.76,-0.55l1.05,-0.42l0.18,-0.2l0.25,-0.92l1.65,-0.66l0.18,-0.35l-0.14,-0.53l-0.26,-0.22l-1.91,-0.19l-0.29,-1.33l0.1,-1.64l-0.15,-0.28l-0.44,-0.25Z\",\n      \"name\": \"Brazil\"\n    },\n    \"BS\": {\n      \"path\": \"M227.51,216.69l0.3,0.18l-0.24,1.07l0.03,-1.04l-0.09,-0.21ZM226.5,224.03l-0.13,0.03l-0.54,-1.3l-0.09,-0.12l-0.78,-0.64l0.4,-1.26l0.33,0.05l0.79,2.0l0.01,1.24ZM225.76,216.5l-2.16,0.34l-0.07,-0.41l0.85,-0.16l1.36,0.07l0.02,0.16Z\",\n      \"name\": \"The Bahamas\"\n    },\n    \"BY\": {\n      \"path\": \"M480.08,135.28l2.09,0.02l0.13,-0.03l2.72,-1.3l0.16,-0.19l0.55,-1.83l1.94,-1.06l0.15,-0.31l-0.2,-1.33l1.33,-0.52l2.58,-1.3l2.39,0.8l0.3,0.75l0.37,0.17l1.22,-0.39l2.18,0.75l0.2,1.36l-0.48,0.85l0.01,0.32l1.57,2.26l0.92,0.6l-0.1,0.41l0.19,0.35l1.61,0.57l0.48,0.6l-0.64,0.49l-1.91,-0.11l-0.18,0.05l-0.48,0.32l-0.1,0.39l0.57,1.1l0.51,1.78l-1.79,0.17l-0.18,0.08l-0.77,0.73l-0.09,0.19l-0.13,1.31l-0.75,-0.22l-2.11,0.15l-0.56,-0.66l-0.39,-0.06l-0.8,0.49l-0.79,-0.4l-0.13,-0.03l-1.94,-0.07l-2.76,-0.79l-2.58,-0.27l-1.98,0.07l-0.15,0.05l-1.31,0.86l-0.8,0.09l-0.04,-1.16l-0.03,-0.12l-0.63,-1.28l1.22,-0.56l0.17,-0.27l0.01,-1.35l-0.04,-0.15l-0.66,-1.24l-0.08,-1.12Z\",\n      \"name\": \"Belarus\"\n    },\n    \"BZ\": {\n      \"path\": \"M198.03,239.7l0.28,0.19l0.43,-0.1l0.82,-1.42l0.0,0.07l0.29,0.29l0.16,0.0l-0.02,0.35l-0.39,1.08l0.02,0.25l0.16,0.29l-0.23,0.8l0.04,0.24l0.09,0.14l-0.25,1.12l-0.38,0.53l-0.33,0.06l-0.21,0.15l-0.41,0.74l-0.25,0.0l0.17,-2.58l0.01,-2.2Z\",\n      \"name\": \"Belize\"\n    },\n    \"RU\": {\n      \"path\": \"M688.57,38.85l0.63,2.39l0.44,0.19l2.22,-1.23l7.18,0.07l5.54,2.49l1.85,1.77l-0.55,2.34l-2.64,1.42l-6.57,2.76l-1.95,1.5l0.12,0.53l3.09,0.68l3.69,1.23l0.21,-0.01l1.98,-0.81l1.16,2.84l0.5,0.08l1.03,-1.18l3.86,-0.74l7.79,0.78l0.56,2.05l0.27,0.22l10.47,0.71l0.32,-0.29l0.13,-3.34l4.98,0.8l3.96,-0.02l3.88,2.43l1.06,2.79l-1.38,1.83l0.01,0.38l3.15,3.64l0.1,0.08l3.94,1.86l0.4,-0.14l2.28,-4.56l3.75,1.94l0.22,0.02l4.18,-1.22l4.76,1.4l0.26,-0.04l1.74,-1.23l3.98,0.63l0.32,-0.41l-1.71,-4.1l3.0,-1.86l22.39,3.04l2.06,2.67l0.1,0.08l6.55,3.51l0.17,0.03l10.08,-0.86l4.86,0.73l1.91,1.72l-0.29,3.13l0.18,0.31l3.08,1.26l0.19,0.01l3.32,-0.9l4.37,-0.11l4.78,0.87l4.61,-0.48l4.26,3.82l0.32,0.05l3.1,-1.4l0.12,-0.45l-1.91,-2.67l0.92,-1.64l7.78,1.22l5.22,-0.26l7.12,2.1l9.6,5.22l6.4,4.15l-0.2,2.44l0.14,0.28l1.69,1.04l0.45,-0.31l-0.51,-2.66l6.31,0.58l4.52,3.61l-2.1,1.52l-4.02,0.42l-0.27,0.29l-0.06,3.83l-0.81,0.67l-2.14,-0.11l-1.91,-1.39l-3.19,-1.13l-0.51,-1.63l-0.21,-0.2l-2.54,-0.67l-0.13,-0.0l-2.69,0.5l-1.12,-1.19l0.48,-1.36l-0.38,-0.39l-3.0,0.98l-0.17,0.44l1.02,1.76l-1.27,1.55l-3.09,1.71l-3.15,-0.29l-0.3,0.18l0.07,0.34l2.22,2.1l1.47,3.22l1.15,1.09l0.25,1.41l-0.48,0.76l-4.47,-0.81l-0.17,0.02l-6.97,2.9l-2.2,0.44l-0.11,0.05l-3.83,2.68l-3.63,2.32l-0.1,0.11l-0.76,1.4l-3.3,-2.4l-0.3,-0.03l-6.31,2.85l-0.99,-1.21l-0.4,-0.06l-2.32,1.54l-3.23,-0.49l-0.33,0.2l-0.79,2.39l-2.97,3.51l-0.07,0.21l0.09,1.47l0.22,0.27l2.62,0.74l-0.3,4.7l-2.06,0.12l-0.26,0.2l-1.07,2.94l0.04,0.27l0.83,1.19l-4.03,1.63l-0.18,0.21l-0.83,3.72l-3.55,0.79l-0.23,0.23l-0.73,3.32l-3.22,2.76l-0.76,-1.88l-1.07,-4.88l-1.39,-7.59l1.17,-4.76l2.05,-2.08l0.09,-0.19l0.11,-1.46l3.67,-0.77l0.15,-0.08l4.47,-4.61l4.29,-3.82l4.48,-3.01l0.11,-0.14l2.01,-5.43l-0.31,-0.4l-3.04,0.33l-0.24,0.17l-1.47,3.11l-5.98,3.94l-1.91,-4.36l-0.33,-0.17l-6.46,1.3l-0.15,0.08l-6.27,6.33l-0.01,0.41l1.7,1.87l-5.04,0.87l-3.51,0.34l0.16,-2.32l-0.26,-0.32l-3.89,-0.56l-0.19,0.04l-3.02,1.77l-7.63,-0.63l-8.24,1.1l-0.16,0.07l-8.11,7.09l-9.6,8.31l0.16,0.52l3.79,0.42l1.16,2.03l0.17,0.14l2.43,0.76l0.31,-0.08l1.5,-1.61l2.49,0.2l3.46,3.6l0.08,2.67l-1.91,3.26l-0.04,0.14l-0.21,3.91l-1.11,5.09l-3.73,4.55l-0.87,2.21l-6.73,7.14l-1.59,1.77l-3.23,1.72l-1.38,0.03l-1.48,-1.39l-0.37,-0.03l-3.36,2.22l-0.11,0.14l-0.16,0.42l-0.01,-1.09l1.0,-0.06l0.28,-0.27l0.36,-3.6l-0.61,-2.51l1.85,-0.94l2.94,0.53l0.32,-0.15l1.71,-3.1l0.84,-3.38l0.97,-1.18l1.32,-2.88l-0.34,-0.42l-4.14,0.95l-2.18,1.25l-3.51,-0.0l-0.95,-2.81l-0.1,-0.14l-2.97,-2.3l-0.11,-0.05l-4.19,-1.0l-0.89,-3.08l-0.87,-2.03l-0.95,-1.46l-1.54,-3.37l-0.12,-0.14l-2.27,-1.28l-3.83,-1.02l-3.37,0.1l-3.11,0.61l-0.13,0.06l-2.07,1.69l0.04,0.49l1.23,0.72l0.03,1.53l-1.34,1.05l-2.26,3.51l-0.05,0.17l0.02,1.27l-3.25,1.9l-2.87,-1.17l-0.14,-0.02l-2.86,0.26l-1.22,-1.02l-0.12,-0.06l-1.5,-0.35l-0.23,0.04l-3.62,2.27l-3.24,0.53l-2.28,0.79l-3.08,-0.51l-2.24,0.03l-1.49,-1.61l-2.45,-1.57l-0.11,-0.04l-2.6,-0.43l-3.17,0.43l-2.31,0.59l-3.31,-1.28l-0.45,-2.31l-0.21,-0.23l-2.94,-0.85l-2.26,-0.39l-2.77,-1.36l-0.37,0.09l-2.59,3.45l-0.03,0.32l0.91,1.74l-2.15,2.01l-3.47,-0.79l-2.44,-0.12l-1.59,-1.46l-0.2,-0.08l-2.55,-0.05l-2.12,-0.98l-0.24,-0.01l-3.85,1.57l-4.74,2.79l-2.59,0.55l-0.79,0.21l-1.21,-1.81l-0.29,-0.13l-3.05,0.41l-0.96,-1.25l-0.14,-0.1l-1.65,-0.6l-1.15,-1.82l-0.13,-0.12l-1.38,-0.6l-0.19,-0.02l-3.49,0.82l-3.35,-1.85l-0.38,0.08l-1.08,1.4l-5.36,-8.17l-3.02,-2.52l0.72,-0.85l0.01,-0.38l-0.37,-0.08l-6.22,3.21l-1.98,0.16l0.17,-1.51l-0.2,-0.31l-3.22,-1.17l-0.19,-0.0l-2.3,0.74l-0.72,-3.27l-0.24,-0.23l-4.5,-0.75l-0.21,0.04l-2.2,1.42l-6.21,1.27l-0.11,0.05l-1.16,0.81l-9.3,1.19l-0.18,0.09l-1.15,1.17l-0.02,0.39l1.56,2.01l-2.02,0.74l-0.16,0.42l0.35,0.68l-2.18,1.49l0.02,0.51l3.83,2.16l-0.45,1.13l-3.31,-0.13l-0.25,0.12l-0.57,0.77l-2.97,-1.59l-0.15,-0.04l-3.97,0.07l-0.13,0.03l-2.53,1.32l-2.84,-1.28l-5.52,-2.3l-0.12,-0.02l-3.91,0.09l-0.16,0.05l-5.17,3.6l-0.13,0.21l-0.25,1.89l-2.17,-1.6l-0.44,0.1l-2.0,3.59l0.06,0.37l0.55,0.5l-1.32,2.23l0.04,0.36l2.13,2.17l0.23,0.09l1.7,-0.08l1.42,1.89l-0.23,1.5l0.19,0.32l0.94,0.38l-0.89,1.44l-2.3,0.49l-0.17,0.11l-2.49,3.2l0.0,0.37l2.2,2.81l-0.23,1.93l0.06,0.22l2.56,3.32l-1.27,1.02l-0.4,0.66l-0.8,-0.15l-1.65,-1.75l-0.18,-0.09l-0.66,-0.09l-1.45,-0.64l-0.72,-1.16l-0.18,-0.13l-2.34,-0.63l-0.17,0.0l-1.32,0.41l-0.31,-0.4l-0.12,-0.09l-3.49,-1.48l-3.67,-0.49l-2.1,-0.52l-0.3,0.1l-0.12,0.14l-2.96,-2.4l-2.89,-1.19l-1.69,-1.42l1.27,-0.35l0.16,-0.1l2.08,-2.61l-0.04,-0.41l-1.02,-0.9l3.21,-1.12l0.2,-0.31l-0.07,-0.69l-0.37,-0.26l-1.86,0.42l0.05,-0.86l1.11,-0.76l2.35,-0.23l0.25,-0.19l0.39,-1.07l0.0,-0.19l-0.51,-1.64l0.95,-1.58l0.04,-0.16l-0.03,-0.95l-0.22,-0.28l-3.69,-1.06l-1.43,0.02l-1.45,-1.44l-0.29,-0.08l-1.83,0.49l-2.88,-1.04l0.04,-0.42l-0.04,-0.18l-0.89,-1.43l-0.23,-0.14l-1.77,-0.14l-0.13,-0.66l0.52,-0.56l0.01,-0.4l-1.6,-1.9l-0.27,-0.1l-2.55,0.32l-0.71,-0.16l-0.3,0.1l-0.53,0.63l-0.58,-0.08l-0.56,-1.97l-0.48,-0.94l0.17,-0.11l1.92,0.11l0.2,-0.06l0.97,-0.74l0.05,-0.42l-0.72,-0.91l-0.13,-0.1l-1.43,-0.51l0.09,-0.36l-0.13,-0.33l-0.97,-0.59l-1.43,-2.06l0.44,-0.77l0.04,-0.19l-0.25,-1.64l-0.2,-0.24l-2.45,-0.84l-0.19,-0.0l-1.05,0.34l-0.25,-0.62l-0.18,-0.17l-2.5,-0.84l-0.74,-1.93l-0.21,-1.7l-0.13,-0.21l-0.92,-0.63l0.83,-0.89l0.07,-0.27l-0.71,-3.26l1.69,-2.01l0.03,-0.34l-0.24,-0.41l2.63,-1.9l-0.01,-0.49l-2.31,-1.57l5.08,-4.61l2.33,-2.24l1.01,-2.08l-0.09,-0.37l-3.52,-2.56l0.94,-2.38l-0.04,-0.29l-2.14,-2.86l1.61,-3.35l-0.01,-0.29l-2.81,-4.58l2.19,-3.04l-0.06,-0.42l-3.7,-2.76l0.32,-2.67l1.87,-0.38l4.26,-1.77l2.46,-1.47l3.96,2.58l0.12,0.05l6.81,1.04l9.37,4.87l1.81,1.92l0.15,2.55l-2.61,2.06l-3.95,1.07l-11.1,-3.15l-0.17,0.0l-1.84,0.53l-0.1,0.53l3.97,2.97l0.15,1.77l0.16,4.14l0.19,0.27l3.21,1.22l1.94,1.03l0.44,-0.22l0.32,-1.94l-0.07,-0.25l-1.32,-1.52l1.25,-1.2l5.87,2.45l0.24,-0.01l2.11,-0.98l0.13,-0.42l-1.55,-2.75l5.52,-3.84l2.13,0.22l2.28,1.42l0.43,-0.12l1.46,-2.87l-0.04,-0.33l-1.97,-2.37l1.14,-2.38l-0.02,-0.3l-1.42,-2.07l6.15,1.22l1.14,1.92l-2.74,0.46l-0.25,0.3l0.02,2.36l0.12,0.24l1.97,1.44l0.25,0.05l3.87,-0.91l0.22,-0.23l0.58,-2.55l5.09,-1.98l8.67,-3.69l1.22,0.14l-2.06,2.2l0.18,0.5l3.11,0.45l0.23,-0.07l1.71,-1.41l4.59,-0.12l0.12,-0.03l3.53,-1.72l2.7,2.48l0.42,-0.01l2.85,-2.88l-0.0,-0.43l-2.42,-2.35l1.0,-1.13l7.2,1.31l3.42,1.36l9.06,4.97l0.39,-0.08l1.67,-2.27l-0.04,-0.4l-2.46,-2.23l-0.06,-0.82l-0.26,-0.27l-2.64,-0.38l0.69,-1.76l0.0,-0.22l-1.32,-3.47l-0.07,-1.27l4.52,-4.09l0.08,-0.11l1.6,-4.18l1.67,-0.84l6.33,1.2l0.46,2.31l-2.31,3.67l0.05,0.38l1.49,1.41l0.77,3.04l-0.56,6.05l0.09,0.24l2.62,2.54l-0.99,2.65l-4.87,5.96l0.17,0.48l2.86,0.61l0.31,-0.13l0.94,-1.42l2.67,-1.04l0.18,-0.19l0.64,-2.01l2.11,-1.98l0.05,-0.37l-1.38,-2.32l1.11,-2.74l-0.24,-0.41l-2.53,-0.33l-0.53,-2.16l1.96,-4.42l-0.05,-0.32l-3.03,-3.48l4.21,-2.94l0.12,-0.3l-0.52,-3.04l0.72,-0.06l1.18,2.35l-0.97,4.39l0.2,0.35l2.68,0.84l0.37,-0.38l-1.05,-3.07l3.89,-1.71l5.05,-0.24l4.55,2.62l0.36,-0.05l0.05,-0.36l-2.19,-3.84l-0.23,-4.78l4.07,-0.92l5.98,0.21l5.47,-0.64l0.2,-0.48l-1.88,-2.37l2.65,-2.99l2.75,-0.13l0.12,-0.03l4.82,-2.48l6.56,-0.67l0.23,-0.14l0.76,-1.27l6.33,-0.46l1.97,1.11l0.28,0.01l5.55,-2.71l4.53,0.08l0.29,-0.21l0.67,-2.18l2.29,-2.15l5.75,-2.13l3.48,1.4l-2.7,1.03l-0.19,0.31l0.26,0.26l5.47,0.78ZM871.83,65.73l0.25,-0.15l1.99,0.01l3.3,1.2l-0.08,0.22l-2.41,1.03l-5.73,0.49l-0.31,-1.0l2.99,-1.8ZM797.64,48.44l-2.22,1.51l-3.85,-0.43l-4.35,-1.85l0.42,-1.13l4.42,0.72l5.59,1.17ZM783.82,46.06l-1.71,3.25l-9.05,-0.14l-4.11,1.15l-4.64,-3.04l1.21,-3.13l3.11,-0.91l6.53,0.22l8.66,2.59ZM780.37,145.71l2.28,5.23l-3.09,-0.89l-0.37,0.19l-1.54,4.65l0.04,0.27l2.38,3.17l-0.05,1.4l-1.41,-1.41l-0.46,0.04l-1.23,1.81l-0.33,-1.86l0.28,-3.1l-0.28,-3.41l0.58,-2.46l0.11,-4.39l-0.03,-0.13l-1.44,-3.2l0.21,-4.39l2.19,-1.49l0.09,-0.41l-0.81,-1.3l0.48,-0.21l0.56,1.94l0.86,3.23l-0.05,3.36l1.03,3.35ZM780.16,57.18l-3.4,0.03l-5.06,-0.53l1.97,-1.59l2.95,-0.42l3.35,1.75l0.18,0.77ZM683.84,31.18l-13.29,1.97l4.16,-6.56l1.88,-0.58l1.77,0.34l6.08,3.02l-0.6,1.8ZM670.94,28.02l-5.18,0.65l-6.89,-1.58l-4.03,-2.07l-1.88,-3.98l-0.18,-0.16l-2.8,-0.93l5.91,-3.62l5.25,-1.29l4.73,2.88l5.63,5.44l-0.57,4.66ZM564.37,68.98l-0.85,0.23l-7.93,-0.57l-0.6,-1.84l-0.21,-0.2l-4.34,-1.18l-0.3,-2.08l2.34,-0.92l0.19,-0.29l-0.08,-2.43l4.85,-4.0l-0.12,-0.52l-1.68,-0.43l5.47,-3.94l0.11,-0.33l-0.6,-2.02l5.36,-2.55l8.22,-3.27l8.29,-0.96l4.34,-1.94l4.67,-0.65l1.45,1.72l-1.43,1.37l-8.8,2.52l-7.65,2.42l-7.92,4.84l-3.73,4.75l-3.92,4.58l-0.07,0.23l0.51,3.88l0.11,0.2l4.32,3.39ZM548.86,18.57l-3.28,0.75l-2.25,0.44l-0.22,0.19l-0.3,0.81l-2.67,0.86l-2.27,-1.14l1.2,-1.51l-0.23,-0.49l-3.14,-0.1l2.48,-0.54l3.55,-0.07l0.44,1.36l0.49,0.12l1.4,-1.35l2.2,-0.9l3.13,1.08l-0.54,0.49ZM477.5,133.25l-4.21,0.05l-2.69,-0.34l0.39,-1.03l3.24,-1.06l2.51,0.58l0.85,0.43l-0.2,0.71l-0.0,0.15l0.12,0.52Z\",\n      \"name\": \"Russia\"\n    },\n    \"RW\": {\n      \"path\": \"M497.03,288.12l0.78,1.11l-0.12,1.19l-0.49,0.21l-1.25,-0.15l-0.3,0.16l-0.67,1.24l-1.01,-0.13l0.16,-0.92l0.22,-0.12l0.15,-0.24l0.09,-1.37l0.49,-0.48l0.42,0.18l0.25,-0.01l1.26,-0.65Z\",\n      \"name\": \"Rwanda\"\n    },\n    \"RS\": {\n      \"path\": \"M469.75,168.65l0.21,-0.21l0.36,-1.44l-0.08,-0.29l-1.06,-1.03l0.54,-1.16l-0.28,-0.43l-0.26,0.0l0.55,-0.67l-0.01,-0.39l-0.77,-0.86l-0.45,-0.89l1.56,-0.67l1.39,0.12l1.22,1.1l0.26,0.91l0.16,0.19l1.38,0.66l0.17,1.12l0.14,0.21l1.46,0.9l0.35,-0.03l0.62,-0.54l0.09,0.06l-0.28,0.25l-0.03,0.42l0.29,0.34l-0.44,0.5l-0.07,0.26l0.22,1.12l0.07,0.14l1.02,1.1l-0.81,0.84l-0.42,0.96l0.04,0.3l0.12,0.15l-0.15,0.16l-1.04,0.04l-0.39,0.08l0.33,-0.81l-0.29,-0.41l-0.21,0.01l-0.39,-0.45l-0.13,-0.09l-0.32,-0.11l-0.27,-0.4l-0.14,-0.11l-0.4,-0.16l-0.31,-0.37l-0.34,-0.09l-0.45,0.17l-0.18,0.18l-0.29,0.84l-0.96,-0.65l-0.81,-0.33l-0.32,-0.37l-0.22,-0.18Z\",\n      \"name\": \"Republic of Serbia\"\n    },\n    \"LT\": {\n      \"path\": \"M478.13,133.31l-0.14,-0.63l0.25,-0.88l-0.15,-0.35l-1.17,-0.58l-2.43,-0.57l-0.45,-2.51l2.58,-0.97l4.14,0.22l2.3,-0.32l0.26,0.54l0.22,0.17l1.26,0.22l2.25,1.6l0.19,1.23l-1.87,1.01l-0.14,0.18l-0.54,1.83l-2.54,1.21l-2.18,-0.02l-0.52,-0.91l-0.18,-0.14l-1.11,-0.32Z\",\n      \"name\": \"Lithuania\"\n    },\n    \"LU\": {\n      \"path\": \"M435.95,147.99l0.33,0.49l-0.11,1.07l-0.39,0.04l-0.29,-0.15l0.21,-1.4l0.25,-0.05Z\",\n      \"name\": \"Luxembourg\"\n    },\n    \"LR\": {\n      \"path\": \"M401.37,273.67l-0.32,0.01l-2.48,-1.15l-2.24,-1.89l-2.14,-1.38l-1.47,-1.42l0.44,-0.59l0.05,-0.13l0.12,-0.65l1.07,-1.3l1.08,-1.09l0.52,-0.07l0.43,-0.18l0.84,1.24l-0.15,0.89l0.07,0.25l0.49,0.54l0.22,0.1l0.71,0.01l0.27,-0.16l0.42,-0.83l0.19,0.02l-0.06,0.52l0.23,1.12l-0.5,1.03l0.06,0.35l0.73,0.69l0.14,0.08l0.71,0.15l0.92,0.91l0.06,0.76l-0.17,0.22l-0.06,0.15l-0.17,1.8Z\",\n      \"name\": \"Liberia\"\n    },\n    \"RO\": {\n      \"path\": \"M477.94,155.19l1.02,-0.64l1.49,0.33l1.52,0.01l1.09,0.73l0.32,0.01l0.81,-0.46l1.8,-0.3l0.18,-0.1l0.54,-0.64l0.86,0.0l0.64,0.26l0.71,0.87l0.8,1.35l1.39,1.81l0.07,1.25l-0.26,1.3l0.01,0.15l0.45,1.42l0.15,0.18l1.12,0.57l0.25,0.01l1.05,-0.45l0.86,0.4l0.03,0.43l-0.92,0.51l-0.63,-0.24l-0.4,0.22l-0.64,3.41l-1.12,-0.24l-1.78,-1.09l-0.23,-0.04l-2.95,0.71l-1.25,0.77l-3.55,-0.16l-1.89,-0.47l-0.14,-0.0l-0.75,0.17l-0.61,-1.07l-0.3,-0.36l0.36,-0.32l-0.04,-0.48l-0.62,-0.38l-0.36,0.03l-0.62,0.54l-1.15,-0.71l-0.18,-1.14l-0.17,-0.22l-1.4,-0.67l-0.24,-0.86l-0.09,-0.14l-0.96,-0.87l1.49,-0.44l0.16,-0.11l1.51,-2.14l1.15,-2.09l1.44,-0.63Z\",\n      \"name\": \"Romania\"\n    },\n    \"GW\": {\n      \"path\": \"M383.03,256.73l-1.12,-0.88l-0.14,-0.06l-0.94,-0.15l-0.43,-0.54l0.01,-0.27l-0.13,-0.26l-0.68,-0.48l-0.05,-0.16l0.99,-0.31l0.77,0.08l0.15,-0.02l0.61,-0.26l4.25,0.1l-0.02,0.44l-0.19,0.18l-0.08,0.29l0.17,0.66l-0.17,0.14l-0.44,0.0l-0.16,0.05l-0.57,0.37l-0.66,-0.04l-0.24,0.1l-0.92,1.03Z\",\n      \"name\": \"Guinea Bissau\"\n    },\n    \"GT\": {\n      \"path\": \"M195.13,249.89l-1.05,-0.35l-1.5,-0.04l-1.06,-0.47l-1.19,-0.93l0.04,-0.53l0.27,-0.55l-0.03,-0.31l-0.24,-0.32l1.02,-1.77l3.04,-0.01l0.3,-0.28l0.06,-0.88l-0.19,-0.3l-0.3,-0.11l-0.23,-0.45l-0.11,-0.12l-0.9,-0.58l-0.35,-0.33l0.37,-0.0l0.3,-0.3l0.0,-1.15l4.05,0.02l-0.02,1.74l-0.2,2.89l0.3,0.32l0.67,-0.0l0.75,0.42l0.4,-0.11l-0.62,0.53l-1.17,0.7l-0.13,0.16l-0.18,0.49l0.0,0.21l0.14,0.34l-0.35,0.44l-0.49,0.13l-0.2,0.41l0.03,0.06l-0.27,0.16l-0.86,0.64l-0.12,0.22ZM199.35,245.38l0.07,-0.13l0.05,0.02l-0.13,0.11Z\",\n      \"name\": \"Guatemala\"\n    },\n    \"GR\": {\n      \"path\": \"M487.2,174.55l-0.64,1.54l-0.43,0.24l-1.41,-0.08l-1.28,-0.28l-0.14,0.0l-3.03,0.77l-0.13,0.51l1.39,1.34l-0.78,0.29l-1.2,0.0l-1.23,-1.42l-0.47,0.02l-0.47,0.65l-0.04,0.27l0.56,1.76l0.06,0.11l1.02,1.12l-0.66,0.45l-0.04,0.46l1.39,1.35l1.15,0.79l0.02,1.06l-1.91,-0.63l-0.36,0.42l0.56,1.12l-1.2,0.23l-0.22,0.4l0.8,2.14l-1.15,0.02l-1.89,-1.15l-0.89,-2.19l-0.43,-1.91l-0.05,-0.11l-0.98,-1.35l-1.24,-1.62l-0.13,-0.63l1.07,-1.32l0.06,-0.14l0.13,-0.81l0.68,-0.36l0.16,-0.25l0.03,-0.54l1.4,-0.23l0.12,-0.05l0.87,-0.6l1.26,0.05l0.25,-0.11l0.34,-0.43l0.33,-0.07l1.81,0.08l0.13,-0.02l1.87,-0.77l1.64,0.97l0.19,0.04l2.28,-0.28l0.26,-0.29l0.02,-0.95l0.56,0.36ZM480.44,192.0l1.05,0.74l0.01,0.0l-1.26,-0.23l0.2,-0.51ZM481.76,192.79l1.86,-0.15l1.53,0.17l-0.02,0.19l0.34,0.3l-2.28,0.15l0.01,-0.13l-0.25,-0.31l-1.19,-0.22ZM485.65,193.28l0.65,-0.16l-0.05,0.12l-0.6,0.04Z\",\n      \"name\": \"Greece\"\n    },\n    \"GQ\": {\n      \"path\": \"M444.81,282.04l-0.21,-0.17l0.74,-2.4l3.56,0.05l0.02,2.42l-3.34,-0.02l-0.76,0.13Z\",\n      \"name\": \"Equatorial Guinea\"\n    },\n    \"GY\": {\n      \"path\": \"M271.34,264.25l1.43,0.81l1.44,1.53l0.06,1.19l0.28,0.28l0.84,0.05l2.13,1.92l-0.34,1.93l-1.37,0.59l-0.17,0.34l0.12,0.51l-0.43,1.21l0.03,0.26l1.11,1.82l0.26,0.14l0.56,0.0l0.32,1.29l1.25,1.78l-0.08,0.01l-1.34,-0.21l-0.24,0.06l-0.78,0.64l-1.06,0.41l-0.76,0.1l-0.22,0.15l-0.18,0.32l-0.95,-0.1l-1.38,-1.05l-0.19,-1.13l-0.6,-1.18l0.37,-1.96l0.65,-0.83l0.03,-0.32l-0.57,-1.17l-0.15,-0.14l-0.62,-0.27l0.25,-0.85l-0.08,-0.3l-0.58,-0.58l-0.24,-0.09l-1.15,0.1l-1.41,-1.58l0.48,-0.49l0.09,-0.22l-0.04,-0.92l1.31,-0.34l0.73,-0.52l0.04,-0.44l-0.75,-0.82l0.16,-0.66l1.74,-1.3Z\",\n      \"name\": \"Guyana\"\n    },\n    \"GE\": {\n      \"path\": \"M525.41,174.19l0.26,-0.88l-0.0,-0.17l-0.63,-2.06l-0.1,-0.15l-1.45,-1.12l-0.11,-0.05l-1.31,-0.33l-0.66,-0.69l1.97,0.48l3.65,0.49l3.3,1.41l0.39,0.5l0.33,0.1l1.43,-0.45l2.14,0.58l0.7,1.14l0.13,0.12l1.06,0.47l-0.18,0.11l-0.08,0.43l1.08,1.41l-0.06,0.06l-1.16,-0.15l-1.82,-0.84l-0.31,0.04l-0.55,0.44l-3.29,0.44l-2.32,-1.41l-0.17,-0.04l-2.25,0.12Z\",\n      \"name\": \"Georgia\"\n    },\n    \"GB\": {\n      \"path\": \"M412.82,118.6l-2.31,3.4l-0.0,0.33l0.31,0.13l2.52,-0.49l2.34,0.02l-0.56,2.51l-2.22,3.13l0.22,0.47l2.43,0.21l2.35,4.35l0.17,0.14l1.58,0.51l1.49,3.78l0.73,1.37l0.2,0.15l2.76,0.59l-0.25,1.75l-1.18,0.91l-0.08,0.39l0.87,1.49l-1.96,1.51l-3.31,-0.02l-4.15,0.88l-1.07,-0.59l-0.35,0.04l-1.55,1.44l-2.17,-0.35l-0.22,0.05l-1.61,1.15l-0.78,-0.38l3.31,-3.12l2.18,-0.7l0.21,-0.31l-0.26,-0.27l-3.78,-0.54l-0.48,-0.9l2.3,-0.92l0.13,-0.46l-1.29,-1.71l0.39,-1.83l3.46,0.29l0.32,-0.24l0.37,-1.99l-0.06,-0.24l-1.71,-2.17l-0.18,-0.11l-2.91,-0.58l-0.43,-0.68l0.82,-1.4l-0.03,-0.35l-0.82,-0.97l-0.46,0.01l-0.85,1.05l-0.11,-2.6l-0.05,-0.16l-1.19,-1.7l0.86,-3.53l1.81,-2.75l1.88,0.26l2.38,-0.24ZM406.39,132.84l-1.09,1.92l-1.65,-0.62l-1.26,0.02l0.41,-1.46l0.0,-0.16l-0.42,-1.51l1.62,-0.11l2.39,1.92Z\",\n      \"name\": \"United Kingdom\"\n    },\n    \"GA\": {\n      \"path\": \"M448.76,294.47l-2.38,-2.34l-1.63,-2.04l-1.46,-2.48l0.06,-0.66l0.54,-0.81l0.61,-1.82l0.46,-1.69l0.63,-0.11l3.62,0.03l0.3,-0.3l-0.02,-2.75l0.88,-0.12l1.47,0.32l0.13,0.0l1.39,-0.3l-0.13,0.87l0.03,0.19l0.7,1.29l0.3,0.16l1.74,-0.19l0.36,0.29l-1.01,2.7l0.05,0.29l1.13,1.42l0.25,1.82l-0.3,1.56l-0.64,0.99l-1.93,-0.09l-1.26,-1.13l-0.5,0.17l-0.16,0.91l-1.48,0.27l-0.12,0.05l-0.86,0.63l-0.08,0.39l0.81,1.42l-1.48,1.08Z\",\n      \"name\": \"Gabon\"\n    },\n    \"GN\": {\n      \"path\": \"M399.83,265.31l-0.69,-0.06l-0.3,0.16l-0.43,0.85l-0.39,-0.01l-0.3,-0.33l0.14,-0.87l-0.05,-0.22l-1.05,-1.54l-0.37,-0.11l-0.61,0.27l-0.84,0.12l0.02,-0.54l-0.04,-0.17l-0.35,-0.57l0.07,-0.63l-0.03,-0.17l-0.57,-1.11l-0.7,-0.9l-0.24,-0.12l-2.0,-0.0l-0.19,0.07l-0.51,0.42l-0.6,0.05l-0.21,0.11l-0.43,0.55l-0.3,0.7l-1.04,0.86l-0.91,-1.24l-1.0,-1.02l-0.69,-0.37l-0.52,-0.42l-0.3,-1.11l-0.37,-0.56l-0.1,-0.1l-0.4,-0.23l0.77,-0.85l0.62,0.04l0.18,-0.05l0.58,-0.38l0.46,-0.0l0.19,-0.07l0.39,-0.34l0.1,-0.3l-0.17,-0.67l0.15,-0.14l0.09,-0.2l0.03,-0.57l0.87,0.02l1.76,0.6l0.13,0.01l0.55,-0.06l0.22,-0.13l0.08,-0.12l1.18,0.17l0.17,-0.02l0.09,0.56l0.3,0.25l0.4,-0.0l0.14,-0.03l0.56,-0.29l0.23,0.05l0.63,0.59l0.15,0.07l1.07,0.2l0.24,-0.06l0.65,-0.52l0.77,-0.32l0.55,-0.32l0.3,0.04l0.44,0.45l0.34,0.74l0.84,0.87l-0.35,0.45l-0.06,0.15l-0.1,0.82l0.42,0.31l0.35,-0.16l0.05,0.04l-0.1,0.59l0.09,0.27l0.42,0.4l-0.06,0.02l-0.18,0.21l-0.2,0.86l0.03,0.21l0.56,1.02l0.52,1.71l-0.65,0.21l-0.15,0.12l-0.24,0.35l-0.03,0.28l0.16,0.41l-0.1,0.76l-0.12,0.0Z\",\n      \"name\": \"Guinea\"\n    },\n    \"GM\": {\n      \"path\": \"M379.18,251.48l0.15,-0.55l2.51,-0.07l0.21,-0.09l0.48,-0.52l0.58,-0.03l0.91,0.58l0.16,0.05l0.78,0.01l0.14,-0.03l0.59,-0.31l0.16,0.24l-0.71,0.38l-0.94,-0.04l-1.02,-0.51l-0.3,0.01l-0.86,0.55l-0.37,0.02l-0.14,0.04l-0.53,0.31l-1.81,-0.04Z\",\n      \"name\": \"Gambia\"\n    },\n    \"GL\": {\n      \"path\": \"M304.13,6.6l8.19,-3.63l8.72,0.28l0.19,-0.06l3.12,-2.28l8.75,-0.61l19.94,0.8l14.93,4.75l-3.92,2.01l-9.52,0.27l-13.48,0.6l-0.27,0.2l0.09,0.33l1.26,1.09l0.22,0.07l8.81,-0.67l7.49,2.07l0.19,-0.01l4.68,-1.78l1.76,1.84l-2.59,3.26l-0.01,0.36l0.34,0.11l6.35,-2.2l12.09,-2.32l7.31,1.14l1.17,2.13l-9.9,4.05l-1.43,1.32l-7.91,0.98l-0.26,0.31l0.29,0.29l5.25,0.25l-2.63,3.72l-2.02,3.61l-0.04,0.15l0.08,6.05l0.07,0.19l2.61,3.0l-3.4,0.2l-4.12,1.66l-0.04,0.54l4.5,2.67l0.53,3.9l-2.39,0.42l-0.19,0.48l2.91,3.83l-5.0,0.32l-0.27,0.22l0.12,0.33l2.69,1.84l-0.65,1.35l-3.36,0.71l-3.46,0.01l-0.21,0.51l3.05,3.15l0.02,1.53l-4.54,-1.79l-0.32,0.06l-1.29,1.26l0.11,0.5l3.33,1.15l3.17,2.74l0.85,3.29l-4.0,0.78l-1.83,-1.66l-3.1,-2.64l-0.36,-0.02l-0.13,0.33l0.8,2.92l-2.76,2.26l-0.09,0.33l0.28,0.2l6.59,0.19l2.47,0.18l-5.86,3.38l-6.76,3.43l-7.26,1.48l-2.73,0.02l-0.16,0.05l-2.67,1.72l-3.44,4.42l-5.28,2.86l-1.73,0.18l-3.33,1.01l-3.59,0.96l-0.15,0.1l-2.15,2.52l-0.07,0.19l-0.03,2.76l-1.21,2.49l-4.03,3.1l-0.1,0.33l0.98,2.94l-2.31,6.57l-3.21,0.21l-3.6,-3.0l-0.19,-0.07l-4.9,-0.02l-2.29,-1.97l-1.69,-3.78l-4.31,-4.86l-1.23,-2.52l-0.34,-3.58l-0.08,-0.17l-3.35,-3.67l0.85,-2.92l-0.09,-0.31l-1.5,-1.34l2.33,-4.7l3.67,-1.57l0.15,-0.13l1.02,-1.93l0.52,-3.47l-0.44,-0.31l-2.85,1.57l-1.33,0.64l-2.12,0.59l-2.81,-1.32l-0.15,-2.79l0.88,-2.17l2.09,-0.06l5.07,1.2l0.34,-0.17l-0.11,-0.37l-4.3,-2.9l-2.24,-1.58l-0.25,-0.05l-2.38,0.62l-1.7,-0.93l2.62,-4.1l-0.03,-0.36l-1.51,-1.75l-1.97,-3.3l-3.01,-5.21l-0.1,-0.11l-3.04,-1.85l0.03,-1.94l-0.18,-0.28l-6.82,-3.01l-5.35,-0.38l-6.69,0.21l-6.03,0.37l-2.81,-1.59l-3.84,-2.9l5.94,-1.5l5.01,-0.28l0.28,-0.29l-0.26,-0.31l-10.68,-1.38l-5.38,-2.1l0.27,-1.68l9.3,-2.6l9.18,-2.68l0.19,-0.16l0.97,-2.05l-0.18,-0.42l-6.29,-1.91l1.81,-1.9l8.58,-4.05l3.6,-0.63l0.23,-0.4l-0.92,-2.37l5.59,-1.5l7.66,-0.95l7.58,-0.05l2.65,1.84l0.31,0.02l6.52,-3.29l5.85,2.24l3.55,0.49l5.17,1.95l0.38,-0.16l-0.13,-0.39l-5.77,-3.16l0.29,-2.26Z\",\n      \"name\": \"Greenland\"\n    },\n    \"KW\": {\n      \"path\": \"M540.87,207.81l0.41,0.94l-0.18,0.51l0.0,0.21l0.65,1.66l-1.15,0.05l-0.54,-1.12l-0.24,-0.17l-1.73,-0.2l1.44,-2.06l1.33,0.18Z\",\n      \"name\": \"Kuwait\"\n    },\n    \"GH\": {\n      \"path\": \"M423.16,269.88l-3.58,1.34l-1.41,0.87l-2.13,0.69l-1.91,-0.61l0.09,-0.75l-0.03,-0.17l-1.04,-2.07l0.62,-2.7l1.04,-2.08l0.03,-0.19l-1.0,-5.46l0.05,-1.12l4.04,-0.11l1.08,0.18l0.18,-0.03l0.72,-0.36l0.75,0.13l-0.11,0.48l0.06,0.26l0.98,1.22l-0.0,1.77l0.24,1.99l0.05,0.13l0.55,0.81l-0.52,2.14l0.19,1.37l0.69,1.66l0.38,0.62Z\",\n      \"name\": \"Ghana\"\n    },\n    \"OM\": {\n      \"path\": \"M568.16,231.0l-0.08,0.1l-0.84,1.61l-0.93,-0.11l-0.27,0.11l-0.58,0.73l-0.4,1.32l-0.01,0.14l0.29,1.61l-0.07,0.09l-1.0,-0.01l-0.16,0.04l-1.56,0.97l-0.14,0.2l-0.23,1.17l-0.41,0.4l-1.44,-0.02l-0.17,0.05l-0.98,0.65l-0.13,0.25l0.01,0.87l-0.97,0.57l-1.27,-0.22l-0.19,0.03l-1.63,0.84l-0.88,0.11l-2.55,-5.57l7.2,-2.49l0.19,-0.19l1.67,-5.23l-0.03,-0.25l-1.1,-1.78l0.05,-0.89l0.68,-1.03l0.05,-0.16l0.01,-0.89l0.96,-0.44l0.07,-0.5l-0.32,-0.26l0.16,-1.31l0.85,-0.01l1.03,1.67l0.09,0.09l1.4,0.96l0.11,0.05l1.82,0.34l1.37,0.45l1.75,2.32l0.13,0.1l0.7,0.26l-0.0,0.3l-1.25,2.19l-1.01,0.8ZM561.88,218.47l-0.01,0.02l-0.15,-0.29l0.3,-0.38l-0.14,0.65Z\",\n      \"name\": \"Oman\"\n    },\n    \"_3\": {\n      \"path\": \"M543.2,261.06l-1.07,1.46l-1.65,1.99l-1.91,0.01l-8.08,-2.95l-0.89,-0.84l-0.9,-1.19l-0.81,-1.23l0.44,-0.73l0.76,-1.12l0.49,0.28l0.52,1.05l1.13,1.06l0.2,0.08l1.24,0.01l2.42,-0.65l2.77,-0.31l2.17,-0.78l1.31,-0.19l0.84,-0.43l1.03,-0.06l-0.01,4.54Z\",\n      \"name\": \"Somaliland\"\n    },\n    \"_2\": {\n      \"path\": \"M384.23,230.37l0.07,-0.06l0.28,-0.89l0.99,-1.13l0.07,-0.13l0.8,-3.54l3.4,-2.8l0.09,-0.13l0.76,-2.17l0.07,5.5l-2.07,0.21l-0.24,0.17l-0.61,1.36l-0.02,0.16l0.43,3.46l-4.01,-0.01ZM391.82,218.2l0.07,-0.06l0.75,-1.93l1.86,-0.25l0.94,0.34l1.14,0.0l0.18,-0.06l0.73,-0.56l1.41,-0.08l-0.0,2.72l-7.08,-0.12Z\",\n      \"name\": \"Western Sahara\"\n    },\n    \"_1\": {\n      \"path\": \"M472.71,172.84l-0.07,-0.43l-0.16,-0.22l-0.53,-0.27l-0.38,-0.58l0.3,-0.43l0.51,-0.19l0.18,-0.18l0.3,-0.87l0.12,-0.04l0.22,0.26l0.12,0.09l0.38,0.15l0.28,0.41l0.15,0.12l0.34,0.12l0.43,0.5l0.15,0.07l-0.12,0.3l-0.27,0.32l-0.03,0.18l-0.31,0.06l-1.48,0.47l-0.15,0.17Z\",\n      \"name\": \"Kosovo\"\n    },\n    \"_0\": {\n      \"path\": \"M503.54,192.92l0.09,-0.17l0.41,0.01l-0.08,0.01l-0.42,0.15ZM504.23,192.76l1.02,0.02l0.4,-0.13l-0.09,0.29l0.03,0.08l-0.35,0.16l-0.24,-0.04l-0.06,-0.1l-0.18,-0.17l-0.19,-0.08l-0.33,-0.02Z\",\n      \"name\": \"Northern Cyprus\"\n    },\n    \"JO\": {\n      \"path\": \"M510.26,200.93l0.28,-0.57l2.53,1.0l0.27,-0.02l4.57,-2.77l0.84,2.84l-0.28,0.25l-4.95,1.37l-0.14,0.49l2.24,2.48l-0.5,0.28l-0.13,0.14l-0.35,0.78l-1.76,0.35l-0.2,0.14l-0.57,0.94l-0.94,0.73l-2.45,-0.38l-0.03,-0.12l1.23,-4.32l-0.04,-1.1l0.34,-0.75l0.03,-0.12l0.0,-1.63Z\",\n      \"name\": \"Jordan\"\n    },\n    \"HR\": {\n      \"path\": \"M455.49,162.73l1.53,0.09l0.24,-0.1l0.29,-0.34l0.64,0.38l0.14,0.04l0.98,0.06l0.32,-0.3l-0.01,-0.66l0.67,-0.25l0.19,-0.22l0.21,-1.11l1.72,-0.72l0.65,0.32l1.94,1.37l2.07,0.6l0.22,-0.02l0.67,-0.33l0.47,0.94l0.67,0.76l-0.63,0.77l-0.91,-0.55l-0.16,-0.04l-1.69,0.04l-2.2,-0.51l-1.17,0.07l-0.21,0.11l-0.36,0.42l-0.67,-0.53l-0.46,0.12l-0.52,1.29l0.05,0.31l1.21,1.42l0.58,0.99l1.15,1.14l0.95,0.68l0.92,1.23l0.1,0.09l1.75,0.91l-1.87,-0.89l-1.5,-1.11l-2.23,-0.88l-1.77,-1.9l0.12,-0.06l0.1,-0.47l-1.07,-1.22l-0.04,-0.94l-0.21,-0.27l-1.61,-0.49l-0.35,0.14l-0.53,0.93l-0.41,-0.57l0.04,-0.73Z\",\n      \"name\": \"Croatia\"\n    },\n    \"HT\": {\n      \"path\": \"M237.82,234.68l1.35,0.1l1.95,0.37l0.18,1.15l-0.16,0.83l-0.51,0.37l-0.06,0.44l0.57,0.68l-0.02,0.22l-1.31,-0.35l-1.26,0.17l-1.49,-0.18l-0.15,0.02l-1.03,0.43l-1.02,-0.61l0.09,-0.36l2.04,0.32l1.9,0.21l0.19,-0.05l0.9,-0.58l0.05,-0.47l-1.05,-1.03l0.02,-0.86l-0.23,-0.3l-1.13,-0.29l0.18,-0.23Z\",\n      \"name\": \"Haiti\"\n    },\n    \"HU\": {\n      \"path\": \"M461.96,157.92l0.68,-1.66l-0.03,-0.29l-0.15,-0.22l0.84,-0.0l0.3,-0.26l0.12,-0.84l0.88,0.57l0.98,0.38l0.16,0.01l2.1,-0.39l0.23,-0.21l0.14,-0.45l0.88,-0.1l1.06,-0.43l0.13,0.1l0.28,0.04l1.18,-0.4l0.14,-0.1l0.52,-0.67l0.63,-0.15l2.6,0.95l0.26,-0.03l0.38,-0.23l1.12,0.7l0.1,0.49l-1.31,0.57l-0.14,0.13l-1.18,2.14l-1.44,2.04l-1.85,0.55l-1.51,-0.13l-0.14,0.02l-1.92,0.82l-0.85,0.42l-1.91,-0.55l-1.83,-1.31l-0.74,-0.37l-0.44,-0.97l-0.26,-0.18Z\",\n      \"name\": \"Hungary\"\n    },\n    \"HN\": {\n      \"path\": \"M202.48,251.87l-0.33,-0.62l-0.18,-0.14l-0.5,-0.15l0.13,-0.76l-0.11,-0.28l-0.34,-0.28l-0.6,-0.23l-0.18,-0.01l-0.81,0.22l-0.16,-0.24l-0.72,-0.39l-0.51,-0.48l-0.12,-0.07l-0.31,-0.09l0.24,-0.3l0.04,-0.3l-0.16,-0.4l0.1,-0.28l1.14,-0.69l1.0,-0.86l0.09,0.04l0.3,-0.05l0.47,-0.39l0.49,-0.03l0.14,0.13l0.29,0.06l0.31,-0.1l1.16,0.22l1.24,-0.08l0.81,-0.28l0.29,-0.25l0.63,0.1l0.69,0.18l0.65,-0.06l0.49,-0.2l1.04,0.32l0.38,0.06l0.7,0.44l0.71,0.56l0.92,0.41l0.1,0.11l-0.11,-0.01l-0.23,0.09l-0.3,0.3l-0.76,0.29l-0.58,0.0l-0.15,0.04l-0.45,0.26l-0.31,-0.07l-0.37,-0.34l-0.28,-0.07l-0.26,0.07l-0.18,0.15l-0.23,0.43l-0.04,-0.0l-0.33,0.28l-0.03,0.4l-0.76,0.61l-0.45,0.3l-0.15,0.16l-0.51,-0.36l-0.41,0.06l-0.45,0.56l-0.41,-0.01l-0.59,0.06l-0.27,0.31l0.04,0.96l-0.07,0.0l-0.25,0.16l-0.24,0.45l-0.42,0.06Z\",\n      \"name\": \"Honduras\"\n    },\n    \"PR\": {\n      \"path\": \"M254.95,238.31l1.15,0.21l0.2,0.23l-0.36,0.36l-1.76,-0.01l-1.2,0.07l-0.09,-0.69l0.17,-0.18l1.89,0.01Z\",\n      \"name\": \"Puerto Rico\"\n    },\n    \"PS\": {\n      \"path\": \"M509.66,201.06l-0.0,1.44l-0.29,0.63l-0.59,0.19l0.02,-0.11l0.52,-0.31l-0.02,-0.53l-0.41,-0.2l0.36,-1.28l0.41,0.17Z\",\n      \"name\": \"West Bank\"\n    },\n    \"PT\": {\n      \"path\": \"M398.65,173.6l0.75,-0.63l0.7,-0.3l0.51,1.2l0.28,0.18l1.48,-0.0l0.2,-0.08l0.33,-0.3l1.16,0.08l0.52,1.11l-0.95,0.66l-0.13,0.24l-0.03,2.2l-0.33,0.35l-0.08,0.18l-0.08,1.17l-0.86,0.19l-0.2,0.44l0.93,1.64l-0.64,1.79l0.07,0.31l0.72,0.72l-0.24,0.56l-0.9,1.05l-0.07,0.26l0.17,0.77l-0.73,0.54l-1.18,-0.36l-0.16,-0.0l-0.85,0.21l0.31,-1.81l-0.23,-1.87l-0.23,-0.25l-0.99,-0.24l-0.49,-0.91l0.18,-1.72l0.93,-0.99l0.08,-0.16l0.17,-1.17l0.52,-1.76l-0.04,-1.36l-0.51,-1.14l-0.09,-0.8Z\",\n      \"name\": \"Portugal\"\n    },\n    \"PY\": {\n      \"path\": \"M264.33,341.43l0.93,-2.96l0.07,-1.42l1.1,-2.1l4.19,-0.73l2.22,0.04l2.12,1.21l0.07,0.76l0.7,1.38l-0.16,3.48l0.24,0.31l2.64,0.5l0.19,-0.03l0.9,-0.45l1.47,0.62l0.38,0.64l0.23,2.35l0.3,1.07l0.25,0.21l0.93,0.12l0.16,-0.02l0.8,-0.37l0.61,0.33l-0.0,1.25l-0.33,1.53l-0.5,1.57l-0.39,2.26l-2.14,1.94l-1.85,0.4l-2.74,-0.4l-2.13,-0.62l2.26,-3.75l0.03,-0.24l-0.36,-1.18l-0.17,-0.19l-2.55,-1.03l-3.04,-1.95l-2.07,-0.43l-4.4,-4.12Z\",\n      \"name\": \"Paraguay\"\n    },\n    \"PA\": {\n      \"path\": \"M213.65,263.79l0.18,-0.43l0.02,-0.18l-0.06,-0.28l0.23,-0.18l-0.01,-0.48l-0.4,-0.29l-0.01,-0.62l0.57,-0.13l0.68,0.69l-0.04,0.39l0.26,0.33l1.0,0.11l0.27,-0.1l0.49,0.44l0.24,0.07l1.34,-0.22l1.04,-0.62l1.49,-0.5l0.86,-0.73l0.99,0.11l0.18,0.28l1.35,0.08l1.02,0.4l0.78,0.72l0.71,0.53l-0.1,0.12l-0.05,0.3l0.53,1.34l-0.28,0.44l-0.6,-0.13l-0.36,0.22l-0.2,0.76l-0.41,-0.36l-0.44,-1.12l0.49,-0.53l-0.14,-0.49l-0.51,-0.14l-0.41,-0.72l-0.11,-0.11l-1.25,-0.7l-0.19,-0.04l-1.1,0.16l-0.22,0.15l-0.47,0.81l-0.9,0.56l-0.49,0.08l-0.22,0.17l-0.25,0.52l0.05,0.32l0.93,1.07l-0.41,0.21l-0.29,0.3l-0.81,0.09l-0.36,-1.26l-0.53,-0.1l-0.21,0.28l-0.5,-0.09l-0.44,-0.88l-0.22,-0.16l-0.99,-0.16l-0.61,-0.28l-0.13,-0.03l-1.0,0.0Z\",\n      \"name\": \"Panama\"\n    },\n    \"PG\": {\n      \"path\": \"M808.4,298.6l0.62,0.46l1.19,1.56l1.04,0.77l-0.18,0.37l-0.42,0.15l-0.92,-0.82l-1.05,-1.53l-0.27,-0.96ZM804.09,296.06l-0.3,0.26l-0.36,-1.11l-0.66,-1.06l-2.55,-1.89l-1.42,-0.59l0.17,-0.15l1.16,0.6l0.85,0.55l1.01,0.58l0.97,1.02l0.9,0.76l0.24,1.03ZM796.71,297.99l0.15,0.82l0.34,0.24l1.43,-0.19l0.19,-0.11l0.68,-0.82l1.36,-0.87l0.13,-0.31l-0.21,-1.13l1.04,-0.03l0.3,0.25l-0.04,1.17l-0.74,1.34l-1.17,0.18l-0.22,0.15l-0.35,0.62l-2.51,1.13l-1.21,-0.0l-1.99,-0.71l-1.19,-0.58l0.07,-0.28l1.98,0.32l1.46,-0.2l0.24,-0.21l0.25,-0.79ZM789.24,303.52l0.11,0.15l2.19,1.62l1.6,2.62l0.27,0.14l1.09,-0.06l-0.07,0.77l0.23,0.32l1.23,0.27l-0.14,0.09l0.05,0.53l2.39,0.95l-0.11,0.28l-1.33,0.14l-0.51,-0.55l-0.18,-0.09l-4.59,-0.65l-1.87,-1.55l-1.38,-1.35l-1.28,-2.17l-0.16,-0.13l-3.27,-1.1l-0.19,0.0l-2.12,0.72l-1.58,0.85l-0.15,0.31l0.28,1.63l-1.65,0.73l-1.37,-0.4l-2.3,-0.09l-0.08,-15.65l3.95,1.57l4.58,1.42l1.67,1.25l1.32,1.19l0.36,1.39l0.19,0.21l4.06,1.51l0.39,0.85l-1.9,0.22l-0.25,0.39l0.55,1.68Z\",\n      \"name\": \"Papua New Guinea\"\n    },\n    \"PE\": {\n      \"path\": \"M246.44,329.21l-0.63,1.25l-1.05,0.54l-2.25,-1.33l-0.19,-0.93l-0.16,-0.21l-4.95,-2.58l-4.46,-2.79l-1.87,-1.52l-0.94,-1.91l0.33,-0.6l-0.01,-0.31l-2.11,-3.33l-2.46,-4.66l-2.36,-5.02l-1.04,-1.18l-0.77,-1.81l-0.08,-0.11l-1.95,-1.64l-1.54,-0.88l0.61,-0.85l0.02,-0.31l-1.15,-2.27l0.69,-1.56l1.59,-1.26l0.12,0.42l-0.56,0.47l-0.11,0.25l0.07,0.92l0.36,0.27l0.97,-0.19l0.85,0.23l0.99,1.19l0.41,0.05l1.42,-1.03l0.11,-0.16l0.46,-1.64l1.45,-2.06l2.92,-0.96l0.11,-0.07l2.73,-2.62l0.84,-1.72l0.02,-0.18l-0.3,-1.65l0.28,-0.1l1.49,1.06l0.77,1.14l0.1,0.09l1.08,0.6l1.43,2.55l0.21,0.15l1.86,0.31l0.18,-0.03l1.25,-0.6l0.77,0.37l0.17,0.03l1.4,-0.2l1.57,0.96l-1.45,2.29l0.23,0.46l0.63,0.05l0.66,0.7l-1.51,-0.08l-0.24,0.1l-0.27,0.31l-1.96,0.46l-2.95,1.74l-0.14,0.21l-0.17,1.1l-0.6,0.82l-0.05,0.23l0.21,1.13l-1.31,0.63l-0.17,0.27l0.0,0.91l-0.53,0.37l-0.1,0.37l1.04,2.27l1.31,1.46l-0.44,0.9l0.24,0.43l1.52,0.13l0.87,1.23l0.24,0.13l2.21,0.07l0.18,-0.06l1.55,-1.13l-0.14,3.22l0.23,0.3l1.14,0.29l0.16,-0.0l1.18,-0.36l1.97,3.71l-0.45,0.71l-0.04,0.14l-0.12,1.8l-0.05,2.07l-0.92,1.2l-0.03,0.31l0.38,0.8l-0.48,0.72l-0.02,0.3l1.01,2.02l-1.5,2.64Z\",\n      \"name\": \"Peru\"\n    },\n    \"PK\": {\n      \"path\": \"M609.08,187.76l1.66,1.21l0.71,2.11l0.2,0.19l3.62,1.01l-1.98,1.95l-2.65,0.4l-3.75,-0.68l-0.26,0.08l-1.23,1.22l-0.07,0.31l0.89,2.46l0.88,1.92l0.1,0.12l1.67,1.14l-1.8,1.35l-0.12,0.25l0.04,1.85l-2.35,2.67l-1.59,2.79l-2.5,2.72l-2.76,-0.2l-0.24,0.09l-2.76,2.83l0.04,0.45l1.54,1.13l0.27,1.94l0.09,0.17l1.34,1.29l0.4,1.83l-5.14,-0.01l-0.22,0.09l-1.53,1.63l-1.52,-0.56l-0.76,-1.88l-1.93,-2.03l-0.25,-0.09l-4.6,0.5l-4.05,0.05l-3.1,0.33l0.77,-2.53l3.48,-1.33l0.19,-0.33l-0.21,-1.24l-0.19,-0.23l-1.01,-0.37l-0.06,-2.18l-0.17,-0.26l-2.32,-1.16l-0.96,-1.57l-0.56,-0.65l3.16,1.05l0.14,0.01l2.45,-0.4l1.44,0.33l0.3,-0.1l0.4,-0.47l1.58,0.22l0.14,-0.01l3.25,-1.14l0.2,-0.27l0.08,-2.23l1.23,-1.38l1.73,0.0l0.28,-0.2l0.22,-0.61l1.68,-0.32l0.86,0.24l0.27,-0.05l0.98,-0.78l0.11,-0.26l-0.13,-1.57l0.96,-1.52l1.51,-0.67l0.14,-0.41l-0.74,-1.4l1.86,0.07l0.26,-0.13l0.69,-1.01l0.05,-0.2l-0.09,-0.94l1.14,-1.09l0.09,-0.28l-0.29,-1.41l-0.51,-1.07l1.23,-1.05l2.6,-0.58l2.86,-0.33l1.33,-0.54l1.3,-0.29Z\",\n      \"name\": \"Pakistan\"\n    },\n    \"PH\": {\n      \"path\": \"M737.11,263.82l0.25,1.66l0.14,1.34l-0.54,1.46l-0.64,-1.79l-0.5,-0.1l-1.17,1.28l-0.05,0.32l0.74,1.71l-0.49,0.81l-2.6,-1.28l-0.61,-1.57l0.68,-1.07l-0.07,-0.4l-1.59,-1.19l-0.42,0.06l-0.69,0.91l-1.01,-0.08l-0.21,0.06l-1.58,1.2l-0.17,-0.3l0.87,-1.88l1.48,-0.66l1.18,-0.81l0.71,0.92l0.34,0.1l1.9,-0.69l0.18,-0.18l0.34,-0.94l1.57,-0.06l0.29,-0.32l-0.1,-1.38l1.41,0.83l0.36,2.06ZM734.94,254.42l0.56,2.24l-1.41,-0.49l-0.4,0.3l0.07,0.94l0.51,1.3l-0.54,0.26l-0.08,-1.34l-0.25,-0.28l-0.56,-0.1l-0.23,-0.91l1.03,0.14l0.34,-0.31l-0.03,-0.96l-0.06,-0.18l-1.14,-1.44l1.62,0.04l0.57,0.78ZM724.68,238.33l1.48,0.71l0.33,-0.04l0.44,-0.38l0.05,0.13l-0.37,0.97l0.01,0.23l0.81,1.75l-0.59,1.92l-1.37,0.79l-0.14,0.2l-0.39,2.07l0.01,0.14l0.56,2.04l0.23,0.21l1.33,0.28l0.14,-0.0l1.0,-0.27l2.82,1.28l-0.2,1.16l0.12,0.29l0.66,0.5l-0.13,0.56l-1.54,-0.99l-0.89,-1.29l-0.49,0.0l-0.44,0.65l-1.34,-1.28l-0.26,-0.08l-2.18,0.36l-0.96,-0.44l0.09,-0.72l0.69,-0.57l-0.01,-0.47l-0.75,-0.59l-0.47,0.14l-0.15,0.43l-0.86,-1.02l-0.34,-1.02l-0.07,-1.74l0.49,0.41l0.49,-0.21l0.26,-3.99l0.73,-2.1l1.23,0.0ZM731.12,258.92l-0.82,0.75l-0.83,1.64l-0.52,0.5l-1.17,-1.33l0.36,-0.47l0.62,-0.7l0.07,-0.15l0.24,-1.35l0.73,-0.08l-0.31,1.29l0.16,0.34l0.37,-0.09l1.21,-1.6l-0.12,1.24ZM726.66,255.58l0.85,0.45l0.14,0.03l1.28,-0.0l-0.03,0.62l-1.04,0.96l-1.15,0.55l-0.05,-0.71l0.17,-1.26l-0.01,-0.13l-0.16,-0.51ZM724.92,252.06l-0.45,1.5l-0.7,-0.83l-0.95,-1.43l1.44,0.06l0.67,0.7ZM717.48,261.28l-1.87,1.35l0.21,-0.3l1.81,-1.57l1.5,-1.75l0.97,-1.84l0.23,1.08l-1.56,1.33l-1.29,1.7Z\",\n      \"name\": \"Philippines\"\n    },\n    \"PL\": {\n      \"path\": \"M458.8,144.25l-0.96,-1.98l0.18,-1.06l-0.01,-0.15l-0.62,-1.8l-0.82,-1.11l0.56,-0.73l0.05,-0.28l-0.51,-1.51l1.48,-0.87l3.88,-1.58l3.06,-1.14l2.23,0.52l0.15,0.66l0.29,0.23l2.4,0.04l3.11,0.39l4.56,-0.05l1.12,0.32l0.51,0.89l0.1,1.45l0.03,0.12l0.66,1.23l-0.01,1.08l-1.33,0.61l-0.14,0.41l0.74,1.5l0.07,1.53l1.22,2.79l-0.19,0.66l-1.09,0.33l-0.14,0.09l-2.27,2.72l-0.04,0.31l0.35,0.8l-2.22,-1.16l-0.21,-0.02l-1.72,0.44l-1.1,-0.31l-0.21,0.02l-1.3,0.61l-1.11,-1.02l-0.32,-0.05l-0.81,0.35l-1.15,-1.61l-0.21,-0.12l-1.65,-0.17l-0.19,-0.82l-0.23,-0.23l-1.72,-0.37l-0.34,0.17l-0.25,0.56l-0.88,-0.44l0.12,-0.69l-0.25,-0.35l-1.78,-0.27l-1.08,-0.97Z\",\n      \"name\": \"Poland\"\n    },\n    \"ZM\": {\n      \"path\": \"M502.81,308.32l1.09,1.04l0.58,1.94l-0.39,0.66l-0.5,2.05l-0.0,0.14l0.45,1.95l-0.69,0.77l-0.06,0.11l-0.76,2.37l0.15,0.36l0.62,0.31l-6.85,1.9l-0.22,0.33l0.2,1.54l-1.62,0.3l-0.12,0.05l-1.43,1.02l-0.11,0.15l-0.25,0.73l-0.73,0.17l-0.14,0.08l-2.18,2.12l-1.33,1.6l-0.65,0.05l-0.83,-0.29l-2.75,-0.28l-0.24,-0.1l-0.15,-0.27l-0.99,-0.58l-0.12,-0.04l-1.73,-0.14l-1.88,0.54l-1.5,-1.48l-1.61,-2.01l0.11,-7.73l4.92,0.03l0.29,-0.37l-0.19,-0.79l0.34,-0.86l0.0,-0.21l-0.41,-1.11l0.26,-1.14l-0.01,-0.16l-0.12,-0.36l0.18,0.01l0.1,0.56l0.31,0.25l1.14,-0.06l1.44,0.21l0.76,1.05l0.19,0.12l2.01,0.35l0.19,-0.03l1.24,-0.65l0.44,1.03l0.22,0.18l1.81,0.34l0.85,0.99l1.02,1.39l0.24,0.12l1.92,0.02l0.3,-0.32l-0.21,-2.74l-0.47,-0.23l-0.53,0.36l-1.58,-0.89l-0.51,-0.34l0.29,-2.36l0.44,-2.99l-0.03,-0.18l-0.5,-0.99l0.61,-1.38l0.53,-0.24l3.26,-0.41l0.89,0.23l1.01,0.62l1.04,0.44l1.6,0.43l1.35,0.72Z\",\n      \"name\": \"Zambia\"\n    },\n    \"EE\": {\n      \"path\": \"M482.19,120.88l0.23,-1.68l-0.43,-0.31l-0.75,0.37l-1.34,-1.1l-0.18,-1.75l2.92,-0.95l3.07,-0.53l2.66,0.6l2.48,-0.1l0.18,0.31l-1.65,1.96l-0.06,0.26l0.71,3.25l-0.88,0.94l-1.85,-0.01l-2.08,-1.3l-1.14,-0.47l-0.2,-0.01l-1.69,0.51Z\",\n      \"name\": \"Estonia\"\n    },\n    \"EG\": {\n      \"path\": \"M508.07,208.8l-0.66,1.06l-0.53,2.03l-0.64,1.32l-0.32,0.26l-1.74,-1.85l-1.77,-3.86l-0.48,-0.09l-0.26,0.25l-0.07,0.32l1.04,2.88l1.55,2.76l1.89,4.18l0.94,1.48l0.83,1.54l2.08,2.73l-0.3,0.28l-0.1,0.23l0.08,1.72l0.11,0.22l2.91,2.37l-28.78,0.0l0.0,-19.06l-0.73,-2.2l0.61,-1.59l0.0,-0.2l-0.34,-1.04l0.73,-1.08l3.13,-0.04l2.36,0.72l2.48,0.81l1.15,0.43l0.23,-0.01l1.93,-0.87l1.02,-0.78l2.08,-0.21l1.59,0.31l0.62,1.24l0.52,0.03l0.46,-0.71l1.86,0.59l1.95,0.16l0.17,-0.04l0.92,-0.52l1.48,4.24Z\",\n      \"name\": \"Egypt\"\n    },\n    \"ZA\": {\n      \"path\": \"M467.06,373.27l-0.13,-0.29l0.01,-1.58l-0.02,-0.12l-0.71,-1.64l0.59,-0.37l0.14,-0.26l-0.07,-2.13l-0.05,-0.15l-1.63,-2.58l-1.25,-2.31l-1.71,-3.37l0.88,-0.98l0.7,0.52l0.39,1.08l0.23,0.19l1.1,0.19l1.55,0.51l0.14,0.01l1.35,-0.2l0.11,-0.04l2.24,-1.39l0.14,-0.25l0.0,-9.4l0.16,0.09l1.39,2.38l-0.22,1.53l0.04,0.19l0.56,0.94l0.3,0.14l1.79,-0.27l0.16,-0.08l1.23,-1.18l1.17,-0.79l0.1,-0.12l0.57,-1.19l1.02,-0.52l0.9,0.28l1.16,0.73l0.14,0.05l2.04,0.13l0.13,-0.02l1.6,-0.62l0.18,-0.19l0.63,-1.93l1.18,-0.19l0.19,-0.12l0.78,-1.05l0.81,-1.71l2.18,-1.91l3.44,-1.88l0.89,0.02l1.17,0.43l0.21,-0.0l0.76,-0.29l1.07,0.21l1.15,3.55l0.63,1.82l-0.44,2.9l0.1,0.52l-0.74,-0.29l-0.18,-0.01l-0.72,0.19l-0.21,0.2l-0.22,0.74l-0.66,0.97l-0.05,0.18l0.02,0.93l0.09,0.21l1.49,1.46l0.27,0.08l1.47,-0.29l0.22,-0.18l0.43,-1.01l1.29,0.02l-0.51,1.63l-0.29,2.2l-0.59,1.12l-2.2,1.78l-1.06,1.39l-0.72,1.44l-1.39,1.93l-2.81,2.84l-1.75,1.65l-1.85,1.24l-2.55,1.06l-1.23,0.14l-0.24,0.18l-0.22,0.54l-1.27,-0.35l-0.2,0.01l-1.15,0.5l-2.62,-0.52l-0.12,0.0l-1.46,0.33l-0.98,-0.14l-0.16,0.02l-2.55,1.1l-2.11,0.44l-1.59,1.07l-0.93,0.06l-0.97,-0.92l-0.19,-0.08l-0.72,-0.04l-1.0,-1.16l-0.25,0.05ZM493.72,359.24l-1.12,-0.86l-0.31,-0.03l-1.23,0.59l-1.36,1.07l-1.39,1.78l0.01,0.38l1.88,2.11l0.31,0.09l0.9,-0.27l0.18,-0.15l0.4,-0.77l1.28,-0.39l0.18,-0.16l0.42,-0.88l0.76,-1.32l-0.05,-0.37l-0.87,-0.82Z\",\n      \"name\": \"South Africa\"\n    },\n    \"EC\": {\n      \"path\": \"M220.2,293.48l1.25,-1.76l0.02,-0.31l-0.54,-1.09l-0.5,-0.06l-0.78,0.94l-1.03,-0.75l0.33,-0.46l0.05,-0.23l-0.38,-2.04l0.66,-0.28l0.17,-0.19l0.45,-1.52l0.93,-1.58l0.04,-0.2l-0.13,-0.78l1.19,-0.47l1.57,-0.91l2.35,1.34l0.17,0.04l0.28,-0.02l0.52,0.91l0.21,0.15l2.12,0.35l0.2,-0.03l0.55,-0.31l1.08,0.73l0.97,0.54l0.31,1.67l-0.71,1.49l-2.64,2.54l-2.95,0.97l-0.15,0.11l-1.53,2.18l-0.49,1.68l-1.1,0.8l-0.87,-1.05l-0.15,-0.1l-1.01,-0.27l-0.13,-0.0l-0.7,0.14l-0.03,-0.43l0.6,-0.5l0.1,-0.31l-0.26,-0.91Z\",\n      \"name\": \"Ecuador\"\n    },\n    \"AL\": {\n      \"path\": \"M470.27,171.7l0.38,0.19l0.45,-0.18l0.4,0.61l0.11,0.1l0.46,0.24l0.13,0.87l-0.3,0.95l-0.0,0.17l0.36,1.28l0.12,0.17l0.9,0.63l-0.03,0.44l-0.67,0.35l-0.16,0.22l-0.14,0.88l-0.96,1.18l-0.06,-0.03l-0.04,-0.48l-0.12,-0.22l-1.28,-0.92l-0.19,-1.25l0.2,-1.96l0.33,-0.89l-0.06,-0.3l-0.36,-0.41l-0.13,-0.75l0.66,-0.9Z\",\n      \"name\": \"Albania\"\n    },\n    \"AO\": {\n      \"path\": \"M461.62,299.93l0.55,1.67l0.73,1.54l1.56,2.18l0.28,0.12l1.66,-0.2l0.81,-0.34l1.28,0.33l0.33,-0.14l0.39,-0.67l0.56,-1.3l1.37,-0.09l0.27,-0.21l0.07,-0.23l0.67,-0.01l-0.13,0.53l0.29,0.37l2.74,-0.02l0.04,1.29l0.03,0.13l0.46,0.87l-0.35,1.52l0.18,1.55l0.07,0.16l0.75,0.85l-0.13,2.89l0.41,0.29l0.56,-0.21l1.11,0.05l1.5,-0.37l0.9,0.12l0.18,0.53l-0.27,1.15l0.01,0.17l0.4,1.08l-0.33,0.85l-0.01,0.18l0.12,0.51l-4.83,-0.03l-0.3,0.3l-0.12,8.13l0.07,0.19l1.69,2.1l1.27,1.25l-4.03,0.92l-5.93,-0.36l-1.66,-1.19l-0.18,-0.06l-10.15,0.11l-0.34,0.13l-1.35,-1.05l-0.17,-0.06l-1.62,-0.08l-1.6,0.45l-0.88,0.36l-0.17,-1.2l0.34,-2.19l0.85,-2.32l0.14,-1.13l0.79,-2.24l0.57,-1.0l1.42,-1.64l0.82,-1.15l0.05,-0.13l0.26,-1.88l-0.13,-1.51l-0.07,-0.16l-0.72,-0.87l-1.23,-2.91l0.09,-0.37l0.73,-0.95l0.05,-0.27l-1.27,-4.12l-1.19,-1.54l0.1,-0.2l0.86,-0.28l0.78,0.03l0.83,-0.29l7.12,0.03ZM451.81,298.94l-0.17,0.07l-0.5,-1.42l0.85,-0.92l0.53,-0.29l0.48,0.44l-0.56,0.32l-0.1,0.1l-0.41,0.65l-0.05,0.14l-0.07,0.91Z\",\n      \"name\": \"Angola\"\n    },\n    \"KZ\": {\n      \"path\": \"M598.42,172.08l-1.37,0.54l-3.3,2.09l-0.11,0.12l-1.01,1.97l-0.56,0.01l-0.6,-1.24l-0.26,-0.17l-2.95,-0.09l-0.46,-2.22l-0.29,-0.24l-0.91,-0.02l0.17,-2.72l-0.12,-0.26l-3.0,-2.22l-0.2,-0.06l-4.29,0.24l-2.8,0.42l-2.36,-2.7l-6.4,-3.65l-0.23,-0.03l-6.45,1.83l-0.22,0.29l0.1,10.94l-0.84,0.1l-1.65,-2.21l-0.11,-0.09l-1.69,-0.84l-0.2,-0.02l-2.84,0.63l-0.14,0.07l-0.71,0.64l-0.02,-0.11l0.57,-1.17l0.0,-0.26l-0.48,-1.05l-0.17,-0.16l-2.78,-0.99l-1.08,-2.62l-0.13,-0.15l-1.24,-0.7l-0.04,-0.48l2.07,0.25l0.34,-0.29l0.09,-2.03l1.84,-0.44l2.12,0.45l0.36,-0.25l0.45,-3.04l-0.45,-2.06l-0.31,-0.23l-2.44,0.15l-2.07,-0.75l-0.23,0.01l-2.88,1.38l-2.21,0.62l-0.96,-0.38l0.22,-1.39l-0.06,-0.23l-1.6,-2.12l-0.25,-0.12l-1.72,0.08l-1.87,-1.91l1.33,-2.24l-0.06,-0.38l-0.55,-0.5l1.72,-3.08l2.3,1.7l0.48,-0.2l0.29,-2.26l4.99,-3.48l3.76,-0.08l5.46,2.27l2.96,1.33l0.26,-0.01l2.59,-1.36l3.82,-0.06l3.13,1.67l0.38,-0.09l0.63,-0.85l3.36,0.14l0.29,-0.19l0.63,-1.57l-0.13,-0.37l-3.64,-2.05l2.0,-1.36l0.1,-0.38l-0.32,-0.62l2.09,-0.76l0.13,-0.47l-1.65,-2.13l0.89,-0.91l9.27,-1.18l0.13,-0.05l1.17,-0.82l6.2,-1.27l2.26,-1.43l4.19,0.7l0.74,3.39l0.38,0.22l2.52,-0.81l2.9,1.06l-0.18,1.63l0.32,0.33l2.52,-0.23l5.0,-2.58l0.03,0.39l3.16,2.62l5.57,8.48l0.49,0.02l1.18,-1.53l3.22,1.78l0.21,0.03l3.5,-0.83l1.21,0.52l1.16,1.82l0.15,0.12l1.67,0.61l1.01,1.32l0.28,0.11l3.04,-0.41l1.1,1.64l-1.68,1.89l-1.97,0.28l-0.26,0.29l-0.12,3.09l-1.2,1.23l-4.81,-1.01l-0.35,0.2l-1.77,5.51l-1.14,0.62l-4.92,1.23l-0.2,0.41l2.14,5.06l-1.45,0.67l-0.17,0.31l0.15,1.28l-1.05,-0.3l-1.21,-1.04l-0.17,-0.07l-3.73,-0.32l-4.15,-0.08l-0.92,0.31l-3.46,-1.24l-0.22,0.01l-1.42,0.63l-0.17,0.21l-0.32,1.49l-3.82,-0.97l-0.15,0.0l-1.65,0.43l-0.2,0.17l-0.51,1.21Z\",\n      \"name\": \"Kazakhstan\"\n    },\n    \"ET\": {\n      \"path\": \"M516.0,247.63l1.21,0.92l0.3,0.04l1.3,-0.53l0.46,0.41l0.19,0.08l1.65,0.03l2.05,0.96l0.67,0.88l1.07,0.79l1.0,1.45l0.7,0.68l-0.72,0.92l-0.85,1.19l-0.04,0.25l0.19,0.67l0.04,0.74l0.29,0.28l1.4,0.04l0.55,-0.15l0.23,0.19l-0.41,0.67l0.01,0.32l0.92,1.39l0.93,1.23l0.99,0.94l0.1,0.06l8.19,2.99l1.51,0.01l-6.51,6.95l-3.14,0.11l-0.18,0.06l-2.15,1.71l-1.51,0.04l-0.22,0.1l-0.6,0.69l-1.46,-0.0l-0.93,-0.78l-0.32,-0.04l-2.29,1.05l-0.12,0.1l-0.64,0.9l-1.44,-0.17l-0.51,-0.26l-0.17,-0.03l-0.56,0.07l-0.68,-0.02l-3.1,-2.08l-0.17,-0.05l-1.62,0.0l-0.68,-0.65l0.0,-1.28l-0.21,-0.29l-1.19,-0.38l-1.42,-2.63l-0.13,-0.12l-1.05,-0.53l-0.46,-1.0l-1.27,-1.23l-0.17,-0.08l-1.08,-0.13l0.53,-0.9l1.17,-0.05l0.26,-0.17l0.37,-0.77l0.03,-0.14l-0.03,-2.23l0.7,-2.49l1.08,-0.65l0.14,-0.19l0.24,-1.0l1.03,-1.85l1.47,-1.22l0.09,-0.12l1.02,-2.51l0.36,-1.96l2.62,0.48l0.33,-0.18l0.63,-1.55Z\",\n      \"name\": \"Ethiopia\"\n    },\n    \"ZW\": {\n      \"path\": \"M498.95,341.2l-1.16,-0.23l-0.16,0.01l-0.74,0.28l-1.11,-0.41l-1.02,-0.04l-1.52,-1.13l-0.12,-0.05l-1.79,-0.37l-0.65,-1.46l-0.01,-0.86l-0.22,-0.29l-0.99,-0.26l-2.74,-2.77l-0.77,-1.46l-0.52,-0.5l-0.72,-1.54l2.24,0.23l0.78,0.28l0.12,0.02l0.85,-0.06l0.21,-0.11l1.38,-1.66l2.11,-2.05l0.81,-0.18l0.22,-0.2l0.27,-0.8l1.29,-0.93l1.53,-0.28l0.11,0.66l0.3,0.25l2.02,-0.05l1.04,0.48l0.5,0.59l0.18,0.1l1.13,0.18l1.11,0.7l0.01,3.06l-0.49,1.82l-0.11,1.94l0.03,0.16l0.35,0.68l-0.24,1.3l-0.27,0.17l-0.12,0.15l-0.64,1.83l-2.49,2.8Z\",\n      \"name\": \"Zimbabwe\"\n    },\n    \"ES\": {\n      \"path\": \"M398.67,172.8l0.09,-1.45l-0.06,-0.2l-0.82,-1.05l3.16,-1.96l3.01,0.54l3.33,-0.02l2.64,0.52l2.14,-0.15l3.9,0.1l0.91,1.08l0.14,0.09l4.61,1.38l0.26,-0.04l0.77,-0.55l2.66,1.29l0.17,0.03l2.59,-0.35l0.1,1.28l-2.2,1.85l-3.13,0.62l-0.23,0.23l-0.21,0.92l-1.54,1.68l-0.97,2.4l0.02,0.26l0.85,1.46l-1.27,1.14l-0.09,0.14l-0.5,1.73l-1.73,0.53l-0.15,0.1l-1.68,2.1l-3.03,0.04l-2.38,-0.05l-0.17,0.05l-1.57,1.01l-0.9,1.01l-0.96,-0.19l-0.82,-0.86l-0.69,-1.6l-0.22,-0.18l-2.14,-0.41l-0.13,-0.62l0.83,-0.97l0.39,-0.86l-0.06,-0.33l-0.73,-0.73l0.63,-1.74l-0.02,-0.25l-0.8,-1.41l0.69,-0.15l0.23,-0.27l0.09,-1.29l0.33,-0.36l0.08,-0.2l0.03,-2.16l1.03,-0.72l0.1,-0.37l-0.7,-1.5l-0.25,-0.17l-1.46,-0.11l-0.22,0.07l-0.34,0.3l-1.17,0.0l-0.55,-1.29l-0.39,-0.16l-1.02,0.44l-0.45,0.36Z\",\n      \"name\": \"Spain\"\n    },\n    \"ER\": {\n      \"path\": \"M527.15,253.05l-0.77,-0.74l-1.01,-1.47l-1.14,-0.86l-0.62,-0.84l-0.11,-0.09l-2.18,-1.02l-0.12,-0.03l-1.61,-0.03l-0.52,-0.46l-0.31,-0.05l-1.31,0.54l-1.38,-1.06l-0.46,0.12l-0.69,1.68l-2.49,-0.46l-0.2,-0.76l1.06,-3.69l0.24,-1.65l0.66,-0.66l1.76,-0.4l0.16,-0.1l0.97,-1.13l1.24,2.55l0.68,2.34l0.09,0.14l1.4,1.27l3.39,2.4l1.37,1.43l2.14,2.34l0.94,0.6l-0.32,0.26l-0.85,-0.17Z\",\n      \"name\": \"Eritrea\"\n    },\n    \"ME\": {\n      \"path\": \"M469.05,172.9l-0.57,-0.8l-0.1,-0.09l-0.82,-0.46l0.16,-0.33l0.35,-1.57l0.72,-0.62l0.27,-0.16l0.48,0.38l0.35,0.4l0.12,0.08l0.79,0.32l0.66,0.43l-0.43,0.62l-0.28,0.11l-0.07,-0.25l-0.53,-0.1l-1.09,1.49l-0.05,0.23l0.06,0.32Z\",\n      \"name\": \"Montenegro\"\n    },\n    \"MD\": {\n      \"path\": \"M488.2,153.75l0.14,-0.11l1.49,-0.28l1.75,0.95l1.06,0.14l0.92,0.7l-0.15,0.9l0.15,0.31l0.8,0.46l0.33,1.2l0.09,0.14l0.72,0.66l-0.11,0.28l0.1,0.33l-0.06,0.02l-1.25,-0.08l-0.17,-0.29l-0.39,-0.12l-0.52,0.25l-0.16,0.36l0.13,0.42l-0.6,0.88l-0.43,1.03l-0.22,0.12l-0.32,-1.0l0.25,-1.34l-0.08,-1.38l-0.06,-0.17l-1.43,-1.87l-0.81,-1.36l-0.78,-0.95l-0.12,-0.09l-0.29,-0.12Z\",\n      \"name\": \"Moldova\"\n    },\n    \"MG\": {\n      \"path\": \"M544.77,316.45l0.64,1.04l0.6,1.62l0.4,3.04l0.63,1.21l-0.22,1.07l-0.15,0.26l-0.59,-1.05l-0.52,-0.01l-0.47,0.76l-0.04,0.23l0.46,1.84l-0.19,0.92l-0.61,0.53l-0.1,0.21l-0.16,2.15l-0.97,2.98l-1.24,3.59l-1.55,4.97l-0.96,3.67l-1.08,2.93l-1.94,0.61l-2.05,1.06l-3.2,-1.53l-0.62,-1.26l-0.18,-2.39l-0.87,-2.07l-0.22,-1.8l0.4,-1.69l1.01,-0.4l0.19,-0.28l0.01,-0.79l1.15,-1.91l0.04,-0.11l0.23,-1.66l-0.03,-0.17l-0.57,-1.21l-0.46,-1.58l-0.19,-2.25l0.82,-1.36l0.33,-1.51l1.11,-0.1l1.4,-0.53l0.9,-0.45l1.03,-0.03l0.21,-0.09l1.41,-1.45l2.12,-1.65l0.75,-1.29l0.03,-0.24l-0.17,-0.56l0.53,0.15l0.32,-0.1l1.38,-1.77l0.06,-0.18l0.04,-1.44l0.54,-0.74l0.62,0.77Z\",\n      \"name\": \"Madagascar\"\n    },\n    \"MA\": {\n      \"path\": \"M378.66,230.13l0.07,-0.75l0.93,-0.72l0.82,-1.37l0.04,-0.21l-0.14,-0.8l0.8,-1.74l1.33,-1.61l0.79,-0.4l0.14,-0.15l0.66,-1.55l0.08,-1.46l0.83,-1.52l1.6,-0.94l0.11,-0.11l1.56,-2.71l1.2,-0.99l2.24,-0.29l0.17,-0.08l1.95,-1.83l1.3,-0.77l2.09,-2.28l0.07,-0.26l-0.61,-3.34l0.92,-2.3l0.33,-1.44l1.52,-1.79l2.48,-1.27l1.86,-1.16l0.1,-0.11l1.67,-2.93l0.72,-1.59l1.54,0.01l1.43,1.14l0.21,0.06l2.33,-0.19l2.55,0.62l0.97,0.03l0.83,1.6l0.15,1.71l0.86,2.96l0.09,0.14l0.5,0.45l-0.31,0.73l-3.11,0.44l-0.16,0.07l-1.07,0.97l-1.36,0.23l-0.25,0.28l-0.1,1.85l-2.74,1.02l-0.14,0.11l-0.9,1.3l-1.93,0.69l-2.56,0.44l-4.04,2.01l-0.17,0.27l0.02,2.91l-0.08,0.0l-0.3,0.31l0.05,1.15l-1.25,0.07l-0.16,0.06l-0.73,0.55l-0.98,0.0l-0.85,-0.33l-0.15,-0.02l-2.11,0.29l-0.24,0.19l-0.76,1.95l-0.63,0.16l-0.21,0.19l-1.15,3.29l-3.42,2.81l-0.1,0.17l-0.81,3.57l-0.98,1.12l-0.3,0.85l-5.13,0.19Z\",\n      \"name\": \"Morocco\"\n    },\n    \"UZ\": {\n      \"path\": \"M587.83,186.48l0.06,-1.46l-0.19,-0.29l-3.31,-1.24l-2.57,-1.4l-1.63,-1.38l-2.79,-1.98l-1.2,-2.98l-0.12,-0.14l-0.84,-0.54l-0.18,-0.05l-2.61,0.13l-0.76,-0.48l-0.25,-2.25l-0.17,-0.24l-3.37,-1.6l-0.32,0.04l-2.08,1.73l-2.11,1.02l-0.16,0.35l0.31,1.14l-2.14,0.03l-0.09,-10.68l6.1,-1.74l6.25,3.57l2.36,2.72l0.27,0.1l2.92,-0.44l4.17,-0.23l2.78,2.06l-0.18,2.87l0.29,0.32l0.98,0.02l0.46,2.22l0.28,0.24l3.0,0.09l0.61,1.25l0.28,0.17l0.93,-0.02l0.26,-0.16l1.06,-2.06l3.21,-2.03l1.3,-0.5l0.19,0.08l-1.75,1.62l0.05,0.48l1.85,1.12l0.27,0.02l1.65,-0.69l2.4,1.27l-2.69,1.79l-1.79,-0.27l-0.89,0.06l-0.22,-0.52l0.48,-1.26l-0.34,-0.4l-3.35,0.69l-0.22,0.18l-0.78,1.87l-1.07,1.47l-1.93,-0.13l-0.29,0.16l-0.65,1.29l0.16,0.42l1.69,0.64l0.48,1.91l-1.25,2.6l-1.64,-0.53l-1.18,-0.03Z\",\n      \"name\": \"Uzbekistan\"\n    },\n    \"MM\": {\n      \"path\": \"M670.1,233.39l-1.46,1.11l-1.68,0.11l-0.26,0.19l-1.1,2.7l-0.95,0.42l-0.14,0.42l1.21,2.27l1.61,1.92l0.94,1.55l-0.82,1.99l-0.77,0.42l-0.13,0.39l0.64,1.35l1.62,1.97l0.26,1.32l-0.04,1.15l0.02,0.13l0.92,2.18l-1.3,2.23l-0.79,1.69l-0.1,-0.77l0.74,-1.87l-0.02,-0.26l-0.8,-1.42l0.2,-2.68l-0.06,-0.2l-0.98,-1.27l-0.8,-2.98l-0.45,-3.22l-1.11,-2.22l-0.45,-0.1l-1.64,1.28l-2.74,1.76l-1.26,-0.2l-1.27,-0.49l0.79,-2.93l0.0,-0.14l-0.52,-2.42l-1.93,-2.97l0.26,-0.8l-0.22,-0.39l-1.37,-0.31l-1.65,-1.98l-0.12,-1.5l0.41,0.19l0.42,-0.26l0.05,-1.7l1.08,-0.54l0.16,-0.34l-0.24,-1.0l0.5,-0.79l0.05,-0.15l0.08,-2.35l1.58,0.49l0.36,-0.15l1.12,-2.19l0.15,-1.34l1.35,-2.18l0.04,-0.17l-0.07,-1.35l2.97,-1.71l1.67,0.45l0.38,-0.33l-0.18,-1.46l0.7,-0.4l0.15,-0.32l-0.13,-0.72l0.94,-0.13l0.74,1.41l0.11,0.12l0.95,0.56l0.07,1.89l-0.09,2.08l-2.28,2.15l-0.09,0.19l-0.3,3.15l0.35,0.32l2.37,-0.39l0.53,2.17l0.2,0.21l1.3,0.42l-0.63,1.9l0.14,0.36l1.86,0.99l1.1,0.49l0.24,0.0l1.45,-0.6l0.04,0.51l-2.01,1.6l-0.56,0.96l-1.34,0.56Z\",\n      \"name\": \"Myanmar\"\n    },\n    \"ML\": {\n      \"path\": \"M390.79,248.2l0.67,-0.37l0.14,-0.18l0.36,-1.31l0.51,-0.04l1.68,0.69l0.21,0.0l1.34,-0.48l0.89,0.16l0.3,-0.13l0.29,-0.44l9.89,-0.04l0.29,-0.21l0.56,-1.8l-0.11,-0.33l-0.33,-0.24l-2.37,-22.1l3.41,-0.04l8.37,5.73l8.38,5.68l0.56,1.15l0.14,0.14l1.56,0.75l0.99,0.36l0.03,1.45l0.33,0.29l2.45,-0.22l0.01,5.52l-1.3,1.64l-0.06,0.15l-0.18,1.37l-1.99,0.36l-3.4,0.22l-0.19,0.09l-0.85,0.83l-1.48,0.09l-1.49,0.01l-0.54,-0.43l-0.26,-0.05l-1.38,0.36l-2.39,1.08l-0.13,0.12l-0.44,0.73l-1.88,1.11l-0.11,0.12l-0.3,0.57l-0.86,0.42l-1.1,-0.31l-0.28,0.07l-0.69,0.62l-0.09,0.16l-0.35,1.66l-1.93,2.04l-0.08,0.23l0.05,0.76l-0.63,0.99l-0.04,0.19l0.14,1.23l-0.81,0.29l-0.32,0.17l-0.27,-0.75l-0.39,-0.18l-0.65,0.26l-0.36,-0.04l-0.29,0.14l-0.37,0.6l-1.69,-0.02l-0.63,-0.34l-0.32,0.02l-0.12,0.09l-0.47,-0.45l0.1,-0.6l-0.09,-0.27l-0.31,-0.3l-0.33,-0.05l-0.05,0.02l0.02,-0.21l0.46,-0.59l-0.02,-0.39l-0.99,-1.02l-0.34,-0.74l-0.56,-0.56l-0.17,-0.09l-0.5,-0.07l-0.19,0.04l-0.58,0.35l-0.79,0.33l-0.65,0.51l-0.85,-0.16l-0.63,-0.59l-0.14,-0.07l-0.41,-0.08l-0.2,0.03l-0.59,0.31l-0.07,0.0l-0.1,-0.63l0.11,-0.85l-0.21,-0.98l-0.11,-0.17l-0.86,-0.66l-0.45,-1.34l-0.1,-1.36Z\",\n      \"name\": \"Mali\"\n    },\n    \"MN\": {\n      \"path\": \"M641.06,150.59l2.41,-0.53l4.76,-2.8l3.67,-1.49l2.06,0.96l0.12,0.03l2.5,0.05l1.59,1.45l0.19,0.08l2.47,0.12l3.59,0.81l0.27,-0.07l2.43,-2.28l0.06,-0.36l-0.93,-1.77l2.33,-3.1l2.66,1.3l2.26,0.39l2.75,0.8l0.44,2.3l0.19,0.22l3.56,1.38l0.18,0.01l2.35,-0.6l3.1,-0.42l2.4,0.41l2.37,1.52l1.49,1.63l0.23,0.1l2.29,-0.03l3.13,0.52l0.15,-0.01l2.28,-0.79l3.27,-0.53l0.11,-0.04l3.56,-2.23l1.31,0.31l1.26,1.05l0.22,0.07l2.45,-0.22l-0.98,1.96l-1.77,3.21l-0.01,0.28l0.64,1.31l0.35,0.16l1.35,-0.38l2.4,0.48l0.22,-0.04l1.78,-1.09l1.82,0.92l2.11,2.07l-0.17,0.68l-1.79,-0.31l-3.74,0.45l-1.85,0.96l-1.78,2.01l-3.74,1.18l-2.46,1.61l-2.45,-0.6l-1.42,-0.28l-0.31,0.13l-1.31,1.99l0.0,0.33l0.78,1.15l0.3,0.74l-1.58,0.93l-1.75,1.59l-2.83,1.03l-3.77,0.12l-4.05,1.05l-2.81,1.54l-0.95,-0.8l-0.19,-0.07l-2.96,0.0l-3.64,-1.8l-2.55,-0.48l-3.38,0.41l-5.13,-0.67l-2.66,0.06l-1.35,-1.65l-1.12,-2.78l-0.21,-0.18l-1.5,-0.33l-2.98,-1.89l-0.12,-0.04l-3.37,-0.43l-2.84,-0.51l-0.75,-1.13l0.93,-3.54l-0.04,-0.24l-1.73,-2.55l-0.15,-0.12l-3.52,-1.18l-1.99,-1.61l-0.54,-1.85Z\",\n      \"name\": \"Mongolia\"\n    },\n    \"MK\": {\n      \"path\": \"M472.73,173.87l0.08,0.01l0.32,-0.25l0.08,-0.44l1.29,-0.41l1.37,-0.28l1.03,-0.04l1.06,0.82l0.14,1.59l-0.22,0.04l-0.17,0.11l-0.32,0.4l-1.2,-0.05l-0.18,0.05l-0.9,0.61l-1.45,0.23l-0.85,-0.59l-0.3,-1.09l0.22,-0.71Z\",\n      \"name\": \"Macedonia\"\n    },\n    \"MW\": {\n      \"path\": \"M507.18,313.84l-0.67,1.85l-0.01,0.16l0.7,3.31l0.31,0.24l0.75,-0.03l0.78,0.71l0.99,1.75l0.2,3.03l-0.91,0.45l-0.14,0.15l-0.59,1.38l-1.24,-1.21l-0.17,-1.62l0.49,-1.12l0.02,-0.16l-0.15,-1.03l-0.13,-0.21l-0.99,-0.65l-0.26,-0.03l-0.53,0.18l-1.31,-1.12l-1.15,-0.59l0.66,-2.06l0.75,-0.84l0.07,-0.27l-0.47,-2.04l0.48,-1.94l0.4,-0.65l0.03,-0.24l-0.64,-2.15l-0.08,-0.13l-0.44,-0.42l1.34,0.26l1.25,1.73l0.67,3.3Z\",\n      \"name\": \"Malawi\"\n    },\n    \"MR\": {\n      \"path\": \"M390.54,247.66l-1.48,-1.58l-1.51,-1.88l-0.12,-0.09l-1.64,-0.67l-1.17,-0.74l-0.17,-0.05l-1.4,0.03l-0.12,0.03l-1.14,0.52l-1.15,-0.21l-0.26,0.08l-0.44,0.43l-0.11,-0.72l0.68,-1.29l0.31,-2.43l-0.28,-2.63l-0.29,-1.27l0.24,-1.24l-0.03,-0.2l-0.65,-1.24l-1.19,-1.05l0.32,-0.51l9.64,0.02l0.3,-0.34l-0.46,-3.71l0.51,-1.12l2.17,-0.22l0.27,-0.3l-0.08,-6.5l7.91,0.13l0.31,-0.3l0.01,-3.5l8.17,5.63l-2.89,0.04l-0.29,0.33l2.42,22.56l0.12,0.21l0.26,0.19l-0.43,1.38l-9.83,0.04l-0.25,0.13l-0.27,0.41l-0.77,-0.14l-0.15,0.01l-1.3,0.47l-1.64,-0.67l-0.14,-0.02l-0.79,0.06l-0.27,0.22l-0.39,1.39l-0.53,0.29Z\",\n      \"name\": \"Mauritania\"\n    },\n    \"UG\": {\n      \"path\": \"M500.74,287.17l-2.84,-0.02l-0.92,0.32l-1.37,0.71l-0.29,-0.12l0.02,-1.6l0.54,-0.89l0.04,-0.13l0.14,-1.96l0.49,-1.09l0.91,-1.24l0.97,-0.68l0.8,-0.89l-0.13,-0.49l-0.79,-0.27l0.13,-2.55l0.78,-0.52l1.45,0.51l0.18,0.01l1.97,-0.57l1.72,0.01l0.18,-0.06l1.29,-0.97l0.98,1.44l0.29,1.24l1.05,2.75l-0.84,1.68l-1.94,2.66l-0.06,0.18l0.02,2.36l-4.8,0.18Z\",\n      \"name\": \"Uganda\"\n    },\n    \"MY\": {\n      \"path\": \"M717.6,273.52l-1.51,0.7l-2.13,-0.41l-2.88,-0.0l-0.29,0.21l-0.84,2.77l-0.9,0.82l-0.08,0.12l-1.23,3.34l-1.81,0.47l-2.29,-0.68l-0.14,-0.01l-1.2,0.22l-0.14,0.07l-1.36,1.18l-1.47,-0.17l-0.12,0.01l-1.46,0.46l-1.51,-1.25l-0.24,-0.97l1.26,0.59l0.2,0.02l1.93,-0.47l0.22,-0.22l0.47,-1.98l0.9,-0.4l2.97,-0.54l0.17,-0.09l1.8,-1.98l1.02,-1.32l0.9,1.03l0.48,-0.04l0.43,-0.7l1.02,0.07l0.32,-0.27l0.25,-2.72l1.84,-1.67l1.23,-1.89l0.73,-0.01l1.12,1.11l0.1,0.99l0.18,0.24l1.66,0.71l1.85,0.67l-0.09,0.51l-1.45,0.11l-0.26,0.4l0.35,0.97ZM673.78,269.53l0.17,1.14l0.35,0.25l1.65,-0.3l0.18,-0.11l0.68,-0.86l0.31,0.13l1.41,1.45l0.99,1.59l0.13,1.57l-0.26,1.09l0.0,0.15l0.24,0.84l0.18,1.46l0.11,0.2l0.82,0.64l0.92,2.08l-0.03,0.52l-1.4,0.13l-2.29,-1.79l-2.86,-1.92l-0.27,-1.16l-0.07,-0.13l-1.39,-1.61l-0.33,-1.99l-0.05,-0.12l-0.84,-1.27l0.26,-1.72l-0.03,-0.18l-0.45,-0.87l0.13,-0.13l1.71,0.92Z\",\n      \"name\": \"Malaysia\"\n    },\n    \"MX\": {\n      \"path\": \"M133.41,213.83l0.61,0.09l0.27,-0.09l0.93,-1.01l0.08,-0.18l0.09,-1.22l-0.09,-0.23l-1.93,-1.94l-1.46,-0.77l-2.96,-5.62l-0.86,-2.1l2.44,-0.18l2.68,-0.25l-0.03,0.08l0.17,0.4l3.79,1.35l5.81,1.97l6.96,-0.02l0.3,-0.3l0.0,-0.84l3.91,0.0l0.87,0.93l1.27,0.87l1.44,1.17l0.79,1.37l0.62,1.49l0.12,0.14l1.35,0.85l2.08,0.82l0.35,-0.1l1.49,-2.04l1.81,-0.05l1.63,1.01l1.21,1.8l0.86,1.58l1.47,1.55l0.53,1.82l0.73,1.32l0.14,0.13l1.98,0.84l1.78,0.59l0.61,-0.03l-0.78,1.89l-0.45,1.96l-0.19,3.58l-0.24,1.27l0.01,0.14l0.43,1.43l0.78,1.31l0.49,1.98l0.06,0.12l1.63,1.9l0.61,1.51l0.98,1.28l0.16,0.11l2.58,0.67l0.98,1.02l0.31,0.08l2.17,-0.71l1.91,-0.26l1.87,-0.47l1.67,-0.49l1.59,-1.06l0.11,-0.14l0.6,-1.52l0.22,-2.21l0.35,-0.62l1.58,-0.64l2.59,-0.59l2.18,0.09l1.43,-0.2l0.39,0.36l-0.07,1.02l-1.28,1.48l-0.65,1.68l0.07,0.32l0.33,0.32l-0.79,2.49l-0.28,-0.3l-0.24,-0.09l-1.0,0.08l-0.24,0.15l-0.74,1.28l-0.19,-0.13l-0.28,-0.03l-0.3,0.12l-0.19,0.29l0.0,0.06l-4.34,-0.02l-0.3,0.3l-0.0,1.16l-0.83,0.0l-0.28,0.19l0.08,0.33l0.93,0.86l0.9,0.58l0.24,0.48l0.16,0.15l0.2,0.08l-0.03,0.38l-2.94,0.01l-0.26,0.15l-1.21,2.09l0.02,0.33l0.25,0.33l-0.21,0.44l-0.04,0.22l-2.42,-2.35l-1.36,-0.87l-2.04,-0.67l-0.13,-0.01l-1.4,0.19l-2.07,0.98l-1.14,0.23l-1.72,-0.66l-1.85,-0.48l-2.31,-1.16l-1.92,-0.38l-2.79,-1.18l-2.04,-1.2l-0.6,-0.66l-0.19,-0.1l-1.37,-0.15l-2.45,-0.78l-1.07,-1.18l-2.63,-1.44l-1.2,-1.56l-0.44,-0.93l0.5,-0.15l0.2,-0.39l-0.2,-0.58l0.46,-0.55l0.07,-0.19l0.01,-0.91l-0.06,-0.18l-0.81,-1.13l-0.25,-1.08l-0.86,-1.36l-2.21,-2.63l-2.53,-2.09l-1.2,-1.63l-0.11,-0.09l-2.08,-1.06l-0.34,-0.48l0.35,-1.53l-0.16,-0.34l-1.24,-0.61l-1.39,-1.23l-0.6,-1.81l-0.24,-0.2l-1.25,-0.2l-1.38,-1.35l-1.11,-1.25l-0.1,-0.76l-0.05,-0.13l-1.33,-2.04l-0.85,-2.02l0.04,-0.99l-0.14,-0.27l-1.81,-1.1l-0.2,-0.04l-0.74,0.11l-1.34,-0.72l-0.42,0.16l-0.4,1.12l-0.0,0.19l0.41,1.3l0.24,2.04l0.06,0.15l0.88,1.16l1.84,1.86l0.4,0.61l0.12,0.1l0.27,0.14l0.29,0.82l0.31,0.2l0.2,-0.02l0.43,1.51l0.09,0.14l0.72,0.65l0.51,0.91l1.58,1.4l0.8,2.42l0.77,1.23l0.66,1.19l0.13,1.34l0.28,0.27l1.08,0.08l0.92,1.1l0.83,1.08l-0.03,0.24l-0.88,0.81l-0.13,-0.0l-0.59,-1.42l-0.07,-0.11l-1.67,-1.53l-1.81,-1.28l-1.15,-0.61l0.07,-1.85l-0.38,-1.45l-0.12,-0.17l-2.91,-2.03l-0.39,0.04l-0.11,0.11l-0.42,-0.46l-0.11,-0.08l-1.49,-0.63l-1.09,-1.16Z\",\n      \"name\": \"Mexico\"\n    },\n    \"VU\": {\n      \"path\": \"M839.92,325.66l0.78,0.73l-0.18,0.07l-0.6,-0.8ZM839.13,322.74l0.27,1.36l-0.13,-0.06l-0.21,-0.02l-0.29,0.08l-0.22,-0.43l-0.03,-1.32l0.61,0.4Z\",\n      \"name\": \"Vanuatu\"\n    },\n    \"FR\": {\n      \"path\": \"M444.58,172.63l-0.68,1.92l-0.72,-0.38l-0.51,-1.79l0.43,-0.95l1.15,-0.83l0.33,2.04ZM429.71,147.03l1.77,1.57l0.26,0.07l1.16,-0.23l2.12,1.44l0.56,0.28l0.16,0.03l0.61,-0.06l1.09,0.78l0.13,0.05l3.18,0.53l-1.09,1.94l-0.3,2.16l-0.48,0.38l-1.0,-0.26l-0.37,0.32l0.07,0.66l-1.73,1.68l-0.09,0.21l-0.04,1.42l0.41,0.29l0.96,-0.4l0.67,1.07l-0.09,0.78l0.04,0.19l0.61,0.97l-0.71,0.78l-0.07,0.28l0.65,2.39l0.21,0.21l1.09,0.31l-0.2,0.95l-2.08,1.58l-4.81,-0.8l-0.13,0.01l-3.65,0.99l-0.22,0.24l-0.25,1.6l-2.59,0.35l-2.74,-1.33l-0.31,0.03l-0.79,0.57l-4.38,-1.31l-0.79,-0.94l1.16,-1.64l0.05,-0.15l0.48,-6.17l-0.06,-0.21l-2.58,-3.3l-1.89,-1.65l-0.11,-0.06l-3.64,-1.17l-0.2,-1.88l2.92,-0.63l4.14,0.82l0.35,-0.36l-0.65,-3.0l1.77,1.05l0.27,0.02l5.83,-2.54l0.17,-0.19l0.71,-2.54l1.75,-0.53l0.27,0.88l0.27,0.21l1.04,0.05l1.08,1.23ZM289.1,278.45l-0.85,0.84l-0.88,0.13l-0.25,-0.51l-0.21,-0.16l-0.56,-0.1l-0.25,0.07l-0.63,0.55l-0.62,-0.29l0.5,-0.88l0.21,-1.11l0.42,-1.05l-0.03,-0.28l-0.93,-1.42l-0.18,-1.54l1.13,-1.87l2.42,0.78l2.55,2.04l0.33,0.81l-1.4,2.16l-0.77,1.84Z\",\n      \"name\": \"France\"\n    },\n    \"FI\": {\n      \"path\": \"M492.26,76.42l-0.38,3.12l0.12,0.28l3.6,2.69l-2.14,2.96l-0.01,0.33l2.83,4.61l-1.61,3.36l0.03,0.31l2.15,2.87l-0.96,2.44l0.1,0.35l3.51,2.55l-0.81,1.72l-2.28,2.19l-5.28,4.79l-4.51,0.31l-4.39,1.37l-3.87,0.75l-1.34,-1.89l-0.11,-0.09l-2.23,-1.14l0.53,-3.54l-0.01,-0.14l-1.17,-3.37l1.12,-2.13l2.23,-2.44l5.69,-4.33l1.65,-0.84l0.16,-0.31l-0.26,-1.73l-0.15,-0.22l-3.4,-1.91l-0.77,-1.47l-0.07,-6.45l-0.12,-0.24l-3.91,-2.94l-3.0,-1.92l0.97,-0.76l2.6,2.17l0.21,0.07l3.2,-0.21l2.63,1.03l0.3,-0.05l2.39,-1.94l0.09,-0.13l1.18,-3.12l3.63,-1.42l2.87,1.59l-0.98,2.87Z\",\n      \"name\": \"Finland\"\n    },\n    \"FJ\": {\n      \"path\": \"M869.98,327.07l-1.31,0.44l-0.14,-0.41l0.96,-0.41l0.85,-0.17l1.43,-0.78l-0.16,0.65l-1.64,0.67ZM867.58,329.12l0.54,0.47l-0.31,1.0l-1.32,0.3l-1.13,-0.26l-0.17,-0.78l0.72,-0.66l0.98,0.27l0.25,-0.04l0.43,-0.29Z\",\n      \"name\": \"Fiji\"\n    },\n    \"FK\": {\n      \"path\": \"M268.15,427.89l2.6,-1.73l1.98,0.77l0.31,-0.05l1.32,-1.17l1.58,1.18l-0.54,0.84l-3.1,0.92l-1.0,-1.04l-0.39,-0.04l-1.9,1.35l-0.86,-1.04Z\",\n      \"name\": \"Falkland Islands\"\n    },\n    \"NI\": {\n      \"path\": \"M202.1,252.6l0.23,-0.0l0.12,-0.11l0.68,-0.09l0.22,-0.15l0.23,-0.43l0.2,-0.01l0.28,-0.31l-0.04,-0.97l0.29,-0.03l0.5,0.02l0.25,-0.11l0.37,-0.46l0.51,0.35l0.4,-0.06l0.23,-0.28l0.45,-0.29l0.87,-0.7l0.11,-0.21l0.02,-0.26l0.23,-0.12l0.25,-0.48l0.29,0.27l0.14,0.07l0.5,0.12l0.22,-0.03l0.48,-0.28l0.66,-0.02l0.87,-0.33l0.36,-0.32l0.21,0.01l-0.11,0.48l0.0,0.14l0.22,0.8l-0.54,0.85l-0.27,1.03l-0.09,1.18l0.14,0.72l0.05,0.95l-0.24,0.15l-0.13,0.19l-0.23,1.09l0.0,0.14l0.14,0.53l-0.42,0.53l-0.06,0.24l0.12,0.69l0.08,0.15l0.18,0.19l-0.26,0.23l-0.49,-0.11l-0.35,-0.44l-0.16,-0.1l-0.79,-0.21l-0.23,0.03l-0.45,0.26l-1.51,-0.62l-0.31,0.05l-0.17,0.15l-1.81,-1.62l-0.6,-0.9l-1.04,-0.79l-0.77,-0.71Z\",\n      \"name\": \"Nicaragua\"\n    },\n    \"NL\": {\n      \"path\": \"M436.22,136.65l1.82,0.08l0.36,0.89l-0.6,2.96l-0.53,1.06l-1.32,0.0l-0.3,0.34l0.35,2.89l-0.83,-0.47l-1.56,-1.43l-0.29,-0.07l-2.26,0.67l-1.02,-0.15l0.68,-0.48l0.1,-0.12l2.14,-4.84l3.25,-1.35Z\",\n      \"name\": \"Netherlands\"\n    },\n    \"NO\": {\n      \"path\": \"M491.45,67.31l7.06,3.0l-2.52,0.94l-0.11,0.49l2.43,2.49l-3.82,1.59l-1.48,0.3l0.89,-2.61l-0.14,-0.36l-3.21,-1.78l-0.25,-0.02l-3.89,1.52l-0.17,0.17l-1.2,3.17l-2.19,1.78l-2.53,-0.99l-0.13,-0.02l-3.15,0.21l-2.69,-2.25l-0.38,-0.01l-1.43,1.11l-1.47,0.17l-0.26,0.26l-0.33,2.57l-4.42,-0.65l-0.33,0.22l-0.6,2.19l-2.17,-0.01l-0.27,0.16l-4.15,7.68l-3.88,5.76l-0.0,0.33l0.81,1.23l-0.7,1.27l-2.3,-0.06l-0.28,0.18l-1.63,3.72l-0.02,0.13l0.15,5.17l0.07,0.18l1.51,1.84l-0.79,4.24l-2.04,2.5l-0.92,1.75l-1.39,-1.88l-0.44,-0.05l-4.89,4.21l-3.16,0.81l-3.24,-1.74l-0.86,-3.82l-0.78,-8.6l2.18,-2.36l6.56,-3.28l5.0,-4.16l4.63,-5.74l5.99,-8.09l4.17,-3.23l6.84,-5.49l5.39,-1.92l4.06,0.24l0.23,-0.09l3.72,-3.67l4.51,0.19l4.4,-0.89ZM484.58,19.95l4.42,1.82l-3.25,2.68l-7.14,0.65l-7.16,-0.91l-0.39,-1.37l-0.28,-0.22l-3.48,-0.1l-2.25,-2.15l7.09,-1.48l3.55,1.36l0.28,-0.03l2.42,-1.66l6.18,1.41ZM481.99,33.92l-4.73,1.85l-3.76,-1.06l1.27,-1.02l0.04,-0.43l-1.18,-1.35l4.46,-0.94l0.89,1.83l0.17,0.15l2.83,0.96ZM466.5,23.95l7.64,3.87l-5.63,1.94l-0.19,0.19l-1.35,3.88l-2.08,0.96l-0.16,0.19l-1.14,4.18l-2.71,0.18l-4.94,-2.95l1.95,-1.63l-0.08,-0.51l-3.7,-1.54l-4.79,-4.54l-1.78,-4.01l6.29,-1.88l1.25,1.81l0.25,0.13l3.57,-0.08l0.26,-0.17l0.87,-1.79l3.41,-0.18l3.08,1.94Z\",\n      \"name\": \"Norway\"\n    },\n    \"NA\": {\n      \"path\": \"M461.88,357.98l-1.61,-1.77l-0.94,-1.9l-0.54,-2.58l-0.62,-1.95l-0.83,-4.05l-0.06,-3.13l-0.33,-1.5l-0.07,-0.14l-0.95,-1.06l-1.27,-2.12l-1.3,-3.1l-0.59,-1.71l-1.98,-2.46l-0.13,-1.67l0.99,-0.4l1.44,-0.42l1.48,0.07l1.42,1.11l0.31,0.03l0.32,-0.15l9.99,-0.11l1.66,1.18l0.16,0.06l6.06,0.37l4.69,-1.06l2.01,-0.57l1.5,0.14l0.63,0.37l-1.0,0.41l-0.7,0.01l-0.16,0.05l-1.38,0.88l-0.79,-0.88l-0.29,-0.09l-3.83,0.9l-1.84,0.08l-0.29,0.3l-0.07,8.99l-2.18,0.08l-0.29,0.3l-0.0,17.47l-2.04,1.27l-1.21,0.18l-1.51,-0.49l-0.99,-0.18l-0.36,-1.0l-0.1,-0.14l-0.99,-0.74l-0.4,0.04l-0.98,1.09Z\",\n      \"name\": \"Namibia\"\n    },\n    \"NC\": {\n      \"path\": \"M835.87,338.68l2.06,1.63l1.01,0.94l-0.49,0.32l-1.21,-0.62l-1.76,-1.16l-1.58,-1.36l-1.61,-1.79l-0.16,-0.41l0.54,0.02l1.32,0.83l1.08,0.87l0.79,0.73Z\",\n      \"name\": \"New Caledonia\"\n    },\n    \"NE\": {\n      \"path\": \"M426.67,254.17l0.03,-1.04l-0.24,-0.3l-2.66,-0.53l-0.06,-1.0l-0.07,-0.17l-1.37,-1.62l-0.3,-1.04l0.15,-0.94l1.37,-0.09l0.19,-0.09l0.85,-0.83l3.34,-0.22l2.22,-0.41l0.24,-0.26l0.2,-1.5l1.32,-1.65l0.07,-0.19l-0.01,-5.74l3.4,-1.13l7.24,-5.12l8.46,-4.95l3.76,1.08l1.35,1.39l0.36,0.05l1.39,-0.77l0.55,3.66l0.12,0.2l0.82,0.6l0.03,0.69l0.1,0.21l0.87,0.74l-0.47,0.99l-0.96,5.26l-0.13,3.25l-3.08,2.34l-0.1,0.15l-1.08,3.37l0.08,0.31l0.94,0.86l-0.01,1.51l0.29,0.3l1.25,0.05l-0.14,0.66l-0.51,0.11l-0.24,0.26l-0.06,0.57l-0.04,0.0l-1.59,-2.62l-0.21,-0.14l-0.59,-0.1l-0.23,0.05l-1.83,1.33l-1.79,-0.68l-1.42,-0.17l-0.17,0.03l-0.65,0.32l-1.39,-0.07l-0.19,0.06l-1.4,1.03l-1.12,0.05l-2.97,-1.29l-0.26,0.01l-1.12,0.59l-1.08,-0.04l-0.85,-0.88l-0.11,-0.07l-2.51,-0.95l-0.14,-0.02l-2.69,0.3l-0.16,0.07l-0.65,0.55l-0.1,0.16l-0.34,1.41l-0.69,0.98l-0.05,0.15l-0.13,1.72l-1.47,-1.13l-0.18,-0.06l-0.9,0.01l-0.2,0.08l-0.32,0.28Z\",\n      \"name\": \"Niger\"\n    },\n    \"NG\": {\n      \"path\": \"M442.0,272.7l-2.4,0.83l-0.88,-0.12l-0.19,0.04l-0.89,0.52l-1.78,-0.05l-1.23,-1.44l-0.88,-1.87l-1.77,-1.66l-0.21,-0.08l-3.78,0.03l0.13,-3.75l-0.06,-1.58l0.44,-1.47l0.74,-0.75l1.21,-1.56l0.04,-0.29l-0.22,-0.56l0.44,-0.9l0.01,-0.24l-0.54,-1.44l0.26,-2.97l0.72,-1.06l0.33,-1.37l0.51,-0.43l2.53,-0.28l2.38,0.9l0.89,0.91l0.2,0.09l1.28,0.04l0.15,-0.03l1.06,-0.56l2.9,1.26l0.13,0.02l1.28,-0.06l0.16,-0.06l1.39,-1.02l1.36,0.07l0.15,-0.03l0.64,-0.32l1.22,0.13l1.9,0.73l0.28,-0.04l1.86,-1.35l0.33,0.06l1.62,2.67l0.29,0.14l0.32,-0.04l0.73,0.74l-0.19,0.37l-0.12,0.74l-2.03,1.89l-0.07,0.11l-0.66,1.62l-0.35,1.28l-0.48,0.51l-0.07,0.12l-0.48,1.67l-1.26,0.98l-0.1,0.15l-0.38,1.24l-0.58,1.07l-0.2,0.91l-1.43,0.7l-1.26,-0.93l-0.19,-0.06l-0.95,0.04l-0.2,0.09l-1.41,1.39l-0.61,0.02l-0.26,0.17l-1.19,2.42l-0.61,1.67Z\",\n      \"name\": \"Nigeria\"\n    },\n    \"NZ\": {\n      \"path\": \"M857.9,379.62l1.85,3.1l0.33,0.14l0.22,-0.28l0.04,-1.41l0.57,0.4l0.35,2.06l0.17,0.22l2.02,0.94l1.78,0.26l0.22,-0.06l1.31,-1.01l0.84,0.22l-0.53,2.27l-0.67,1.5l-1.71,-0.05l-0.25,0.12l-0.67,0.89l-0.05,0.23l0.21,1.15l-0.31,0.46l-2.15,3.57l-1.6,0.99l-0.28,-0.51l-0.15,-0.13l-0.72,-0.3l1.27,-2.15l0.01,-0.29l-0.82,-1.63l-0.15,-0.14l-2.5,-1.09l0.05,-0.69l1.67,-0.94l0.15,-0.21l0.42,-2.24l-0.11,-1.95l-0.03,-0.12l-0.97,-1.85l0.05,-0.41l-0.09,-0.25l-1.18,-1.17l-1.94,-2.49l-0.86,-1.64l0.38,-0.09l1.24,1.43l0.12,0.08l1.81,0.68l0.67,2.39ZM853.93,393.55l0.57,1.24l0.44,0.12l1.51,-1.03l0.52,0.91l0.0,1.09l-0.88,1.31l-1.62,2.2l-1.26,1.2l-0.05,0.38l0.64,1.02l-1.4,0.03l-0.14,0.04l-2.14,1.16l-0.14,0.17l-0.67,2.0l-1.38,3.06l-3.07,2.19l-2.12,-0.06l-1.55,-0.99l-0.14,-0.05l-2.53,-0.2l-0.31,-0.84l1.25,-2.15l3.07,-2.97l1.62,-0.59l1.81,-1.17l2.18,-1.63l1.55,-1.65l1.08,-2.18l0.9,-0.72l0.11,-0.17l0.35,-1.56l1.37,-1.07l0.4,0.91Z\",\n      \"name\": \"New Zealand\"\n    },\n    \"NP\": {\n      \"path\": \"M641.26,213.53l-0.14,0.95l0.32,1.64l-0.21,0.78l-1.83,0.04l-2.98,-0.62l-1.86,-0.25l-1.37,-1.3l-0.18,-0.08l-3.38,-0.34l-3.21,-1.49l-2.38,-1.34l-2.16,-0.92l0.84,-2.2l1.51,-1.18l0.89,-0.57l1.83,0.77l2.5,1.76l1.39,0.41l0.78,1.21l0.17,0.13l1.91,0.53l2.0,1.17l2.92,0.66l2.63,0.24Z\",\n      \"name\": \"Nepal\"\n    },\n    \"CI\": {\n      \"path\": \"M413.53,272.08l-0.83,0.02l-1.79,-0.49l-1.64,0.03l-3.04,0.46l-1.73,0.72l-2.4,0.89l-0.12,-0.02l0.16,-1.7l0.19,-0.25l0.06,-0.2l-0.08,-0.99l-0.09,-0.19l-1.06,-1.05l-0.15,-0.08l-0.71,-0.15l-0.51,-0.48l0.45,-0.92l0.02,-0.19l-0.24,-1.16l0.07,-0.43l0.14,-0.0l0.3,-0.26l0.15,-1.1l-0.02,-0.15l-0.13,-0.34l0.09,-0.13l0.83,-0.27l0.19,-0.37l-0.62,-2.02l-0.55,-1.0l0.14,-0.59l0.35,-0.14l0.24,-0.16l0.53,0.29l0.14,0.04l1.93,0.02l0.26,-0.14l0.36,-0.58l0.39,0.01l0.43,-0.17l0.28,0.79l0.43,0.16l0.56,-0.31l0.89,-0.32l0.92,0.45l0.39,0.75l0.14,0.13l1.13,0.53l0.3,-0.03l0.81,-0.59l1.02,-0.08l1.49,0.57l0.62,3.33l-1.03,2.09l-0.65,2.84l0.02,0.2l1.05,2.08l-0.07,0.64Z\",\n      \"name\": \"Ivory Coast\"\n    },\n    \"CH\": {\n      \"path\": \"M444.71,156.27l0.05,0.3l-0.34,0.69l0.13,0.4l1.13,0.58l1.07,0.1l-0.12,0.81l-0.87,0.42l-1.75,-0.37l-0.34,0.18l-0.47,1.1l-0.86,0.07l-0.33,-0.38l-0.41,-0.04l-1.34,1.01l-1.02,0.13l-0.93,-0.58l-0.82,-1.32l-0.37,-0.12l-0.77,0.32l0.02,-0.84l1.74,-1.69l0.09,-0.25l-0.04,-0.38l0.73,0.19l0.26,-0.06l0.6,-0.48l2.02,0.02l0.24,-0.12l0.38,-0.51l2.31,0.84Z\",\n      \"name\": \"Switzerland\"\n    },\n    \"CO\": {\n      \"path\": \"M232.24,284.95l-0.94,-0.52l-1.22,-0.82l-0.31,-0.01l-0.62,0.35l-1.88,-0.31l-0.54,-0.95l-0.29,-0.15l-0.37,0.03l-2.34,-1.33l-0.15,-0.35l0.57,-0.11l0.24,-0.32l-0.1,-1.15l0.46,-0.71l1.11,-0.15l0.21,-0.13l1.05,-1.57l0.95,-1.31l-0.08,-0.43l-0.73,-0.47l0.4,-1.24l0.01,-0.16l-0.53,-2.15l0.44,-0.54l0.06,-0.24l-0.4,-2.13l-0.06,-0.13l-0.93,-1.22l0.21,-0.8l0.52,0.12l0.32,-0.13l0.47,-0.75l0.03,-0.27l-0.52,-1.32l0.09,-0.11l1.14,0.07l0.22,-0.08l1.82,-1.71l0.96,-0.25l0.22,-0.28l0.02,-0.81l0.43,-2.01l1.28,-1.04l1.48,-0.05l0.27,-0.19l0.12,-0.31l1.73,0.19l0.2,-0.05l1.96,-1.28l0.97,-0.56l1.16,-1.16l0.64,0.11l0.43,0.44l-0.31,0.55l-1.49,0.39l-0.19,0.16l-0.6,1.2l-0.97,0.74l-0.73,0.94l-0.06,0.13l-0.3,1.76l-0.68,1.44l0.23,0.43l1.1,0.14l0.27,0.97l0.08,0.13l0.49,0.49l0.17,0.85l-0.27,0.86l-0.01,0.14l0.09,0.53l0.2,0.23l0.52,0.18l0.54,0.79l0.27,0.13l3.18,-0.24l1.31,0.29l1.7,2.08l0.31,0.1l0.96,-0.26l1.75,0.13l1.41,-0.27l0.56,0.27l-0.36,1.07l-0.54,0.81l-0.05,0.13l-0.2,1.8l0.51,1.79l0.07,0.12l0.65,0.68l0.05,0.32l-1.16,1.14l0.05,0.47l0.86,0.52l0.6,0.79l0.31,1.01l-0.7,-0.81l-0.44,-0.01l-0.74,0.77l-4.75,-0.05l-0.3,0.31l0.03,1.57l0.25,0.29l1.2,0.21l-0.02,0.24l-0.1,-0.05l-0.22,-0.02l-1.41,0.41l-0.22,0.29l-0.01,1.82l0.11,0.23l1.04,0.85l0.35,1.3l-0.06,1.02l-1.02,6.26l-0.84,-0.89l-0.19,-0.09l-0.25,-0.02l1.35,-2.13l-0.1,-0.42l-1.92,-1.17l-0.2,-0.04l-1.41,0.2l-0.82,-0.39l-0.26,0.0l-1.29,0.62l-1.63,-0.27l-1.4,-2.5l-0.12,-0.12l-1.1,-0.61l-0.83,-1.2l-1.67,-1.19l-0.27,-0.04l-0.54,0.19Z\",\n      \"name\": \"Colombia\"\n    },\n    \"CN\": {\n      \"path\": \"M740.32,148.94l0.22,0.21l4.3,1.03l2.84,2.2l0.99,2.92l0.28,0.2l3.8,0.0l0.15,-0.04l2.13,-1.24l3.5,-0.8l-1.05,2.29l-0.95,1.13l-0.06,0.12l-0.85,3.41l-1.56,2.81l-2.83,-0.51l-0.19,0.03l-2.15,1.09l-0.15,0.34l0.65,2.59l-0.33,3.3l-1.03,0.07l-0.28,0.3l0.01,0.75l-1.09,-1.2l-0.48,0.05l-0.94,1.6l-3.76,1.26l-0.2,0.36l0.29,1.19l-1.67,-0.08l-1.11,-0.88l-0.42,0.05l-1.69,2.08l-2.71,1.57l-2.04,1.88l-3.42,0.84l-0.11,0.05l-1.8,1.34l-1.54,0.46l0.52,-0.53l0.06,-0.33l-0.44,-0.96l1.84,-1.84l0.02,-0.41l-1.32,-1.56l-0.36,-0.08l-2.23,1.08l-2.83,2.06l-1.52,1.85l-2.32,0.13l-0.2,0.09l-1.28,1.37l-0.03,0.37l1.32,1.97l0.18,0.13l1.83,0.43l0.07,1.08l0.18,0.26l1.98,0.84l0.3,-0.03l2.66,-1.96l2.06,1.04l0.12,0.03l1.4,0.07l0.27,1.0l-3.24,0.73l-0.17,0.11l-1.13,1.5l-2.38,1.4l-0.1,0.1l-1.29,1.99l0.1,0.42l2.6,1.5l0.97,2.72l1.52,2.56l1.66,2.08l-0.03,1.76l-1.4,0.67l-0.15,0.38l0.6,1.47l0.13,0.15l1.29,0.75l-0.35,2.0l-0.58,1.96l-1.22,0.21l-0.2,0.14l-1.83,2.93l-2.02,3.51l-2.29,3.13l-3.4,2.42l-3.42,2.18l-2.75,0.3l-0.15,0.06l-1.32,1.01l-0.68,-0.67l-0.41,-0.01l-1.37,1.27l-3.42,1.28l-2.62,0.4l-0.24,0.21l-0.8,2.57l-0.95,0.11l-0.53,-1.54l0.52,-0.89l-0.19,-0.44l-3.36,-0.84l-0.17,0.01l-1.09,0.4l-2.36,-0.64l-1.0,-0.9l0.35,-1.34l-0.23,-0.37l-2.22,-0.47l-1.15,-0.94l-0.36,-0.02l-2.08,1.37l-2.35,0.29l-1.98,-0.01l-0.13,0.03l-1.32,0.63l-1.28,0.38l-0.21,0.33l0.33,2.65l-0.78,-0.04l-0.14,-0.39l-0.07,-1.04l-0.41,-0.26l-1.72,0.71l-0.96,-0.43l-1.63,-0.86l0.65,-1.95l-0.19,-0.38l-1.43,-0.46l-0.56,-2.27l-0.34,-0.22l-2.26,0.38l0.25,-2.65l2.29,-2.15l0.09,-0.2l0.1,-2.21l-0.07,-2.09l-0.15,-0.25l-1.02,-0.6l-0.8,-1.52l-0.31,-0.16l-1.42,0.2l-2.16,-0.32l0.55,-0.74l0.01,-0.35l-1.17,-1.7l-0.41,-0.08l-1.67,1.07l-1.97,-0.63l-0.25,0.03l-2.89,1.73l-2.26,1.99l-1.82,0.3l-1.0,-0.66l-0.15,-0.05l-1.28,-0.06l-1.75,-0.61l-0.24,0.02l-1.35,0.69l-0.1,0.08l-1.2,1.45l-0.14,-1.41l-0.4,-0.25l-1.46,0.55l-2.83,-0.26l-2.77,-0.61l-1.99,-1.17l-1.91,-0.54l-0.78,-1.21l-0.17,-0.13l-1.36,-0.38l-2.54,-1.79l-2.01,-0.84l-0.28,0.02l-0.89,0.56l-3.31,-1.83l-2.35,-1.67l-0.57,-2.49l1.34,0.28l0.36,-0.28l0.08,-1.42l-0.05,-0.19l-0.93,-1.34l0.24,-2.18l-0.07,-0.22l-2.69,-3.32l-0.15,-0.1l-3.97,-1.11l-0.69,-2.05l-0.11,-0.15l-1.79,-1.3l-0.39,-0.73l-0.36,-1.57l0.08,-1.09l-0.18,-0.3l-1.52,-0.66l-0.22,-0.01l-0.51,0.18l-0.52,-2.21l0.59,-0.55l0.06,-0.35l-0.22,-0.44l2.12,-1.24l1.63,-0.55l2.58,0.39l0.31,-0.16l0.87,-1.75l3.05,-0.34l0.21,-0.12l0.84,-1.12l3.87,-1.59l0.15,-0.14l0.35,-0.68l0.03,-0.17l-0.17,-1.51l1.52,-0.7l0.15,-0.39l-2.12,-5.0l4.62,-1.15l1.35,-0.72l0.14,-0.17l1.72,-5.37l4.7,0.99l0.28,-0.08l1.39,-1.43l0.08,-0.2l0.11,-2.95l1.83,-0.26l0.18,-0.1l1.85,-2.08l0.61,-0.17l0.57,1.97l0.1,0.15l2.2,1.75l3.48,1.17l1.59,2.36l-0.93,3.53l0.04,0.24l0.9,1.35l0.2,0.13l2.98,0.53l3.32,0.43l2.97,1.89l1.49,0.35l1.08,2.67l1.52,1.88l0.24,0.11l2.74,-0.07l5.15,0.67l3.36,-0.41l2.39,0.43l3.67,1.81l0.13,0.03l2.92,-0.0l1.02,0.86l0.34,0.03l2.88,-1.59l3.98,-1.03l3.81,-0.13l3.02,-1.12l1.77,-1.61l1.73,-1.01l0.13,-0.37l-0.41,-1.01l-0.72,-1.07l1.09,-1.66l1.21,0.24l2.57,0.63l0.24,-0.04l2.46,-1.62l3.78,-1.19l0.13,-0.09l1.8,-2.03l1.66,-0.84l3.54,-0.41l1.93,0.35l0.34,-0.22l0.27,-1.12l-0.08,-0.29l-2.27,-2.22l-2.08,-1.07l-0.29,0.01l-1.82,1.12l-2.36,-0.47l-0.14,0.01l-1.18,0.34l-0.46,-0.94l1.69,-3.08l1.1,-2.21l2.75,1.12l0.26,-0.02l3.53,-2.06l0.15,-0.26l-0.02,-1.35l2.18,-3.39l1.35,-1.04l0.12,-0.24l-0.03,-1.85l-0.15,-0.25l-1.0,-0.58l1.68,-1.37l3.01,-0.59l3.25,-0.09l3.67,0.99l2.08,1.18l1.51,3.3l0.95,1.45l0.85,1.99l0.92,3.19ZM697.0,237.37l-1.95,1.12l-1.74,-0.68l-0.06,-1.9l1.08,-1.03l2.62,-0.7l1.23,0.05l0.37,0.65l-1.01,1.08l-0.54,1.4Z\",\n      \"name\": \"China\"\n    },\n    \"CM\": {\n      \"path\": \"M453.76,278.92l-0.26,-0.11l-0.18,-0.02l-1.42,0.31l-1.56,-0.33l-1.17,0.16l-3.7,-0.05l0.3,-1.63l-0.04,-0.21l-0.98,-1.66l-0.15,-0.13l-1.03,-0.38l-0.46,-1.01l-0.13,-0.14l-0.48,-0.27l0.02,-0.46l0.62,-1.72l1.1,-2.25l0.54,-0.02l0.2,-0.09l1.41,-1.39l0.73,-0.03l1.32,0.97l0.31,0.03l1.72,-0.85l0.16,-0.2l0.22,-1.0l0.57,-1.03l0.36,-1.18l1.26,-0.98l0.1,-0.15l0.49,-1.7l0.48,-0.51l0.07,-0.13l0.35,-1.3l0.63,-1.54l2.06,-1.92l0.09,-0.17l0.12,-0.79l0.24,-0.41l-0.04,-0.36l-0.89,-0.91l0.04,-0.45l0.28,-0.06l0.85,1.39l0.16,1.59l-0.09,1.66l0.04,0.17l1.09,1.84l-0.86,-0.02l-0.72,0.17l-1.07,-0.24l-0.34,0.17l-0.54,1.19l0.06,0.34l1.48,1.47l1.06,0.44l0.32,0.94l0.73,1.6l-0.32,0.57l-1.23,2.49l-0.54,0.41l-0.12,0.21l-0.19,1.95l0.24,1.08l-0.18,0.67l0.07,0.28l1.13,1.25l0.24,0.93l0.92,1.29l1.1,0.8l0.1,1.01l0.26,0.73l-0.12,0.93l-1.65,-0.49l-2.02,-0.66l-3.19,-0.11Z\",\n      \"name\": \"Cameroon\"\n    },\n    \"CL\": {\n      \"path\": \"M246.8,429.1l-1.14,0.78l-2.25,1.21l-0.16,0.23l-0.37,2.94l-0.75,0.06l-2.72,-1.07l-2.83,-2.34l-3.06,-1.9l-0.71,-1.92l0.67,-1.84l-0.02,-0.25l-1.22,-2.13l-0.31,-5.41l1.02,-2.95l2.59,-2.4l-0.13,-0.51l-3.32,-0.8l2.06,-2.4l0.07,-0.15l0.79,-4.77l2.44,0.95l0.4,-0.22l1.31,-6.31l-0.16,-0.33l-1.68,-0.8l-0.42,0.21l-0.72,3.47l-1.01,-0.27l0.74,-4.06l0.85,-5.46l1.12,-1.96l0.03,-0.22l-0.71,-2.82l-0.19,-2.94l0.76,-0.07l0.26,-0.2l1.53,-4.62l1.73,-4.52l1.07,-4.2l-0.56,-4.2l0.73,-2.2l0.01,-0.12l-0.29,-3.3l1.46,-3.34l0.45,-5.19l0.8,-5.52l0.78,-5.89l-0.18,-4.33l-0.49,-3.47l1.1,-0.56l0.13,-0.13l0.44,-0.88l0.9,1.29l0.32,1.8l0.1,0.18l1.16,0.97l-0.73,2.33l0.01,0.21l1.33,2.91l0.97,3.6l0.35,0.22l1.57,-0.31l0.16,0.34l-0.79,2.51l-2.61,1.25l-0.17,0.28l0.08,4.36l-0.48,0.79l0.01,0.33l0.6,0.84l-1.62,1.55l-1.67,2.6l-0.89,2.47l-0.02,0.13l0.23,2.56l-1.5,2.76l-0.03,0.21l1.15,4.8l0.11,0.17l0.54,0.42l-0.01,2.37l-1.4,2.7l-0.03,0.15l0.06,2.25l-1.8,1.78l-0.09,0.21l0.02,2.73l0.71,2.63l-1.33,0.94l-0.12,0.17l-0.67,2.64l-0.59,3.03l0.4,3.55l-0.84,0.51l-0.14,0.31l0.58,3.5l0.08,0.16l0.96,0.99l-0.7,1.08l0.11,0.43l1.04,0.55l0.19,0.8l-0.89,0.48l-0.16,0.31l0.26,1.77l-0.89,4.06l-1.31,2.67l-0.03,0.19l0.28,1.53l-0.73,1.88l-1.85,1.37l-0.12,0.26l0.22,3.46l0.06,0.16l0.88,1.19l0.28,0.12l1.32,-0.17l-0.04,2.13l0.04,0.15l1.04,1.95l0.24,0.16l5.94,0.44ZM248.79,430.71l0.0,7.41l0.3,0.3l2.67,0.0l1.01,0.06l-0.54,0.91l-1.99,1.01l-1.13,-0.1l-1.42,-0.27l-1.87,-1.06l-2.57,-0.49l-3.09,-1.9l-2.52,-1.83l-2.65,-2.93l0.93,0.32l3.54,2.29l3.32,1.23l0.34,-0.09l1.29,-1.57l0.83,-2.32l2.11,-1.28l1.43,0.32Z\",\n      \"name\": \"Chile\"\n    },\n    \"CA\": {\n      \"path\": \"M280.14,145.66l-1.66,2.88l0.06,0.37l0.37,0.03l1.5,-1.01l1.17,0.49l-0.64,0.83l0.13,0.46l2.22,0.89l0.28,-0.03l1.02,-0.7l2.09,0.83l-0.69,2.1l0.37,0.38l1.43,-0.45l0.27,1.43l0.74,1.88l-0.95,2.5l-0.88,0.09l-1.34,-0.48l0.49,-2.34l-0.14,-0.32l-0.7,-0.4l-0.36,0.04l-2.81,2.66l-0.63,-0.05l1.2,-1.01l-0.1,-0.52l-2.4,-0.77l-2.79,0.18l-4.65,-0.09l-0.22,-0.54l1.37,-0.99l0.01,-0.48l-0.82,-0.65l1.91,-1.79l2.57,-5.17l1.49,-1.81l2.04,-1.07l0.63,0.08l-0.27,0.51l-1.33,2.07ZM193.92,74.85l-0.01,4.24l0.19,0.28l0.33,-0.07l3.14,-3.22l2.65,2.5l-0.71,3.04l0.06,0.26l2.42,2.88l0.46,0.0l2.66,-3.14l1.83,-3.74l0.03,-0.12l0.13,-4.53l3.23,0.31l3.63,0.64l3.18,2.08l0.13,1.91l-1.79,2.22l-0.0,0.37l1.69,2.2l-0.28,1.8l-4.74,2.84l-3.33,0.62l-2.5,-1.21l-0.41,0.17l-0.73,2.05l-2.39,3.44l-0.74,1.78l-2.78,2.61l-3.48,0.26l-0.17,0.07l-1.98,1.68l-0.1,0.21l-0.15,2.33l-2.68,0.45l-0.17,0.09l-3.1,3.2l-2.75,4.38l-0.99,3.06l-0.14,4.31l0.25,0.31l3.5,0.58l1.07,3.24l1.18,2.76l0.34,0.18l3.43,-0.69l4.55,1.52l2.45,1.32l1.76,1.65l0.12,0.07l3.11,0.96l2.63,1.46l0.13,0.04l4.12,0.2l2.41,0.3l-0.36,2.81l0.8,3.51l1.81,3.78l0.08,0.1l3.73,3.17l0.34,0.03l1.93,-1.08l0.13,-0.15l1.35,-3.44l0.01,-0.18l-1.31,-5.38l-0.08,-0.14l-1.46,-1.5l3.68,-1.51l2.84,-2.46l1.45,-2.55l0.04,-0.17l-0.2,-2.39l-0.04,-0.12l-1.7,-3.07l-2.9,-2.64l2.79,-3.66l0.05,-0.27l-1.08,-3.38l-0.8,-5.75l1.45,-0.75l4.18,1.03l2.6,0.38l0.18,-0.03l1.93,-0.95l2.18,1.23l3.01,2.18l0.73,1.42l0.25,0.16l4.18,0.27l-0.06,2.95l0.83,4.7l0.22,0.24l2.19,0.55l1.75,2.08l0.38,0.07l3.63,-2.03l0.11,-0.11l2.38,-4.06l1.36,-1.43l1.76,3.01l3.26,4.68l2.68,4.19l-0.94,2.09l0.12,0.38l3.31,1.98l2.23,1.98l0.13,0.07l3.94,0.89l1.48,1.02l0.96,2.82l0.22,0.2l1.85,0.43l0.88,1.13l0.17,3.53l-1.68,1.16l-1.76,1.14l-4.08,1.17l-0.11,0.06l-3.08,2.65l-4.11,0.52l-5.35,-0.69l-3.76,-0.02l-2.62,0.23l-0.2,0.1l-2.05,2.29l-3.13,1.41l-0.11,0.08l-3.6,4.24l-2.87,2.92l-0.05,0.36l0.33,0.14l2.13,-0.52l0.15,-0.08l3.98,-4.15l5.16,-2.63l3.58,-0.31l1.82,1.3l-2.09,1.91l-0.09,0.29l0.8,3.46l0.82,2.37l0.15,0.17l3.25,1.56l0.16,0.03l4.14,-0.45l0.21,-0.12l2.03,-2.86l0.11,1.46l0.13,0.22l1.26,0.88l-2.7,1.78l-5.51,1.83l-2.52,1.26l-2.75,2.16l-1.52,-0.18l-0.08,-2.16l4.19,-2.47l0.14,-0.34l-0.3,-0.22l-4.01,0.1l-2.66,0.36l-1.45,-1.56l0.0,-4.16l-0.11,-0.23l-1.11,-0.91l-0.28,-0.05l-1.5,0.48l-0.7,-0.7l-0.45,0.02l-1.91,2.39l-0.8,2.5l-0.82,1.31l-0.95,0.43l-0.77,0.15l-0.23,0.2l-0.18,0.56l-8.2,0.02l-0.13,0.03l-1.19,0.61l-2.95,2.45l-0.78,1.13l-4.6,0.01l-0.12,0.02l-1.13,0.48l-0.13,0.44l0.37,0.55l0.2,0.82l-0.01,0.09l-3.1,1.42l-2.63,0.5l-2.84,1.57l-0.47,0.0l-0.72,-0.4l-0.18,-0.27l0.03,-0.15l0.52,-1.0l1.2,-1.71l0.73,-1.8l0.02,-0.17l-1.03,-5.47l-0.15,-0.21l-2.35,-1.32l0.16,-0.29l-0.05,-0.35l-0.37,-0.38l-0.22,-0.09l-0.56,0.0l-0.35,-0.34l-0.11,-0.65l-0.46,-0.2l-0.39,0.26l-0.2,-0.03l-0.11,-0.33l-0.48,-0.25l-0.21,-0.71l-0.15,-0.18l-3.97,-2.07l-4.8,-2.39l-0.25,-0.01l-2.19,0.89l-0.72,0.03l-3.04,-0.82l-0.14,-0.0l-1.94,0.4l-2.4,-0.98l-2.56,-0.51l-1.7,-0.19l-0.62,-0.44l-0.42,-1.67l-0.3,-0.23l-0.85,0.02l-0.29,0.3l-0.01,0.95l-69.26,-0.01l-4.77,-3.14l-1.78,-1.41l-4.51,-1.38l-1.3,-2.73l0.34,-1.96l-0.17,-0.33l-3.06,-1.37l-0.41,-2.58l-0.11,-0.18l-2.92,-2.4l-0.05,-1.53l1.32,-1.59l0.07,-0.2l-0.07,-2.21l-0.16,-0.26l-4.19,-2.22l-2.52,-4.02l-1.56,-2.6l-0.08,-0.09l-2.28,-1.64l-1.65,-1.48l-1.31,-1.89l-0.38,-0.1l-2.51,1.21l-2.28,1.92l-2.03,-2.22l-1.85,-1.71l-2.44,-1.04l-2.28,-0.12l0.03,-37.72l4.27,0.98l4.0,2.13l2.61,0.4l0.24,-0.07l2.17,-1.81l2.92,-1.33l3.63,0.53l0.18,-0.03l3.72,-1.94l3.89,-1.06l1.6,1.72l0.37,0.06l1.87,-1.04l0.14,-0.19l0.48,-1.83l1.37,0.38l4.18,3.96l0.41,0.0l2.89,-2.62l0.28,2.79l0.37,0.26l3.08,-0.73l0.17,-0.12l0.85,-1.16l2.81,0.24l3.83,1.86l5.86,1.61l3.46,0.75l2.44,-0.26l2.89,1.89l-3.12,1.89l-0.14,0.31l0.24,0.24l4.53,0.92l6.84,-0.5l2.04,-0.71l2.54,2.44l0.39,0.02l2.72,-2.16l-0.01,-0.48l-2.26,-1.61l1.27,-1.16l2.94,-0.19l1.94,-0.42l1.89,0.97l2.49,2.32l0.24,0.08l2.71,-0.33l4.35,1.9l0.17,0.02l3.86,-0.67l3.62,0.1l0.31,-0.33l-0.26,-2.44l1.9,-0.65l3.58,1.36l-0.01,3.84l0.23,0.29l0.34,-0.17l1.51,-3.23l1.81,0.1l0.31,-0.22l1.13,-4.37l-0.08,-0.29l-2.68,-2.73l-2.83,-1.76l0.19,-4.73l2.77,-3.15l3.06,0.69l2.44,1.97l3.24,4.88l-2.05,2.02l0.15,0.51l4.41,0.85ZM265.85,150.7l-0.84,0.04l-3.15,-0.99l-1.77,-1.17l0.19,-0.06l3.17,0.79l2.39,1.27l0.01,0.12ZM249.41,3.71l6.68,0.49l5.34,0.79l4.34,1.6l-0.08,1.24l-5.91,2.56l-6.03,1.21l-2.36,1.38l-0.14,0.34l0.29,0.22l4.37,-0.02l-4.96,3.01l-4.06,1.64l-0.11,0.08l-4.21,4.62l-5.07,0.92l-0.12,0.05l-1.53,1.1l-7.5,0.59l-0.28,0.28l0.24,0.31l2.67,0.54l-1.04,0.6l-0.09,0.44l1.89,2.49l-2.11,1.66l-3.83,1.52l-0.15,0.13l-1.14,2.01l-3.41,1.55l-0.16,0.36l0.35,1.19l0.3,0.22l3.98,-0.19l0.03,0.78l-6.42,2.99l-6.44,-1.41l-7.41,0.79l-3.72,-0.62l-4.48,-0.26l-0.25,-2.0l4.37,-1.13l0.21,-0.38l-1.14,-3.55l1.13,-0.28l6.61,2.29l0.35,-0.12l-0.04,-0.37l-3.41,-3.45l-0.14,-0.08l-3.57,-0.92l1.62,-1.7l4.36,-1.3l0.2,-0.18l0.71,-1.94l-0.12,-0.36l-3.45,-2.15l-0.88,-2.43l6.36,0.23l1.94,0.61l0.23,-0.02l3.91,-2.1l0.15,-0.32l-0.26,-0.24l-5.69,-0.67l-8.69,0.37l-4.3,-1.92l-2.12,-2.39l-2.82,-1.68l-0.44,-1.65l3.41,-1.06l2.93,-0.2l4.91,-0.99l3.69,-2.28l2.93,0.31l2.64,1.68l0.42,-0.1l1.84,-3.23l3.17,-0.96l4.45,-0.69l7.56,-0.26l1.26,0.64l0.18,0.03l7.2,-1.06l10.81,0.8ZM203.94,57.59l0.01,0.32l1.97,2.97l0.51,-0.01l2.26,-3.75l6.05,-1.89l4.08,4.72l-0.36,2.95l0.38,0.33l4.95,-1.36l0.11,-0.05l2.23,-1.77l5.37,2.31l3.32,2.14l0.3,1.89l0.36,0.25l4.48,-1.01l2.49,2.8l0.14,0.09l5.99,1.78l2.09,1.74l2.18,3.83l-4.29,1.91l-0.01,0.54l5.9,2.83l3.95,0.94l3.54,3.84l0.2,0.1l3.58,0.25l-0.67,2.51l-4.18,4.54l-2.84,-1.61l-3.91,-3.95l-0.26,-0.09l-3.24,0.52l-0.25,0.26l-0.32,2.37l0.1,0.26l2.63,2.38l3.42,1.89l0.96,1.0l1.57,3.8l-0.74,2.43l-2.85,-0.96l-6.26,-3.15l-0.38,0.09l0.04,0.39l3.54,3.4l2.55,2.31l0.23,0.78l-6.26,-1.43l-5.33,-2.25l-2.73,-1.73l0.67,-0.86l-0.09,-0.45l-7.38,-4.01l-0.44,0.27l0.03,0.89l-6.85,0.61l-1.8,-1.17l1.43,-2.6l4.56,-0.07l5.15,-0.52l0.23,-0.45l-0.76,-1.34l0.8,-1.89l3.21,-4.06l0.05,-0.29l-0.72,-1.95l-0.97,-1.47l-0.11,-0.1l-3.84,-2.1l-4.53,-1.33l1.09,-0.75l0.05,-0.45l-2.65,-2.75l-0.18,-0.09l-2.12,-0.24l-1.91,-1.47l-0.39,0.02l-1.27,1.25l-4.4,0.56l-9.06,-0.99l-5.28,-1.31l-4.01,-0.67l-1.72,-1.31l2.32,-1.85l0.1,-0.33l-0.28,-0.2l-3.3,-0.02l-0.74,-4.36l1.86,-4.09l2.46,-1.88l5.74,-1.15l-1.5,2.55ZM261.28,159.28l0.19,0.14l1.82,0.42l1.66,-0.05l-0.66,0.68l-0.75,0.16l-3.0,-1.25l-0.46,-0.77l0.51,-0.52l0.68,1.19ZM230.87,84.48l-2.48,0.19l-0.52,-1.74l0.96,-2.17l2.03,-0.53l1.71,1.04l0.02,1.6l-0.22,0.46l-1.5,1.16ZM229.52,58.19l0.14,0.82l-4.99,-0.22l-2.73,0.63l-0.59,-0.23l-2.61,-2.4l0.08,-1.38l0.94,-0.25l5.61,0.51l4.14,2.54ZM222.12,105.0l-0.79,1.63l-0.75,-0.22l-0.52,-0.91l0.04,-0.09l0.84,-1.01l0.74,0.06l0.44,0.55ZM183.77,38.22l2.72,1.65l0.16,0.04l4.83,-0.01l1.92,1.52l-0.51,1.75l0.18,0.36l2.84,1.14l1.56,1.19l0.16,0.06l3.37,0.22l3.65,0.42l4.07,-1.1l5.05,-0.43l3.96,0.35l2.53,1.8l0.48,1.79l-1.37,1.16l-3.6,1.03l-3.22,-0.59l-7.17,0.76l-5.1,0.09l-4.0,-0.6l-6.48,-1.56l-0.81,-2.57l-0.3,-2.49l-0.1,-0.19l-2.51,-2.25l-0.16,-0.07l-5.12,-0.63l-2.61,-1.45l0.75,-1.71l4.88,0.32ZM207.46,91.26l0.42,1.62l0.42,0.19l1.12,-0.55l1.35,0.99l2.74,1.39l2.73,1.2l0.2,1.74l0.35,0.26l1.72,-0.29l1.31,0.97l-1.72,0.96l-3.68,-0.9l-1.34,-1.71l-0.43,-0.04l-2.46,2.1l-3.23,1.85l-0.74,-1.98l-0.31,-0.19l-2.47,0.28l1.49,-1.34l0.1,-0.19l0.32,-3.15l0.79,-3.45l1.34,0.25ZM215.59,102.66l-2.73,2.0l-1.49,-0.08l-0.37,-0.7l1.61,-1.56l3.0,0.03l-0.02,0.3ZM202.79,24.07l0.11,0.12l2.54,1.53l-3.01,1.47l-4.55,4.07l-4.3,0.38l-5.07,-0.68l-2.51,-2.09l0.03,-1.72l1.86,-1.4l0.1,-0.34l-0.29,-0.2l-4.49,0.04l-2.63,-1.79l-1.45,-2.36l1.61,-2.38l1.65,-1.69l2.47,-0.4l0.19,-0.48l-0.72,-0.89l5.1,-0.26l3.1,3.05l0.13,0.07l4.21,1.25l3.99,1.06l1.92,3.65ZM187.5,59.3l-0.15,0.1l-2.59,3.4l-2.5,-0.15l-1.47,-3.92l0.04,-2.24l1.22,-1.92l2.34,-1.26l5.11,0.17l4.28,1.06l-3.36,3.86l-2.9,0.9ZM186.19,48.8l-1.15,1.63l-3.42,-0.35l-2.68,-1.15l1.11,-1.88l3.34,-1.27l2.01,1.63l0.79,1.38ZM185.78,35.41l-0.95,0.13l-4.48,-0.33l-0.4,-0.91l4.5,0.07l1.45,0.82l-0.1,0.21ZM180.76,32.56l-3.43,1.03l-1.85,-1.14l-1.01,-1.92l-0.16,-1.87l2.87,0.2l1.39,0.35l2.75,1.75l-0.55,1.6ZM181.03,76.32l-1.21,1.2l-3.19,-1.26l-0.18,-0.01l-1.92,0.45l-2.88,-1.67l1.84,-1.16l1.6,-1.77l2.45,1.17l1.45,0.77l2.05,2.28ZM169.72,54.76l2.83,0.97l0.14,0.01l4.25,-0.58l0.47,1.01l-2.19,2.16l0.07,0.48l3.61,1.95l-0.41,3.84l-3.87,1.68l-2.23,-0.36l-1.73,-1.75l-6.07,-3.53l0.03,-1.01l4.79,0.55l0.3,-0.16l-0.04,-0.34l-2.55,-2.89l2.59,-2.05ZM174.44,40.56l1.49,1.87l0.07,2.48l-1.07,3.52l-3.87,0.48l-2.41,-0.72l0.05,-2.72l-0.33,-0.3l-3.79,0.36l-0.13,-3.31l2.36,0.14l0.15,-0.03l3.7,-1.74l3.44,0.29l0.31,-0.22l0.03,-0.12ZM170.14,31.5l0.75,1.74l-3.52,-0.52l-4.19,-1.77l-4.65,-0.17l1.65,-1.11l-0.05,-0.52l-2.86,-1.26l-0.13,-1.58l4.52,0.7l6.66,1.99l1.84,2.5ZM134.64,58.08l-1.08,1.93l0.34,0.44l5.44,-1.41l3.37,2.32l0.37,-0.02l2.66,-2.28l2.03,1.38l2.01,4.53l0.53,0.04l1.26,-1.93l0.03,-0.27l-1.67,-4.55l1.82,-0.58l2.36,0.73l2.69,1.84l1.53,4.46l0.77,3.24l0.15,0.19l4.22,2.26l4.32,2.04l-0.21,1.51l-3.87,0.34l-0.19,0.5l1.45,1.54l-0.65,1.23l-4.3,-0.65l-4.4,-1.19l-2.97,0.28l-4.67,1.48l-6.31,0.65l-4.27,0.39l-1.26,-1.91l-0.15,-0.12l-3.42,-1.2l-0.16,-0.01l-2.05,0.45l-2.66,-3.02l1.2,-0.34l3.82,-0.76l3.58,0.19l3.27,-0.78l0.23,-0.29l-0.24,-0.29l-4.84,-1.06l-5.42,0.35l-3.4,-0.09l-0.97,-1.22l5.39,-1.7l0.21,-0.33l-0.3,-0.25l-3.82,0.06l-3.95,-1.1l1.88,-3.13l1.68,-1.81l6.54,-2.84l2.11,0.77ZM158.85,56.58l-1.82,2.62l-3.38,-2.9l0.49,-0.39l3.17,-0.18l1.54,0.86ZM149.71,42.7l1.0,1.87l0.37,0.14l2.17,-0.83l2.33,0.2l0.38,2.16l-1.38,2.17l-8.33,0.76l-6.34,2.15l-3.51,0.1l-0.22,-1.13l4.98,-2.12l0.17,-0.34l-0.31,-0.23l-11.27,0.6l-3.04,-0.78l3.14,-4.57l2.2,-1.35l6.87,1.7l4.4,3.0l0.14,0.05l4.37,0.39l0.27,-0.48l-3.41,-4.68l1.96,-1.62l2.28,0.53l0.79,2.32ZM145.44,29.83l-2.18,0.77l-3.79,-0.0l0.02,-0.31l2.34,-1.5l1.2,0.23l2.42,0.83ZM144.83,34.5l-4.44,1.46l-3.18,-1.48l1.6,-1.36l3.51,-0.53l3.1,0.75l-0.6,1.16ZM119.02,65.87l-6.17,2.07l-1.19,-1.82l-0.13,-0.11l-5.48,-2.32l0.92,-1.7l1.73,-3.44l2.16,-3.15l-0.02,-0.36l-2.09,-2.56l7.84,-0.71l3.59,1.02l6.32,0.27l2.35,1.37l2.25,1.71l-2.68,1.04l-6.21,3.41l-3.1,3.28l-0.08,0.21l0.0,1.81ZM129.66,35.4l-0.3,3.55l-1.77,1.67l-2.34,0.27l-4.62,2.2l-3.89,0.76l-2.83,-0.93l3.85,-3.52l5.04,-3.36l3.75,0.07l3.11,-0.7ZM111.24,152.74l-0.82,0.29l-3.92,-1.39l-0.7,-1.06l-0.12,-0.1l-2.15,-1.09l-0.41,-0.84l-0.2,-0.16l-2.44,-0.56l-0.84,-1.56l0.1,-0.36l2.34,0.64l1.53,0.5l2.28,0.34l0.78,1.04l1.24,1.55l0.09,0.08l2.42,1.3l0.81,1.39ZM88.54,134.82l0.14,0.02l2.0,-0.23l-0.67,3.48l0.06,0.24l1.78,2.22l-0.24,-0.0l-1.4,-1.42l-0.91,-1.53l-1.26,-1.08l-0.42,-1.35l0.09,-0.66l0.82,0.31Z\",\n      \"name\": \"Canada\"\n    },\n    \"CG\": {\n      \"path\": \"M453.66,296.61l-0.9,-0.82l-0.35,-0.04l-0.83,0.48l-0.77,0.83l-1.65,-2.13l1.66,-1.2l0.08,-0.39l-0.81,-1.43l0.59,-0.43l1.62,-0.29l0.24,-0.24l0.1,-0.58l0.94,0.84l0.19,0.08l2.21,0.11l0.27,-0.14l0.81,-1.29l0.32,-1.76l-0.27,-1.96l-0.06,-0.15l-1.08,-1.35l1.02,-2.74l-0.09,-0.34l-0.62,-0.5l-0.22,-0.06l-1.66,0.18l-0.55,-1.03l0.12,-0.73l2.85,0.09l1.98,0.65l2.0,0.59l0.38,-0.25l0.17,-1.3l1.26,-2.24l1.34,-1.19l1.54,0.38l1.35,0.12l-0.11,1.15l-0.74,1.34l-0.5,1.61l-0.31,2.22l0.12,1.41l-0.4,0.9l-0.06,0.88l-0.24,0.67l-1.57,1.15l-1.24,1.41l-1.09,2.43l-0.03,0.13l0.08,1.95l-0.55,0.69l-1.46,1.23l-1.32,1.41l-0.61,-0.29l-0.13,-0.57l-0.29,-0.23l-1.36,-0.02l-0.23,0.1l-0.72,0.81l-0.41,-0.16Z\",\n      \"name\": \"Republic of the Congo\"\n    },\n    \"CF\": {\n      \"path\": \"M459.41,266.56l1.9,-0.17l0.22,-0.12l0.36,-0.5l0.14,0.02l0.55,0.51l0.29,0.07l3.15,-0.96l0.12,-0.07l1.05,-0.97l1.29,-0.87l0.12,-0.33l-0.17,-0.61l0.38,-0.12l2.36,0.15l0.15,-0.03l2.36,-1.17l0.12,-0.1l1.78,-2.72l1.18,-0.96l1.23,-0.34l0.21,0.79l0.07,0.13l1.37,1.5l0.01,0.86l-0.39,1.0l-0.01,0.17l0.16,0.78l0.1,0.17l0.91,0.76l1.89,1.09l1.24,0.92l0.02,0.67l0.12,0.23l1.67,1.3l0.99,1.03l0.61,1.46l0.14,0.15l1.79,0.95l0.2,0.4l-0.44,0.14l-1.54,-0.06l-1.98,-0.26l-0.93,0.22l-0.19,0.14l-0.3,0.48l-0.57,0.05l-0.91,-0.49l-0.26,-0.01l-2.7,1.21l-1.04,-0.23l-0.21,0.03l-0.34,0.19l-0.12,0.13l-0.64,1.3l-1.67,-0.43l-1.77,-0.24l-1.58,-0.91l-2.06,-0.85l-0.27,0.02l-1.42,0.88l-0.97,1.27l-0.06,0.14l-0.19,1.46l-1.3,-0.11l-1.67,-0.42l-0.27,0.07l-1.55,1.41l-0.99,1.76l-0.14,-1.18l-0.13,-0.22l-1.1,-0.78l-0.86,-1.2l-0.2,-0.84l-0.07,-0.13l-1.07,-1.19l0.16,-0.59l0.0,-0.15l-0.24,-1.01l0.18,-1.77l0.5,-0.38l0.09,-0.11l1.18,-2.4Z\",\n      \"name\": \"Central African Republic\"\n    },\n    \"CD\": {\n      \"path\": \"M497.85,276.25l-0.14,2.77l0.2,0.3l0.57,0.19l-0.47,0.52l-1.0,0.71l-0.96,1.31l-0.56,1.22l-0.16,2.04l-0.54,0.89l-0.04,0.15l-0.02,1.76l-0.63,0.61l-0.09,0.2l-0.08,1.33l-0.2,0.11l-0.15,0.21l-0.23,1.37l0.03,0.2l0.6,1.08l0.16,2.96l0.44,2.29l-0.24,1.25l0.01,0.15l0.5,1.46l0.07,0.12l1.41,1.37l1.09,2.56l-0.51,-0.11l-3.45,0.45l-0.67,0.3l-0.15,0.15l-0.71,1.61l0.01,0.26l0.52,1.03l-0.43,2.9l-0.31,2.55l0.13,0.29l0.7,0.46l1.75,0.99l0.31,-0.01l0.26,-0.17l0.15,1.9l-1.44,-0.02l-0.94,-1.28l-0.94,-1.1l-0.17,-0.1l-1.76,-0.33l-0.5,-1.18l-0.42,-0.15l-1.44,0.75l-1.79,-0.32l-0.77,-1.05l-0.2,-0.12l-1.59,-0.23l-0.97,0.04l-0.1,-0.53l-0.27,-0.25l-0.86,-0.06l-1.13,-0.15l-1.62,0.37l-1.04,-0.06l-0.32,0.09l0.11,-2.56l-0.08,-0.21l-0.77,-0.87l-0.17,-1.41l0.36,-1.47l-0.03,-0.21l-0.48,-0.91l-0.04,-1.52l-0.3,-0.29l-2.65,0.02l0.13,-0.53l-0.29,-0.37l-1.28,0.01l-0.28,0.21l-0.07,0.24l-1.35,0.09l-0.26,0.18l-0.62,1.45l-0.25,0.42l-1.17,-0.3l-0.19,0.01l-0.79,0.34l-1.44,0.18l-1.41,-1.96l-0.7,-1.47l-0.61,-1.86l-0.28,-0.21l-7.39,-0.03l-0.92,0.3l-0.78,-0.03l-0.78,0.25l-0.11,-0.25l0.35,-0.15l0.18,-0.26l0.07,-1.02l0.33,-0.52l0.72,-0.42l0.52,0.2l0.33,-0.08l0.76,-0.86l0.99,0.02l0.11,0.48l0.16,0.2l0.94,0.44l0.35,-0.07l1.46,-1.56l1.44,-1.21l0.68,-0.85l0.06,-0.2l-0.08,-1.99l1.04,-2.33l1.1,-1.23l1.62,-1.19l0.11,-0.14l0.29,-0.8l0.08,-0.94l0.38,-0.82l0.03,-0.16l-0.13,-1.38l0.3,-2.16l0.47,-1.51l0.73,-1.31l0.04,-0.12l0.15,-1.51l0.21,-1.66l0.89,-1.16l1.16,-0.7l1.9,0.79l1.69,0.95l1.81,0.24l1.85,0.48l0.35,-0.16l0.71,-1.43l0.16,-0.09l1.03,0.23l0.19,-0.02l2.65,-1.19l0.86,0.46l0.17,0.03l0.81,-0.08l0.23,-0.14l0.31,-0.5l0.75,-0.17l1.83,0.26l1.64,0.06l0.72,-0.21l1.39,1.9l0.16,0.11l1.12,0.3l0.24,-0.04l0.58,-0.36l1.05,0.15l0.15,-0.02l1.15,-0.44l0.47,0.84l0.08,0.09l2.08,1.57Z\",\n      \"name\": \"Democratic Republic of the Congo\"\n    },\n    \"CZ\": {\n      \"path\": \"M463.29,152.22l-0.88,-0.47l-0.18,-0.03l-1.08,0.15l-1.86,-0.94l-0.21,-0.02l-0.88,0.24l-0.13,0.07l-1.25,1.17l-1.63,-0.91l-1.38,-1.36l-1.22,-0.75l-0.24,-1.24l-0.33,-0.75l1.53,-0.6l0.98,-0.84l1.74,-0.62l0.11,-0.07l0.47,-0.47l0.46,0.27l0.24,0.03l0.96,-0.3l1.06,0.95l0.15,0.07l1.57,0.24l-0.1,0.6l0.16,0.32l1.36,0.68l0.41,-0.15l0.28,-0.62l1.29,0.28l0.19,0.84l0.26,0.23l1.73,0.18l0.74,1.02l-0.17,0.0l-0.25,0.13l-0.32,0.49l-0.46,0.11l-0.22,0.23l-0.13,0.57l-0.32,0.1l-0.2,0.22l-0.03,0.14l-0.65,0.25l-1.05,-0.05l-0.28,0.17l-0.22,0.43Z\",\n      \"name\": \"Czech Republic\"\n    },\n    \"CY\": {\n      \"path\": \"M505.03,193.75l-1.51,0.68l-1.0,-0.3l-0.32,-0.63l0.69,-0.06l0.41,0.13l0.19,-0.0l0.62,-0.22l0.31,0.02l0.06,0.22l0.49,0.17l0.06,-0.01Z\",\n      \"name\": \"Cyprus\"\n    },\n    \"CR\": {\n      \"path\": \"M213.0,263.84l-0.98,-0.4l-0.3,-0.31l0.16,-0.24l0.05,-0.21l-0.09,-0.56l-0.1,-0.18l-0.76,-0.65l-0.99,-0.5l-0.74,-0.28l-0.13,-0.58l-0.12,-0.18l-0.66,-0.45l-0.34,-0.0l-0.13,0.31l0.13,0.59l-0.17,0.21l-0.34,-0.42l-0.14,-0.1l-0.7,-0.22l-0.23,-0.34l0.01,-0.62l0.31,-0.74l-0.14,-0.38l-0.3,-0.15l0.47,-0.4l1.48,0.6l0.26,-0.02l0.47,-0.27l0.58,0.15l0.35,0.44l0.17,0.11l0.74,0.17l0.27,-0.07l0.3,-0.27l0.52,1.09l0.97,1.02l0.77,0.71l-0.41,0.1l-0.23,0.3l0.01,1.02l0.12,0.24l0.2,0.14l-0.07,0.05l-0.11,0.3l0.08,0.37l-0.23,0.63Z\",\n      \"name\": \"Costa Rica\"\n    },\n    \"CU\": {\n      \"path\": \"M215.01,226.09l2.08,0.18l1.94,0.03l2.24,0.86l0.95,0.92l0.25,0.08l2.22,-0.28l0.79,0.55l3.68,2.81l0.19,0.06l0.77,-0.03l1.18,0.42l-0.12,0.47l0.27,0.37l1.78,0.1l1.59,0.9l-0.11,0.22l-1.5,0.3l-1.64,0.13l-1.75,-0.2l-2.69,0.19l1.0,-0.86l-0.03,-0.48l-1.02,-0.68l-0.13,-0.05l-1.52,-0.16l-0.74,-0.64l-0.57,-1.42l-0.3,-0.19l-1.36,0.1l-2.23,-0.67l-0.71,-0.52l-0.14,-0.06l-3.2,-0.4l-0.42,-0.25l0.56,-0.39l0.12,-0.33l-0.27,-0.22l-2.46,-0.13l-0.2,0.06l-1.72,1.31l-0.94,0.03l-0.25,0.15l-0.29,0.53l-1.04,0.24l-0.29,-0.07l0.7,-0.43l0.1,-0.11l0.5,-0.87l1.04,-0.54l1.23,-0.49l1.86,-0.25l0.62,-0.28Z\",\n      \"name\": \"Cuba\"\n    },\n    \"SZ\": {\n      \"path\": \"M500.95,353.41l-0.41,0.97l-1.16,0.23l-1.29,-1.26l-0.02,-0.71l0.63,-0.93l0.23,-0.7l0.47,-0.12l1.04,0.4l0.32,1.05l0.2,1.08Z\",\n      \"name\": \"Swaziland\"\n    },\n    \"SY\": {\n      \"path\": \"M510.84,199.83l0.09,-0.11l0.07,-0.2l-0.04,-1.08l0.56,-1.4l1.3,-1.01l0.1,-0.34l-0.41,-1.11l-0.24,-0.19l-0.89,-0.11l-0.2,-1.84l0.55,-1.05l1.3,-1.22l0.09,-0.19l0.09,-1.09l0.39,0.27l0.25,0.04l2.66,-0.77l1.35,0.52l2.06,-0.01l2.93,-1.08l1.35,0.04l2.14,-0.34l-0.83,1.16l-1.31,0.68l-0.16,0.3l0.23,2.03l-0.9,3.25l-5.43,2.87l-4.79,2.91l-2.32,-0.92Z\",\n      \"name\": \"Syria\"\n    },\n    \"KG\": {\n      \"path\": \"M599.04,172.15l0.38,-0.9l1.43,-0.37l4.04,1.02l0.37,-0.23l0.36,-1.64l1.17,-0.52l3.45,1.24l0.2,-0.0l0.86,-0.31l4.09,0.08l3.61,0.31l1.18,1.02l0.11,0.06l1.19,0.34l-0.13,0.26l-3.84,1.58l-0.13,0.1l-0.81,1.08l-3.08,0.34l-0.24,0.16l-0.85,1.7l-2.43,-0.37l-0.14,0.01l-1.79,0.61l-2.39,1.4l-0.12,0.39l0.25,0.49l-0.48,0.45l-4.57,0.43l-3.04,-0.94l-2.45,0.18l0.14,-1.02l2.42,0.44l0.27,-0.08l0.81,-0.81l1.76,0.27l0.21,-0.05l3.21,-2.14l-0.03,-0.51l-2.97,-1.57l-0.26,-0.01l-1.64,0.69l-1.38,-0.84l1.81,-1.67l-0.09,-0.5l-0.46,-0.18Z\",\n      \"name\": \"Kyrgyzstan\"\n    },\n    \"KE\": {\n      \"path\": \"M523.3,287.04l0.06,0.17l1.29,1.8l-1.46,0.84l-0.11,0.11l-0.55,0.93l-0.81,0.16l-0.24,0.24l-0.34,1.69l-0.81,1.06l-0.46,1.58l-0.76,0.63l-3.3,-2.3l-0.16,-1.32l-0.15,-0.23l-9.35,-5.28l-0.02,-2.4l1.92,-2.63l0.91,-1.83l0.01,-0.24l-1.09,-2.86l-0.29,-1.24l-1.09,-1.63l2.93,-2.85l0.92,0.3l0.0,1.19l0.09,0.22l0.86,0.83l0.21,0.08l1.65,0.0l3.09,2.08l0.16,0.05l0.79,0.03l0.54,-0.06l0.58,0.28l1.67,0.2l0.28,-0.12l0.69,-0.98l2.04,-0.94l0.86,0.73l0.19,0.07l1.1,0.0l-1.82,2.36l-0.06,0.18l0.03,9.12Z\",\n      \"name\": \"Kenya\"\n    },\n    \"SS\": {\n      \"path\": \"M505.7,261.39l0.02,1.64l-0.27,0.55l-1.15,0.05l-0.24,0.15l-0.85,1.44l0.22,0.45l1.44,0.17l1.15,1.12l0.42,0.95l0.14,0.15l1.06,0.54l1.33,2.45l-3.06,2.98l-1.44,1.08l-1.75,0.01l-1.92,0.56l-1.5,-0.53l-0.27,0.03l-0.85,0.57l-1.98,-1.5l-0.56,-1.02l-0.37,-0.13l-1.32,0.5l-1.08,-0.15l-0.2,0.04l-0.56,0.35l-0.9,-0.24l-1.44,-1.97l-0.39,-0.77l-0.13,-0.13l-1.78,-0.94l-0.65,-1.5l-1.08,-1.12l-1.57,-1.22l-0.02,-0.68l-0.12,-0.23l-1.37,-1.02l-1.17,-0.68l0.2,-0.08l0.86,-0.48l0.14,-0.18l0.63,-2.22l0.6,-1.02l1.47,-0.28l0.35,0.56l1.29,1.48l0.14,0.09l0.69,0.22l0.22,-0.02l0.83,-0.4l1.58,0.08l0.26,0.39l0.25,0.13l2.49,0.0l0.3,-0.25l0.06,-0.35l1.13,-0.42l0.18,-0.18l0.22,-0.63l0.68,-0.38l1.95,1.37l0.23,0.05l1.29,-0.26l0.19,-0.12l1.23,-1.8l1.36,-1.37l0.08,-0.25l-0.21,-1.52l-0.06,-0.15l-0.25,-0.3l0.94,-0.08l0.26,-0.21l0.1,-0.32l0.6,0.09l-0.25,1.67l0.3,1.83l0.11,0.19l1.22,0.94l0.25,0.73l-0.04,1.2l0.26,0.31l0.09,0.01Z\",\n      \"name\": \"South Sudan\"\n    },\n    \"SR\": {\n      \"path\": \"M278.1,270.26l2.71,0.45l0.31,-0.14l0.19,-0.32l1.82,-0.16l2.25,0.56l-1.09,1.81l-0.04,0.19l0.2,1.72l0.05,0.13l0.9,1.35l-0.39,0.99l-0.21,1.09l-0.48,0.8l-1.2,-0.44l-0.17,-0.01l-1.12,0.24l-0.95,-0.21l-0.35,0.2l-0.25,0.73l0.05,0.29l0.3,0.35l-0.06,0.13l-1.01,-0.15l-1.42,-2.03l-0.32,-1.36l-0.29,-0.23l-0.63,-0.0l-0.95,-1.56l0.41,-1.16l0.01,-0.17l-0.08,-0.35l1.29,-0.56l0.18,-0.22l0.35,-1.97Z\",\n      \"name\": \"Suriname\"\n    },\n    \"KH\": {\n      \"path\": \"M680.28,257.89l-0.93,-1.2l-1.24,-2.56l-0.56,-2.9l1.45,-1.92l3.07,-0.46l2.26,0.35l2.03,0.98l0.38,-0.11l1.0,-1.55l1.86,0.79l0.52,1.51l-0.28,2.82l-4.05,1.88l-0.12,0.45l0.79,1.1l-2.2,0.17l-2.08,0.98l-1.89,-0.33Z\",\n      \"name\": \"Cambodia\"\n    },\n    \"SV\": {\n      \"path\": \"M197.02,248.89l0.18,-0.05l0.59,0.17l0.55,0.51l0.64,0.35l0.06,0.22l0.37,0.21l1.01,-0.28l0.38,0.13l0.16,0.13l-0.14,0.81l-0.18,0.38l-1.22,-0.03l-0.84,-0.23l-1.11,-0.52l-1.31,-0.15l-0.49,-0.38l0.02,-0.08l0.76,-0.57l0.46,-0.27l0.11,-0.35Z\",\n      \"name\": \"El Salvador\"\n    },\n    \"SK\": {\n      \"path\": \"M468.01,150.02l0.05,0.07l0.36,0.1l0.85,-0.37l1.12,1.02l0.33,0.05l1.38,-0.65l1.07,0.3l0.16,0.0l1.69,-0.43l1.95,1.02l-0.51,0.64l-0.45,1.2l-0.32,0.2l-2.55,-0.93l-0.17,-0.01l-0.82,0.2l-0.17,0.11l-0.53,0.68l-0.94,0.32l-0.14,-0.11l-0.29,-0.04l-1.18,0.48l-0.95,0.09l-0.26,0.21l-0.15,0.47l-1.84,0.34l-0.82,-0.31l-1.14,-0.73l-0.2,-0.89l0.42,-0.84l0.91,0.05l0.12,-0.02l0.86,-0.33l0.18,-0.21l0.03,-0.13l0.32,-0.1l0.2,-0.22l0.12,-0.55l0.39,-0.1l0.18,-0.13l0.3,-0.45l0.43,-0.0Z\",\n      \"name\": \"Slovakia\"\n    },\n    \"KR\": {\n      \"path\": \"M737.31,185.72l0.84,0.08l0.27,-0.12l0.89,-1.2l1.63,-0.13l1.1,-0.2l0.21,-0.16l0.12,-0.24l1.86,2.95l0.59,1.79l0.02,3.17l-0.84,1.38l-2.23,0.55l-1.95,1.14l-1.91,0.21l-0.22,-1.21l0.45,-2.07l-0.01,-0.17l-0.99,-2.67l1.54,-0.4l0.17,-0.46l-1.55,-2.24Z\",\n      \"name\": \"South Korea\"\n    },\n    \"SI\": {\n      \"path\": \"M455.77,159.59l1.79,0.21l0.18,-0.04l1.2,-0.68l2.12,-0.08l0.21,-0.1l0.38,-0.42l0.1,0.01l0.28,0.62l-1.71,0.71l-0.18,0.22l-0.21,1.1l-0.71,0.26l-0.2,0.28l0.01,0.55l-0.59,-0.04l-0.79,-0.47l-0.38,0.06l-0.36,0.41l-0.84,-0.05l0.05,-0.15l-0.56,-1.24l0.21,-1.17Z\",\n      \"name\": \"Slovenia\"\n    },\n    \"KP\": {\n      \"path\": \"M747.76,172.02l-0.23,-0.04l-0.26,0.08l-1.09,1.02l-0.78,1.06l-0.06,0.19l0.09,1.95l-1.12,0.57l-0.53,0.58l-0.88,0.82l-1.69,0.51l-1.09,0.79l-0.12,0.22l-0.07,1.17l-0.22,0.25l0.09,0.47l0.96,0.46l1.22,1.1l-0.19,0.37l-0.91,0.16l-1.75,0.14l-0.22,0.12l-0.87,1.18l-0.95,-0.09l-0.3,0.18l-0.97,-0.44l-0.39,0.13l-0.25,0.44l-0.29,0.09l-0.03,-0.2l-0.18,-0.23l-0.62,-0.25l-0.43,-0.29l0.52,-0.97l0.52,-0.3l0.13,-0.38l-0.18,-0.42l0.59,-1.47l0.01,-0.21l-0.16,-0.48l-0.22,-0.2l-1.41,-0.31l-0.82,-0.55l1.74,-1.62l2.73,-1.58l1.62,-1.96l0.96,0.76l0.17,0.06l2.17,0.11l0.31,-0.37l-0.32,-1.31l3.61,-1.21l0.16,-0.13l0.79,-1.34l1.25,1.38Z\",\n      \"name\": \"North Korea\"\n    },\n    \"SO\": {\n      \"path\": \"M543.8,256.48l0.61,-0.05l1.14,-0.37l1.31,-0.25l0.12,-0.05l1.11,-0.81l0.57,-0.0l0.03,0.39l-0.23,1.49l0.01,1.25l-0.52,0.92l-0.7,2.71l-1.19,2.79l-1.54,3.2l-2.13,3.66l-2.12,2.79l-2.92,3.39l-2.47,2.0l-3.76,2.5l-2.33,1.9l-2.77,3.06l-0.61,1.35l-0.28,0.29l-1.22,-1.69l-0.03,-8.92l2.12,-2.76l0.59,-0.68l1.47,-0.04l0.18,-0.06l2.15,-1.71l3.16,-0.11l0.21,-0.09l7.08,-7.55l1.76,-2.12l1.14,-1.57l0.06,-0.18l0.01,-4.67Z\",\n      \"name\": \"Somalia\"\n    },\n    \"SN\": {\n      \"path\": \"M379.28,250.34l-0.95,-1.82l-0.09,-0.1l-0.83,-0.6l0.62,-0.28l0.13,-0.11l1.21,-1.8l0.6,-1.31l0.71,-0.68l1.09,0.2l0.18,-0.02l1.17,-0.53l1.25,-0.03l1.17,0.73l1.59,0.65l1.47,1.83l1.59,1.7l0.12,1.56l0.49,1.46l0.1,0.14l0.85,0.65l0.18,0.82l-0.08,0.57l-0.13,0.05l-1.29,-0.19l-0.29,0.13l-0.11,0.16l-0.35,0.04l-1.83,-0.61l-5.84,-0.13l-0.12,0.02l-0.6,0.26l-0.87,-0.06l-1.01,0.32l-0.26,-1.26l1.9,0.04l0.16,-0.04l0.54,-0.32l0.37,-0.02l0.15,-0.05l0.78,-0.5l0.92,0.46l0.12,0.03l1.09,0.04l0.15,-0.03l1.08,-0.57l0.11,-0.44l-0.51,-0.74l-0.39,-0.1l-0.76,0.39l-0.62,-0.01l-0.92,-0.58l-0.18,-0.05l-0.79,0.04l-0.2,0.09l-0.48,0.51l-2.41,0.06Z\",\n      \"name\": \"Senegal\"\n    },\n    \"SL\": {\n      \"path\": \"M392.19,267.53l-0.44,-0.12l-1.73,-0.97l-1.24,-1.28l-0.4,-0.84l-0.27,-1.65l1.21,-1.0l0.09,-0.12l0.27,-0.66l0.32,-0.41l0.56,-0.05l0.16,-0.07l0.5,-0.41l1.75,0.0l0.59,0.77l0.49,0.96l-0.07,0.64l0.04,0.19l0.36,0.58l-0.03,0.84l0.24,0.2l-0.64,0.65l-1.13,1.37l-0.06,0.14l-0.12,0.66l-0.43,0.58Z\",\n      \"name\": \"Sierra Leone\"\n    },\n    \"SB\": {\n      \"path\": \"M826.74,311.51l0.23,0.29l-0.95,-0.01l-0.39,-0.63l0.65,0.27l0.45,0.09ZM825.01,308.52l-1.18,-1.39l-0.37,-1.06l0.24,0.0l0.82,1.84l0.49,0.6ZM823.21,309.42l-0.44,0.03l-1.43,-0.24l-0.32,-0.24l0.08,-0.5l1.29,0.31l0.72,0.47l0.11,0.18ZM817.9,303.81l2.59,1.44l0.3,0.41l-1.21,-0.66l-1.34,-0.89l-0.34,-0.3ZM813.77,302.4l0.48,0.34l0.1,0.08l-0.33,-0.17l-0.25,-0.25Z\",\n      \"name\": \"Solomon Islands\"\n    },\n    \"SA\": {\n      \"path\": \"M528.24,243.1l-0.2,-0.69l-0.07,-0.12l-0.69,-0.71l-0.18,-0.94l-0.12,-0.19l-1.24,-0.89l-1.28,-2.09l-0.7,-2.08l-0.07,-0.11l-1.73,-1.79l-0.11,-0.07l-1.03,-0.39l-1.57,-2.36l-0.27,-1.72l0.1,-1.53l-0.03,-0.15l-1.44,-2.93l-1.25,-1.13l-1.34,-0.56l-0.72,-1.33l0.11,-0.49l-0.02,-0.2l-0.7,-1.38l-0.08,-0.1l-0.68,-0.56l-0.97,-1.98l-2.8,-4.03l-0.25,-0.13l-0.85,0.01l0.29,-1.11l0.12,-0.97l0.23,-0.81l2.52,0.39l0.23,-0.06l1.08,-0.84l0.6,-0.95l1.78,-0.35l0.22,-0.17l0.37,-0.83l0.74,-0.42l0.08,-0.46l-2.17,-2.4l4.55,-1.26l0.12,-0.06l0.36,-0.32l2.83,0.71l3.67,1.91l7.04,5.5l0.17,0.06l4.64,0.22l2.06,0.24l0.55,1.15l0.28,0.17l1.56,-0.06l0.9,2.15l0.14,0.15l1.14,0.57l0.39,0.85l0.11,0.13l1.59,1.06l0.12,0.91l-0.23,0.83l0.01,0.18l0.32,0.9l0.07,0.11l0.68,0.7l0.33,0.86l0.37,0.65l0.09,0.1l0.76,0.53l0.25,0.04l0.45,-0.12l0.35,0.75l0.1,0.63l0.96,2.68l0.23,0.19l7.53,1.33l0.27,-0.09l0.24,-0.26l0.87,1.41l-1.58,4.96l-7.34,2.54l-7.28,1.02l-2.34,1.17l-0.12,0.1l-1.74,2.63l-0.86,0.32l-0.49,-0.68l-0.28,-0.12l-0.92,0.12l-2.32,-0.25l-0.41,-0.23l-0.15,-0.04l-2.89,0.06l-0.63,0.2l-0.91,-0.59l-0.43,0.11l-0.66,1.27l-0.03,0.21l0.21,0.89l-0.6,0.45Z\",\n      \"name\": \"Saudi Arabia\"\n    },\n    \"SE\": {\n      \"path\": \"M476.42,90.44l-0.15,0.1l-2.43,2.86l-0.07,0.24l0.36,2.31l-3.84,3.1l-4.83,3.38l-0.11,0.15l-1.82,5.45l0.03,0.26l1.78,2.68l2.27,1.99l-2.13,3.88l-2.49,0.82l-0.2,0.24l-0.95,6.05l-1.32,3.09l-2.82,-0.32l-0.3,0.16l-1.34,2.64l-2.48,0.14l-0.76,-3.15l-2.09,-4.04l-1.85,-5.01l1.03,-1.98l2.06,-2.53l0.06,-0.13l0.83,-4.45l-0.06,-0.25l-1.54,-1.86l-0.15,-5.0l1.52,-3.48l2.28,0.06l0.27,-0.16l0.87,-1.59l-0.01,-0.31l-0.8,-1.21l3.79,-5.63l4.07,-7.54l2.23,0.01l0.29,-0.22l0.59,-2.15l4.46,0.66l0.34,-0.26l0.34,-2.64l1.21,-0.14l3.24,2.08l3.78,2.85l0.06,6.37l0.03,0.14l0.67,1.29l-3.95,1.07Z\",\n      \"name\": \"Sweden\"\n    },\n    \"SD\": {\n      \"path\": \"M505.98,259.75l-0.31,-0.9l-0.1,-0.14l-1.2,-0.93l-0.27,-1.66l0.29,-1.83l-0.25,-0.34l-1.16,-0.17l-0.33,0.21l-0.11,0.37l-1.3,0.11l-0.21,0.49l0.55,0.68l0.18,1.29l-1.31,1.33l-1.18,1.72l-1.04,0.21l-2.0,-1.4l-0.32,-0.02l-0.95,0.52l-0.14,0.16l-0.21,0.6l-1.16,0.43l-0.19,0.23l-0.04,0.27l-2.08,0.0l-0.25,-0.39l-0.24,-0.13l-1.81,-0.09l-0.14,0.03l-0.8,0.38l-0.49,-0.16l-1.22,-1.39l-0.42,-0.67l-0.31,-0.14l-1.81,0.35l-0.2,0.14l-0.72,1.24l-0.61,2.14l-0.73,0.4l-0.62,0.22l-0.83,-0.68l-0.12,-0.6l0.38,-0.97l0.01,-1.14l-0.08,-0.2l-1.39,-1.53l-0.25,-0.97l0.03,-0.57l-0.11,-0.25l-0.81,-0.66l-0.03,-1.34l-0.04,-0.14l-0.52,-0.98l-0.31,-0.15l-0.42,0.07l0.12,-0.44l0.63,-1.03l0.03,-0.23l-0.24,-0.88l0.69,-0.66l0.02,-0.41l-0.4,-0.46l0.58,-1.39l1.04,-1.71l1.97,0.16l0.32,-0.3l-0.12,-10.24l0.02,-0.8l2.59,-0.01l0.3,-0.3l0.0,-4.92l29.19,0.0l0.68,2.17l-0.4,0.35l-0.1,0.27l0.36,2.69l0.93,3.15l0.12,0.16l2.05,1.4l-0.99,1.15l-1.75,0.4l-0.15,0.08l-0.79,0.79l-0.08,0.17l-0.24,1.69l-1.07,3.75l-0.0,0.16l0.25,0.96l-0.38,2.1l-0.98,2.41l-1.52,1.3l-1.07,1.94l-0.25,0.99l-1.08,0.64l-0.13,0.18l-0.46,1.65Z\",\n      \"name\": \"Sudan\"\n    },\n    \"DO\": {\n      \"path\": \"M241.7,234.97l0.15,-0.22l1.73,0.01l1.43,0.64l0.15,0.03l0.45,-0.04l0.36,0.74l0.28,0.17l1.02,-0.04l-0.04,0.43l0.27,0.33l1.03,0.09l0.91,0.7l-0.57,0.64l-0.99,-0.47l-0.16,-0.03l-1.11,0.11l-0.79,-0.12l-0.26,0.09l-0.38,0.4l-0.66,0.11l-0.28,-0.45l-0.38,-0.12l-0.83,0.37l-0.14,0.13l-0.85,1.49l-0.27,-0.17l-0.1,-0.58l0.05,-0.67l-0.07,-0.21l-0.44,-0.53l0.35,-0.25l0.12,-0.19l0.19,-1.0l-0.2,-1.4Z\",\n      \"name\": \"Dominican Republic\"\n    },\n    \"DJ\": {\n      \"path\": \"M528.78,253.36l0.34,0.45l-0.06,0.76l-1.26,0.54l-0.05,0.53l0.82,0.53l-0.57,0.83l-0.3,-0.25l-0.27,-0.05l-0.56,0.17l-1.07,-0.03l-0.04,-0.56l-0.16,-0.56l0.76,-1.07l0.76,-0.97l0.89,0.18l0.25,-0.06l0.51,-0.42Z\",\n      \"name\": \"Djibouti\"\n    },\n    \"DK\": {\n      \"path\": \"M452.4,129.07l-1.27,2.39l-2.25,-1.69l-0.26,-1.08l3.15,-1.0l0.63,1.39ZM447.87,126.25l-0.35,0.76l-0.47,-0.24l-0.38,0.09l-1.8,2.53l-0.03,0.29l0.56,1.4l-1.22,0.4l-1.68,-0.41l-0.92,-1.76l-0.07,-3.47l0.38,-0.88l0.62,-0.93l2.07,-0.21l0.19,-0.1l0.84,-0.95l1.5,-0.76l-0.06,1.26l-0.7,1.1l-0.03,0.25l0.3,1.0l0.18,0.19l1.06,0.42Z\",\n      \"name\": \"Denmark\"\n    },\n    \"DE\": {\n      \"path\": \"M445.51,131.69l0.03,0.94l0.21,0.28l2.32,0.74l-0.02,1.0l0.37,0.3l2.55,-0.65l1.36,-0.89l2.63,1.27l1.09,1.01l0.51,1.51l-0.6,0.78l-0.0,0.36l0.88,1.17l0.58,1.68l-0.18,1.08l0.03,0.18l0.87,1.81l-0.66,0.2l-0.55,-0.32l-0.36,0.05l-0.58,0.58l-1.73,0.62l-0.99,0.84l-1.77,0.7l-0.16,0.4l0.42,0.94l0.26,1.34l0.14,0.2l1.25,0.76l1.22,1.2l-0.71,1.2l-0.81,0.37l-0.17,0.32l0.34,1.99l-0.04,0.09l-0.47,-0.39l-0.17,-0.07l-1.2,-0.1l-1.85,0.57l-2.15,-0.13l-0.29,0.18l-0.21,0.5l-0.96,-0.67l-0.24,-0.05l-0.67,0.16l-2.6,-0.94l-0.34,0.1l-0.42,0.57l-1.64,-0.02l0.26,-1.88l1.24,-2.15l-0.21,-0.45l-3.54,-0.58l-0.98,-0.71l0.12,-1.26l-0.05,-0.2l-0.44,-0.64l0.27,-2.18l-0.38,-3.14l1.17,-0.0l0.27,-0.17l0.63,-1.26l0.65,-3.17l-0.02,-0.17l-0.41,-1.0l0.32,-0.47l1.77,-0.16l0.37,0.6l0.47,0.06l1.7,-1.69l0.06,-0.33l-0.55,-1.24l-0.09,-1.51l1.5,0.36l0.16,-0.01l1.22,-0.4Z\",\n      \"name\": \"Germany\"\n    },\n    \"YE\": {\n      \"path\": \"M553.53,242.65l-1.51,0.58l-0.17,0.16l-0.48,1.14l-0.07,0.79l-2.31,1.0l-3.98,1.19l-2.28,1.8l-0.97,0.12l-0.7,-0.14l-0.23,0.05l-1.42,1.03l-1.51,0.47l-2.07,0.13l-0.68,0.15l-0.17,0.1l-0.49,0.6l-0.57,0.16l-0.18,0.13l-0.3,0.49l-1.06,-0.05l-0.13,0.02l-0.73,0.32l-1.48,-0.11l-0.55,-1.26l0.07,-1.32l-0.04,-0.16l-0.39,-0.72l-0.48,-1.85l-0.52,-0.79l0.08,-0.02l0.22,-0.36l-0.23,-1.05l0.24,-0.39l0.04,-0.19l-0.09,-0.95l0.96,-0.72l0.11,-0.31l-0.23,-0.98l0.46,-0.88l0.75,0.49l0.26,0.03l0.63,-0.22l2.76,-0.06l0.5,0.25l2.42,0.26l0.85,-0.11l0.52,0.71l0.35,0.1l1.17,-0.43l0.15,-0.12l1.75,-2.64l2.22,-1.11l6.95,-0.96l2.55,5.58Z\",\n      \"name\": \"Yemen\"\n    },\n    \"AT\": {\n      \"path\": \"M463.17,154.15l-0.14,0.99l-1.15,0.01l-0.24,0.47l0.39,0.56l-0.75,1.84l-0.36,0.4l-2.06,0.07l-0.14,0.04l-1.18,0.67l-1.96,-0.23l-3.43,-0.78l-0.5,-0.97l-0.33,-0.16l-2.47,0.55l-0.2,0.16l-0.18,0.37l-1.27,-0.38l-1.28,-0.09l-0.81,-0.41l0.25,-0.51l0.03,-0.18l-0.05,-0.28l0.35,-0.08l1.16,0.81l0.45,-0.13l0.27,-0.64l2.0,0.12l1.84,-0.57l1.05,0.09l0.71,0.59l0.47,-0.11l0.23,-0.54l0.02,-0.17l-0.32,-1.85l0.69,-0.31l0.13,-0.12l0.73,-1.23l1.61,0.89l0.35,-0.04l1.35,-1.27l0.7,-0.19l1.84,0.93l0.18,0.03l1.08,-0.15l0.81,0.43l-0.07,0.15l-0.02,0.2l0.24,1.06Z\",\n      \"name\": \"Austria\"\n    },\n    \"DZ\": {\n      \"path\": \"M450.58,224.94l-8.31,4.86l-7.23,5.12l-3.46,1.13l-2.42,0.22l-0.02,-1.33l-0.2,-0.28l-1.15,-0.42l-1.45,-0.69l-0.55,-1.13l-0.1,-0.12l-8.45,-5.72l-17.72,-12.17l0.03,-0.38l-0.02,-3.21l3.84,-1.91l2.46,-0.41l2.1,-0.75l0.14,-0.11l0.9,-1.3l2.84,-1.06l0.19,-0.27l0.09,-1.81l1.21,-0.2l0.15,-0.07l1.06,-0.96l3.19,-0.46l0.23,-0.18l0.46,-1.08l-0.08,-0.34l-0.6,-0.54l-0.83,-2.85l-0.18,-1.8l-0.82,-1.57l2.13,-1.37l2.65,-0.49l0.13,-0.05l1.55,-1.15l2.34,-0.85l4.2,-0.51l4.07,-0.23l1.21,0.41l0.23,-0.01l2.3,-1.11l2.52,-0.02l0.94,0.62l0.2,0.05l1.25,-0.13l-0.36,1.03l-0.01,0.14l0.39,2.66l-0.56,2.2l-1.49,1.52l-0.08,0.24l0.22,2.12l0.11,0.2l1.94,1.58l0.02,0.54l0.12,0.23l1.45,1.06l1.04,4.85l0.81,2.42l0.13,1.19l-0.43,2.17l0.17,1.28l-0.31,1.53l0.2,1.56l-0.9,1.02l-0.01,0.38l1.43,1.88l0.09,1.06l0.04,0.13l0.89,1.48l0.37,0.12l1.03,-0.43l1.79,1.12l0.89,1.34Z\",\n      \"name\": \"Algeria\"\n    },\n    \"US\": {\n      \"path\": \"M892.64,99.05l1.16,0.57l0.21,0.02l1.45,-0.38l1.92,0.99l2.17,0.47l-1.65,0.72l-1.75,-0.79l-0.93,-0.7l-0.21,-0.06l-2.11,0.22l-0.35,-0.2l0.09,-0.87ZM183.29,150.37l0.39,1.54l0.12,0.17l0.78,0.55l0.14,0.05l1.74,0.2l2.52,0.5l2.4,0.98l0.17,0.02l1.96,-0.4l3.01,0.81l0.91,-0.02l2.22,-0.88l4.67,2.33l3.86,2.01l0.21,0.71l0.15,0.18l0.33,0.17l-0.02,0.05l0.23,0.43l0.67,0.1l0.21,-0.05l0.1,-0.07l0.05,0.29l0.09,0.16l0.5,0.5l0.21,0.09l0.56,0.0l0.13,0.13l-0.2,0.36l0.12,0.41l2.49,1.39l0.99,5.24l-0.69,1.68l-1.16,1.64l-0.6,1.18l-0.06,0.31l0.04,0.22l0.28,0.43l0.11,0.1l0.85,0.47l0.15,0.04l0.63,0.0l0.14,-0.04l2.87,-1.58l2.6,-0.49l3.28,-1.5l0.17,-0.23l0.04,-0.43l-0.23,-0.93l-0.24,-0.39l0.74,-0.32l4.7,-0.01l0.25,-0.13l0.77,-1.15l2.9,-2.41l1.04,-0.52l8.35,-0.02l0.28,-0.21l0.2,-0.6l0.7,-0.14l1.06,-0.48l0.13,-0.11l0.92,-1.49l0.75,-2.39l1.67,-2.08l0.59,0.6l0.3,0.07l1.52,-0.49l0.88,0.72l-0.0,4.14l0.08,0.2l1.6,1.72l0.31,0.72l-2.42,1.35l-2.55,1.05l-2.64,0.9l-0.14,0.11l-1.33,1.81l-0.44,0.7l-0.05,0.15l-0.03,1.6l0.03,0.14l0.83,1.59l0.24,0.16l0.78,0.06l-1.15,0.33l-1.25,-0.04l-1.83,0.52l-2.51,0.29l-2.17,0.88l-0.17,0.36l0.33,0.22l3.55,-0.54l0.15,0.11l-2.87,0.73l-1.19,0.0l-0.16,-0.33l-0.36,0.06l-0.76,0.82l0.17,0.5l0.42,0.08l-0.45,1.75l-1.4,1.74l-0.04,-0.17l-0.21,-0.22l-0.48,-0.13l-0.77,-0.69l-0.36,-0.03l-0.12,0.34l0.52,1.58l0.09,0.14l0.52,0.43l0.03,0.87l-0.74,1.05l-0.39,0.63l0.05,-0.12l-0.08,-0.34l-1.19,-1.03l-0.28,-2.31l-0.26,-0.26l-0.32,0.19l-0.48,1.27l-0.01,0.19l0.39,1.33l-1.14,-0.31l-0.36,0.18l0.14,0.38l1.57,0.85l0.1,2.58l0.22,0.28l0.55,0.15l0.21,0.81l0.33,2.72l-1.46,1.94l-2.5,0.81l-0.12,0.07l-1.58,1.58l-1.15,0.17l-0.15,0.06l-1.27,1.03l-0.09,0.13l-0.32,0.85l-2.71,1.79l-1.45,1.37l-1.18,1.64l-0.05,0.12l-0.39,1.96l0.0,0.13l0.44,1.91l0.85,2.37l1.1,1.91l0.03,1.2l1.16,3.07l-0.08,1.74l-0.1,0.99l-0.57,1.48l-0.54,0.24l-0.97,-0.26l-0.34,-1.02l-0.12,-0.16l-0.89,-0.58l-2.44,-4.28l-0.34,-0.94l0.49,-1.71l-0.02,-0.21l-0.7,-1.5l-2.0,-2.35l-0.11,-0.08l-0.98,-0.42l-0.25,0.01l-2.42,1.19l-0.26,-0.08l-1.26,-1.29l-1.57,-0.68l-0.16,-0.02l-2.79,0.34l-2.18,-0.3l-1.98,0.19l-1.12,0.45l-0.14,0.44l0.4,0.65l-0.04,1.02l0.09,0.22l0.29,0.3l-0.06,0.05l-0.77,-0.33l-0.26,0.01l-0.87,0.48l-1.64,-0.08l-1.79,-1.39l-0.23,-0.06l-2.11,0.33l-1.75,-0.61l-0.14,-0.01l-1.61,0.2l-2.11,0.64l-0.11,0.06l-2.25,1.99l-2.53,1.21l-1.43,1.38l-0.58,1.22l-0.03,0.12l-0.03,1.86l0.13,1.32l0.3,0.62l-0.46,0.04l-1.71,-0.57l-1.85,-0.79l-0.63,-1.14l-0.54,-1.85l-0.07,-0.12l-1.45,-1.51l-0.86,-1.58l-1.26,-1.87l-0.09,-0.09l-1.76,-1.09l-0.17,-0.04l-2.05,0.05l-0.23,0.12l-1.44,1.97l-1.84,-0.72l-1.19,-0.76l-0.6,-1.45l-0.9,-1.52l-1.49,-1.21l-1.27,-0.87l-0.89,-0.96l-0.22,-0.1l-4.34,-0.0l-0.3,0.3l-0.0,0.84l-6.62,0.02l-5.66,-1.93l-3.48,-1.24l0.11,-0.25l-0.3,-0.42l-3.18,0.3l-2.6,0.2l-0.35,-1.19l-0.08,-0.13l-1.62,-1.61l-0.13,-0.08l-1.02,-0.29l-0.22,-0.66l-0.25,-0.2l-1.31,-0.13l-0.82,-0.7l-0.16,-0.07l-2.25,-0.27l-0.48,-0.34l-0.28,-1.44l-0.07,-0.14l-2.41,-2.84l-2.03,-3.89l0.08,-0.58l-0.1,-0.27l-1.08,-0.94l-1.87,-2.36l-0.33,-2.31l-0.07,-0.15l-1.24,-1.5l0.52,-2.4l-0.09,-2.57l-0.78,-2.3l0.96,-2.83l0.61,-5.66l-0.46,-4.26l-0.79,-2.71l-0.68,-1.4l0.13,-0.26l3.24,0.97l1.28,2.88l0.52,0.06l0.62,-0.84l0.06,-0.22l-0.4,-2.61l-0.74,-2.29l68.9,-0.0l0.3,-0.3l0.01,-0.95l0.32,-0.01ZM32.5,67.43l1.75,1.99l0.41,0.04l1.02,-0.81l3.79,0.25l-0.1,0.72l0.24,0.34l3.83,0.77l2.6,-0.44l5.21,1.41l4.84,0.43l1.9,0.57l0.15,0.01l3.25,-0.71l3.72,1.32l2.52,0.58l-0.03,38.14l0.29,0.3l2.41,0.11l2.34,1.0l1.7,1.59l2.22,2.42l0.42,0.03l2.41,-2.04l2.25,-1.08l1.23,1.76l1.71,1.53l2.24,1.62l1.54,2.56l2.56,4.09l0.11,0.11l4.1,2.17l0.06,1.93l-1.12,1.35l-1.22,-1.14l-2.08,-1.05l-0.68,-2.94l-0.09,-0.16l-3.18,-2.84l-1.32,-3.35l-0.25,-0.19l-2.43,-0.24l-3.93,-0.09l-2.85,-1.02l-5.24,-3.85l-6.77,-2.04l-3.52,0.3l-4.84,-1.7l-2.96,-1.6l-0.23,-0.02l-2.78,0.8l-0.21,0.35l0.46,2.31l-1.11,0.19l-2.9,0.78l-2.24,1.26l-2.42,0.68l-0.29,-1.79l1.07,-3.49l2.54,-1.11l0.12,-0.45l-0.69,-0.96l-0.41,-0.07l-3.19,2.12l-1.76,2.54l-3.57,2.62l-0.03,0.46l1.63,1.59l-2.14,2.38l-2.64,1.49l-2.49,1.09l-0.16,0.17l-0.58,1.48l-3.8,1.79l-0.14,0.14l-0.75,1.57l-2.75,1.41l-1.62,-0.25l-0.16,0.02l-2.35,0.98l-2.54,1.19l-2.06,1.15l-4.05,0.93l-0.1,-0.15l2.45,-1.45l2.49,-1.1l2.61,-1.88l3.03,-0.39l0.19,-0.1l1.2,-1.41l3.43,-2.11l0.61,-0.75l1.81,-1.24l0.13,-0.2l0.42,-2.7l1.24,-2.12l-0.03,-0.35l-0.34,-0.09l-2.73,1.05l-0.67,-0.53l-0.39,0.02l-1.13,1.11l-1.43,-1.62l-0.49,0.06l-0.41,0.8l-0.67,-1.31l-0.42,-0.12l-2.43,1.43l-1.18,-0.0l-0.18,-1.86l0.43,-1.3l-0.09,-0.33l-1.61,-1.33l-0.26,-0.06l-3.11,0.68l-2.0,-1.66l-1.61,-0.85l-0.01,-1.97l-0.11,-0.23l-1.76,-1.48l0.86,-1.96l2.01,-2.13l0.88,-1.94l1.79,-0.25l1.65,0.6l0.31,-0.06l1.91,-1.8l1.67,0.31l0.22,-0.04l1.91,-1.23l0.13,-0.33l-0.47,-1.82l-0.15,-0.19l-1.0,-0.52l1.51,-1.27l0.09,-0.34l-0.29,-0.19l-1.62,0.06l-2.66,0.88l-0.13,0.09l-0.62,0.72l-1.77,-0.8l-0.16,-0.02l-3.48,0.44l-3.5,-0.92l-1.06,-1.61l-2.78,-2.09l3.07,-1.51l5.52,-2.01l1.65,0.0l-0.28,1.73l0.31,0.35l5.29,-0.16l0.23,-0.49l-2.03,-2.59l-0.1,-0.08l-3.03,-1.58l-1.79,-2.12l-2.4,-1.83l-3.18,-1.27l1.13,-1.84l4.28,-0.14l0.15,-0.05l3.16,-2.0l0.13,-0.17l0.57,-2.07l2.43,-2.02l2.42,-0.52l4.67,-1.98l2.22,0.29l0.2,-0.04l3.74,-2.37l3.57,0.91ZM37.66,123.49l-2.31,1.26l-1.04,-0.75l-0.31,-1.35l2.06,-1.16l1.24,-0.51l1.48,0.22l0.76,0.81l-1.89,1.49ZM30.89,233.84l1.2,0.57l0.35,0.3l0.48,0.69l-1.6,0.86l-0.3,0.31l-0.24,-0.14l0.05,-0.54l-0.02,-0.15l-0.36,-0.83l0.05,-0.12l0.39,-0.38l0.07,-0.31l-0.09,-0.27ZM29.06,231.89l0.5,0.14l0.31,0.19l-0.46,0.1l-0.34,-0.43ZM25.02,230.13l0.2,-0.11l0.4,0.47l-0.43,-0.05l-0.17,-0.31ZM21.29,228.68l0.1,-0.07l0.22,0.02l0.02,0.21l-0.02,0.02l-0.32,-0.18ZM6.0,113.33l-1.19,0.45l-1.5,-0.64l-0.94,-0.63l1.76,-0.46l1.71,0.29l0.16,0.98Z\",\n      \"name\": \"United States of America\"\n    },\n    \"LV\": {\n      \"path\": \"M473.99,127.16l0.07,-2.15l1.15,-2.11l2.05,-1.07l1.84,2.48l0.25,0.12l2.01,-0.07l0.29,-0.25l0.45,-2.58l1.85,-0.56l0.98,0.4l2.13,1.33l0.16,0.05l1.97,0.01l1.02,0.7l0.21,1.67l0.71,1.84l-2.44,1.23l-1.36,0.53l-2.28,-1.62l-0.12,-0.05l-1.18,-0.2l-0.28,-0.6l-0.31,-0.17l-2.43,0.35l-4.17,-0.23l-0.12,0.02l-2.45,0.93Z\",\n      \"name\": \"Latvia\"\n    },\n    \"UY\": {\n      \"path\": \"M276.9,363.17l1.3,-0.23l2.4,2.04l0.22,0.07l0.82,-0.07l2.48,1.7l1.93,1.5l1.28,1.67l-0.95,1.14l-0.04,0.31l0.63,1.45l-0.96,1.57l-2.65,1.47l-1.73,-0.53l-0.15,-0.01l-1.25,0.28l-2.22,-1.16l-0.16,-0.03l-1.56,0.08l-1.33,-1.36l0.17,-1.58l0.48,-0.55l0.07,-0.2l-0.02,-2.74l0.66,-2.8l0.57,-2.02Z\",\n      \"name\": \"Uruguay\"\n    },\n    \"LB\": {\n      \"path\": \"M510.44,198.11l-0.48,0.03l-0.26,0.17l-0.15,0.32l-0.21,-0.0l0.72,-1.85l1.19,-1.9l0.74,0.09l0.27,0.73l-1.19,0.93l-0.09,0.13l-0.54,1.36Z\",\n      \"name\": \"Lebanon\"\n    },\n    \"LA\": {\n      \"path\": \"M684.87,248.8l0.61,-0.86l0.05,-0.16l0.11,-2.17l-0.08,-0.22l-1.96,-2.16l-0.15,-2.44l-0.08,-0.18l-1.9,-2.1l-0.19,-0.1l-1.89,-0.18l-0.29,0.15l-0.42,0.76l-1.21,0.06l-0.67,-0.41l-0.31,-0.0l-2.2,1.29l-0.05,-1.77l0.61,-2.7l-0.27,-0.37l-1.44,-0.1l-0.12,-1.31l-0.12,-0.21l-0.87,-0.65l0.38,-0.68l1.76,-1.41l0.08,0.22l0.27,0.2l1.33,0.07l0.31,-0.34l-0.35,-2.75l0.85,-0.25l1.32,1.88l1.11,2.36l0.27,0.17l2.89,0.02l0.78,1.82l-1.32,0.56l-0.12,0.09l-0.72,0.93l0.1,0.45l2.93,1.52l3.62,5.27l1.88,1.78l0.58,1.67l-0.38,2.11l-1.87,-0.79l-0.37,0.11l-0.99,1.54l-1.51,-0.73Z\",\n      \"name\": \"Laos\"\n    },\n    \"TW\": {\n      \"path\": \"M725.6,222.5l-1.5,4.22l-0.82,1.65l-1.01,-1.7l-0.26,-1.8l1.4,-2.48l1.8,-1.81l0.76,0.53l-0.38,1.39Z\",\n      \"name\": \"Taiwan\"\n    },\n    \"TT\": {\n      \"path\": \"M266.35,259.46l0.41,-0.39l0.09,-0.23l-0.04,-0.75l1.14,-0.26l0.2,0.03l-0.07,1.37l-1.73,0.23Z\",\n      \"name\": \"Trinidad and Tobago\"\n    },\n    \"TR\": {\n      \"path\": \"M513.25,175.38l3.63,1.17l0.14,0.01l2.88,-0.45l2.11,0.26l0.18,-0.03l2.9,-1.53l2.51,-0.13l2.25,1.37l0.36,0.88l-0.23,1.36l0.19,0.33l1.81,0.72l0.61,0.53l-1.31,0.64l-0.16,0.34l0.76,3.24l-0.44,0.8l0.01,0.3l1.19,2.02l-0.71,0.29l-0.74,-0.62l-0.15,-0.07l-2.91,-0.37l-0.15,0.02l-1.04,0.43l-2.78,0.44l-1.44,-0.03l-2.83,1.06l-1.95,0.01l-1.28,-0.52l-0.2,-0.01l-2.62,0.76l-0.7,-0.48l-0.47,0.22l-0.13,1.49l-1.01,0.94l-0.58,-0.82l0.79,-0.9l0.04,-0.34l-0.31,-0.15l-1.46,0.23l-2.03,-0.64l-0.3,0.07l-1.65,1.58l-3.58,0.3l-1.94,-1.47l-0.17,-0.06l-2.7,-0.1l-0.28,0.17l-0.51,1.06l-1.47,0.29l-2.32,-1.46l-0.17,-0.05l-2.55,0.05l-1.4,-2.7l-1.72,-1.54l1.11,-2.06l-0.07,-0.37l-1.35,-1.19l2.47,-2.51l3.74,-0.11l0.26,-0.17l0.96,-2.07l4.56,0.38l0.19,-0.05l2.97,-1.92l2.84,-0.83l4.03,-0.06l4.31,2.08ZM488.85,176.8l-1.81,1.38l-0.57,-1.01l0.02,-0.36l0.45,-0.25l0.13,-0.15l0.78,-1.87l-0.11,-0.37l-0.72,-0.47l1.91,-0.71l1.89,0.35l0.25,0.97l0.17,0.2l1.87,0.83l-0.19,0.31l-2.82,0.16l-0.18,0.07l-1.06,0.91Z\",\n      \"name\": \"Turkey\"\n    },\n    \"LK\": {\n      \"path\": \"M625.44,266.07l-0.35,2.4l-0.9,0.61l-1.91,0.5l-1.04,-1.75l-0.43,-3.5l1.0,-3.6l1.34,1.09l1.13,1.72l1.16,2.52Z\",\n      \"name\": \"Sri Lanka\"\n    },\n    \"TN\": {\n      \"path\": \"M444.91,206.18l-0.99,-4.57l-0.12,-0.18l-1.43,-1.04l-0.02,-0.53l-0.11,-0.22l-1.95,-1.59l-0.19,-1.85l1.44,-1.47l0.08,-0.14l0.59,-2.34l-0.38,-2.77l0.44,-1.28l2.52,-1.08l1.41,0.28l-0.06,1.2l0.43,0.28l1.81,-0.9l0.02,0.06l-1.14,1.28l-0.08,0.2l-0.02,1.32l0.11,0.24l0.74,0.6l-0.29,2.18l-1.56,1.35l-0.09,0.32l0.48,1.54l0.28,0.21l1.11,0.04l0.55,1.17l0.15,0.14l0.76,0.35l-0.12,1.79l-1.1,0.72l-0.8,0.91l-1.68,1.04l-0.13,0.32l0.25,1.08l-0.18,0.96l-0.74,0.39Z\",\n      \"name\": \"Tunisia\"\n    },\n    \"TL\": {\n      \"path\": \"M734.21,307.22l0.17,-0.34l1.99,-0.52l1.72,-0.08l0.78,-0.3l0.29,0.1l-0.43,0.32l-2.57,1.09l-1.71,0.59l-0.05,-0.49l-0.19,-0.36Z\",\n      \"name\": \"East Timor\"\n    },\n    \"TM\": {\n      \"path\": \"M553.16,173.51l-0.12,1.0l-0.26,-0.65l0.38,-0.34ZM553.54,173.16l0.13,-0.12l0.43,-0.09l-0.56,0.21ZM555.68,172.6l0.65,-0.14l1.53,0.76l1.71,2.29l0.27,0.12l1.27,-0.14l2.81,-0.04l0.29,-0.38l-0.35,-1.27l1.98,-0.97l1.96,-1.63l3.05,1.44l0.25,2.23l0.14,0.22l0.96,0.61l0.18,0.05l2.61,-0.13l0.68,0.44l1.2,2.97l0.1,0.13l2.85,2.03l1.67,1.41l2.66,1.45l3.13,1.17l-0.05,1.23l-0.36,-0.04l-1.12,-0.73l-0.44,0.14l-0.34,0.89l-1.96,0.52l-0.22,0.23l-0.47,2.17l-1.26,0.78l-1.93,0.42l-0.21,0.18l-0.46,1.14l-1.64,0.33l-2.3,-0.97l-0.2,-2.23l-0.28,-0.27l-1.76,-0.1l-2.78,-2.48l-0.15,-0.07l-1.95,-0.31l-2.82,-1.48l-1.78,-0.27l-0.18,0.03l-1.03,0.51l-1.6,-0.08l-0.22,0.08l-1.72,1.6l-1.83,0.46l-0.39,-1.7l0.36,-3.0l-0.16,-0.3l-1.73,-0.88l0.57,-1.77l-0.25,-0.39l-1.33,-0.14l0.41,-1.85l2.05,0.63l0.21,-0.01l2.2,-0.95l0.09,-0.49l-1.78,-1.75l-0.69,-1.66l-0.07,-0.03Z\",\n      \"name\": \"Turkmenistan\"\n    },\n    \"TJ\": {\n      \"path\": \"M597.99,178.71l-0.23,0.23l-2.57,-0.47l-0.35,0.25l-0.24,1.7l0.32,0.34l2.66,-0.22l3.15,0.95l4.47,-0.42l0.58,2.45l0.39,0.21l0.71,-0.25l1.22,0.53l-0.06,1.01l0.29,1.28l-2.19,-0.0l-1.71,-0.21l-0.23,0.07l-1.51,1.25l-1.05,0.27l-0.77,0.51l-0.71,-0.67l0.22,-2.28l-0.24,-0.32l-0.43,-0.08l0.17,-0.57l-0.16,-0.36l-1.36,-0.66l-0.34,0.05l-1.08,1.01l-0.09,0.15l-0.25,1.09l-0.24,0.26l-1.36,-0.05l-0.27,0.14l-0.65,1.06l-0.58,-0.39l-0.3,-0.02l-1.68,0.86l-0.36,-0.16l1.28,-2.65l0.02,-0.2l-0.54,-2.17l-0.18,-0.21l-1.53,-0.58l0.41,-0.82l1.89,0.13l0.26,-0.12l1.19,-1.63l0.77,-1.82l2.66,-0.55l-0.33,0.87l0.01,0.23l0.36,0.82l0.3,0.18l0.23,-0.02Z\",\n      \"name\": \"Tajikistan\"\n    },\n    \"LS\": {\n      \"path\": \"M493.32,359.69l0.69,0.65l-0.65,1.12l-0.38,0.8l-1.27,0.39l-0.18,0.15l-0.4,0.77l-0.59,0.18l-1.59,-1.78l1.16,-1.5l1.3,-1.02l0.97,-0.46l0.94,0.72Z\",\n      \"name\": \"Lesotho\"\n    },\n    \"TH\": {\n      \"path\": \"M677.42,253.68l-1.7,-0.88l-0.14,-0.03l-1.77,0.04l0.3,-1.64l-0.3,-0.35l-2.21,0.01l-0.3,0.28l-0.2,2.76l-2.15,5.9l-0.02,0.13l0.17,1.83l0.28,0.27l1.45,0.07l0.93,2.1l0.44,2.15l0.08,0.15l1.4,1.44l0.16,0.09l1.43,0.27l1.04,1.05l-0.58,0.73l-1.24,0.22l-0.15,-0.99l-0.15,-0.22l-2.04,-1.1l-0.36,0.06l-0.23,0.23l-0.72,-0.71l-0.41,-1.18l-0.06,-0.11l-1.33,-1.42l-1.22,-1.2l-0.5,0.13l-0.15,0.54l-0.14,-0.41l0.26,-1.48l0.73,-2.38l1.2,-2.57l1.37,-2.35l0.02,-0.27l-0.95,-2.26l0.03,-1.19l-0.29,-1.42l-0.06,-0.13l-1.65,-2.0l-0.46,-0.99l0.62,-0.34l0.13,-0.15l0.92,-2.23l-0.02,-0.27l-1.05,-1.74l-1.57,-1.86l-1.04,-1.96l0.76,-0.34l0.16,-0.16l1.07,-2.63l1.58,-0.1l0.16,-0.06l1.43,-1.11l1.24,-0.52l0.84,0.62l0.13,1.43l0.28,0.27l1.34,0.09l-0.54,2.39l0.05,2.39l0.45,0.25l2.48,-1.45l0.6,0.36l0.17,0.04l1.47,-0.07l0.25,-0.15l0.41,-0.73l1.58,0.15l1.76,1.93l0.15,2.44l0.08,0.18l1.94,2.15l-0.1,1.96l-0.66,0.93l-2.25,-0.34l-3.24,0.49l-0.19,0.12l-1.6,2.12l-0.06,0.24l0.48,2.46Z\",\n      \"name\": \"Thailand\"\n    },\n    \"TF\": {\n      \"path\": \"M593.76,417.73l1.38,0.84l2.15,0.37l0.04,0.31l-0.59,1.24l-3.36,0.19l-0.05,-1.38l0.43,-1.56Z\",\n      \"name\": \"French Southern and Antarctic Lands\"\n    },\n    \"TG\": {\n      \"path\": \"M425.23,269.29l-1.49,0.4l-0.43,-0.68l-0.64,-1.54l-0.18,-1.16l0.54,-2.21l-0.04,-0.24l-0.59,-0.86l-0.23,-1.9l0.0,-1.82l-0.07,-0.19l-0.95,-1.19l0.1,-0.41l1.58,0.04l-0.23,0.97l0.08,0.28l1.55,1.55l0.09,1.13l0.08,0.19l0.42,0.43l-0.11,5.66l0.52,1.53Z\",\n      \"name\": \"Togo\"\n    },\n    \"TD\": {\n      \"path\": \"M457.57,252.46l0.23,-1.08l-0.28,-0.36l-1.32,-0.05l0.0,-1.35l-0.1,-0.22l-0.9,-0.82l0.99,-3.1l3.12,-2.37l0.12,-0.23l0.13,-3.33l0.95,-5.2l0.53,-1.09l-0.07,-0.36l-0.94,-0.81l-0.03,-0.7l-0.12,-0.23l-0.84,-0.61l-0.57,-3.76l2.21,-1.26l19.67,9.88l0.12,9.74l-1.83,-0.15l-0.28,0.14l-1.14,1.89l-0.68,1.62l0.05,0.31l0.33,0.38l-0.61,0.58l-0.08,0.3l0.25,0.93l-0.58,0.95l-0.29,1.01l0.34,0.37l0.67,-0.11l0.39,0.73l0.03,1.4l0.11,0.23l0.8,0.65l-0.01,0.24l-1.38,0.37l-0.11,0.06l-1.27,1.03l-1.83,2.76l-2.21,1.1l-2.34,-0.15l-0.82,0.25l-0.2,0.37l0.19,0.68l-1.16,0.79l-1.01,0.94l-2.92,0.89l-0.5,-0.46l-0.17,-0.08l-0.41,-0.05l-0.28,0.12l-0.38,0.54l-1.36,0.12l0.1,-0.18l0.01,-0.27l-0.78,-1.72l-0.35,-1.03l-0.17,-0.18l-1.03,-0.41l-1.29,-1.28l0.36,-0.78l0.9,0.2l0.14,-0.0l0.67,-0.17l1.36,0.02l0.26,-0.45l-1.32,-2.22l0.09,-1.64l-0.17,-1.68l-0.04,-0.13l-0.93,-1.53Z\",\n      \"name\": \"Chad\"\n    },\n    \"LY\": {\n      \"path\": \"M457.99,226.38l-1.57,0.87l-1.25,-1.28l-0.13,-0.08l-3.85,-1.11l-1.04,-1.57l-0.09,-0.09l-1.98,-1.23l-0.27,-0.02l-0.93,0.39l-0.72,-1.2l-0.09,-1.07l-0.06,-0.16l-1.33,-1.75l0.83,-0.94l0.07,-0.24l-0.21,-1.64l0.31,-1.43l-0.17,-1.29l0.43,-2.26l-0.15,-1.33l-0.73,-2.18l0.99,-0.52l0.16,-0.21l0.22,-1.16l-0.22,-1.06l1.54,-0.95l0.81,-0.92l1.19,-0.78l0.14,-0.23l0.12,-1.76l2.57,0.84l0.16,0.01l0.99,-0.23l2.01,0.45l3.19,1.2l1.12,2.36l0.2,0.16l2.24,0.53l3.5,1.14l2.65,1.36l0.29,-0.01l1.22,-0.71l1.27,-1.32l0.07,-0.29l-0.55,-2.0l0.69,-1.19l1.7,-1.23l1.61,-0.35l3.2,0.54l0.78,1.14l0.24,0.13l0.85,0.01l0.84,0.47l2.35,0.31l0.42,0.63l-0.79,1.16l-0.04,0.26l0.35,1.08l-0.61,1.6l-0.0,0.2l0.73,2.16l0.0,24.24l-2.58,0.01l-0.3,0.29l-0.02,0.62l-19.55,-9.83l-0.28,0.01l-2.53,1.44Z\",\n      \"name\": \"Libya\"\n    },\n    \"AE\": {\n      \"path\": \"M550.59,223.8l0.12,0.08l1.92,-0.41l3.54,0.15l0.23,-0.09l1.71,-1.79l1.86,-1.7l1.31,-1.36l0.26,0.5l0.28,1.72l-0.93,0.01l-0.3,0.26l-0.21,1.73l0.11,0.27l0.08,0.06l-0.7,0.32l-0.17,0.27l-0.01,0.99l-0.68,1.02l-0.05,0.15l-0.06,0.96l-0.32,0.36l-7.19,-1.27l-0.79,-2.22Z\",\n      \"name\": \"United Arab Emirates\"\n    },\n    \"VE\": {\n      \"path\": \"M240.66,256.5l0.65,0.91l-0.03,1.13l-1.05,1.39l-0.03,0.31l0.95,2.0l0.32,0.17l1.08,-0.16l0.24,-0.21l0.56,-1.83l-0.06,-0.29l-0.71,-0.81l-0.1,-1.58l2.9,-0.96l0.19,-0.37l-0.29,-1.02l0.45,-0.41l0.72,1.43l0.26,0.16l1.65,0.04l1.46,1.27l0.08,0.72l0.3,0.27l2.28,0.02l2.55,-0.25l1.34,1.06l0.14,0.06l1.92,0.31l0.2,-0.03l1.4,-0.79l0.15,-0.25l0.02,-0.36l2.82,-0.14l1.17,-0.01l-0.41,0.14l-0.14,0.46l0.86,1.19l0.22,0.12l1.93,0.18l1.73,1.13l0.37,1.9l0.31,0.24l1.21,-0.05l0.52,0.32l-1.63,1.21l-0.11,0.17l-0.22,0.92l0.07,0.27l0.63,0.69l-0.31,0.24l-1.48,0.39l-0.22,0.3l0.04,1.03l-0.59,0.6l-0.01,0.41l1.67,1.87l0.23,0.48l-0.72,0.76l-2.71,0.91l-1.78,0.39l-0.13,0.06l-0.6,0.49l-1.84,-0.58l-1.89,-0.33l-0.18,0.03l-0.47,0.23l-0.02,0.53l0.96,0.56l-0.08,1.58l0.35,1.58l0.26,0.23l1.91,0.19l0.02,0.07l-1.54,0.62l-0.18,0.2l-0.25,0.92l-0.88,0.35l-1.85,0.58l-0.16,0.13l-0.4,0.64l-1.66,0.14l-1.22,-1.18l-0.79,-2.52l-0.67,-0.88l-0.66,-0.43l0.99,-0.98l0.09,-0.26l-0.09,-0.56l-0.08,-0.16l-0.66,-0.69l-0.47,-1.54l0.18,-1.67l0.55,-0.85l0.45,-1.35l-0.15,-0.36l-0.89,-0.43l-0.19,-0.02l-1.39,0.28l-1.76,-0.13l-0.92,0.23l-1.64,-2.01l-0.17,-0.1l-1.54,-0.33l-3.05,0.23l-0.5,-0.73l-0.15,-0.12l-0.45,-0.15l-0.05,-0.28l0.28,-0.86l0.01,-0.15l-0.2,-1.01l-0.08,-0.15l-0.5,-0.5l-0.3,-1.08l-0.25,-0.22l-0.89,-0.12l0.54,-1.18l0.29,-1.73l0.66,-0.85l0.94,-0.7l0.09,-0.11l0.3,-0.6Z\",\n      \"name\": \"Venezuela\"\n    },\n    \"AF\": {\n      \"path\": \"M574.42,192.1l2.24,0.95l0.18,0.02l1.89,-0.38l0.22,-0.18l0.46,-1.14l1.82,-0.4l1.5,-0.91l0.14,-0.19l0.46,-2.12l1.93,-0.51l0.2,-0.18l0.26,-0.68l0.87,0.57l0.13,0.05l0.79,0.09l1.35,0.02l1.83,0.59l0.75,0.34l0.26,-0.01l1.66,-0.85l0.7,0.46l0.42,-0.09l0.72,-1.17l1.32,0.05l0.23,-0.1l0.39,-0.43l0.07,-0.14l0.24,-1.08l0.86,-0.81l0.94,0.46l-0.2,0.64l0.23,0.38l0.49,0.09l-0.21,2.15l0.09,0.25l0.99,0.94l0.38,0.03l0.83,-0.57l1.06,-0.27l0.12,-0.06l1.46,-1.21l1.63,0.2l2.4,0.0l0.17,0.32l-1.12,0.25l-1.23,0.52l-2.86,0.33l-2.69,0.6l-0.13,0.06l-1.46,1.25l-0.07,0.36l0.58,1.18l0.25,1.21l-1.13,1.08l-0.09,0.25l0.09,0.98l-0.53,0.79l-2.22,-0.08l-0.28,0.44l0.83,1.57l-1.3,0.58l-0.13,0.11l-1.06,1.69l-0.05,0.18l0.13,1.51l-0.73,0.58l-0.78,-0.22l-0.14,-0.01l-1.91,0.36l-0.23,0.19l-0.2,0.57l-1.65,-0.0l-0.22,0.1l-1.4,1.56l-0.08,0.19l-0.08,2.13l-2.99,1.05l-1.67,-0.23l-0.27,0.1l-0.39,0.46l-1.43,-0.31l-2.43,0.4l-3.69,-1.23l1.96,-2.15l0.08,-0.24l-0.21,-1.78l-0.23,-0.26l-1.69,-0.42l-0.19,-1.62l-0.77,-2.08l0.98,-1.41l-0.14,-0.45l-0.82,-0.31l0.6,-1.79l0.93,-3.21Z\",\n      \"name\": \"Afghanistan\"\n    },\n    \"IQ\": {\n      \"path\": \"M534.42,190.89l0.13,0.14l1.5,0.78l0.15,1.34l-1.13,0.87l-0.11,0.16l-0.58,2.2l0.04,0.24l1.73,2.67l0.12,0.1l2.99,1.49l1.18,1.94l-0.39,1.89l0.29,0.36l0.5,-0.0l0.02,1.17l0.08,0.2l0.83,0.86l-2.36,-0.29l-0.29,0.13l-1.74,2.49l-4.4,-0.21l-7.03,-5.49l-3.73,-1.94l-2.92,-0.74l-0.89,-3.0l5.33,-2.81l0.15,-0.19l0.95,-3.43l-0.2,-2.0l1.19,-0.61l0.11,-0.09l1.23,-1.73l0.92,-0.38l2.75,0.35l0.81,0.68l0.31,0.05l0.94,-0.38l1.5,3.17Z\",\n      \"name\": \"Iraq\"\n    },\n    \"IS\": {\n      \"path\": \"M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l-7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l-4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l-4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02,1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z\",\n      \"name\": \"Iceland\"\n    },\n    \"IR\": {\n      \"path\": \"M556.2,187.5l2.05,-0.52l0.13,-0.07l1.69,-1.57l1.55,0.08l0.15,-0.03l1.02,-0.5l1.64,0.25l2.82,1.48l1.91,0.3l2.8,2.49l0.18,0.08l1.61,0.09l0.19,2.09l-1.0,3.47l-0.69,2.04l0.18,0.38l0.73,0.28l-0.85,1.22l-0.04,0.28l0.81,2.19l0.19,1.72l0.23,0.26l1.69,0.42l0.17,1.43l-2.18,2.39l-0.01,0.4l1.22,1.42l1.0,1.62l0.12,0.11l2.23,1.11l0.06,2.2l0.2,0.27l1.03,0.38l0.14,0.83l-3.38,1.3l-0.18,0.19l-0.87,2.85l-4.44,-0.76l-2.75,-0.62l-2.64,-0.32l-1.01,-3.11l-0.17,-0.19l-1.2,-0.48l-0.18,-0.01l-1.99,0.51l-2.42,1.25l-2.89,-0.84l-2.48,-2.03l-2.41,-0.79l-1.61,-2.47l-1.84,-3.63l-0.36,-0.15l-1.22,0.4l-1.48,-0.84l-0.37,0.06l-0.72,0.82l-1.08,-1.12l-0.02,-1.35l-0.3,-0.29l-0.43,0.0l0.34,-1.64l-0.04,-0.22l-1.29,-2.11l-0.12,-0.11l-3.0,-1.49l-1.62,-2.49l0.52,-1.98l1.18,-0.92l0.11,-0.27l-0.19,-1.66l-0.16,-0.23l-1.55,-0.81l-1.58,-3.33l-1.3,-2.2l0.41,-0.75l0.03,-0.21l-0.73,-3.12l1.2,-0.59l0.35,0.9l1.26,1.35l0.15,0.09l1.81,0.39l0.91,-0.09l0.15,-0.06l2.9,-2.13l0.7,-0.16l0.48,0.56l-0.75,1.26l0.05,0.37l1.56,1.53l0.28,0.08l0.37,-0.09l0.7,1.89l0.21,0.19l2.31,0.59l1.69,1.4l0.15,0.07l3.66,0.49l3.91,-0.76l0.23,-0.19l0.19,-0.52Z\",\n      \"name\": \"Iran\"\n    },\n    \"AM\": {\n      \"path\": \"M530.51,176.08l2.91,-0.39l0.41,0.63l0.11,0.1l0.66,0.36l-0.32,0.47l0.07,0.41l1.1,0.84l-0.53,0.7l0.06,0.42l1.06,0.8l1.01,0.44l0.04,1.56l-0.44,0.04l-0.88,-1.46l0.01,-0.37l-0.3,-0.31l-0.98,0.01l-0.65,-0.69l-0.26,-0.09l-0.38,0.06l-0.97,-0.82l-1.64,-0.65l0.2,-1.2l-0.02,-0.16l-0.28,-0.69Z\",\n      \"name\": \"Armenia\"\n    },\n    \"IT\": {\n      \"path\": \"M451.68,158.58l0.2,0.16l3.3,0.75l-0.22,1.26l0.02,0.18l0.35,0.78l-1.4,-0.32l-0.21,0.03l-2.04,1.1l-0.16,0.29l0.13,1.47l-0.29,0.82l0.02,0.24l0.82,1.57l0.1,0.11l2.28,1.5l1.29,2.53l2.79,2.43l0.2,0.07l1.83,-0.02l0.31,0.34l-0.46,0.39l0.06,0.5l4.06,1.97l2.06,1.49l0.17,0.36l-0.24,0.53l-1.08,-1.07l-0.15,-0.08l-2.18,-0.49l-0.33,0.15l-1.05,1.91l0.11,0.4l1.63,0.98l-0.22,1.12l-0.84,0.14l-0.22,0.15l-1.27,2.38l-0.54,0.12l0.01,-0.47l0.48,-1.46l0.5,-0.58l0.03,-0.35l-0.97,-1.69l-0.76,-1.48l-0.17,-0.15l-0.94,-0.33l-0.68,-1.18l-0.16,-0.13l-1.53,-0.52l-1.03,-1.14l-0.19,-0.1l-1.78,-0.19l-1.88,-1.3l-2.27,-1.94l-1.64,-1.68l-0.76,-2.94l-0.21,-0.21l-1.22,-0.35l-2.01,-1.0l-0.24,-0.01l-1.15,0.42l-0.11,0.07l-1.38,1.36l-0.5,0.11l0.19,-0.87l-0.21,-0.35l-1.19,-0.34l-0.56,-2.06l0.76,-0.82l0.03,-0.36l-0.68,-1.08l0.04,-0.31l0.68,0.42l0.19,0.04l1.21,-0.15l0.14,-0.06l1.18,-0.89l0.25,0.29l0.25,0.1l1.19,-0.1l0.25,-0.18l0.45,-1.04l1.61,0.34l0.19,-0.02l1.1,-0.53l0.17,-0.22l0.15,-0.95l1.19,0.35l0.35,-0.16l0.23,-0.47l2.11,-0.47l0.45,0.89ZM459.35,184.63l-0.71,1.81l0.0,0.23l0.33,0.79l-0.37,1.03l-1.6,-0.91l-1.33,-0.34l-3.24,-1.36l0.23,-0.99l2.73,0.24l3.95,-0.5ZM443.95,175.91l1.26,1.77l-0.31,3.47l-0.82,-0.13l-0.26,0.08l-0.83,0.79l-0.64,-0.52l-0.1,-3.42l-0.44,-1.34l0.91,0.1l0.21,-0.06l1.01,-0.74Z\",\n      \"name\": \"Italy\"\n    },\n    \"VN\": {\n      \"path\": \"M690.8,230.21l-2.86,1.93l-2.09,2.46l-0.06,0.11l-0.55,1.8l0.04,0.26l4.26,6.1l2.31,1.63l1.46,1.97l1.12,4.62l-0.32,4.3l-1.97,1.57l-2.85,1.62l-2.09,2.14l-2.83,2.13l-0.67,-1.19l0.65,-1.58l-0.09,-0.35l-1.47,-1.14l1.67,-0.79l2.57,-0.18l0.22,-0.47l-0.89,-1.24l3.88,-1.8l0.17,-0.24l0.31,-3.05l-0.01,-0.13l-0.56,-1.63l0.44,-2.48l-0.01,-0.15l-0.63,-1.81l-0.08,-0.12l-1.87,-1.77l-3.64,-5.3l-0.11,-0.1l-2.68,-1.39l0.45,-0.59l1.53,-0.65l0.16,-0.39l-0.97,-2.27l-0.27,-0.18l-2.89,-0.02l-1.04,-2.21l-1.28,-1.83l0.96,-0.46l1.97,0.01l2.43,-0.3l0.13,-0.05l1.95,-1.29l1.04,0.85l0.13,0.06l1.98,0.42l-0.32,1.21l0.09,0.3l1.19,1.07l0.12,0.07l1.88,0.51Z\",\n      \"name\": \"Vietnam\"\n    },\n    \"AR\": {\n      \"path\": \"M258.11,341.34l1.4,1.81l0.51,-0.06l0.89,-1.94l2.51,0.1l0.36,0.49l4.6,4.31l0.15,0.08l1.99,0.39l3.01,1.93l2.5,1.01l0.28,0.91l-2.4,3.97l0.17,0.44l2.57,0.74l2.81,0.41l2.09,-0.44l0.14,-0.07l2.27,-2.06l0.09,-0.17l0.38,-2.2l0.88,-0.36l1.05,1.29l-0.04,1.88l-1.98,1.4l-1.72,1.13l-2.84,2.65l-3.34,3.73l-0.07,0.12l-0.63,2.22l-0.67,2.85l0.02,2.73l-0.47,0.54l-0.07,0.17l-0.36,3.28l0.12,0.27l3.03,2.32l-0.31,1.78l0.11,0.29l1.44,1.15l-0.11,1.17l-2.32,3.57l-3.59,1.51l-4.95,0.6l-2.72,-0.29l-0.32,0.38l0.5,1.67l-0.49,2.13l0.01,0.16l0.4,1.29l-1.27,0.88l-2.41,0.39l-2.33,-1.05l-0.31,0.04l-0.97,0.78l-0.11,0.27l0.35,2.98l0.16,0.23l1.69,0.91l0.31,-0.02l1.08,-0.75l0.46,0.96l-2.1,0.88l-2.01,1.89l-0.09,0.18l-0.36,3.05l-0.51,1.42l-2.16,0.01l-0.19,0.07l-1.96,1.59l-0.1,0.15l-0.72,2.34l0.08,0.31l2.46,2.31l0.13,0.07l2.09,0.56l-0.74,2.45l-2.86,1.75l-0.12,0.14l-1.59,3.71l-2.2,1.24l-0.1,0.09l-1.03,1.54l-0.04,0.23l0.81,3.45l0.06,0.13l1.13,1.32l-2.59,-0.57l-5.89,-0.44l-0.92,-1.73l0.05,-2.4l-0.34,-0.3l-1.49,0.19l-0.72,-0.98l-0.2,-3.21l1.79,-1.33l0.1,-0.13l0.79,-2.04l0.02,-0.16l-0.27,-1.52l1.31,-2.69l0.91,-4.15l-0.23,-1.72l0.91,-0.49l0.15,-0.33l-0.27,-1.16l-0.15,-0.2l-0.87,-0.46l0.65,-1.01l-0.04,-0.37l-1.06,-1.09l-0.54,-3.2l0.83,-0.51l0.14,-0.29l-0.42,-3.6l0.58,-2.98l0.64,-2.5l1.41,-1.0l0.12,-0.32l-0.75,-2.8l-0.01,-2.48l1.81,-1.78l0.09,-0.22l-0.06,-2.3l1.39,-2.69l0.03,-0.14l0.01,-2.58l-0.11,-0.24l-0.57,-0.45l-1.1,-4.59l1.49,-2.73l0.04,-0.17l-0.23,-2.59l0.86,-2.38l1.6,-2.48l1.74,-1.65l0.04,-0.39l-0.64,-0.89l0.42,-0.7l0.04,-0.16l-0.08,-4.26l2.55,-1.23l0.16,-0.18l0.86,-2.75l-0.01,-0.22l-0.22,-0.48l1.84,-2.1l3.0,0.59ZM256.77,438.98l-2.1,0.15l-1.18,-1.14l-0.19,-0.08l-1.53,-0.09l-2.38,-0.0l-0.0,-6.28l0.4,0.65l1.25,2.55l0.11,0.12l3.26,2.07l3.19,0.8l-0.82,1.26Z\",\n      \"name\": \"Argentina\"\n    },\n    \"AU\": {\n      \"path\": \"M705.55,353.06l0.09,0.09l0.37,0.05l0.13,-0.35l-0.57,-1.69l0.48,0.3l0.71,0.99l0.34,0.11l0.2,-0.29l-0.04,-1.37l-0.04,-0.14l-1.22,-2.07l-0.28,-0.9l-0.51,-0.69l0.24,-1.33l0.52,-0.7l0.34,-1.32l0.01,-0.13l-0.25,-1.44l0.51,-0.94l0.1,1.03l0.23,0.26l0.32,-0.14l1.01,-1.72l1.94,-0.84l1.27,-1.14l1.84,-0.92l1.0,-0.18l0.6,0.28l0.26,-0.0l1.94,-0.96l1.48,-0.28l0.19,-0.13l0.32,-0.49l0.51,-0.18l1.42,0.05l2.63,-0.76l0.11,-0.06l1.36,-1.15l0.08,-0.1l0.61,-1.33l1.42,-1.27l0.1,-0.19l0.11,-1.03l0.06,-1.32l1.39,-1.74l0.85,1.79l0.4,0.14l1.07,-0.51l0.11,-0.45l-0.77,-1.05l0.53,-0.84l0.86,0.43l0.43,-0.22l0.29,-1.85l1.29,-1.19l0.6,-0.98l1.16,-0.4l0.2,-0.27l0.02,-0.34l0.74,0.2l0.38,-0.27l0.03,-0.44l1.98,-0.61l1.7,1.08l1.36,1.48l0.22,0.1l1.55,0.02l1.57,0.24l0.33,-0.4l-0.48,-1.27l1.09,-1.86l1.06,-0.63l0.1,-0.42l-0.28,-0.46l0.93,-1.24l1.36,-0.8l1.16,0.27l0.14,0.0l2.1,-0.48l0.23,-0.3l-0.05,-1.3l-0.18,-0.26l-1.08,-0.49l0.44,-0.12l1.52,0.58l1.39,1.06l2.11,0.65l0.19,-0.0l0.59,-0.21l1.44,0.72l0.27,0.0l1.37,-0.68l0.84,0.2l0.26,-0.06l0.37,-0.3l0.82,0.89l-0.56,1.14l-0.84,0.91l-0.75,0.07l-0.26,0.38l0.26,0.9l-0.67,1.15l-0.88,1.24l-0.05,0.25l0.18,0.72l0.12,0.17l1.99,1.42l1.96,0.84l1.25,0.86l1.8,1.51l0.19,0.07l0.63,-0.0l1.15,0.58l0.34,0.7l0.17,0.15l2.39,0.88l0.24,-0.02l1.65,-0.88l0.14,-0.16l0.49,-1.37l0.52,-1.19l0.31,-1.39l0.75,-2.02l0.01,-0.19l-0.33,-1.16l0.16,-0.67l0.0,-0.13l-0.28,-1.41l0.3,-1.78l0.42,-0.45l0.05,-0.33l-0.33,-0.73l0.56,-1.25l0.48,-1.39l0.07,-0.69l0.58,-0.59l0.48,0.84l0.17,1.53l0.17,0.24l0.47,0.23l0.09,0.9l0.05,0.14l0.87,1.23l0.17,1.33l-0.09,0.89l0.03,0.15l0.9,2.0l0.43,0.13l1.38,-0.83l0.71,0.92l1.06,0.88l-0.22,0.96l0.0,0.14l0.53,2.2l0.38,1.3l0.15,0.18l0.52,0.26l0.62,2.01l-0.23,1.27l0.02,0.18l0.81,1.76l0.14,0.14l2.69,1.35l3.21,2.21l-0.2,0.4l0.04,0.34l1.39,1.6l0.95,2.78l0.43,0.16l0.79,-0.46l0.85,0.96l0.39,0.05l0.22,-0.15l0.36,2.33l0.09,0.18l1.78,1.63l1.16,1.01l1.9,2.1l0.67,2.05l0.06,1.47l-0.17,1.64l0.03,0.17l1.16,2.22l-0.14,2.28l-0.43,1.24l-0.68,2.44l0.04,1.63l-0.48,1.92l-1.06,2.43l-1.79,1.32l-0.1,0.12l-0.91,2.15l-0.82,1.37l-0.76,2.47l-0.98,1.46l-0.63,2.14l-0.33,2.02l0.1,0.82l-1.21,0.85l-2.71,0.1l-0.13,0.03l-2.31,1.19l-1.21,1.17l-1.34,1.11l-1.89,-1.18l-1.33,-0.46l0.32,-1.24l-0.4,-0.35l-1.46,0.61l-2.06,1.98l-1.99,-0.73l-1.43,-0.46l-1.45,-0.22l-2.32,-0.81l-1.51,-1.67l-0.45,-2.11l-0.6,-1.5l-0.07,-0.11l-1.23,-1.16l-0.16,-0.08l-1.96,-0.28l0.59,-0.99l0.03,-0.24l-0.61,-2.1l-0.54,-0.08l-1.16,1.85l-1.23,0.29l0.73,-0.88l0.06,-0.12l0.37,-1.57l0.93,-1.33l0.05,-0.2l-0.2,-2.07l-0.53,-0.17l-2.01,2.35l-1.52,0.94l-0.12,0.14l-0.82,1.93l-1.5,-0.9l0.07,-1.32l-0.06,-0.2l-1.57,-2.04l-1.15,-0.92l0.3,-0.41l-0.1,-0.44l-3.21,-1.69l-0.13,-0.03l-1.69,-0.08l-2.35,-1.31l-0.16,-0.04l-4.55,0.27l-3.24,0.99l-2.8,0.91l-2.33,-0.18l-0.17,0.03l-2.63,1.41l-2.14,0.64l-0.2,0.19l-0.47,1.42l-0.8,0.99l-1.99,0.06l-1.55,0.24l-2.27,-0.5l-1.79,0.3l-1.71,0.13l-0.19,0.09l-1.38,1.39l-0.58,-0.1l-0.21,0.04l-1.26,0.8l-1.13,0.85l-1.72,-0.1l-1.6,-0.0l-2.58,-1.76l-1.21,-0.49l0.04,-1.19l1.04,-0.32l0.16,-0.12l0.42,-0.64l0.05,-0.19l-0.09,-0.97l0.3,-2.0l-0.28,-1.64l-1.34,-2.84l-0.39,-1.49l0.1,-1.51l-0.04,-0.17l-0.96,-1.72l-0.06,-0.73l-0.09,-0.19l-1.04,-1.01l-0.3,-2.02l-0.05,-0.12l-1.23,-1.83ZM784.95,393.35l2.39,1.01l0.2,0.01l3.26,-0.96l1.19,0.16l0.16,3.19l-0.78,0.95l-0.07,0.16l-0.19,1.83l-0.43,-0.41l-0.44,0.03l-1.61,1.96l-0.4,-0.12l-1.38,-0.09l-1.43,-2.42l-0.37,-2.03l-1.4,-2.53l0.04,-0.94l1.27,0.2Z\",\n      \"name\": \"Australia\"\n    },\n    \"IL\": {\n      \"path\": \"M509.04,199.22l0.71,0.0l0.27,-0.17l0.15,-0.33l0.19,-0.01l0.02,0.73l-0.27,0.34l0.02,0.08l-0.32,0.62l-0.65,-0.27l-0.41,0.19l-0.52,1.85l0.16,0.35l0.14,0.07l-0.17,0.1l-0.14,0.21l-0.11,0.73l0.39,0.33l0.81,-0.26l0.03,0.64l-0.97,3.43l-1.28,-3.67l0.62,-0.78l-0.03,-0.41l0.58,-1.16l0.5,-2.07l0.27,-0.54Z\",\n      \"name\": \"Israel\"\n    },\n    \"IN\": {\n      \"path\": \"M615.84,192.58l2.4,2.97l-0.24,2.17l0.05,0.2l0.94,1.35l-0.06,0.97l-1.46,-0.3l-0.35,0.36l0.7,3.06l0.12,0.18l2.46,1.75l3.11,1.72l-1.23,0.96l-0.1,0.13l-0.97,2.55l0.16,0.38l2.41,1.02l2.37,1.33l3.27,1.52l3.43,0.37l1.37,1.3l0.17,0.08l1.92,0.25l3.0,0.62l2.15,-0.04l0.28,-0.22l0.29,-1.06l0.0,-0.13l-0.32,-1.66l0.16,-0.94l1.0,-0.37l0.23,2.28l0.18,0.24l2.28,1.02l0.2,0.02l1.52,-0.41l2.06,0.18l2.08,-0.08l0.29,-0.27l0.18,-1.66l-0.1,-0.26l-0.53,-0.44l1.38,-0.23l0.15,-0.07l2.26,-2.0l2.75,-1.65l1.97,0.63l0.25,-0.03l1.54,-0.99l0.89,1.28l-0.72,0.97l0.2,0.48l2.49,0.37l0.11,0.61l-0.69,0.39l-0.15,0.3l0.15,1.22l-1.36,-0.37l-0.23,0.03l-3.24,1.86l-0.15,0.28l0.07,1.44l-1.33,2.16l-0.04,0.13l-0.12,1.24l-0.98,1.91l-1.72,-0.53l-0.39,0.28l-0.09,2.66l-0.52,0.83l-0.04,0.23l0.21,0.89l-0.71,0.36l-1.21,-3.85l-0.29,-0.21l-0.69,0.01l-0.29,0.23l-0.28,1.17l-0.84,-0.84l0.6,-1.17l0.97,-0.13l0.23,-0.16l1.15,-2.25l-0.18,-0.42l-1.54,-0.47l-2.3,0.04l-2.13,-0.33l-0.19,-1.63l-0.26,-0.26l-1.13,-0.13l-1.93,-1.13l-0.42,0.13l-0.88,1.82l0.08,0.37l1.47,1.15l-1.21,0.77l-0.1,0.1l-0.56,0.97l0.13,0.42l1.31,0.61l-0.36,1.35l0.01,0.2l0.85,1.95l0.37,2.05l-0.26,0.68l-1.55,-0.02l-3.09,0.54l-0.25,0.32l0.13,1.84l-1.21,1.4l-3.64,1.79l-2.79,3.04l-1.86,1.61l-2.48,1.68l-0.13,0.25l-0.0,1.0l-1.07,0.55l-2.21,0.9l-1.13,0.13l-0.25,0.19l-0.75,1.96l-0.02,0.15l0.52,3.31l0.13,2.03l-1.03,2.35l-0.03,0.12l-0.01,4.03l-1.02,0.1l-0.23,0.15l-1.14,1.93l0.04,0.36l0.44,0.48l-1.83,0.57l-0.18,0.15l-0.81,1.65l-0.74,0.53l-2.14,-2.12l-1.14,-3.47l-0.96,-2.57l-0.9,-1.26l-1.3,-2.38l-0.61,-3.14l-0.44,-1.62l-2.29,-3.56l-1.03,-4.94l-0.74,-3.29l0.01,-3.12l-0.49,-2.51l-0.41,-0.22l-3.56,1.53l-1.59,-0.28l-2.96,-2.87l0.94,-0.74l0.06,-0.41l-0.74,-1.03l-2.73,-2.1l1.35,-1.43l5.38,0.01l0.29,-0.36l-0.5,-2.29l-0.09,-0.15l-1.33,-1.28l-0.27,-1.96l-0.12,-0.2l-1.36,-1.0l2.42,-2.48l2.77,0.2l0.24,-0.1l2.62,-2.85l1.59,-2.8l2.41,-2.74l0.07,-0.2l-0.04,-1.82l2.01,-1.51l-0.01,-0.49l-1.95,-1.33l-0.83,-1.81l-0.82,-2.27l0.98,-0.97l3.64,0.66l2.89,-0.42l0.17,-0.08l2.18,-2.15Z\",\n      \"name\": \"India\"\n    },\n    \"TZ\": {\n      \"path\": \"M505.77,287.58l0.36,0.23l8.95,5.03l0.15,1.3l0.13,0.21l3.4,2.37l-1.07,2.88l-0.02,0.14l0.15,1.42l0.15,0.23l1.47,0.84l0.05,0.42l-0.66,1.44l-0.02,0.18l0.13,0.72l-0.16,1.16l0.03,0.19l0.87,1.57l1.03,2.48l0.12,0.14l0.53,0.32l-1.59,1.18l-2.64,0.95l-1.45,-0.04l-0.2,0.07l-0.81,0.69l-1.64,0.06l-0.68,0.3l-2.9,-0.69l-1.71,0.17l-0.65,-3.18l-0.05,-0.12l-1.35,-1.88l-0.19,-0.12l-2.41,-0.46l-1.38,-0.74l-1.63,-0.44l-0.96,-0.41l-0.95,-0.58l-1.31,-3.09l-1.47,-1.46l-0.45,-1.31l0.24,-1.34l-0.39,-1.99l0.71,-0.08l0.18,-0.09l0.91,-0.91l0.98,-1.31l0.59,-0.5l0.11,-0.24l-0.02,-0.81l-0.08,-0.2l-0.47,-0.5l-0.1,-0.67l0.51,-0.23l0.18,-0.25l0.14,-1.47l-0.05,-0.2l-0.76,-1.09l0.45,-0.15l2.71,0.03l5.01,-0.19Z\",\n      \"name\": \"Tanzania\"\n    },\n    \"AZ\": {\n      \"path\": \"M539.36,175.66l0.16,0.09l1.11,0.2l0.32,-0.15l0.4,-0.71l1.22,-0.99l1.11,1.33l1.26,2.09l0.22,0.14l1.06,0.13l0.28,0.29l-1.46,0.17l-0.26,0.24l-0.43,2.26l-0.39,0.92l-0.85,0.63l-0.12,0.25l0.06,1.2l-0.22,0.05l-1.28,-1.25l0.74,-1.25l-0.03,-0.35l-0.74,-0.86l-0.3,-0.1l-1.05,0.27l-2.49,1.82l-0.04,-1.46l-0.18,-0.27l-1.09,-0.47l-0.8,-0.6l0.53,-0.7l-0.06,-0.42l-1.11,-0.84l0.34,-0.51l-0.11,-0.43l-0.89,-0.48l-0.33,-0.49l0.25,-0.2l1.78,0.81l1.35,0.18l0.25,-0.09l0.34,-0.35l0.02,-0.39l-1.04,-1.36l0.28,-0.18l0.49,0.07l1.65,1.74ZM533.53,180.16l0.63,0.67l0.22,0.09l0.8,-0.0l0.04,0.31l0.66,1.09l-0.94,-0.21l-1.16,-1.24l-0.25,-0.71Z\",\n      \"name\": \"Azerbaijan\"\n    },\n    \"IE\": {\n      \"path\": \"M405.17,135.35l0.36,2.16l-1.78,2.84l-4.28,1.91l-3.02,-0.43l1.81,-3.13l0.02,-0.26l-1.23,-3.26l3.24,-2.56l1.54,-1.32l0.37,1.33l-0.49,1.77l0.3,0.38l1.49,-0.05l1.68,0.63Z\",\n      \"name\": \"Ireland\"\n    },\n    \"ID\": {\n      \"path\": \"M756.56,287.86l0.69,4.02l0.15,0.21l2.59,1.5l0.39,-0.07l2.05,-2.61l2.75,-1.45l2.09,-0.0l2.08,0.85l1.85,0.89l2.52,0.46l0.08,15.44l-1.72,-1.6l-0.15,-0.07l-2.54,-0.51l-0.29,0.1l-0.53,0.62l-2.53,0.06l0.78,-1.51l1.48,-0.66l0.17,-0.34l-0.65,-2.74l-1.23,-2.19l-0.14,-0.13l-4.85,-2.13l-2.09,-0.23l-3.7,-2.28l-0.41,0.1l-0.67,1.11l-0.63,0.14l-0.41,-0.67l-0.01,-1.01l-0.14,-0.25l-1.39,-0.89l2.05,-0.69l1.73,0.05l0.29,-0.39l-0.21,-0.66l-0.29,-0.21l-3.5,-0.0l-0.9,-1.36l-0.19,-0.13l-2.14,-0.44l-0.65,-0.76l2.86,-0.51l1.28,-0.79l3.75,0.96l0.32,0.76ZM758.01,300.37l-0.79,1.04l-0.14,-1.07l0.4,-0.81l0.29,-0.47l0.24,0.31l-0.0,1.0ZM747.45,292.9l0.48,1.02l-1.45,-0.69l-2.09,-0.21l-1.45,0.16l-1.28,-0.07l0.35,-0.81l2.86,-0.1l2.58,0.68ZM741.15,285.69l-0.16,-0.25l-0.72,-3.08l0.47,-1.86l0.35,-0.38l0.1,0.73l0.25,0.26l1.28,0.19l0.18,0.78l-0.11,1.8l-0.96,-0.18l-0.35,0.22l-0.38,1.52l0.05,0.24ZM741.19,285.75l0.76,0.97l-0.11,0.05l-0.65,-1.02ZM739.18,293.52l-0.61,0.54l-1.44,-0.38l-0.25,-0.55l1.93,-0.09l0.36,0.48ZM728.4,295.87l-0.27,-0.07l-2.26,0.89l-0.37,-0.41l0.27,-0.8l-0.09,-0.33l-1.68,-1.37l0.17,-2.29l-0.42,-0.3l-1.67,0.76l-0.17,0.29l0.21,2.92l0.09,3.34l-1.22,0.28l-0.78,-0.54l0.65,-2.1l0.01,-0.14l-0.39,-2.42l-0.29,-0.25l-0.86,-0.02l-0.63,-1.4l0.99,-1.61l0.35,-1.97l1.24,-3.73l0.49,-0.96l1.95,-1.7l1.86,0.69l3.16,0.35l2.92,-0.1l0.17,-0.06l2.24,-1.65l0.11,0.14l-1.8,2.22l-1.72,0.44l-2.41,-0.48l-4.21,0.13l-2.19,0.36l-0.25,0.24l-0.36,1.9l0.08,0.27l2.24,2.23l0.4,0.02l1.29,-1.08l3.19,-0.58l-0.19,0.06l-1.04,1.4l-2.13,0.94l-0.12,0.45l2.26,3.06l-0.37,0.69l0.03,0.32l1.51,1.95ZM728.48,295.97l0.59,0.76l-0.02,1.37l-1.0,0.55l-0.64,-0.58l1.09,-1.84l-0.02,-0.26ZM728.64,286.95l0.79,-0.14l-0.07,0.39l-0.72,-0.24ZM732.38,310.1l-1.89,0.49l-0.06,-0.06l0.17,-0.64l1.0,-1.42l2.14,-0.87l0.1,0.2l0.04,0.58l-1.49,1.72ZM728.26,305.71l-0.17,0.63l-3.53,0.67l-3.02,-0.28l-0.0,-0.42l1.66,-0.44l1.47,0.71l0.16,0.03l1.75,-0.21l1.69,-0.69ZM722.98,310.33l-0.74,0.03l-2.52,-1.35l1.42,-0.3l1.19,0.7l0.72,0.63l-0.06,0.28ZM716.24,305.63l0.66,0.49l0.22,0.06l1.35,-0.18l0.31,0.53l-4.18,0.77l-0.8,-0.01l0.51,-0.86l1.2,-0.02l0.24,-0.12l0.49,-0.65ZM715.84,280.21l0.09,0.34l2.25,1.86l-2.25,0.22l-0.24,0.17l-0.84,1.71l-0.03,0.15l0.1,2.11l-2.27,1.62l-0.13,0.24l-0.06,2.46l-0.74,2.92l-0.02,-0.05l-0.39,-0.16l-2.62,1.04l-0.86,-1.33l-0.23,-0.14l-1.71,-0.14l-1.19,-0.76l-0.25,-0.03l-2.78,0.84l-0.79,-1.05l-0.26,-0.12l-1.61,0.13l-1.8,-0.25l-0.36,-3.13l-0.15,-0.23l-1.18,-0.65l-1.13,-2.02l-0.33,-2.1l0.27,-2.19l1.05,-1.17l0.28,1.12l0.1,0.16l1.71,1.41l0.28,0.05l1.55,-0.49l1.54,0.17l0.23,-0.07l1.4,-1.21l1.05,-0.19l2.3,0.68l0.16,0.0l2.04,-0.53l0.21,-0.19l1.26,-3.41l0.91,-0.82l0.09,-0.14l0.8,-2.64l2.63,0.0l1.71,0.33l-1.19,1.89l0.02,0.34l1.74,2.24l-0.37,1.0ZM692.67,302.0l0.26,0.19l4.8,0.25l0.28,-0.16l0.44,-0.83l4.29,1.12l0.85,1.52l0.23,0.15l3.71,0.45l2.37,1.15l-2.06,0.69l-2.77,-1.0l-2.25,0.07l-2.57,-0.18l-2.31,-0.45l-2.94,-0.97l-1.84,-0.25l-0.13,0.01l-0.97,0.29l-4.34,-0.98l-0.38,-0.94l-0.25,-0.19l-1.76,-0.14l1.31,-1.84l2.81,0.14l1.97,0.96l0.95,0.19l0.28,0.74ZM685.63,299.27l-2.36,0.04l-2.07,-2.05l-3.17,-2.02l-1.06,-1.5l-1.88,-2.02l-1.22,-1.85l-1.9,-3.49l-2.2,-2.11l-0.71,-2.08l-0.94,-1.99l-0.1,-0.12l-2.21,-1.54l-1.35,-2.17l-1.86,-1.39l-2.53,-2.68l-0.14,-0.81l1.22,0.08l3.76,0.47l2.16,2.4l1.94,1.7l1.37,1.04l2.35,2.67l0.22,0.1l2.44,0.04l1.99,1.62l1.42,2.06l0.09,0.09l1.67,1.0l-0.88,1.8l0.11,0.39l1.44,0.87l0.13,0.04l0.68,0.05l0.41,1.62l0.87,1.4l0.22,0.14l1.71,0.21l1.06,1.38l-0.61,3.04l-0.09,3.6Z\",\n      \"name\": \"Indonesia\"\n    },\n    \"UA\": {\n      \"path\": \"M500.54,141.42l0.9,0.13l0.27,-0.11l0.52,-0.62l0.68,0.13l2.43,-0.3l1.32,1.57l-0.45,0.48l-0.07,0.26l0.21,1.03l0.27,0.24l1.85,0.15l0.76,1.22l-0.05,0.55l0.2,0.31l3.18,1.15l0.18,0.01l1.75,-0.47l1.42,1.41l0.22,0.09l1.42,-0.03l3.44,0.99l0.02,0.65l-0.97,1.62l-0.03,0.24l0.52,1.67l-0.29,0.79l-2.24,0.22l-0.14,0.05l-1.29,0.89l-0.13,0.23l-0.07,1.16l-1.75,0.22l-0.12,0.04l-1.6,0.98l-2.27,0.16l-0.12,0.04l-2.16,1.17l-0.16,0.29l0.15,1.94l0.14,0.23l1.23,0.75l0.18,0.04l2.06,-0.15l-0.22,0.51l-2.67,0.54l-3.27,1.72l-1.0,-0.45l0.45,-1.19l-0.19,-0.39l-2.34,-0.78l0.15,-0.2l2.32,-1.0l0.09,-0.49l-0.73,-0.72l-0.15,-0.08l-3.69,-0.75l-0.14,-0.96l-0.35,-0.25l-2.32,0.39l-0.21,0.15l-0.91,1.7l-1.77,2.1l-0.93,-0.44l-0.24,-0.0l-1.05,0.45l-0.48,-0.25l0.13,-0.07l0.14,-0.15l0.43,-1.04l0.67,-0.97l0.04,-0.26l-0.1,-0.31l0.04,-0.02l0.11,0.19l0.24,0.15l1.48,0.09l0.78,-0.25l0.07,-0.53l-0.27,-0.19l0.09,-0.25l-0.08,-0.33l-0.81,-0.74l-0.34,-1.24l-0.14,-0.18l-0.73,-0.42l0.15,-0.87l-0.11,-0.29l-1.13,-0.86l-0.15,-0.06l-0.97,-0.11l-1.79,-0.97l-0.2,-0.03l-1.66,0.32l-0.13,0.06l-0.52,0.41l-0.95,-0.0l-0.23,0.11l-0.56,0.66l-1.74,0.29l-0.79,0.43l-1.01,-0.68l-0.16,-0.05l-1.57,-0.01l-1.52,-0.35l-0.23,0.04l-0.71,0.45l-0.09,-0.43l-0.13,-0.19l-1.18,-0.74l0.38,-1.02l0.53,-0.64l0.35,0.12l0.37,-0.41l-0.57,-1.29l2.1,-2.5l1.16,-0.36l0.2,-0.2l0.27,-0.92l-0.01,-0.2l-1.1,-2.52l0.79,-0.09l0.13,-0.05l1.3,-0.86l1.83,-0.07l2.48,0.26l2.84,0.8l1.91,0.06l0.88,0.45l0.29,-0.01l0.72,-0.44l0.49,0.58l0.25,0.11l2.2,-0.16l0.94,0.3l0.39,-0.26l0.15,-1.57l0.61,-0.59l2.01,-0.19Z\",\n      \"name\": \"Ukraine\"\n    },\n    \"QA\": {\n      \"path\": \"M548.47,221.47l-0.15,-1.72l0.59,-1.23l0.38,-0.16l0.54,0.6l0.04,1.4l-0.47,1.37l-0.41,0.11l-0.53,-0.37Z\",\n      \"name\": \"Qatar\"\n    },\n    \"MZ\": {\n      \"path\": \"M507.71,314.14l1.65,-0.18l2.96,0.7l0.2,-0.02l0.6,-0.29l1.68,-0.06l0.18,-0.07l0.8,-0.69l1.5,0.02l2.74,-0.98l1.74,-1.27l0.25,0.7l-0.1,2.47l0.31,2.27l0.1,3.97l0.42,1.24l-0.7,1.71l-0.94,1.73l-1.52,1.52l-5.06,2.21l-2.88,2.8l-1.01,0.51l-1.72,1.81l-0.99,0.58l-0.15,0.23l-0.21,1.86l0.04,0.19l1.17,1.95l0.47,1.47l0.03,0.74l0.39,0.28l0.05,-0.01l-0.06,2.13l-0.39,1.19l0.1,0.33l0.42,0.32l-0.28,0.83l-0.95,0.86l-2.03,0.88l-3.08,1.49l-1.1,0.99l-0.09,0.28l0.21,1.13l0.21,0.23l0.38,0.11l-0.14,0.89l-1.39,-0.02l-0.17,-0.94l-0.38,-1.23l-0.2,-0.89l0.44,-2.91l-0.01,-0.14l-0.65,-1.88l-1.15,-3.55l2.52,-2.85l0.68,-1.89l0.29,-0.18l0.14,-0.2l0.28,-1.53l-0.03,-0.19l-0.36,-0.7l0.1,-1.83l0.49,-1.84l-0.01,-3.26l-0.14,-0.25l-1.3,-0.83l-0.11,-0.04l-1.08,-0.17l-0.47,-0.55l-0.1,-0.08l-1.16,-0.54l-0.13,-0.03l-1.83,0.04l-0.32,-2.25l7.19,-1.99l1.32,1.12l0.29,0.06l0.55,-0.19l0.75,0.49l0.11,0.81l-0.49,1.11l-0.02,0.15l0.19,1.81l0.09,0.18l1.63,1.59l0.48,-0.1l0.72,-1.68l0.99,-0.49l0.17,-0.29l-0.21,-3.29l-0.04,-0.13l-1.11,-1.92l-0.9,-0.82l-0.21,-0.08l-0.62,0.03l-0.63,-2.98l0.61,-1.67Z\",\n      \"name\": \"Mozambique\"\n    }\n  },\n  \"height\": 440.7063107441331,\n  \"projection\": {\n    \"type\": \"mill\",\n    \"centralMeridian\": 11.5\n  },\n  \"width\": 900.0\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery-jvectormap.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/jquery-ui.min.js":
/*!**********************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/jquery-ui.min.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*! jQuery UI - v1.12.1 - 2016-09-14\n* http://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n(function (t) {\n   true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;\n})(function (t) {\n  function e(t) {\n    for (var e = t.css(\"visibility\"); \"inherit\" === e;) t = t.parent(), e = t.css(\"visibility\");\n    return \"hidden\" !== e;\n  }\n  function i(t) {\n    for (var e, i; t.length && t[0] !== document;) {\n      if (e = t.css(\"position\"), (\"absolute\" === e || \"relative\" === e || \"fixed\" === e) && (i = parseInt(t.css(\"zIndex\"), 10), !isNaN(i) && 0 !== i)) return i;\n      t = t.parent();\n    }\n    return 0;\n  }\n  function s() {\n    this._curInst = null, this._keyEvent = !1, this._disabledInputs = [], this._datepickerShowing = !1, this._inDialog = !1, this._mainDivId = \"ui-datepicker-div\", this._inlineClass = \"ui-datepicker-inline\", this._appendClass = \"ui-datepicker-append\", this._triggerClass = \"ui-datepicker-trigger\", this._dialogClass = \"ui-datepicker-dialog\", this._disableClass = \"ui-datepicker-disabled\", this._unselectableClass = \"ui-datepicker-unselectable\", this._currentClass = \"ui-datepicker-current-day\", this._dayOverClass = \"ui-datepicker-days-cell-over\", this.regional = [], this.regional[\"\"] = {\n      closeText: \"Done\",\n      prevText: \"Prev\",\n      nextText: \"Next\",\n      currentText: \"Today\",\n      monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n      monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n      dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n      dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n      dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n      weekHeader: \"Wk\",\n      dateFormat: \"mm/dd/yy\",\n      firstDay: 0,\n      isRTL: !1,\n      showMonthAfterYear: !1,\n      yearSuffix: \"\"\n    }, this._defaults = {\n      showOn: \"focus\",\n      showAnim: \"fadeIn\",\n      showOptions: {},\n      defaultDate: null,\n      appendText: \"\",\n      buttonText: \"...\",\n      buttonImage: \"\",\n      buttonImageOnly: !1,\n      hideIfNoPrevNext: !1,\n      navigationAsDateFormat: !1,\n      gotoCurrent: !1,\n      changeMonth: !1,\n      changeYear: !1,\n      yearRange: \"c-10:c+10\",\n      showOtherMonths: !1,\n      selectOtherMonths: !1,\n      showWeek: !1,\n      calculateWeek: this.iso8601Week,\n      shortYearCutoff: \"+10\",\n      minDate: null,\n      maxDate: null,\n      duration: \"fast\",\n      beforeShowDay: null,\n      beforeShow: null,\n      onSelect: null,\n      onChangeMonthYear: null,\n      onClose: null,\n      numberOfMonths: 1,\n      showCurrentAtPos: 0,\n      stepMonths: 1,\n      stepBigMonths: 12,\n      altField: \"\",\n      altFormat: \"\",\n      constrainInput: !0,\n      showButtonPanel: !1,\n      autoSize: !1,\n      disabled: !1\n    }, t.extend(this._defaults, this.regional[\"\"]), this.regional.en = t.extend(!0, {}, this.regional[\"\"]), this.regional[\"en-US\"] = t.extend(!0, {}, this.regional.en), this.dpDiv = n(t(\"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"));\n  }\n  function n(e) {\n    var i = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\n    return e.on(\"mouseout\", i, function () {\n      t(this).removeClass(\"ui-state-hover\"), -1 !== this.className.indexOf(\"ui-datepicker-prev\") && t(this).removeClass(\"ui-datepicker-prev-hover\"), -1 !== this.className.indexOf(\"ui-datepicker-next\") && t(this).removeClass(\"ui-datepicker-next-hover\");\n    }).on(\"mouseover\", i, o);\n  }\n  function o() {\n    t.datepicker._isDisabledDatepicker(m.inline ? m.dpDiv.parent()[0] : m.input[0]) || (t(this).parents(\".ui-datepicker-calendar\").find(\"a\").removeClass(\"ui-state-hover\"), t(this).addClass(\"ui-state-hover\"), -1 !== this.className.indexOf(\"ui-datepicker-prev\") && t(this).addClass(\"ui-datepicker-prev-hover\"), -1 !== this.className.indexOf(\"ui-datepicker-next\") && t(this).addClass(\"ui-datepicker-next-hover\"));\n  }\n  function a(e, i) {\n    t.extend(e, i);\n    for (var s in i) null == i[s] && (e[s] = i[s]);\n    return e;\n  }\n  function r(t) {\n    return function () {\n      var e = this.element.val();\n      t.apply(this, arguments), this._refresh(), e !== this.element.val() && this._trigger(\"change\");\n    };\n  }\n  t.ui = t.ui || {}, t.ui.version = \"1.12.1\";\n  var h = 0,\n    l = Array.prototype.slice;\n  t.cleanData = function (e) {\n    return function (i) {\n      var s, n, o;\n      for (o = 0; null != (n = i[o]); o++) try {\n        s = t._data(n, \"events\"), s && s.remove && t(n).triggerHandler(\"remove\");\n      } catch (a) {}\n      e(i);\n    };\n  }(t.cleanData), t.widget = function (e, i, s) {\n    var n,\n      o,\n      a,\n      r = {},\n      h = e.split(\".\")[0];\n    e = e.split(\".\")[1];\n    var l = h + \"-\" + e;\n    return s || (s = i, i = t.Widget), t.isArray(s) && (s = t.extend.apply(null, [{}].concat(s))), t.expr[\":\"][l.toLowerCase()] = function (e) {\n      return !!t.data(e, l);\n    }, t[h] = t[h] || {}, n = t[h][e], o = t[h][e] = function (t, e) {\n      return this._createWidget ? (arguments.length && this._createWidget(t, e), void 0) : new o(t, e);\n    }, t.extend(o, n, {\n      version: s.version,\n      _proto: t.extend({}, s),\n      _childConstructors: []\n    }), a = new i(), a.options = t.widget.extend({}, a.options), t.each(s, function (e, s) {\n      return t.isFunction(s) ? (r[e] = function () {\n        function t() {\n          return i.prototype[e].apply(this, arguments);\n        }\n        function n(t) {\n          return i.prototype[e].apply(this, t);\n        }\n        return function () {\n          var e,\n            i = this._super,\n            o = this._superApply;\n          return this._super = t, this._superApply = n, e = s.apply(this, arguments), this._super = i, this._superApply = o, e;\n        };\n      }(), void 0) : (r[e] = s, void 0);\n    }), o.prototype = t.widget.extend(a, {\n      widgetEventPrefix: n ? a.widgetEventPrefix || e : e\n    }, r, {\n      constructor: o,\n      namespace: h,\n      widgetName: e,\n      widgetFullName: l\n    }), n ? (t.each(n._childConstructors, function (e, i) {\n      var s = i.prototype;\n      t.widget(s.namespace + \".\" + s.widgetName, o, i._proto);\n    }), delete n._childConstructors) : i._childConstructors.push(o), t.widget.bridge(e, o), o;\n  }, t.widget.extend = function (e) {\n    for (var i, s, n = l.call(arguments, 1), o = 0, a = n.length; a > o; o++) for (i in n[o]) s = n[o][i], n[o].hasOwnProperty(i) && void 0 !== s && (e[i] = t.isPlainObject(s) ? t.isPlainObject(e[i]) ? t.widget.extend({}, e[i], s) : t.widget.extend({}, s) : s);\n    return e;\n  }, t.widget.bridge = function (e, i) {\n    var s = i.prototype.widgetFullName || e;\n    t.fn[e] = function (n) {\n      var o = \"string\" == typeof n,\n        a = l.call(arguments, 1),\n        r = this;\n      return o ? this.length || \"instance\" !== n ? this.each(function () {\n        var i,\n          o = t.data(this, s);\n        return \"instance\" === n ? (r = o, !1) : o ? t.isFunction(o[n]) && \"_\" !== n.charAt(0) ? (i = o[n].apply(o, a), i !== o && void 0 !== i ? (r = i && i.jquery ? r.pushStack(i.get()) : i, !1) : void 0) : t.error(\"no such method '\" + n + \"' for \" + e + \" widget instance\") : t.error(\"cannot call methods on \" + e + \" prior to initialization; \" + \"attempted to call method '\" + n + \"'\");\n      }) : r = void 0 : (a.length && (n = t.widget.extend.apply(null, [n].concat(a))), this.each(function () {\n        var e = t.data(this, s);\n        e ? (e.option(n || {}), e._init && e._init()) : t.data(this, s, new i(n, this));\n      })), r;\n    };\n  }, t.Widget = function () {}, t.Widget._childConstructors = [], t.Widget.prototype = {\n    widgetName: \"widget\",\n    widgetEventPrefix: \"\",\n    defaultElement: \"<div>\",\n    options: {\n      classes: {},\n      disabled: !1,\n      create: null\n    },\n    _createWidget: function _createWidget(e, i) {\n      i = t(i || this.defaultElement || this)[0], this.element = t(i), this.uuid = h++, this.eventNamespace = \".\" + this.widgetName + this.uuid, this.bindings = t(), this.hoverable = t(), this.focusable = t(), this.classesElementLookup = {}, i !== this && (t.data(i, this.widgetFullName, this), this._on(!0, this.element, {\n        remove: function remove(t) {\n          t.target === i && this.destroy();\n        }\n      }), this.document = t(i.style ? i.ownerDocument : i.document || i), this.window = t(this.document[0].defaultView || this.document[0].parentWindow)), this.options = t.widget.extend({}, this.options, this._getCreateOptions(), e), this._create(), this.options.disabled && this._setOptionDisabled(this.options.disabled), this._trigger(\"create\", null, this._getCreateEventData()), this._init();\n    },\n    _getCreateOptions: function _getCreateOptions() {\n      return {};\n    },\n    _getCreateEventData: t.noop,\n    _create: t.noop,\n    _init: t.noop,\n    destroy: function destroy() {\n      var e = this;\n      this._destroy(), t.each(this.classesElementLookup, function (t, i) {\n        e._removeClass(i, t);\n      }), this.element.off(this.eventNamespace).removeData(this.widgetFullName), this.widget().off(this.eventNamespace).removeAttr(\"aria-disabled\"), this.bindings.off(this.eventNamespace);\n    },\n    _destroy: t.noop,\n    widget: function widget() {\n      return this.element;\n    },\n    option: function option(e, i) {\n      var s,\n        n,\n        o,\n        a = e;\n      if (0 === arguments.length) return t.widget.extend({}, this.options);\n      if (\"string\" == typeof e) if (a = {}, s = e.split(\".\"), e = s.shift(), s.length) {\n        for (n = a[e] = t.widget.extend({}, this.options[e]), o = 0; s.length - 1 > o; o++) n[s[o]] = n[s[o]] || {}, n = n[s[o]];\n        if (e = s.pop(), 1 === arguments.length) return void 0 === n[e] ? null : n[e];\n        n[e] = i;\n      } else {\n        if (1 === arguments.length) return void 0 === this.options[e] ? null : this.options[e];\n        a[e] = i;\n      }\n      return this._setOptions(a), this;\n    },\n    _setOptions: function _setOptions(t) {\n      var e;\n      for (e in t) this._setOption(e, t[e]);\n      return this;\n    },\n    _setOption: function _setOption(t, e) {\n      return \"classes\" === t && this._setOptionClasses(e), this.options[t] = e, \"disabled\" === t && this._setOptionDisabled(e), this;\n    },\n    _setOptionClasses: function _setOptionClasses(e) {\n      var i, s, n;\n      for (i in e) n = this.classesElementLookup[i], e[i] !== this.options.classes[i] && n && n.length && (s = t(n.get()), this._removeClass(n, i), s.addClass(this._classes({\n        element: s,\n        keys: i,\n        classes: e,\n        add: !0\n      })));\n    },\n    _setOptionDisabled: function _setOptionDisabled(t) {\n      this._toggleClass(this.widget(), this.widgetFullName + \"-disabled\", null, !!t), t && (this._removeClass(this.hoverable, null, \"ui-state-hover\"), this._removeClass(this.focusable, null, \"ui-state-focus\"));\n    },\n    enable: function enable() {\n      return this._setOptions({\n        disabled: !1\n      });\n    },\n    disable: function disable() {\n      return this._setOptions({\n        disabled: !0\n      });\n    },\n    _classes: function _classes(e) {\n      function i(i, o) {\n        var a, r;\n        for (r = 0; i.length > r; r++) a = n.classesElementLookup[i[r]] || t(), a = e.add ? t(t.unique(a.get().concat(e.element.get()))) : t(a.not(e.element).get()), n.classesElementLookup[i[r]] = a, s.push(i[r]), o && e.classes[i[r]] && s.push(e.classes[i[r]]);\n      }\n      var s = [],\n        n = this;\n      return e = t.extend({\n        element: this.element,\n        classes: this.options.classes || {}\n      }, e), this._on(e.element, {\n        remove: \"_untrackClassesElement\"\n      }), e.keys && i(e.keys.match(/\\S+/g) || [], !0), e.extra && i(e.extra.match(/\\S+/g) || []), s.join(\" \");\n    },\n    _untrackClassesElement: function _untrackClassesElement(e) {\n      var i = this;\n      t.each(i.classesElementLookup, function (s, n) {\n        -1 !== t.inArray(e.target, n) && (i.classesElementLookup[s] = t(n.not(e.target).get()));\n      });\n    },\n    _removeClass: function _removeClass(t, e, i) {\n      return this._toggleClass(t, e, i, !1);\n    },\n    _addClass: function _addClass(t, e, i) {\n      return this._toggleClass(t, e, i, !0);\n    },\n    _toggleClass: function _toggleClass(t, e, i, s) {\n      s = \"boolean\" == typeof s ? s : i;\n      var n = \"string\" == typeof t || null === t,\n        o = {\n          extra: n ? e : i,\n          keys: n ? t : e,\n          element: n ? this.element : t,\n          add: s\n        };\n      return o.element.toggleClass(this._classes(o), s), this;\n    },\n    _on: function _on(e, i, s) {\n      var n,\n        o = this;\n      \"boolean\" != typeof e && (s = i, i = e, e = !1), s ? (i = n = t(i), this.bindings = this.bindings.add(i)) : (s = i, i = this.element, n = this.widget()), t.each(s, function (s, a) {\n        function r() {\n          return e || o.options.disabled !== !0 && !t(this).hasClass(\"ui-state-disabled\") ? (\"string\" == typeof a ? o[a] : a).apply(o, arguments) : void 0;\n        }\n        \"string\" != typeof a && (r.guid = a.guid = a.guid || r.guid || t.guid++);\n        var h = s.match(/^([\\w:-]*)\\s*(.*)$/),\n          l = h[1] + o.eventNamespace,\n          c = h[2];\n        c ? n.on(l, c, r) : i.on(l, r);\n      });\n    },\n    _off: function _off(e, i) {\n      i = (i || \"\").split(\" \").join(this.eventNamespace + \" \") + this.eventNamespace, e.off(i).off(i), this.bindings = t(this.bindings.not(e).get()), this.focusable = t(this.focusable.not(e).get()), this.hoverable = t(this.hoverable.not(e).get());\n    },\n    _delay: function _delay(t, e) {\n      function i() {\n        return (\"string\" == typeof t ? s[t] : t).apply(s, arguments);\n      }\n      var s = this;\n      return setTimeout(i, e || 0);\n    },\n    _hoverable: function _hoverable(e) {\n      this.hoverable = this.hoverable.add(e), this._on(e, {\n        mouseenter: function mouseenter(e) {\n          this._addClass(t(e.currentTarget), null, \"ui-state-hover\");\n        },\n        mouseleave: function mouseleave(e) {\n          this._removeClass(t(e.currentTarget), null, \"ui-state-hover\");\n        }\n      });\n    },\n    _focusable: function _focusable(e) {\n      this.focusable = this.focusable.add(e), this._on(e, {\n        focusin: function focusin(e) {\n          this._addClass(t(e.currentTarget), null, \"ui-state-focus\");\n        },\n        focusout: function focusout(e) {\n          this._removeClass(t(e.currentTarget), null, \"ui-state-focus\");\n        }\n      });\n    },\n    _trigger: function _trigger(e, i, s) {\n      var n,\n        o,\n        a = this.options[e];\n      if (s = s || {}, i = t.Event(i), i.type = (e === this.widgetEventPrefix ? e : this.widgetEventPrefix + e).toLowerCase(), i.target = this.element[0], o = i.originalEvent) for (n in o) n in i || (i[n] = o[n]);\n      return this.element.trigger(i, s), !(t.isFunction(a) && a.apply(this.element[0], [i].concat(s)) === !1 || i.isDefaultPrevented());\n    }\n  }, t.each({\n    show: \"fadeIn\",\n    hide: \"fadeOut\"\n  }, function (e, i) {\n    t.Widget.prototype[\"_\" + e] = function (s, n, o) {\n      \"string\" == typeof n && (n = {\n        effect: n\n      });\n      var a,\n        r = n ? n === !0 || \"number\" == typeof n ? i : n.effect || i : e;\n      n = n || {}, \"number\" == typeof n && (n = {\n        duration: n\n      }), a = !t.isEmptyObject(n), n.complete = o, n.delay && s.delay(n.delay), a && t.effects && t.effects.effect[r] ? s[e](n) : r !== e && s[r] ? s[r](n.duration, n.easing, o) : s.queue(function (i) {\n        t(this)[e](), o && o.call(s[0]), i();\n      });\n    };\n  }), t.widget, function () {\n    function e(t, e, i) {\n      return [parseFloat(t[0]) * (u.test(t[0]) ? e / 100 : 1), parseFloat(t[1]) * (u.test(t[1]) ? i / 100 : 1)];\n    }\n    function i(e, i) {\n      return parseInt(t.css(e, i), 10) || 0;\n    }\n    function s(e) {\n      var i = e[0];\n      return 9 === i.nodeType ? {\n        width: e.width(),\n        height: e.height(),\n        offset: {\n          top: 0,\n          left: 0\n        }\n      } : t.isWindow(i) ? {\n        width: e.width(),\n        height: e.height(),\n        offset: {\n          top: e.scrollTop(),\n          left: e.scrollLeft()\n        }\n      } : i.preventDefault ? {\n        width: 0,\n        height: 0,\n        offset: {\n          top: i.pageY,\n          left: i.pageX\n        }\n      } : {\n        width: e.outerWidth(),\n        height: e.outerHeight(),\n        offset: e.offset()\n      };\n    }\n    var n,\n      o = Math.max,\n      a = Math.abs,\n      r = /left|center|right/,\n      h = /top|center|bottom/,\n      l = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n      c = /^\\w+/,\n      u = /%$/,\n      d = t.fn.position;\n    t.position = {\n      scrollbarWidth: function scrollbarWidth() {\n        if (void 0 !== n) return n;\n        var e,\n          i,\n          s = t(\"<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\"),\n          o = s.children()[0];\n        return t(\"body\").append(s), e = o.offsetWidth, s.css(\"overflow\", \"scroll\"), i = o.offsetWidth, e === i && (i = s[0].clientWidth), s.remove(), n = e - i;\n      },\n      getScrollInfo: function getScrollInfo(e) {\n        var i = e.isWindow || e.isDocument ? \"\" : e.element.css(\"overflow-x\"),\n          s = e.isWindow || e.isDocument ? \"\" : e.element.css(\"overflow-y\"),\n          n = \"scroll\" === i || \"auto\" === i && e.width < e.element[0].scrollWidth,\n          o = \"scroll\" === s || \"auto\" === s && e.height < e.element[0].scrollHeight;\n        return {\n          width: o ? t.position.scrollbarWidth() : 0,\n          height: n ? t.position.scrollbarWidth() : 0\n        };\n      },\n      getWithinInfo: function getWithinInfo(e) {\n        var i = t(e || window),\n          s = t.isWindow(i[0]),\n          n = !!i[0] && 9 === i[0].nodeType,\n          o = !s && !n;\n        return {\n          element: i,\n          isWindow: s,\n          isDocument: n,\n          offset: o ? t(e).offset() : {\n            left: 0,\n            top: 0\n          },\n          scrollLeft: i.scrollLeft(),\n          scrollTop: i.scrollTop(),\n          width: i.outerWidth(),\n          height: i.outerHeight()\n        };\n      }\n    }, t.fn.position = function (n) {\n      if (!n || !n.of) return d.apply(this, arguments);\n      n = t.extend({}, n);\n      var u,\n        p,\n        f,\n        g,\n        m,\n        _,\n        v = t(n.of),\n        b = t.position.getWithinInfo(n.within),\n        y = t.position.getScrollInfo(b),\n        w = (n.collision || \"flip\").split(\" \"),\n        k = {};\n      return _ = s(v), v[0].preventDefault && (n.at = \"left top\"), p = _.width, f = _.height, g = _.offset, m = t.extend({}, g), t.each([\"my\", \"at\"], function () {\n        var t,\n          e,\n          i = (n[this] || \"\").split(\" \");\n        1 === i.length && (i = r.test(i[0]) ? i.concat([\"center\"]) : h.test(i[0]) ? [\"center\"].concat(i) : [\"center\", \"center\"]), i[0] = r.test(i[0]) ? i[0] : \"center\", i[1] = h.test(i[1]) ? i[1] : \"center\", t = l.exec(i[0]), e = l.exec(i[1]), k[this] = [t ? t[0] : 0, e ? e[0] : 0], n[this] = [c.exec(i[0])[0], c.exec(i[1])[0]];\n      }), 1 === w.length && (w[1] = w[0]), \"right\" === n.at[0] ? m.left += p : \"center\" === n.at[0] && (m.left += p / 2), \"bottom\" === n.at[1] ? m.top += f : \"center\" === n.at[1] && (m.top += f / 2), u = e(k.at, p, f), m.left += u[0], m.top += u[1], this.each(function () {\n        var s,\n          r,\n          h = t(this),\n          l = h.outerWidth(),\n          c = h.outerHeight(),\n          d = i(this, \"marginLeft\"),\n          _ = i(this, \"marginTop\"),\n          x = l + d + i(this, \"marginRight\") + y.width,\n          C = c + _ + i(this, \"marginBottom\") + y.height,\n          D = t.extend({}, m),\n          I = e(k.my, h.outerWidth(), h.outerHeight());\n        \"right\" === n.my[0] ? D.left -= l : \"center\" === n.my[0] && (D.left -= l / 2), \"bottom\" === n.my[1] ? D.top -= c : \"center\" === n.my[1] && (D.top -= c / 2), D.left += I[0], D.top += I[1], s = {\n          marginLeft: d,\n          marginTop: _\n        }, t.each([\"left\", \"top\"], function (e, i) {\n          t.ui.position[w[e]] && t.ui.position[w[e]][i](D, {\n            targetWidth: p,\n            targetHeight: f,\n            elemWidth: l,\n            elemHeight: c,\n            collisionPosition: s,\n            collisionWidth: x,\n            collisionHeight: C,\n            offset: [u[0] + I[0], u[1] + I[1]],\n            my: n.my,\n            at: n.at,\n            within: b,\n            elem: h\n          });\n        }), n.using && (r = function r(t) {\n          var e = g.left - D.left,\n            i = e + p - l,\n            s = g.top - D.top,\n            r = s + f - c,\n            u = {\n              target: {\n                element: v,\n                left: g.left,\n                top: g.top,\n                width: p,\n                height: f\n              },\n              element: {\n                element: h,\n                left: D.left,\n                top: D.top,\n                width: l,\n                height: c\n              },\n              horizontal: 0 > i ? \"left\" : e > 0 ? \"right\" : \"center\",\n              vertical: 0 > r ? \"top\" : s > 0 ? \"bottom\" : \"middle\"\n            };\n          l > p && p > a(e + i) && (u.horizontal = \"center\"), c > f && f > a(s + r) && (u.vertical = \"middle\"), u.important = o(a(e), a(i)) > o(a(s), a(r)) ? \"horizontal\" : \"vertical\", n.using.call(this, t, u);\n        }), h.offset(t.extend(D, {\n          using: r\n        }));\n      });\n    }, t.ui.position = {\n      fit: {\n        left: function left(t, e) {\n          var i,\n            s = e.within,\n            n = s.isWindow ? s.scrollLeft : s.offset.left,\n            a = s.width,\n            r = t.left - e.collisionPosition.marginLeft,\n            h = n - r,\n            l = r + e.collisionWidth - a - n;\n          e.collisionWidth > a ? h > 0 && 0 >= l ? (i = t.left + h + e.collisionWidth - a - n, t.left += h - i) : t.left = l > 0 && 0 >= h ? n : h > l ? n + a - e.collisionWidth : n : h > 0 ? t.left += h : l > 0 ? t.left -= l : t.left = o(t.left - r, t.left);\n        },\n        top: function top(t, e) {\n          var i,\n            s = e.within,\n            n = s.isWindow ? s.scrollTop : s.offset.top,\n            a = e.within.height,\n            r = t.top - e.collisionPosition.marginTop,\n            h = n - r,\n            l = r + e.collisionHeight - a - n;\n          e.collisionHeight > a ? h > 0 && 0 >= l ? (i = t.top + h + e.collisionHeight - a - n, t.top += h - i) : t.top = l > 0 && 0 >= h ? n : h > l ? n + a - e.collisionHeight : n : h > 0 ? t.top += h : l > 0 ? t.top -= l : t.top = o(t.top - r, t.top);\n        }\n      },\n      flip: {\n        left: function left(t, e) {\n          var i,\n            s,\n            n = e.within,\n            o = n.offset.left + n.scrollLeft,\n            r = n.width,\n            h = n.isWindow ? n.scrollLeft : n.offset.left,\n            l = t.left - e.collisionPosition.marginLeft,\n            c = l - h,\n            u = l + e.collisionWidth - r - h,\n            d = \"left\" === e.my[0] ? -e.elemWidth : \"right\" === e.my[0] ? e.elemWidth : 0,\n            p = \"left\" === e.at[0] ? e.targetWidth : \"right\" === e.at[0] ? -e.targetWidth : 0,\n            f = -2 * e.offset[0];\n          0 > c ? (i = t.left + d + p + f + e.collisionWidth - r - o, (0 > i || a(c) > i) && (t.left += d + p + f)) : u > 0 && (s = t.left - e.collisionPosition.marginLeft + d + p + f - h, (s > 0 || u > a(s)) && (t.left += d + p + f));\n        },\n        top: function top(t, e) {\n          var i,\n            s,\n            n = e.within,\n            o = n.offset.top + n.scrollTop,\n            r = n.height,\n            h = n.isWindow ? n.scrollTop : n.offset.top,\n            l = t.top - e.collisionPosition.marginTop,\n            c = l - h,\n            u = l + e.collisionHeight - r - h,\n            d = \"top\" === e.my[1],\n            p = d ? -e.elemHeight : \"bottom\" === e.my[1] ? e.elemHeight : 0,\n            f = \"top\" === e.at[1] ? e.targetHeight : \"bottom\" === e.at[1] ? -e.targetHeight : 0,\n            g = -2 * e.offset[1];\n          0 > c ? (s = t.top + p + f + g + e.collisionHeight - r - o, (0 > s || a(c) > s) && (t.top += p + f + g)) : u > 0 && (i = t.top - e.collisionPosition.marginTop + p + f + g - h, (i > 0 || u > a(i)) && (t.top += p + f + g));\n        }\n      },\n      flipfit: {\n        left: function left() {\n          t.ui.position.flip.left.apply(this, arguments), t.ui.position.fit.left.apply(this, arguments);\n        },\n        top: function top() {\n          t.ui.position.flip.top.apply(this, arguments), t.ui.position.fit.top.apply(this, arguments);\n        }\n      }\n    };\n  }(), t.ui.position, t.extend(t.expr[\":\"], {\n    data: t.expr.createPseudo ? t.expr.createPseudo(function (e) {\n      return function (i) {\n        return !!t.data(i, e);\n      };\n    }) : function (e, i, s) {\n      return !!t.data(e, s[3]);\n    }\n  }), t.fn.extend({\n    disableSelection: function () {\n      var t = \"onselectstart\" in document.createElement(\"div\") ? \"selectstart\" : \"mousedown\";\n      return function () {\n        return this.on(t + \".ui-disableSelection\", function (t) {\n          t.preventDefault();\n        });\n      };\n    }(),\n    enableSelection: function enableSelection() {\n      return this.off(\".ui-disableSelection\");\n    }\n  });\n  var c = \"ui-effects-\",\n    u = \"ui-effects-style\",\n    d = \"ui-effects-animated\",\n    p = t;\n  t.effects = {\n    effect: {}\n  }, function (t, e) {\n    function i(t, e, i) {\n      var s = u[e.type] || {};\n      return null == t ? i || !e.def ? null : e.def : (t = s.floor ? ~~t : parseFloat(t), isNaN(t) ? e.def : s.mod ? (t + s.mod) % s.mod : 0 > t ? 0 : t > s.max ? s.max : t);\n    }\n    function s(i) {\n      var s = l(),\n        n = s._rgba = [];\n      return i = i.toLowerCase(), f(h, function (t, o) {\n        var a,\n          r = o.re.exec(i),\n          h = r && o.parse(r),\n          l = o.space || \"rgba\";\n        return h ? (a = s[l](h), s[c[l].cache] = a[c[l].cache], n = s._rgba = a._rgba, !1) : e;\n      }), n.length ? (\"0,0,0,0\" === n.join() && t.extend(n, o.transparent), s) : o[i];\n    }\n    function n(t, e, i) {\n      return i = (i + 1) % 1, 1 > 6 * i ? t + 6 * (e - t) * i : 1 > 2 * i ? e : 2 > 3 * i ? t + 6 * (e - t) * (2 / 3 - i) : t;\n    }\n    var o,\n      a = \"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n      r = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n      h = [{\n        re: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n        parse: function parse(t) {\n          return [t[1], t[2], t[3], t[4]];\n        }\n      }, {\n        re: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n        parse: function parse(t) {\n          return [2.55 * t[1], 2.55 * t[2], 2.55 * t[3], t[4]];\n        }\n      }, {\n        re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n        parse: function parse(t) {\n          return [parseInt(t[1], 16), parseInt(t[2], 16), parseInt(t[3], 16)];\n        }\n      }, {\n        re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n        parse: function parse(t) {\n          return [parseInt(t[1] + t[1], 16), parseInt(t[2] + t[2], 16), parseInt(t[3] + t[3], 16)];\n        }\n      }, {\n        re: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n        space: \"hsla\",\n        parse: function parse(t) {\n          return [t[1], t[2] / 100, t[3] / 100, t[4]];\n        }\n      }],\n      l = t.Color = function (e, i, s, n) {\n        return new t.Color.fn.parse(e, i, s, n);\n      },\n      c = {\n        rgba: {\n          props: {\n            red: {\n              idx: 0,\n              type: \"byte\"\n            },\n            green: {\n              idx: 1,\n              type: \"byte\"\n            },\n            blue: {\n              idx: 2,\n              type: \"byte\"\n            }\n          }\n        },\n        hsla: {\n          props: {\n            hue: {\n              idx: 0,\n              type: \"degrees\"\n            },\n            saturation: {\n              idx: 1,\n              type: \"percent\"\n            },\n            lightness: {\n              idx: 2,\n              type: \"percent\"\n            }\n          }\n        }\n      },\n      u = {\n        \"byte\": {\n          floor: !0,\n          max: 255\n        },\n        percent: {\n          max: 1\n        },\n        degrees: {\n          mod: 360,\n          floor: !0\n        }\n      },\n      d = l.support = {},\n      p = t(\"<p>\")[0],\n      f = t.each;\n    p.style.cssText = \"background-color:rgba(1,1,1,.5)\", d.rgba = p.style.backgroundColor.indexOf(\"rgba\") > -1, f(c, function (t, e) {\n      e.cache = \"_\" + t, e.props.alpha = {\n        idx: 3,\n        type: \"percent\",\n        def: 1\n      };\n    }), l.fn = t.extend(l.prototype, {\n      parse: function parse(n, a, r, h) {\n        if (n === e) return this._rgba = [null, null, null, null], this;\n        (n.jquery || n.nodeType) && (n = t(n).css(a), a = e);\n        var u = this,\n          d = t.type(n),\n          p = this._rgba = [];\n        return a !== e && (n = [n, a, r, h], d = \"array\"), \"string\" === d ? this.parse(s(n) || o._default) : \"array\" === d ? (f(c.rgba.props, function (t, e) {\n          p[e.idx] = i(n[e.idx], e);\n        }), this) : \"object\" === d ? (n instanceof l ? f(c, function (t, e) {\n          n[e.cache] && (u[e.cache] = n[e.cache].slice());\n        }) : f(c, function (e, s) {\n          var o = s.cache;\n          f(s.props, function (t, e) {\n            if (!u[o] && s.to) {\n              if (\"alpha\" === t || null == n[t]) return;\n              u[o] = s.to(u._rgba);\n            }\n            u[o][e.idx] = i(n[t], e, !0);\n          }), u[o] && 0 > t.inArray(null, u[o].slice(0, 3)) && (u[o][3] = 1, s.from && (u._rgba = s.from(u[o])));\n        }), this) : e;\n      },\n      is: function is(t) {\n        var i = l(t),\n          s = !0,\n          n = this;\n        return f(c, function (t, o) {\n          var a,\n            r = i[o.cache];\n          return r && (a = n[o.cache] || o.to && o.to(n._rgba) || [], f(o.props, function (t, i) {\n            return null != r[i.idx] ? s = r[i.idx] === a[i.idx] : e;\n          })), s;\n        }), s;\n      },\n      _space: function _space() {\n        var t = [],\n          e = this;\n        return f(c, function (i, s) {\n          e[s.cache] && t.push(i);\n        }), t.pop();\n      },\n      transition: function transition(t, e) {\n        var s = l(t),\n          n = s._space(),\n          o = c[n],\n          a = 0 === this.alpha() ? l(\"transparent\") : this,\n          r = a[o.cache] || o.to(a._rgba),\n          h = r.slice();\n        return s = s[o.cache], f(o.props, function (t, n) {\n          var o = n.idx,\n            a = r[o],\n            l = s[o],\n            c = u[n.type] || {};\n          null !== l && (null === a ? h[o] = l : (c.mod && (l - a > c.mod / 2 ? a += c.mod : a - l > c.mod / 2 && (a -= c.mod)), h[o] = i((l - a) * e + a, n)));\n        }), this[n](h);\n      },\n      blend: function blend(e) {\n        if (1 === this._rgba[3]) return this;\n        var i = this._rgba.slice(),\n          s = i.pop(),\n          n = l(e)._rgba;\n        return l(t.map(i, function (t, e) {\n          return (1 - s) * n[e] + s * t;\n        }));\n      },\n      toRgbaString: function toRgbaString() {\n        var e = \"rgba(\",\n          i = t.map(this._rgba, function (t, e) {\n            return null == t ? e > 2 ? 1 : 0 : t;\n          });\n        return 1 === i[3] && (i.pop(), e = \"rgb(\"), e + i.join() + \")\";\n      },\n      toHslaString: function toHslaString() {\n        var e = \"hsla(\",\n          i = t.map(this.hsla(), function (t, e) {\n            return null == t && (t = e > 2 ? 1 : 0), e && 3 > e && (t = Math.round(100 * t) + \"%\"), t;\n          });\n        return 1 === i[3] && (i.pop(), e = \"hsl(\"), e + i.join() + \")\";\n      },\n      toHexString: function toHexString(e) {\n        var i = this._rgba.slice(),\n          s = i.pop();\n        return e && i.push(~~(255 * s)), \"#\" + t.map(i, function (t) {\n          return t = (t || 0).toString(16), 1 === t.length ? \"0\" + t : t;\n        }).join(\"\");\n      },\n      toString: function toString() {\n        return 0 === this._rgba[3] ? \"transparent\" : this.toRgbaString();\n      }\n    }), l.fn.parse.prototype = l.fn, c.hsla.to = function (t) {\n      if (null == t[0] || null == t[1] || null == t[2]) return [null, null, null, t[3]];\n      var e,\n        i,\n        s = t[0] / 255,\n        n = t[1] / 255,\n        o = t[2] / 255,\n        a = t[3],\n        r = Math.max(s, n, o),\n        h = Math.min(s, n, o),\n        l = r - h,\n        c = r + h,\n        u = .5 * c;\n      return e = h === r ? 0 : s === r ? 60 * (n - o) / l + 360 : n === r ? 60 * (o - s) / l + 120 : 60 * (s - n) / l + 240, i = 0 === l ? 0 : .5 >= u ? l / c : l / (2 - c), [Math.round(e) % 360, i, u, null == a ? 1 : a];\n    }, c.hsla.from = function (t) {\n      if (null == t[0] || null == t[1] || null == t[2]) return [null, null, null, t[3]];\n      var e = t[0] / 360,\n        i = t[1],\n        s = t[2],\n        o = t[3],\n        a = .5 >= s ? s * (1 + i) : s + i - s * i,\n        r = 2 * s - a;\n      return [Math.round(255 * n(r, a, e + 1 / 3)), Math.round(255 * n(r, a, e)), Math.round(255 * n(r, a, e - 1 / 3)), o];\n    }, f(c, function (s, n) {\n      var o = n.props,\n        a = n.cache,\n        h = n.to,\n        c = n.from;\n      l.fn[s] = function (s) {\n        if (h && !this[a] && (this[a] = h(this._rgba)), s === e) return this[a].slice();\n        var n,\n          r = t.type(s),\n          u = \"array\" === r || \"object\" === r ? s : arguments,\n          d = this[a].slice();\n        return f(o, function (t, e) {\n          var s = u[\"object\" === r ? t : e.idx];\n          null == s && (s = d[e.idx]), d[e.idx] = i(s, e);\n        }), c ? (n = l(c(d)), n[a] = d, n) : l(d);\n      }, f(o, function (e, i) {\n        l.fn[e] || (l.fn[e] = function (n) {\n          var o,\n            a = t.type(n),\n            h = \"alpha\" === e ? this._hsla ? \"hsla\" : \"rgba\" : s,\n            l = this[h](),\n            c = l[i.idx];\n          return \"undefined\" === a ? c : (\"function\" === a && (n = n.call(this, c), a = t.type(n)), null == n && i.empty ? this : (\"string\" === a && (o = r.exec(n), o && (n = c + parseFloat(o[2]) * (\"+\" === o[1] ? 1 : -1))), l[i.idx] = n, this[h](l)));\n        });\n      });\n    }), l.hook = function (e) {\n      var i = e.split(\" \");\n      f(i, function (e, i) {\n        t.cssHooks[i] = {\n          set: function set(e, n) {\n            var o,\n              a,\n              r = \"\";\n            if (\"transparent\" !== n && (\"string\" !== t.type(n) || (o = s(n)))) {\n              if (n = l(o || n), !d.rgba && 1 !== n._rgba[3]) {\n                for (a = \"backgroundColor\" === i ? e.parentNode : e; (\"\" === r || \"transparent\" === r) && a && a.style;) try {\n                  r = t.css(a, \"backgroundColor\"), a = a.parentNode;\n                } catch (h) {}\n                n = n.blend(r && \"transparent\" !== r ? r : \"_default\");\n              }\n              n = n.toRgbaString();\n            }\n            try {\n              e.style[i] = n;\n            } catch (h) {}\n          }\n        }, t.fx.step[i] = function (e) {\n          e.colorInit || (e.start = l(e.elem, i), e.end = l(e.end), e.colorInit = !0), t.cssHooks[i].set(e.elem, e.start.transition(e.end, e.pos));\n        };\n      });\n    }, l.hook(a), t.cssHooks.borderColor = {\n      expand: function expand(t) {\n        var e = {};\n        return f([\"Top\", \"Right\", \"Bottom\", \"Left\"], function (i, s) {\n          e[\"border\" + s + \"Color\"] = t;\n        }), e;\n      }\n    }, o = t.Color.names = {\n      aqua: \"#00ffff\",\n      black: \"#000000\",\n      blue: \"#0000ff\",\n      fuchsia: \"#ff00ff\",\n      gray: \"#808080\",\n      green: \"#008000\",\n      lime: \"#00ff00\",\n      maroon: \"#800000\",\n      navy: \"#000080\",\n      olive: \"#808000\",\n      purple: \"#800080\",\n      red: \"#ff0000\",\n      silver: \"#c0c0c0\",\n      teal: \"#008080\",\n      white: \"#ffffff\",\n      yellow: \"#ffff00\",\n      transparent: [null, null, null, 0],\n      _default: \"#ffffff\"\n    };\n  }(p), function () {\n    function e(e) {\n      var i,\n        s,\n        n = e.ownerDocument.defaultView ? e.ownerDocument.defaultView.getComputedStyle(e, null) : e.currentStyle,\n        o = {};\n      if (n && n.length && n[0] && n[n[0]]) for (s = n.length; s--;) i = n[s], \"string\" == typeof n[i] && (o[t.camelCase(i)] = n[i]);else for (i in n) \"string\" == typeof n[i] && (o[i] = n[i]);\n      return o;\n    }\n    function i(e, i) {\n      var s,\n        o,\n        a = {};\n      for (s in i) o = i[s], e[s] !== o && (n[s] || (t.fx.step[s] || !isNaN(parseFloat(o))) && (a[s] = o));\n      return a;\n    }\n    var s = [\"add\", \"remove\", \"toggle\"],\n      n = {\n        border: 1,\n        borderBottom: 1,\n        borderColor: 1,\n        borderLeft: 1,\n        borderRight: 1,\n        borderTop: 1,\n        borderWidth: 1,\n        margin: 1,\n        padding: 1\n      };\n    t.each([\"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\"], function (e, i) {\n      t.fx.step[i] = function (t) {\n        (\"none\" !== t.end && !t.setAttr || 1 === t.pos && !t.setAttr) && (p.style(t.elem, i, t.end), t.setAttr = !0);\n      };\n    }), t.fn.addBack || (t.fn.addBack = function (t) {\n      return this.add(null == t ? this.prevObject : this.prevObject.filter(t));\n    }), t.effects.animateClass = function (n, o, a, r) {\n      var h = t.speed(o, a, r);\n      return this.queue(function () {\n        var o,\n          a = t(this),\n          r = a.attr(\"class\") || \"\",\n          l = h.children ? a.find(\"*\").addBack() : a;\n        l = l.map(function () {\n          var i = t(this);\n          return {\n            el: i,\n            start: e(this)\n          };\n        }), o = function o() {\n          t.each(s, function (t, e) {\n            n[e] && a[e + \"Class\"](n[e]);\n          });\n        }, o(), l = l.map(function () {\n          return this.end = e(this.el[0]), this.diff = i(this.start, this.end), this;\n        }), a.attr(\"class\", r), l = l.map(function () {\n          var e = this,\n            i = t.Deferred(),\n            s = t.extend({}, h, {\n              queue: !1,\n              complete: function complete() {\n                i.resolve(e);\n              }\n            });\n          return this.el.animate(this.diff, s), i.promise();\n        }), t.when.apply(t, l.get()).done(function () {\n          o(), t.each(arguments, function () {\n            var e = this.el;\n            t.each(this.diff, function (t) {\n              e.css(t, \"\");\n            });\n          }), h.complete.call(a[0]);\n        });\n      });\n    }, t.fn.extend({\n      addClass: function (e) {\n        return function (i, s, n, o) {\n          return s ? t.effects.animateClass.call(this, {\n            add: i\n          }, s, n, o) : e.apply(this, arguments);\n        };\n      }(t.fn.addClass),\n      removeClass: function (e) {\n        return function (i, s, n, o) {\n          return arguments.length > 1 ? t.effects.animateClass.call(this, {\n            remove: i\n          }, s, n, o) : e.apply(this, arguments);\n        };\n      }(t.fn.removeClass),\n      toggleClass: function (e) {\n        return function (i, s, n, o, a) {\n          return \"boolean\" == typeof s || void 0 === s ? n ? t.effects.animateClass.call(this, s ? {\n            add: i\n          } : {\n            remove: i\n          }, n, o, a) : e.apply(this, arguments) : t.effects.animateClass.call(this, {\n            toggle: i\n          }, s, n, o);\n        };\n      }(t.fn.toggleClass),\n      switchClass: function switchClass(e, i, s, n, o) {\n        return t.effects.animateClass.call(this, {\n          add: i,\n          remove: e\n        }, s, n, o);\n      }\n    });\n  }(), function () {\n    function e(e, i, s, n) {\n      return t.isPlainObject(e) && (i = e, e = e.effect), e = {\n        effect: e\n      }, null == i && (i = {}), t.isFunction(i) && (n = i, s = null, i = {}), (\"number\" == typeof i || t.fx.speeds[i]) && (n = s, s = i, i = {}), t.isFunction(s) && (n = s, s = null), i && t.extend(e, i), s = s || i.duration, e.duration = t.fx.off ? 0 : \"number\" == typeof s ? s : s in t.fx.speeds ? t.fx.speeds[s] : t.fx.speeds._default, e.complete = n || i.complete, e;\n    }\n    function i(e) {\n      return !e || \"number\" == typeof e || t.fx.speeds[e] ? !0 : \"string\" != typeof e || t.effects.effect[e] ? t.isFunction(e) ? !0 : \"object\" != _typeof(e) || e.effect ? !1 : !0 : !0;\n    }\n    function s(t, e) {\n      var i = e.outerWidth(),\n        s = e.outerHeight(),\n        n = /^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        o = n.exec(t) || [\"\", 0, i, s, 0];\n      return {\n        top: parseFloat(o[1]) || 0,\n        right: \"auto\" === o[2] ? i : parseFloat(o[2]),\n        bottom: \"auto\" === o[3] ? s : parseFloat(o[3]),\n        left: parseFloat(o[4]) || 0\n      };\n    }\n    t.expr && t.expr.filters && t.expr.filters.animated && (t.expr.filters.animated = function (e) {\n      return function (i) {\n        return !!t(i).data(d) || e(i);\n      };\n    }(t.expr.filters.animated)), t.uiBackCompat !== !1 && t.extend(t.effects, {\n      save: function save(t, e) {\n        for (var i = 0, s = e.length; s > i; i++) null !== e[i] && t.data(c + e[i], t[0].style[e[i]]);\n      },\n      restore: function restore(t, e) {\n        for (var i, s = 0, n = e.length; n > s; s++) null !== e[s] && (i = t.data(c + e[s]), t.css(e[s], i));\n      },\n      setMode: function setMode(t, e) {\n        return \"toggle\" === e && (e = t.is(\":hidden\") ? \"show\" : \"hide\"), e;\n      },\n      createWrapper: function createWrapper(e) {\n        if (e.parent().is(\".ui-effects-wrapper\")) return e.parent();\n        var i = {\n            width: e.outerWidth(!0),\n            height: e.outerHeight(!0),\n            \"float\": e.css(\"float\")\n          },\n          s = t(\"<div></div>\").addClass(\"ui-effects-wrapper\").css({\n            fontSize: \"100%\",\n            background: \"transparent\",\n            border: \"none\",\n            margin: 0,\n            padding: 0\n          }),\n          n = {\n            width: e.width(),\n            height: e.height()\n          },\n          o = document.activeElement;\n        try {\n          o.id;\n        } catch (a) {\n          o = document.body;\n        }\n        return e.wrap(s), (e[0] === o || t.contains(e[0], o)) && t(o).trigger(\"focus\"), s = e.parent(), \"static\" === e.css(\"position\") ? (s.css({\n          position: \"relative\"\n        }), e.css({\n          position: \"relative\"\n        })) : (t.extend(i, {\n          position: e.css(\"position\"),\n          zIndex: e.css(\"z-index\")\n        }), t.each([\"top\", \"left\", \"bottom\", \"right\"], function (t, s) {\n          i[s] = e.css(s), isNaN(parseInt(i[s], 10)) && (i[s] = \"auto\");\n        }), e.css({\n          position: \"relative\",\n          top: 0,\n          left: 0,\n          right: \"auto\",\n          bottom: \"auto\"\n        })), e.css(n), s.css(i).show();\n      },\n      removeWrapper: function removeWrapper(e) {\n        var i = document.activeElement;\n        return e.parent().is(\".ui-effects-wrapper\") && (e.parent().replaceWith(e), (e[0] === i || t.contains(e[0], i)) && t(i).trigger(\"focus\")), e;\n      }\n    }), t.extend(t.effects, {\n      version: \"1.12.1\",\n      define: function define(e, i, s) {\n        return s || (s = i, i = \"effect\"), t.effects.effect[e] = s, t.effects.effect[e].mode = i, s;\n      },\n      scaledDimensions: function scaledDimensions(t, e, i) {\n        if (0 === e) return {\n          height: 0,\n          width: 0,\n          outerHeight: 0,\n          outerWidth: 0\n        };\n        var s = \"horizontal\" !== i ? (e || 100) / 100 : 1,\n          n = \"vertical\" !== i ? (e || 100) / 100 : 1;\n        return {\n          height: t.height() * n,\n          width: t.width() * s,\n          outerHeight: t.outerHeight() * n,\n          outerWidth: t.outerWidth() * s\n        };\n      },\n      clipToBox: function clipToBox(t) {\n        return {\n          width: t.clip.right - t.clip.left,\n          height: t.clip.bottom - t.clip.top,\n          left: t.clip.left,\n          top: t.clip.top\n        };\n      },\n      unshift: function unshift(t, e, i) {\n        var s = t.queue();\n        e > 1 && s.splice.apply(s, [1, 0].concat(s.splice(e, i))), t.dequeue();\n      },\n      saveStyle: function saveStyle(t) {\n        t.data(u, t[0].style.cssText);\n      },\n      restoreStyle: function restoreStyle(t) {\n        t[0].style.cssText = t.data(u) || \"\", t.removeData(u);\n      },\n      mode: function mode(t, e) {\n        var i = t.is(\":hidden\");\n        return \"toggle\" === e && (e = i ? \"show\" : \"hide\"), (i ? \"hide\" === e : \"show\" === e) && (e = \"none\"), e;\n      },\n      getBaseline: function getBaseline(t, e) {\n        var i, s;\n        switch (t[0]) {\n          case \"top\":\n            i = 0;\n            break;\n          case \"middle\":\n            i = .5;\n            break;\n          case \"bottom\":\n            i = 1;\n            break;\n          default:\n            i = t[0] / e.height;\n        }\n        switch (t[1]) {\n          case \"left\":\n            s = 0;\n            break;\n          case \"center\":\n            s = .5;\n            break;\n          case \"right\":\n            s = 1;\n            break;\n          default:\n            s = t[1] / e.width;\n        }\n        return {\n          x: s,\n          y: i\n        };\n      },\n      createPlaceholder: function createPlaceholder(e) {\n        var i,\n          s = e.css(\"position\"),\n          n = e.position();\n        return e.css({\n          marginTop: e.css(\"marginTop\"),\n          marginBottom: e.css(\"marginBottom\"),\n          marginLeft: e.css(\"marginLeft\"),\n          marginRight: e.css(\"marginRight\")\n        }).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()), /^(static|relative)/.test(s) && (s = \"absolute\", i = t(\"<\" + e[0].nodeName + \">\").insertAfter(e).css({\n          display: /^(inline|ruby)/.test(e.css(\"display\")) ? \"inline-block\" : \"block\",\n          visibility: \"hidden\",\n          marginTop: e.css(\"marginTop\"),\n          marginBottom: e.css(\"marginBottom\"),\n          marginLeft: e.css(\"marginLeft\"),\n          marginRight: e.css(\"marginRight\"),\n          \"float\": e.css(\"float\")\n        }).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass(\"ui-effects-placeholder\"), e.data(c + \"placeholder\", i)), e.css({\n          position: s,\n          left: n.left,\n          top: n.top\n        }), i;\n      },\n      removePlaceholder: function removePlaceholder(t) {\n        var e = c + \"placeholder\",\n          i = t.data(e);\n        i && (i.remove(), t.removeData(e));\n      },\n      cleanUp: function cleanUp(e) {\n        t.effects.restoreStyle(e), t.effects.removePlaceholder(e);\n      },\n      setTransition: function setTransition(e, i, s, n) {\n        return n = n || {}, t.each(i, function (t, i) {\n          var o = e.cssUnit(i);\n          o[0] > 0 && (n[i] = o[0] * s + o[1]);\n        }), n;\n      }\n    }), t.fn.extend({\n      effect: function effect() {\n        function i(e) {\n          function i() {\n            r.removeData(d), t.effects.cleanUp(r), \"hide\" === s.mode && r.hide(), a();\n          }\n          function a() {\n            t.isFunction(h) && h.call(r[0]), t.isFunction(e) && e();\n          }\n          var r = t(this);\n          s.mode = c.shift(), t.uiBackCompat === !1 || o ? \"none\" === s.mode ? (r[l](), a()) : n.call(r[0], s, i) : (r.is(\":hidden\") ? \"hide\" === l : \"show\" === l) ? (r[l](), a()) : n.call(r[0], s, a);\n        }\n        var s = e.apply(this, arguments),\n          n = t.effects.effect[s.effect],\n          o = n.mode,\n          a = s.queue,\n          r = a || \"fx\",\n          h = s.complete,\n          l = s.mode,\n          c = [],\n          u = function u(e) {\n            var i = t(this),\n              s = t.effects.mode(i, l) || o;\n            i.data(d, !0), c.push(s), o && (\"show\" === s || s === o && \"hide\" === s) && i.show(), o && \"none\" === s || t.effects.saveStyle(i), t.isFunction(e) && e();\n          };\n        return t.fx.off || !n ? l ? this[l](s.duration, h) : this.each(function () {\n          h && h.call(this);\n        }) : a === !1 ? this.each(u).each(i) : this.queue(r, u).queue(r, i);\n      },\n      show: function (t) {\n        return function (s) {\n          if (i(s)) return t.apply(this, arguments);\n          var n = e.apply(this, arguments);\n          return n.mode = \"show\", this.effect.call(this, n);\n        };\n      }(t.fn.show),\n      hide: function (t) {\n        return function (s) {\n          if (i(s)) return t.apply(this, arguments);\n          var n = e.apply(this, arguments);\n          return n.mode = \"hide\", this.effect.call(this, n);\n        };\n      }(t.fn.hide),\n      toggle: function (t) {\n        return function (s) {\n          if (i(s) || \"boolean\" == typeof s) return t.apply(this, arguments);\n          var n = e.apply(this, arguments);\n          return n.mode = \"toggle\", this.effect.call(this, n);\n        };\n      }(t.fn.toggle),\n      cssUnit: function cssUnit(e) {\n        var i = this.css(e),\n          s = [];\n        return t.each([\"em\", \"px\", \"%\", \"pt\"], function (t, e) {\n          i.indexOf(e) > 0 && (s = [parseFloat(i), e]);\n        }), s;\n      },\n      cssClip: function cssClip(t) {\n        return t ? this.css(\"clip\", \"rect(\" + t.top + \"px \" + t.right + \"px \" + t.bottom + \"px \" + t.left + \"px)\") : s(this.css(\"clip\"), this);\n      },\n      transfer: function transfer(e, i) {\n        var s = t(this),\n          n = t(e.to),\n          o = \"fixed\" === n.css(\"position\"),\n          a = t(\"body\"),\n          r = o ? a.scrollTop() : 0,\n          h = o ? a.scrollLeft() : 0,\n          l = n.offset(),\n          c = {\n            top: l.top - r,\n            left: l.left - h,\n            height: n.innerHeight(),\n            width: n.innerWidth()\n          },\n          u = s.offset(),\n          d = t(\"<div class='ui-effects-transfer'></div>\").appendTo(\"body\").addClass(e.className).css({\n            top: u.top - r,\n            left: u.left - h,\n            height: s.innerHeight(),\n            width: s.innerWidth(),\n            position: o ? \"fixed\" : \"absolute\"\n          }).animate(c, e.duration, e.easing, function () {\n            d.remove(), t.isFunction(i) && i();\n          });\n      }\n    }), t.fx.step.clip = function (e) {\n      e.clipInit || (e.start = t(e.elem).cssClip(), \"string\" == typeof e.end && (e.end = s(e.end, e.elem)), e.clipInit = !0), t(e.elem).cssClip({\n        top: e.pos * (e.end.top - e.start.top) + e.start.top,\n        right: e.pos * (e.end.right - e.start.right) + e.start.right,\n        bottom: e.pos * (e.end.bottom - e.start.bottom) + e.start.bottom,\n        left: e.pos * (e.end.left - e.start.left) + e.start.left\n      });\n    };\n  }(), function () {\n    var e = {};\n    t.each([\"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\"], function (t, i) {\n      e[i] = function (e) {\n        return Math.pow(e, t + 2);\n      };\n    }), t.extend(e, {\n      Sine: function Sine(t) {\n        return 1 - Math.cos(t * Math.PI / 2);\n      },\n      Circ: function Circ(t) {\n        return 1 - Math.sqrt(1 - t * t);\n      },\n      Elastic: function Elastic(t) {\n        return 0 === t || 1 === t ? t : -Math.pow(2, 8 * (t - 1)) * Math.sin((80 * (t - 1) - 7.5) * Math.PI / 15);\n      },\n      Back: function Back(t) {\n        return t * t * (3 * t - 2);\n      },\n      Bounce: function Bounce(t) {\n        for (var e, i = 4; ((e = Math.pow(2, --i)) - 1) / 11 > t;);\n        return 1 / Math.pow(4, 3 - i) - 7.5625 * Math.pow((3 * e - 2) / 22 - t, 2);\n      }\n    }), t.each(e, function (e, i) {\n      t.easing[\"easeIn\" + e] = i, t.easing[\"easeOut\" + e] = function (t) {\n        return 1 - i(1 - t);\n      }, t.easing[\"easeInOut\" + e] = function (t) {\n        return .5 > t ? i(2 * t) / 2 : 1 - i(-2 * t + 2) / 2;\n      };\n    });\n  }();\n  var f = t.effects;\n  t.effects.define(\"blind\", \"hide\", function (e, i) {\n    var s = {\n        up: [\"bottom\", \"top\"],\n        vertical: [\"bottom\", \"top\"],\n        down: [\"top\", \"bottom\"],\n        left: [\"right\", \"left\"],\n        horizontal: [\"right\", \"left\"],\n        right: [\"left\", \"right\"]\n      },\n      n = t(this),\n      o = e.direction || \"up\",\n      a = n.cssClip(),\n      r = {\n        clip: t.extend({}, a)\n      },\n      h = t.effects.createPlaceholder(n);\n    r.clip[s[o][0]] = r.clip[s[o][1]], \"show\" === e.mode && (n.cssClip(r.clip), h && h.css(t.effects.clipToBox(r)), r.clip = a), h && h.animate(t.effects.clipToBox(r), e.duration, e.easing), n.animate(r, {\n      queue: !1,\n      duration: e.duration,\n      easing: e.easing,\n      complete: i\n    });\n  }), t.effects.define(\"bounce\", function (e, i) {\n    var s,\n      n,\n      o,\n      a = t(this),\n      r = e.mode,\n      h = \"hide\" === r,\n      l = \"show\" === r,\n      c = e.direction || \"up\",\n      u = e.distance,\n      d = e.times || 5,\n      p = 2 * d + (l || h ? 1 : 0),\n      f = e.duration / p,\n      g = e.easing,\n      m = \"up\" === c || \"down\" === c ? \"top\" : \"left\",\n      _ = \"up\" === c || \"left\" === c,\n      v = 0,\n      b = a.queue().length;\n    for (t.effects.createPlaceholder(a), o = a.css(m), u || (u = a[\"top\" === m ? \"outerHeight\" : \"outerWidth\"]() / 3), l && (n = {\n      opacity: 1\n    }, n[m] = o, a.css(\"opacity\", 0).css(m, _ ? 2 * -u : 2 * u).animate(n, f, g)), h && (u /= Math.pow(2, d - 1)), n = {}, n[m] = o; d > v; v++) s = {}, s[m] = (_ ? \"-=\" : \"+=\") + u, a.animate(s, f, g).animate(n, f, g), u = h ? 2 * u : u / 2;\n    h && (s = {\n      opacity: 0\n    }, s[m] = (_ ? \"-=\" : \"+=\") + u, a.animate(s, f, g)), a.queue(i), t.effects.unshift(a, b, p + 1);\n  }), t.effects.define(\"clip\", \"hide\", function (e, i) {\n    var s,\n      n = {},\n      o = t(this),\n      a = e.direction || \"vertical\",\n      r = \"both\" === a,\n      h = r || \"horizontal\" === a,\n      l = r || \"vertical\" === a;\n    s = o.cssClip(), n.clip = {\n      top: l ? (s.bottom - s.top) / 2 : s.top,\n      right: h ? (s.right - s.left) / 2 : s.right,\n      bottom: l ? (s.bottom - s.top) / 2 : s.bottom,\n      left: h ? (s.right - s.left) / 2 : s.left\n    }, t.effects.createPlaceholder(o), \"show\" === e.mode && (o.cssClip(n.clip), n.clip = s), o.animate(n, {\n      queue: !1,\n      duration: e.duration,\n      easing: e.easing,\n      complete: i\n    });\n  }), t.effects.define(\"drop\", \"hide\", function (e, i) {\n    var s,\n      n = t(this),\n      o = e.mode,\n      a = \"show\" === o,\n      r = e.direction || \"left\",\n      h = \"up\" === r || \"down\" === r ? \"top\" : \"left\",\n      l = \"up\" === r || \"left\" === r ? \"-=\" : \"+=\",\n      c = \"+=\" === l ? \"-=\" : \"+=\",\n      u = {\n        opacity: 0\n      };\n    t.effects.createPlaceholder(n), s = e.distance || n[\"top\" === h ? \"outerHeight\" : \"outerWidth\"](!0) / 2, u[h] = l + s, a && (n.css(u), u[h] = c + s, u.opacity = 1), n.animate(u, {\n      queue: !1,\n      duration: e.duration,\n      easing: e.easing,\n      complete: i\n    });\n  }), t.effects.define(\"explode\", \"hide\", function (e, i) {\n    function s() {\n      b.push(this), b.length === u * d && n();\n    }\n    function n() {\n      p.css({\n        visibility: \"visible\"\n      }), t(b).remove(), i();\n    }\n    var o,\n      a,\n      r,\n      h,\n      l,\n      c,\n      u = e.pieces ? Math.round(Math.sqrt(e.pieces)) : 3,\n      d = u,\n      p = t(this),\n      f = e.mode,\n      g = \"show\" === f,\n      m = p.show().css(\"visibility\", \"hidden\").offset(),\n      _ = Math.ceil(p.outerWidth() / d),\n      v = Math.ceil(p.outerHeight() / u),\n      b = [];\n    for (o = 0; u > o; o++) for (h = m.top + o * v, c = o - (u - 1) / 2, a = 0; d > a; a++) r = m.left + a * _, l = a - (d - 1) / 2, p.clone().appendTo(\"body\").wrap(\"<div></div>\").css({\n      position: \"absolute\",\n      visibility: \"visible\",\n      left: -a * _,\n      top: -o * v\n    }).parent().addClass(\"ui-effects-explode\").css({\n      position: \"absolute\",\n      overflow: \"hidden\",\n      width: _,\n      height: v,\n      left: r + (g ? l * _ : 0),\n      top: h + (g ? c * v : 0),\n      opacity: g ? 0 : 1\n    }).animate({\n      left: r + (g ? 0 : l * _),\n      top: h + (g ? 0 : c * v),\n      opacity: g ? 1 : 0\n    }, e.duration || 500, e.easing, s);\n  }), t.effects.define(\"fade\", \"toggle\", function (e, i) {\n    var s = \"show\" === e.mode;\n    t(this).css(\"opacity\", s ? 0 : 1).animate({\n      opacity: s ? 1 : 0\n    }, {\n      queue: !1,\n      duration: e.duration,\n      easing: e.easing,\n      complete: i\n    });\n  }), t.effects.define(\"fold\", \"hide\", function (e, i) {\n    var s = t(this),\n      n = e.mode,\n      o = \"show\" === n,\n      a = \"hide\" === n,\n      r = e.size || 15,\n      h = /([0-9]+)%/.exec(r),\n      l = !!e.horizFirst,\n      c = l ? [\"right\", \"bottom\"] : [\"bottom\", \"right\"],\n      u = e.duration / 2,\n      d = t.effects.createPlaceholder(s),\n      p = s.cssClip(),\n      f = {\n        clip: t.extend({}, p)\n      },\n      g = {\n        clip: t.extend({}, p)\n      },\n      m = [p[c[0]], p[c[1]]],\n      _ = s.queue().length;\n    h && (r = parseInt(h[1], 10) / 100 * m[a ? 0 : 1]), f.clip[c[0]] = r, g.clip[c[0]] = r, g.clip[c[1]] = 0, o && (s.cssClip(g.clip), d && d.css(t.effects.clipToBox(g)), g.clip = p), s.queue(function (i) {\n      d && d.animate(t.effects.clipToBox(f), u, e.easing).animate(t.effects.clipToBox(g), u, e.easing), i();\n    }).animate(f, u, e.easing).animate(g, u, e.easing).queue(i), t.effects.unshift(s, _, 4);\n  }), t.effects.define(\"highlight\", \"show\", function (e, i) {\n    var s = t(this),\n      n = {\n        backgroundColor: s.css(\"backgroundColor\")\n      };\n    \"hide\" === e.mode && (n.opacity = 0), t.effects.saveStyle(s), s.css({\n      backgroundImage: \"none\",\n      backgroundColor: e.color || \"#ffff99\"\n    }).animate(n, {\n      queue: !1,\n      duration: e.duration,\n      easing: e.easing,\n      complete: i\n    });\n  }), t.effects.define(\"size\", function (e, i) {\n    var s,\n      n,\n      o,\n      a = t(this),\n      r = [\"fontSize\"],\n      h = [\"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\"],\n      l = [\"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\"],\n      c = e.mode,\n      u = \"effect\" !== c,\n      d = e.scale || \"both\",\n      p = e.origin || [\"middle\", \"center\"],\n      f = a.css(\"position\"),\n      g = a.position(),\n      m = t.effects.scaledDimensions(a),\n      _ = e.from || m,\n      v = e.to || t.effects.scaledDimensions(a, 0);\n    t.effects.createPlaceholder(a), \"show\" === c && (o = _, _ = v, v = o), n = {\n      from: {\n        y: _.height / m.height,\n        x: _.width / m.width\n      },\n      to: {\n        y: v.height / m.height,\n        x: v.width / m.width\n      }\n    }, (\"box\" === d || \"both\" === d) && (n.from.y !== n.to.y && (_ = t.effects.setTransition(a, h, n.from.y, _), v = t.effects.setTransition(a, h, n.to.y, v)), n.from.x !== n.to.x && (_ = t.effects.setTransition(a, l, n.from.x, _), v = t.effects.setTransition(a, l, n.to.x, v))), (\"content\" === d || \"both\" === d) && n.from.y !== n.to.y && (_ = t.effects.setTransition(a, r, n.from.y, _), v = t.effects.setTransition(a, r, n.to.y, v)), p && (s = t.effects.getBaseline(p, m), _.top = (m.outerHeight - _.outerHeight) * s.y + g.top, _.left = (m.outerWidth - _.outerWidth) * s.x + g.left, v.top = (m.outerHeight - v.outerHeight) * s.y + g.top, v.left = (m.outerWidth - v.outerWidth) * s.x + g.left), a.css(_), (\"content\" === d || \"both\" === d) && (h = h.concat([\"marginTop\", \"marginBottom\"]).concat(r), l = l.concat([\"marginLeft\", \"marginRight\"]), a.find(\"*[width]\").each(function () {\n      var i = t(this),\n        s = t.effects.scaledDimensions(i),\n        o = {\n          height: s.height * n.from.y,\n          width: s.width * n.from.x,\n          outerHeight: s.outerHeight * n.from.y,\n          outerWidth: s.outerWidth * n.from.x\n        },\n        a = {\n          height: s.height * n.to.y,\n          width: s.width * n.to.x,\n          outerHeight: s.height * n.to.y,\n          outerWidth: s.width * n.to.x\n        };\n      n.from.y !== n.to.y && (o = t.effects.setTransition(i, h, n.from.y, o), a = t.effects.setTransition(i, h, n.to.y, a)), n.from.x !== n.to.x && (o = t.effects.setTransition(i, l, n.from.x, o), a = t.effects.setTransition(i, l, n.to.x, a)), u && t.effects.saveStyle(i), i.css(o), i.animate(a, e.duration, e.easing, function () {\n        u && t.effects.restoreStyle(i);\n      });\n    })), a.animate(v, {\n      queue: !1,\n      duration: e.duration,\n      easing: e.easing,\n      complete: function complete() {\n        var e = a.offset();\n        0 === v.opacity && a.css(\"opacity\", _.opacity), u || (a.css(\"position\", \"static\" === f ? \"relative\" : f).offset(e), t.effects.saveStyle(a)), i();\n      }\n    });\n  }), t.effects.define(\"scale\", function (e, i) {\n    var s = t(this),\n      n = e.mode,\n      o = parseInt(e.percent, 10) || (0 === parseInt(e.percent, 10) ? 0 : \"effect\" !== n ? 0 : 100),\n      a = t.extend(!0, {\n        from: t.effects.scaledDimensions(s),\n        to: t.effects.scaledDimensions(s, o, e.direction || \"both\"),\n        origin: e.origin || [\"middle\", \"center\"]\n      }, e);\n    e.fade && (a.from.opacity = 1, a.to.opacity = 0), t.effects.effect.size.call(this, a, i);\n  }), t.effects.define(\"puff\", \"hide\", function (e, i) {\n    var s = t.extend(!0, {}, e, {\n      fade: !0,\n      percent: parseInt(e.percent, 10) || 150\n    });\n    t.effects.effect.scale.call(this, s, i);\n  }), t.effects.define(\"pulsate\", \"show\", function (e, i) {\n    var s = t(this),\n      n = e.mode,\n      o = \"show\" === n,\n      a = \"hide\" === n,\n      r = o || a,\n      h = 2 * (e.times || 5) + (r ? 1 : 0),\n      l = e.duration / h,\n      c = 0,\n      u = 1,\n      d = s.queue().length;\n    for ((o || !s.is(\":visible\")) && (s.css(\"opacity\", 0).show(), c = 1); h > u; u++) s.animate({\n      opacity: c\n    }, l, e.easing), c = 1 - c;\n    s.animate({\n      opacity: c\n    }, l, e.easing), s.queue(i), t.effects.unshift(s, d, h + 1);\n  }), t.effects.define(\"shake\", function (e, i) {\n    var s = 1,\n      n = t(this),\n      o = e.direction || \"left\",\n      a = e.distance || 20,\n      r = e.times || 3,\n      h = 2 * r + 1,\n      l = Math.round(e.duration / h),\n      c = \"up\" === o || \"down\" === o ? \"top\" : \"left\",\n      u = \"up\" === o || \"left\" === o,\n      d = {},\n      p = {},\n      f = {},\n      g = n.queue().length;\n    for (t.effects.createPlaceholder(n), d[c] = (u ? \"-=\" : \"+=\") + a, p[c] = (u ? \"+=\" : \"-=\") + 2 * a, f[c] = (u ? \"-=\" : \"+=\") + 2 * a, n.animate(d, l, e.easing); r > s; s++) n.animate(p, l, e.easing).animate(f, l, e.easing);\n    n.animate(p, l, e.easing).animate(d, l / 2, e.easing).queue(i), t.effects.unshift(n, g, h + 1);\n  }), t.effects.define(\"slide\", \"show\", function (e, i) {\n    var s,\n      n,\n      o = t(this),\n      a = {\n        up: [\"bottom\", \"top\"],\n        down: [\"top\", \"bottom\"],\n        left: [\"right\", \"left\"],\n        right: [\"left\", \"right\"]\n      },\n      r = e.mode,\n      h = e.direction || \"left\",\n      l = \"up\" === h || \"down\" === h ? \"top\" : \"left\",\n      c = \"up\" === h || \"left\" === h,\n      u = e.distance || o[\"top\" === l ? \"outerHeight\" : \"outerWidth\"](!0),\n      d = {};\n    t.effects.createPlaceholder(o), s = o.cssClip(), n = o.position()[l], d[l] = (c ? -1 : 1) * u + n, d.clip = o.cssClip(), d.clip[a[h][1]] = d.clip[a[h][0]], \"show\" === r && (o.cssClip(d.clip), o.css(l, d[l]), d.clip = s, d[l] = n), o.animate(d, {\n      queue: !1,\n      duration: e.duration,\n      easing: e.easing,\n      complete: i\n    });\n  });\n  var f;\n  t.uiBackCompat !== !1 && (f = t.effects.define(\"transfer\", function (e, i) {\n    t(this).transfer(e, i);\n  })), t.ui.focusable = function (i, s) {\n    var n,\n      o,\n      a,\n      r,\n      h,\n      l = i.nodeName.toLowerCase();\n    return \"area\" === l ? (n = i.parentNode, o = n.name, i.href && o && \"map\" === n.nodeName.toLowerCase() ? (a = t(\"img[usemap='#\" + o + \"']\"), a.length > 0 && a.is(\":visible\")) : !1) : (/^(input|select|textarea|button|object)$/.test(l) ? (r = !i.disabled, r && (h = t(i).closest(\"fieldset\")[0], h && (r = !h.disabled))) : r = \"a\" === l ? i.href || s : s, r && t(i).is(\":visible\") && e(t(i)));\n  }, t.extend(t.expr[\":\"], {\n    focusable: function focusable(e) {\n      return t.ui.focusable(e, null != t.attr(e, \"tabindex\"));\n    }\n  }), t.ui.focusable, t.fn.form = function () {\n    return \"string\" == typeof this[0].form ? this.closest(\"form\") : t(this[0].form);\n  }, t.ui.formResetMixin = {\n    _formResetHandler: function _formResetHandler() {\n      var e = t(this);\n      setTimeout(function () {\n        var i = e.data(\"ui-form-reset-instances\");\n        t.each(i, function () {\n          this.refresh();\n        });\n      });\n    },\n    _bindFormResetHandler: function _bindFormResetHandler() {\n      if (this.form = this.element.form(), this.form.length) {\n        var t = this.form.data(\"ui-form-reset-instances\") || [];\n        t.length || this.form.on(\"reset.ui-form-reset\", this._formResetHandler), t.push(this), this.form.data(\"ui-form-reset-instances\", t);\n      }\n    },\n    _unbindFormResetHandler: function _unbindFormResetHandler() {\n      if (this.form.length) {\n        var e = this.form.data(\"ui-form-reset-instances\");\n        e.splice(t.inArray(this, e), 1), e.length ? this.form.data(\"ui-form-reset-instances\", e) : this.form.removeData(\"ui-form-reset-instances\").off(\"reset.ui-form-reset\");\n      }\n    }\n  }, \"1.7\" === t.fn.jquery.substring(0, 3) && (t.each([\"Width\", \"Height\"], function (e, i) {\n    function s(e, i, s, o) {\n      return t.each(n, function () {\n        i -= parseFloat(t.css(e, \"padding\" + this)) || 0, s && (i -= parseFloat(t.css(e, \"border\" + this + \"Width\")) || 0), o && (i -= parseFloat(t.css(e, \"margin\" + this)) || 0);\n      }), i;\n    }\n    var n = \"Width\" === i ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"],\n      o = i.toLowerCase(),\n      a = {\n        innerWidth: t.fn.innerWidth,\n        innerHeight: t.fn.innerHeight,\n        outerWidth: t.fn.outerWidth,\n        outerHeight: t.fn.outerHeight\n      };\n    t.fn[\"inner\" + i] = function (e) {\n      return void 0 === e ? a[\"inner\" + i].call(this) : this.each(function () {\n        t(this).css(o, s(this, e) + \"px\");\n      });\n    }, t.fn[\"outer\" + i] = function (e, n) {\n      return \"number\" != typeof e ? a[\"outer\" + i].call(this, e) : this.each(function () {\n        t(this).css(o, s(this, e, !0, n) + \"px\");\n      });\n    };\n  }), t.fn.addBack = function (t) {\n    return this.add(null == t ? this.prevObject : this.prevObject.filter(t));\n  }), t.ui.keyCode = {\n    BACKSPACE: 8,\n    COMMA: 188,\n    DELETE: 46,\n    DOWN: 40,\n    END: 35,\n    ENTER: 13,\n    ESCAPE: 27,\n    HOME: 36,\n    LEFT: 37,\n    PAGE_DOWN: 34,\n    PAGE_UP: 33,\n    PERIOD: 190,\n    RIGHT: 39,\n    SPACE: 32,\n    TAB: 9,\n    UP: 38\n  }, t.ui.escapeSelector = function () {\n    var t = /([!\"#$%&'()*+,./:;<=>?@[\\]^`{|}~])/g;\n    return function (e) {\n      return e.replace(t, \"\\\\$1\");\n    };\n  }(), t.fn.labels = function () {\n    var e, i, s, n, o;\n    return this[0].labels && this[0].labels.length ? this.pushStack(this[0].labels) : (n = this.eq(0).parents(\"label\"), s = this.attr(\"id\"), s && (e = this.eq(0).parents().last(), o = e.add(e.length ? e.siblings() : this.siblings()), i = \"label[for='\" + t.ui.escapeSelector(s) + \"']\", n = n.add(o.find(i).addBack(i))), this.pushStack(n));\n  }, t.fn.scrollParent = function (e) {\n    var i = this.css(\"position\"),\n      s = \"absolute\" === i,\n      n = e ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n      o = this.parents().filter(function () {\n        var e = t(this);\n        return s && \"static\" === e.css(\"position\") ? !1 : n.test(e.css(\"overflow\") + e.css(\"overflow-y\") + e.css(\"overflow-x\"));\n      }).eq(0);\n    return \"fixed\" !== i && o.length ? o : t(this[0].ownerDocument || document);\n  }, t.extend(t.expr[\":\"], {\n    tabbable: function tabbable(e) {\n      var i = t.attr(e, \"tabindex\"),\n        s = null != i;\n      return (!s || i >= 0) && t.ui.focusable(e, s);\n    }\n  }), t.fn.extend({\n    uniqueId: function () {\n      var t = 0;\n      return function () {\n        return this.each(function () {\n          this.id || (this.id = \"ui-id-\" + ++t);\n        });\n      };\n    }(),\n    removeUniqueId: function removeUniqueId() {\n      return this.each(function () {\n        /^ui-id-\\d+$/.test(this.id) && t(this).removeAttr(\"id\");\n      });\n    }\n  }), t.widget(\"ui.accordion\", {\n    version: \"1.12.1\",\n    options: {\n      active: 0,\n      animate: {},\n      classes: {\n        \"ui-accordion-header\": \"ui-corner-top\",\n        \"ui-accordion-header-collapsed\": \"ui-corner-all\",\n        \"ui-accordion-content\": \"ui-corner-bottom\"\n      },\n      collapsible: !1,\n      event: \"click\",\n      header: \"> li > :first-child, > :not(li):even\",\n      heightStyle: \"auto\",\n      icons: {\n        activeHeader: \"ui-icon-triangle-1-s\",\n        header: \"ui-icon-triangle-1-e\"\n      },\n      activate: null,\n      beforeActivate: null\n    },\n    hideProps: {\n      borderTopWidth: \"hide\",\n      borderBottomWidth: \"hide\",\n      paddingTop: \"hide\",\n      paddingBottom: \"hide\",\n      height: \"hide\"\n    },\n    showProps: {\n      borderTopWidth: \"show\",\n      borderBottomWidth: \"show\",\n      paddingTop: \"show\",\n      paddingBottom: \"show\",\n      height: \"show\"\n    },\n    _create: function _create() {\n      var e = this.options;\n      this.prevShow = this.prevHide = t(), this._addClass(\"ui-accordion\", \"ui-widget ui-helper-reset\"), this.element.attr(\"role\", \"tablist\"), e.collapsible || e.active !== !1 && null != e.active || (e.active = 0), this._processPanels(), 0 > e.active && (e.active += this.headers.length), this._refresh();\n    },\n    _getCreateEventData: function _getCreateEventData() {\n      return {\n        header: this.active,\n        panel: this.active.length ? this.active.next() : t()\n      };\n    },\n    _createIcons: function _createIcons() {\n      var e,\n        i,\n        s = this.options.icons;\n      s && (e = t(\"<span>\"), this._addClass(e, \"ui-accordion-header-icon\", \"ui-icon \" + s.header), e.prependTo(this.headers), i = this.active.children(\".ui-accordion-header-icon\"), this._removeClass(i, s.header)._addClass(i, null, s.activeHeader)._addClass(this.headers, \"ui-accordion-icons\"));\n    },\n    _destroyIcons: function _destroyIcons() {\n      this._removeClass(this.headers, \"ui-accordion-icons\"), this.headers.children(\".ui-accordion-header-icon\").remove();\n    },\n    _destroy: function _destroy() {\n      var t;\n      this.element.removeAttr(\"role\"), this.headers.removeAttr(\"role aria-expanded aria-selected aria-controls tabIndex\").removeUniqueId(), this._destroyIcons(), t = this.headers.next().css(\"display\", \"\").removeAttr(\"role aria-hidden aria-labelledby\").removeUniqueId(), \"content\" !== this.options.heightStyle && t.css(\"height\", \"\");\n    },\n    _setOption: function _setOption(t, e) {\n      return \"active\" === t ? (this._activate(e), void 0) : (\"event\" === t && (this.options.event && this._off(this.headers, this.options.event), this._setupEvents(e)), this._super(t, e), \"collapsible\" !== t || e || this.options.active !== !1 || this._activate(0), \"icons\" === t && (this._destroyIcons(), e && this._createIcons()), void 0);\n    },\n    _setOptionDisabled: function _setOptionDisabled(t) {\n      this._super(t), this.element.attr(\"aria-disabled\", t), this._toggleClass(null, \"ui-state-disabled\", !!t), this._toggleClass(this.headers.add(this.headers.next()), null, \"ui-state-disabled\", !!t);\n    },\n    _keydown: function _keydown(e) {\n      if (!e.altKey && !e.ctrlKey) {\n        var i = t.ui.keyCode,\n          s = this.headers.length,\n          n = this.headers.index(e.target),\n          o = !1;\n        switch (e.keyCode) {\n          case i.RIGHT:\n          case i.DOWN:\n            o = this.headers[(n + 1) % s];\n            break;\n          case i.LEFT:\n          case i.UP:\n            o = this.headers[(n - 1 + s) % s];\n            break;\n          case i.SPACE:\n          case i.ENTER:\n            this._eventHandler(e);\n            break;\n          case i.HOME:\n            o = this.headers[0];\n            break;\n          case i.END:\n            o = this.headers[s - 1];\n        }\n        o && (t(e.target).attr(\"tabIndex\", -1), t(o).attr(\"tabIndex\", 0), t(o).trigger(\"focus\"), e.preventDefault());\n      }\n    },\n    _panelKeyDown: function _panelKeyDown(e) {\n      e.keyCode === t.ui.keyCode.UP && e.ctrlKey && t(e.currentTarget).prev().trigger(\"focus\");\n    },\n    refresh: function refresh() {\n      var e = this.options;\n      this._processPanels(), e.active === !1 && e.collapsible === !0 || !this.headers.length ? (e.active = !1, this.active = t()) : e.active === !1 ? this._activate(0) : this.active.length && !t.contains(this.element[0], this.active[0]) ? this.headers.length === this.headers.find(\".ui-state-disabled\").length ? (e.active = !1, this.active = t()) : this._activate(Math.max(0, e.active - 1)) : e.active = this.headers.index(this.active), this._destroyIcons(), this._refresh();\n    },\n    _processPanels: function _processPanels() {\n      var t = this.headers,\n        e = this.panels;\n      this.headers = this.element.find(this.options.header), this._addClass(this.headers, \"ui-accordion-header ui-accordion-header-collapsed\", \"ui-state-default\"), this.panels = this.headers.next().filter(\":not(.ui-accordion-content-active)\").hide(), this._addClass(this.panels, \"ui-accordion-content\", \"ui-helper-reset ui-widget-content\"), e && (this._off(t.not(this.headers)), this._off(e.not(this.panels)));\n    },\n    _refresh: function _refresh() {\n      var e,\n        i = this.options,\n        s = i.heightStyle,\n        n = this.element.parent();\n      this.active = this._findActive(i.active), this._addClass(this.active, \"ui-accordion-header-active\", \"ui-state-active\")._removeClass(this.active, \"ui-accordion-header-collapsed\"), this._addClass(this.active.next(), \"ui-accordion-content-active\"), this.active.next().show(), this.headers.attr(\"role\", \"tab\").each(function () {\n        var e = t(this),\n          i = e.uniqueId().attr(\"id\"),\n          s = e.next(),\n          n = s.uniqueId().attr(\"id\");\n        e.attr(\"aria-controls\", n), s.attr(\"aria-labelledby\", i);\n      }).next().attr(\"role\", \"tabpanel\"), this.headers.not(this.active).attr({\n        \"aria-selected\": \"false\",\n        \"aria-expanded\": \"false\",\n        tabIndex: -1\n      }).next().attr({\n        \"aria-hidden\": \"true\"\n      }).hide(), this.active.length ? this.active.attr({\n        \"aria-selected\": \"true\",\n        \"aria-expanded\": \"true\",\n        tabIndex: 0\n      }).next().attr({\n        \"aria-hidden\": \"false\"\n      }) : this.headers.eq(0).attr(\"tabIndex\", 0), this._createIcons(), this._setupEvents(i.event), \"fill\" === s ? (e = n.height(), this.element.siblings(\":visible\").each(function () {\n        var i = t(this),\n          s = i.css(\"position\");\n        \"absolute\" !== s && \"fixed\" !== s && (e -= i.outerHeight(!0));\n      }), this.headers.each(function () {\n        e -= t(this).outerHeight(!0);\n      }), this.headers.next().each(function () {\n        t(this).height(Math.max(0, e - t(this).innerHeight() + t(this).height()));\n      }).css(\"overflow\", \"auto\")) : \"auto\" === s && (e = 0, this.headers.next().each(function () {\n        var i = t(this).is(\":visible\");\n        i || t(this).show(), e = Math.max(e, t(this).css(\"height\", \"\").height()), i || t(this).hide();\n      }).height(e));\n    },\n    _activate: function _activate(e) {\n      var i = this._findActive(e)[0];\n      i !== this.active[0] && (i = i || this.active[0], this._eventHandler({\n        target: i,\n        currentTarget: i,\n        preventDefault: t.noop\n      }));\n    },\n    _findActive: function _findActive(e) {\n      return \"number\" == typeof e ? this.headers.eq(e) : t();\n    },\n    _setupEvents: function _setupEvents(e) {\n      var i = {\n        keydown: \"_keydown\"\n      };\n      e && t.each(e.split(\" \"), function (t, e) {\n        i[e] = \"_eventHandler\";\n      }), this._off(this.headers.add(this.headers.next())), this._on(this.headers, i), this._on(this.headers.next(), {\n        keydown: \"_panelKeyDown\"\n      }), this._hoverable(this.headers), this._focusable(this.headers);\n    },\n    _eventHandler: function _eventHandler(e) {\n      var i,\n        s,\n        n = this.options,\n        o = this.active,\n        a = t(e.currentTarget),\n        r = a[0] === o[0],\n        h = r && n.collapsible,\n        l = h ? t() : a.next(),\n        c = o.next(),\n        u = {\n          oldHeader: o,\n          oldPanel: c,\n          newHeader: h ? t() : a,\n          newPanel: l\n        };\n      e.preventDefault(), r && !n.collapsible || this._trigger(\"beforeActivate\", e, u) === !1 || (n.active = h ? !1 : this.headers.index(a), this.active = r ? t() : a, this._toggle(u), this._removeClass(o, \"ui-accordion-header-active\", \"ui-state-active\"), n.icons && (i = o.children(\".ui-accordion-header-icon\"), this._removeClass(i, null, n.icons.activeHeader)._addClass(i, null, n.icons.header)), r || (this._removeClass(a, \"ui-accordion-header-collapsed\")._addClass(a, \"ui-accordion-header-active\", \"ui-state-active\"), n.icons && (s = a.children(\".ui-accordion-header-icon\"), this._removeClass(s, null, n.icons.header)._addClass(s, null, n.icons.activeHeader)), this._addClass(a.next(), \"ui-accordion-content-active\")));\n    },\n    _toggle: function _toggle(e) {\n      var i = e.newPanel,\n        s = this.prevShow.length ? this.prevShow : e.oldPanel;\n      this.prevShow.add(this.prevHide).stop(!0, !0), this.prevShow = i, this.prevHide = s, this.options.animate ? this._animate(i, s, e) : (s.hide(), i.show(), this._toggleComplete(e)), s.attr({\n        \"aria-hidden\": \"true\"\n      }), s.prev().attr({\n        \"aria-selected\": \"false\",\n        \"aria-expanded\": \"false\"\n      }), i.length && s.length ? s.prev().attr({\n        tabIndex: -1,\n        \"aria-expanded\": \"false\"\n      }) : i.length && this.headers.filter(function () {\n        return 0 === parseInt(t(this).attr(\"tabIndex\"), 10);\n      }).attr(\"tabIndex\", -1), i.attr(\"aria-hidden\", \"false\").prev().attr({\n        \"aria-selected\": \"true\",\n        \"aria-expanded\": \"true\",\n        tabIndex: 0\n      });\n    },\n    _animate: function _animate(t, e, i) {\n      var s,\n        n,\n        o,\n        a = this,\n        r = 0,\n        h = t.css(\"box-sizing\"),\n        l = t.length && (!e.length || t.index() < e.index()),\n        c = this.options.animate || {},\n        u = l && c.down || c,\n        d = function d() {\n          a._toggleComplete(i);\n        };\n      return \"number\" == typeof u && (o = u), \"string\" == typeof u && (n = u), n = n || u.easing || c.easing, o = o || u.duration || c.duration, e.length ? t.length ? (s = t.show().outerHeight(), e.animate(this.hideProps, {\n        duration: o,\n        easing: n,\n        step: function step(t, e) {\n          e.now = Math.round(t);\n        }\n      }), t.hide().animate(this.showProps, {\n        duration: o,\n        easing: n,\n        complete: d,\n        step: function step(t, i) {\n          i.now = Math.round(t), \"height\" !== i.prop ? \"content-box\" === h && (r += i.now) : \"content\" !== a.options.heightStyle && (i.now = Math.round(s - e.outerHeight() - r), r = 0);\n        }\n      }), void 0) : e.animate(this.hideProps, o, n, d) : t.animate(this.showProps, o, n, d);\n    },\n    _toggleComplete: function _toggleComplete(t) {\n      var e = t.oldPanel,\n        i = e.prev();\n      this._removeClass(e, \"ui-accordion-content-active\"), this._removeClass(i, \"ui-accordion-header-active\")._addClass(i, \"ui-accordion-header-collapsed\"), e.length && (e.parent()[0].className = e.parent()[0].className), this._trigger(\"activate\", null, t);\n    }\n  }), t.ui.safeActiveElement = function (t) {\n    var e;\n    try {\n      e = t.activeElement;\n    } catch (i) {\n      e = t.body;\n    }\n    return e || (e = t.body), e.nodeName || (e = t.body), e;\n  }, t.widget(\"ui.menu\", {\n    version: \"1.12.1\",\n    defaultElement: \"<ul>\",\n    delay: 300,\n    options: {\n      icons: {\n        submenu: \"ui-icon-caret-1-e\"\n      },\n      items: \"> *\",\n      menus: \"ul\",\n      position: {\n        my: \"left top\",\n        at: \"right top\"\n      },\n      role: \"menu\",\n      blur: null,\n      focus: null,\n      select: null\n    },\n    _create: function _create() {\n      this.activeMenu = this.element, this.mouseHandled = !1, this.element.uniqueId().attr({\n        role: this.options.role,\n        tabIndex: 0\n      }), this._addClass(\"ui-menu\", \"ui-widget ui-widget-content\"), this._on({\n        \"mousedown .ui-menu-item\": function mousedownUiMenuItem(t) {\n          t.preventDefault();\n        },\n        \"click .ui-menu-item\": function clickUiMenuItem(e) {\n          var i = t(e.target),\n            s = t(t.ui.safeActiveElement(this.document[0]));\n          !this.mouseHandled && i.not(\".ui-state-disabled\").length && (this.select(e), e.isPropagationStopped() || (this.mouseHandled = !0), i.has(\".ui-menu\").length ? this.expand(e) : !this.element.is(\":focus\") && s.closest(\".ui-menu\").length && (this.element.trigger(\"focus\", [!0]), this.active && 1 === this.active.parents(\".ui-menu\").length && clearTimeout(this.timer)));\n        },\n        \"mouseenter .ui-menu-item\": function mouseenterUiMenuItem(e) {\n          if (!this.previousFilter) {\n            var i = t(e.target).closest(\".ui-menu-item\"),\n              s = t(e.currentTarget);\n            i[0] === s[0] && (this._removeClass(s.siblings().children(\".ui-state-active\"), null, \"ui-state-active\"), this.focus(e, s));\n          }\n        },\n        mouseleave: \"collapseAll\",\n        \"mouseleave .ui-menu\": \"collapseAll\",\n        focus: function focus(t, e) {\n          var i = this.active || this.element.find(this.options.items).eq(0);\n          e || this.focus(t, i);\n        },\n        blur: function blur(e) {\n          this._delay(function () {\n            var i = !t.contains(this.element[0], t.ui.safeActiveElement(this.document[0]));\n            i && this.collapseAll(e);\n          });\n        },\n        keydown: \"_keydown\"\n      }), this.refresh(), this._on(this.document, {\n        click: function click(t) {\n          this._closeOnDocumentClick(t) && this.collapseAll(t), this.mouseHandled = !1;\n        }\n      });\n    },\n    _destroy: function _destroy() {\n      var e = this.element.find(\".ui-menu-item\").removeAttr(\"role aria-disabled\"),\n        i = e.children(\".ui-menu-item-wrapper\").removeUniqueId().removeAttr(\"tabIndex role aria-haspopup\");\n      this.element.removeAttr(\"aria-activedescendant\").find(\".ui-menu\").addBack().removeAttr(\"role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex\").removeUniqueId().show(), i.children().each(function () {\n        var e = t(this);\n        e.data(\"ui-menu-submenu-caret\") && e.remove();\n      });\n    },\n    _keydown: function _keydown(e) {\n      var i,\n        s,\n        n,\n        o,\n        a = !0;\n      switch (e.keyCode) {\n        case t.ui.keyCode.PAGE_UP:\n          this.previousPage(e);\n          break;\n        case t.ui.keyCode.PAGE_DOWN:\n          this.nextPage(e);\n          break;\n        case t.ui.keyCode.HOME:\n          this._move(\"first\", \"first\", e);\n          break;\n        case t.ui.keyCode.END:\n          this._move(\"last\", \"last\", e);\n          break;\n        case t.ui.keyCode.UP:\n          this.previous(e);\n          break;\n        case t.ui.keyCode.DOWN:\n          this.next(e);\n          break;\n        case t.ui.keyCode.LEFT:\n          this.collapse(e);\n          break;\n        case t.ui.keyCode.RIGHT:\n          this.active && !this.active.is(\".ui-state-disabled\") && this.expand(e);\n          break;\n        case t.ui.keyCode.ENTER:\n        case t.ui.keyCode.SPACE:\n          this._activate(e);\n          break;\n        case t.ui.keyCode.ESCAPE:\n          this.collapse(e);\n          break;\n        default:\n          a = !1, s = this.previousFilter || \"\", o = !1, n = e.keyCode >= 96 && 105 >= e.keyCode ? \"\" + (e.keyCode - 96) : String.fromCharCode(e.keyCode), clearTimeout(this.filterTimer), n === s ? o = !0 : n = s + n, i = this._filterMenuItems(n), i = o && -1 !== i.index(this.active.next()) ? this.active.nextAll(\".ui-menu-item\") : i, i.length || (n = String.fromCharCode(e.keyCode), i = this._filterMenuItems(n)), i.length ? (this.focus(e, i), this.previousFilter = n, this.filterTimer = this._delay(function () {\n            delete this.previousFilter;\n          }, 1e3)) : delete this.previousFilter;\n      }\n      a && e.preventDefault();\n    },\n    _activate: function _activate(t) {\n      this.active && !this.active.is(\".ui-state-disabled\") && (this.active.children(\"[aria-haspopup='true']\").length ? this.expand(t) : this.select(t));\n    },\n    refresh: function refresh() {\n      var e,\n        i,\n        s,\n        n,\n        o,\n        a = this,\n        r = this.options.icons.submenu,\n        h = this.element.find(this.options.menus);\n      this._toggleClass(\"ui-menu-icons\", null, !!this.element.find(\".ui-icon\").length), s = h.filter(\":not(.ui-menu)\").hide().attr({\n        role: this.options.role,\n        \"aria-hidden\": \"true\",\n        \"aria-expanded\": \"false\"\n      }).each(function () {\n        var e = t(this),\n          i = e.prev(),\n          s = t(\"<span>\").data(\"ui-menu-submenu-caret\", !0);\n        a._addClass(s, \"ui-menu-icon\", \"ui-icon \" + r), i.attr(\"aria-haspopup\", \"true\").prepend(s), e.attr(\"aria-labelledby\", i.attr(\"id\"));\n      }), this._addClass(s, \"ui-menu\", \"ui-widget ui-widget-content ui-front\"), e = h.add(this.element), i = e.find(this.options.items), i.not(\".ui-menu-item\").each(function () {\n        var e = t(this);\n        a._isDivider(e) && a._addClass(e, \"ui-menu-divider\", \"ui-widget-content\");\n      }), n = i.not(\".ui-menu-item, .ui-menu-divider\"), o = n.children().not(\".ui-menu\").uniqueId().attr({\n        tabIndex: -1,\n        role: this._itemRole()\n      }), this._addClass(n, \"ui-menu-item\")._addClass(o, \"ui-menu-item-wrapper\"), i.filter(\".ui-state-disabled\").attr(\"aria-disabled\", \"true\"), this.active && !t.contains(this.element[0], this.active[0]) && this.blur();\n    },\n    _itemRole: function _itemRole() {\n      return {\n        menu: \"menuitem\",\n        listbox: \"option\"\n      }[this.options.role];\n    },\n    _setOption: function _setOption(t, e) {\n      if (\"icons\" === t) {\n        var i = this.element.find(\".ui-menu-icon\");\n        this._removeClass(i, null, this.options.icons.submenu)._addClass(i, null, e.submenu);\n      }\n      this._super(t, e);\n    },\n    _setOptionDisabled: function _setOptionDisabled(t) {\n      this._super(t), this.element.attr(\"aria-disabled\", t + \"\"), this._toggleClass(null, \"ui-state-disabled\", !!t);\n    },\n    focus: function focus(t, e) {\n      var i, s, n;\n      this.blur(t, t && \"focus\" === t.type), this._scrollIntoView(e), this.active = e.first(), s = this.active.children(\".ui-menu-item-wrapper\"), this._addClass(s, null, \"ui-state-active\"), this.options.role && this.element.attr(\"aria-activedescendant\", s.attr(\"id\")), n = this.active.parent().closest(\".ui-menu-item\").children(\".ui-menu-item-wrapper\"), this._addClass(n, null, \"ui-state-active\"), t && \"keydown\" === t.type ? this._close() : this.timer = this._delay(function () {\n        this._close();\n      }, this.delay), i = e.children(\".ui-menu\"), i.length && t && /^mouse/.test(t.type) && this._startOpening(i), this.activeMenu = e.parent(), this._trigger(\"focus\", t, {\n        item: e\n      });\n    },\n    _scrollIntoView: function _scrollIntoView(e) {\n      var i, s, n, o, a, r;\n      this._hasScroll() && (i = parseFloat(t.css(this.activeMenu[0], \"borderTopWidth\")) || 0, s = parseFloat(t.css(this.activeMenu[0], \"paddingTop\")) || 0, n = e.offset().top - this.activeMenu.offset().top - i - s, o = this.activeMenu.scrollTop(), a = this.activeMenu.height(), r = e.outerHeight(), 0 > n ? this.activeMenu.scrollTop(o + n) : n + r > a && this.activeMenu.scrollTop(o + n - a + r));\n    },\n    blur: function blur(t, e) {\n      e || clearTimeout(this.timer), this.active && (this._removeClass(this.active.children(\".ui-menu-item-wrapper\"), null, \"ui-state-active\"), this._trigger(\"blur\", t, {\n        item: this.active\n      }), this.active = null);\n    },\n    _startOpening: function _startOpening(t) {\n      clearTimeout(this.timer), \"true\" === t.attr(\"aria-hidden\") && (this.timer = this._delay(function () {\n        this._close(), this._open(t);\n      }, this.delay));\n    },\n    _open: function _open(e) {\n      var i = t.extend({\n        of: this.active\n      }, this.options.position);\n      clearTimeout(this.timer), this.element.find(\".ui-menu\").not(e.parents(\".ui-menu\")).hide().attr(\"aria-hidden\", \"true\"), e.show().removeAttr(\"aria-hidden\").attr(\"aria-expanded\", \"true\").position(i);\n    },\n    collapseAll: function collapseAll(e, i) {\n      clearTimeout(this.timer), this.timer = this._delay(function () {\n        var s = i ? this.element : t(e && e.target).closest(this.element.find(\".ui-menu\"));\n        s.length || (s = this.element), this._close(s), this.blur(e), this._removeClass(s.find(\".ui-state-active\"), null, \"ui-state-active\"), this.activeMenu = s;\n      }, this.delay);\n    },\n    _close: function _close(t) {\n      t || (t = this.active ? this.active.parent() : this.element), t.find(\".ui-menu\").hide().attr(\"aria-hidden\", \"true\").attr(\"aria-expanded\", \"false\");\n    },\n    _closeOnDocumentClick: function _closeOnDocumentClick(e) {\n      return !t(e.target).closest(\".ui-menu\").length;\n    },\n    _isDivider: function _isDivider(t) {\n      return !/[^\\-\\u2014\\u2013\\s]/.test(t.text());\n    },\n    collapse: function collapse(t) {\n      var e = this.active && this.active.parent().closest(\".ui-menu-item\", this.element);\n      e && e.length && (this._close(), this.focus(t, e));\n    },\n    expand: function expand(t) {\n      var e = this.active && this.active.children(\".ui-menu \").find(this.options.items).first();\n      e && e.length && (this._open(e.parent()), this._delay(function () {\n        this.focus(t, e);\n      }));\n    },\n    next: function next(t) {\n      this._move(\"next\", \"first\", t);\n    },\n    previous: function previous(t) {\n      this._move(\"prev\", \"last\", t);\n    },\n    isFirstItem: function isFirstItem() {\n      return this.active && !this.active.prevAll(\".ui-menu-item\").length;\n    },\n    isLastItem: function isLastItem() {\n      return this.active && !this.active.nextAll(\".ui-menu-item\").length;\n    },\n    _move: function _move(t, e, i) {\n      var s;\n      this.active && (s = \"first\" === t || \"last\" === t ? this.active[\"first\" === t ? \"prevAll\" : \"nextAll\"](\".ui-menu-item\").eq(-1) : this.active[t + \"All\"](\".ui-menu-item\").eq(0)), s && s.length && this.active || (s = this.activeMenu.find(this.options.items)[e]()), this.focus(i, s);\n    },\n    nextPage: function nextPage(e) {\n      var i, s, n;\n      return this.active ? (this.isLastItem() || (this._hasScroll() ? (s = this.active.offset().top, n = this.element.height(), this.active.nextAll(\".ui-menu-item\").each(function () {\n        return i = t(this), 0 > i.offset().top - s - n;\n      }), this.focus(e, i)) : this.focus(e, this.activeMenu.find(this.options.items)[this.active ? \"last\" : \"first\"]())), void 0) : (this.next(e), void 0);\n    },\n    previousPage: function previousPage(e) {\n      var i, s, n;\n      return this.active ? (this.isFirstItem() || (this._hasScroll() ? (s = this.active.offset().top, n = this.element.height(), this.active.prevAll(\".ui-menu-item\").each(function () {\n        return i = t(this), i.offset().top - s + n > 0;\n      }), this.focus(e, i)) : this.focus(e, this.activeMenu.find(this.options.items).first())), void 0) : (this.next(e), void 0);\n    },\n    _hasScroll: function _hasScroll() {\n      return this.element.outerHeight() < this.element.prop(\"scrollHeight\");\n    },\n    select: function select(e) {\n      this.active = this.active || t(e.target).closest(\".ui-menu-item\");\n      var i = {\n        item: this.active\n      };\n      this.active.has(\".ui-menu\").length || this.collapseAll(e, !0), this._trigger(\"select\", e, i);\n    },\n    _filterMenuItems: function _filterMenuItems(e) {\n      var i = e.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\"),\n        s = RegExp(\"^\" + i, \"i\");\n      return this.activeMenu.find(this.options.items).filter(\".ui-menu-item\").filter(function () {\n        return s.test(t.trim(t(this).children(\".ui-menu-item-wrapper\").text()));\n      });\n    }\n  }), t.widget(\"ui.autocomplete\", {\n    version: \"1.12.1\",\n    defaultElement: \"<input>\",\n    options: {\n      appendTo: null,\n      autoFocus: !1,\n      delay: 300,\n      minLength: 1,\n      position: {\n        my: \"left top\",\n        at: \"left bottom\",\n        collision: \"none\"\n      },\n      source: null,\n      change: null,\n      close: null,\n      focus: null,\n      open: null,\n      response: null,\n      search: null,\n      select: null\n    },\n    requestIndex: 0,\n    pending: 0,\n    _create: function _create() {\n      var e,\n        i,\n        s,\n        n = this.element[0].nodeName.toLowerCase(),\n        o = \"textarea\" === n,\n        a = \"input\" === n;\n      this.isMultiLine = o || !a && this._isContentEditable(this.element), this.valueMethod = this.element[o || a ? \"val\" : \"text\"], this.isNewMenu = !0, this._addClass(\"ui-autocomplete-input\"), this.element.attr(\"autocomplete\", \"off\"), this._on(this.element, {\n        keydown: function keydown(n) {\n          if (this.element.prop(\"readOnly\")) return e = !0, s = !0, i = !0, void 0;\n          e = !1, s = !1, i = !1;\n          var o = t.ui.keyCode;\n          switch (n.keyCode) {\n            case o.PAGE_UP:\n              e = !0, this._move(\"previousPage\", n);\n              break;\n            case o.PAGE_DOWN:\n              e = !0, this._move(\"nextPage\", n);\n              break;\n            case o.UP:\n              e = !0, this._keyEvent(\"previous\", n);\n              break;\n            case o.DOWN:\n              e = !0, this._keyEvent(\"next\", n);\n              break;\n            case o.ENTER:\n              this.menu.active && (e = !0, n.preventDefault(), this.menu.select(n));\n              break;\n            case o.TAB:\n              this.menu.active && this.menu.select(n);\n              break;\n            case o.ESCAPE:\n              this.menu.element.is(\":visible\") && (this.isMultiLine || this._value(this.term), this.close(n), n.preventDefault());\n              break;\n            default:\n              i = !0, this._searchTimeout(n);\n          }\n        },\n        keypress: function keypress(s) {\n          if (e) return e = !1, (!this.isMultiLine || this.menu.element.is(\":visible\")) && s.preventDefault(), void 0;\n          if (!i) {\n            var n = t.ui.keyCode;\n            switch (s.keyCode) {\n              case n.PAGE_UP:\n                this._move(\"previousPage\", s);\n                break;\n              case n.PAGE_DOWN:\n                this._move(\"nextPage\", s);\n                break;\n              case n.UP:\n                this._keyEvent(\"previous\", s);\n                break;\n              case n.DOWN:\n                this._keyEvent(\"next\", s);\n            }\n          }\n        },\n        input: function input(t) {\n          return s ? (s = !1, t.preventDefault(), void 0) : (this._searchTimeout(t), void 0);\n        },\n        focus: function focus() {\n          this.selectedItem = null, this.previous = this._value();\n        },\n        blur: function blur(t) {\n          return this.cancelBlur ? (delete this.cancelBlur, void 0) : (clearTimeout(this.searching), this.close(t), this._change(t), void 0);\n        }\n      }), this._initSource(), this.menu = t(\"<ul>\").appendTo(this._appendTo()).menu({\n        role: null\n      }).hide().menu(\"instance\"), this._addClass(this.menu.element, \"ui-autocomplete\", \"ui-front\"), this._on(this.menu.element, {\n        mousedown: function mousedown(e) {\n          e.preventDefault(), this.cancelBlur = !0, this._delay(function () {\n            delete this.cancelBlur, this.element[0] !== t.ui.safeActiveElement(this.document[0]) && this.element.trigger(\"focus\");\n          });\n        },\n        menufocus: function menufocus(e, i) {\n          var s, n;\n          return this.isNewMenu && (this.isNewMenu = !1, e.originalEvent && /^mouse/.test(e.originalEvent.type)) ? (this.menu.blur(), this.document.one(\"mousemove\", function () {\n            t(e.target).trigger(e.originalEvent);\n          }), void 0) : (n = i.item.data(\"ui-autocomplete-item\"), !1 !== this._trigger(\"focus\", e, {\n            item: n\n          }) && e.originalEvent && /^key/.test(e.originalEvent.type) && this._value(n.value), s = i.item.attr(\"aria-label\") || n.value, s && t.trim(s).length && (this.liveRegion.children().hide(), t(\"<div>\").text(s).appendTo(this.liveRegion)), void 0);\n        },\n        menuselect: function menuselect(e, i) {\n          var s = i.item.data(\"ui-autocomplete-item\"),\n            n = this.previous;\n          this.element[0] !== t.ui.safeActiveElement(this.document[0]) && (this.element.trigger(\"focus\"), this.previous = n, this._delay(function () {\n            this.previous = n, this.selectedItem = s;\n          })), !1 !== this._trigger(\"select\", e, {\n            item: s\n          }) && this._value(s.value), this.term = this._value(), this.close(e), this.selectedItem = s;\n        }\n      }), this.liveRegion = t(\"<div>\", {\n        role: \"status\",\n        \"aria-live\": \"assertive\",\n        \"aria-relevant\": \"additions\"\n      }).appendTo(this.document[0].body), this._addClass(this.liveRegion, null, \"ui-helper-hidden-accessible\"), this._on(this.window, {\n        beforeunload: function beforeunload() {\n          this.element.removeAttr(\"autocomplete\");\n        }\n      });\n    },\n    _destroy: function _destroy() {\n      clearTimeout(this.searching), this.element.removeAttr(\"autocomplete\"), this.menu.element.remove(), this.liveRegion.remove();\n    },\n    _setOption: function _setOption(t, e) {\n      this._super(t, e), \"source\" === t && this._initSource(), \"appendTo\" === t && this.menu.element.appendTo(this._appendTo()), \"disabled\" === t && e && this.xhr && this.xhr.abort();\n    },\n    _isEventTargetInWidget: function _isEventTargetInWidget(e) {\n      var i = this.menu.element[0];\n      return e.target === this.element[0] || e.target === i || t.contains(i, e.target);\n    },\n    _closeOnClickOutside: function _closeOnClickOutside(t) {\n      this._isEventTargetInWidget(t) || this.close();\n    },\n    _appendTo: function _appendTo() {\n      var e = this.options.appendTo;\n      return e && (e = e.jquery || e.nodeType ? t(e) : this.document.find(e).eq(0)), e && e[0] || (e = this.element.closest(\".ui-front, dialog\")), e.length || (e = this.document[0].body), e;\n    },\n    _initSource: function _initSource() {\n      var e,\n        i,\n        s = this;\n      t.isArray(this.options.source) ? (e = this.options.source, this.source = function (i, s) {\n        s(t.ui.autocomplete.filter(e, i.term));\n      }) : \"string\" == typeof this.options.source ? (i = this.options.source, this.source = function (e, n) {\n        s.xhr && s.xhr.abort(), s.xhr = t.ajax({\n          url: i,\n          data: e,\n          dataType: \"json\",\n          success: function success(t) {\n            n(t);\n          },\n          error: function error() {\n            n([]);\n          }\n        });\n      }) : this.source = this.options.source;\n    },\n    _searchTimeout: function _searchTimeout(t) {\n      clearTimeout(this.searching), this.searching = this._delay(function () {\n        var e = this.term === this._value(),\n          i = this.menu.element.is(\":visible\"),\n          s = t.altKey || t.ctrlKey || t.metaKey || t.shiftKey;\n        (!e || e && !i && !s) && (this.selectedItem = null, this.search(null, t));\n      }, this.options.delay);\n    },\n    search: function search(t, e) {\n      return t = null != t ? t : this._value(), this.term = this._value(), t.length < this.options.minLength ? this.close(e) : this._trigger(\"search\", e) !== !1 ? this._search(t) : void 0;\n    },\n    _search: function _search(t) {\n      this.pending++, this._addClass(\"ui-autocomplete-loading\"), this.cancelSearch = !1, this.source({\n        term: t\n      }, this._response());\n    },\n    _response: function _response() {\n      var e = ++this.requestIndex;\n      return t.proxy(function (t) {\n        e === this.requestIndex && this.__response(t), this.pending--, this.pending || this._removeClass(\"ui-autocomplete-loading\");\n      }, this);\n    },\n    __response: function __response(t) {\n      t && (t = this._normalize(t)), this._trigger(\"response\", null, {\n        content: t\n      }), !this.options.disabled && t && t.length && !this.cancelSearch ? (this._suggest(t), this._trigger(\"open\")) : this._close();\n    },\n    close: function close(t) {\n      this.cancelSearch = !0, this._close(t);\n    },\n    _close: function _close(t) {\n      this._off(this.document, \"mousedown\"), this.menu.element.is(\":visible\") && (this.menu.element.hide(), this.menu.blur(), this.isNewMenu = !0, this._trigger(\"close\", t));\n    },\n    _change: function _change(t) {\n      this.previous !== this._value() && this._trigger(\"change\", t, {\n        item: this.selectedItem\n      });\n    },\n    _normalize: function _normalize(e) {\n      return e.length && e[0].label && e[0].value ? e : t.map(e, function (e) {\n        return \"string\" == typeof e ? {\n          label: e,\n          value: e\n        } : t.extend({}, e, {\n          label: e.label || e.value,\n          value: e.value || e.label\n        });\n      });\n    },\n    _suggest: function _suggest(e) {\n      var i = this.menu.element.empty();\n      this._renderMenu(i, e), this.isNewMenu = !0, this.menu.refresh(), i.show(), this._resizeMenu(), i.position(t.extend({\n        of: this.element\n      }, this.options.position)), this.options.autoFocus && this.menu.next(), this._on(this.document, {\n        mousedown: \"_closeOnClickOutside\"\n      });\n    },\n    _resizeMenu: function _resizeMenu() {\n      var t = this.menu.element;\n      t.outerWidth(Math.max(t.width(\"\").outerWidth() + 1, this.element.outerWidth()));\n    },\n    _renderMenu: function _renderMenu(e, i) {\n      var s = this;\n      t.each(i, function (t, i) {\n        s._renderItemData(e, i);\n      });\n    },\n    _renderItemData: function _renderItemData(t, e) {\n      return this._renderItem(t, e).data(\"ui-autocomplete-item\", e);\n    },\n    _renderItem: function _renderItem(e, i) {\n      return t(\"<li>\").append(t(\"<div>\").text(i.label)).appendTo(e);\n    },\n    _move: function _move(t, e) {\n      return this.menu.element.is(\":visible\") ? this.menu.isFirstItem() && /^previous/.test(t) || this.menu.isLastItem() && /^next/.test(t) ? (this.isMultiLine || this._value(this.term), this.menu.blur(), void 0) : (this.menu[t](e), void 0) : (this.search(null, e), void 0);\n    },\n    widget: function widget() {\n      return this.menu.element;\n    },\n    _value: function _value() {\n      return this.valueMethod.apply(this.element, arguments);\n    },\n    _keyEvent: function _keyEvent(t, e) {\n      (!this.isMultiLine || this.menu.element.is(\":visible\")) && (this._move(t, e), e.preventDefault());\n    },\n    _isContentEditable: function _isContentEditable(t) {\n      if (!t.length) return !1;\n      var e = t.prop(\"contentEditable\");\n      return \"inherit\" === e ? this._isContentEditable(t.parent()) : \"true\" === e;\n    }\n  }), t.extend(t.ui.autocomplete, {\n    escapeRegex: function escapeRegex(t) {\n      return t.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n    },\n    filter: function filter(e, i) {\n      var s = RegExp(t.ui.autocomplete.escapeRegex(i), \"i\");\n      return t.grep(e, function (t) {\n        return s.test(t.label || t.value || t);\n      });\n    }\n  }), t.widget(\"ui.autocomplete\", t.ui.autocomplete, {\n    options: {\n      messages: {\n        noResults: \"No search results.\",\n        results: function results(t) {\n          return t + (t > 1 ? \" results are\" : \" result is\") + \" available, use up and down arrow keys to navigate.\";\n        }\n      }\n    },\n    __response: function __response(e) {\n      var i;\n      this._superApply(arguments), this.options.disabled || this.cancelSearch || (i = e && e.length ? this.options.messages.results(e.length) : this.options.messages.noResults, this.liveRegion.children().hide(), t(\"<div>\").text(i).appendTo(this.liveRegion));\n    }\n  }), t.ui.autocomplete;\n  var g = /ui-corner-([a-z]){2,6}/g;\n  t.widget(\"ui.controlgroup\", {\n    version: \"1.12.1\",\n    defaultElement: \"<div>\",\n    options: {\n      direction: \"horizontal\",\n      disabled: null,\n      onlyVisible: !0,\n      items: {\n        button: \"input[type=button], input[type=submit], input[type=reset], button, a\",\n        controlgroupLabel: \".ui-controlgroup-label\",\n        checkboxradio: \"input[type='checkbox'], input[type='radio']\",\n        selectmenu: \"select\",\n        spinner: \".ui-spinner-input\"\n      }\n    },\n    _create: function _create() {\n      this._enhance();\n    },\n    _enhance: function _enhance() {\n      this.element.attr(\"role\", \"toolbar\"), this.refresh();\n    },\n    _destroy: function _destroy() {\n      this._callChildMethod(\"destroy\"), this.childWidgets.removeData(\"ui-controlgroup-data\"), this.element.removeAttr(\"role\"), this.options.items.controlgroupLabel && this.element.find(this.options.items.controlgroupLabel).find(\".ui-controlgroup-label-contents\").contents().unwrap();\n    },\n    _initWidgets: function _initWidgets() {\n      var e = this,\n        i = [];\n      t.each(this.options.items, function (s, n) {\n        var o,\n          a = {};\n        return n ? \"controlgroupLabel\" === s ? (o = e.element.find(n), o.each(function () {\n          var e = t(this);\n          e.children(\".ui-controlgroup-label-contents\").length || e.contents().wrapAll(\"<span class='ui-controlgroup-label-contents'></span>\");\n        }), e._addClass(o, null, \"ui-widget ui-widget-content ui-state-default\"), i = i.concat(o.get()), void 0) : (t.fn[s] && (a = e[\"_\" + s + \"Options\"] ? e[\"_\" + s + \"Options\"](\"middle\") : {\n          classes: {}\n        }, e.element.find(n).each(function () {\n          var n = t(this),\n            o = n[s](\"instance\"),\n            r = t.widget.extend({}, a);\n          if (\"button\" !== s || !n.parent(\".ui-spinner\").length) {\n            o || (o = n[s]()[s](\"instance\")), o && (r.classes = e._resolveClassesValues(r.classes, o)), n[s](r);\n            var h = n[s](\"widget\");\n            t.data(h[0], \"ui-controlgroup-data\", o ? o : n[s](\"instance\")), i.push(h[0]);\n          }\n        })), void 0) : void 0;\n      }), this.childWidgets = t(t.unique(i)), this._addClass(this.childWidgets, \"ui-controlgroup-item\");\n    },\n    _callChildMethod: function _callChildMethod(e) {\n      this.childWidgets.each(function () {\n        var i = t(this),\n          s = i.data(\"ui-controlgroup-data\");\n        s && s[e] && s[e]();\n      });\n    },\n    _updateCornerClass: function _updateCornerClass(t, e) {\n      var i = \"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all\",\n        s = this._buildSimpleOptions(e, \"label\").classes.label;\n      this._removeClass(t, null, i), this._addClass(t, null, s);\n    },\n    _buildSimpleOptions: function _buildSimpleOptions(t, e) {\n      var i = \"vertical\" === this.options.direction,\n        s = {\n          classes: {}\n        };\n      return s.classes[e] = {\n        middle: \"\",\n        first: \"ui-corner-\" + (i ? \"top\" : \"left\"),\n        last: \"ui-corner-\" + (i ? \"bottom\" : \"right\"),\n        only: \"ui-corner-all\"\n      }[t], s;\n    },\n    _spinnerOptions: function _spinnerOptions(t) {\n      var e = this._buildSimpleOptions(t, \"ui-spinner\");\n      return e.classes[\"ui-spinner-up\"] = \"\", e.classes[\"ui-spinner-down\"] = \"\", e;\n    },\n    _buttonOptions: function _buttonOptions(t) {\n      return this._buildSimpleOptions(t, \"ui-button\");\n    },\n    _checkboxradioOptions: function _checkboxradioOptions(t) {\n      return this._buildSimpleOptions(t, \"ui-checkboxradio-label\");\n    },\n    _selectmenuOptions: function _selectmenuOptions(t) {\n      var e = \"vertical\" === this.options.direction;\n      return {\n        width: e ? \"auto\" : !1,\n        classes: {\n          middle: {\n            \"ui-selectmenu-button-open\": \"\",\n            \"ui-selectmenu-button-closed\": \"\"\n          },\n          first: {\n            \"ui-selectmenu-button-open\": \"ui-corner-\" + (e ? \"top\" : \"tl\"),\n            \"ui-selectmenu-button-closed\": \"ui-corner-\" + (e ? \"top\" : \"left\")\n          },\n          last: {\n            \"ui-selectmenu-button-open\": e ? \"\" : \"ui-corner-tr\",\n            \"ui-selectmenu-button-closed\": \"ui-corner-\" + (e ? \"bottom\" : \"right\")\n          },\n          only: {\n            \"ui-selectmenu-button-open\": \"ui-corner-top\",\n            \"ui-selectmenu-button-closed\": \"ui-corner-all\"\n          }\n        }[t]\n      };\n    },\n    _resolveClassesValues: function _resolveClassesValues(e, i) {\n      var s = {};\n      return t.each(e, function (n) {\n        var o = i.options.classes[n] || \"\";\n        o = t.trim(o.replace(g, \"\")), s[n] = (o + \" \" + e[n]).replace(/\\s+/g, \" \");\n      }), s;\n    },\n    _setOption: function _setOption(t, e) {\n      return \"direction\" === t && this._removeClass(\"ui-controlgroup-\" + this.options.direction), this._super(t, e), \"disabled\" === t ? (this._callChildMethod(e ? \"disable\" : \"enable\"), void 0) : (this.refresh(), void 0);\n    },\n    refresh: function refresh() {\n      var e,\n        i = this;\n      this._addClass(\"ui-controlgroup ui-controlgroup-\" + this.options.direction), \"horizontal\" === this.options.direction && this._addClass(null, \"ui-helper-clearfix\"), this._initWidgets(), e = this.childWidgets, this.options.onlyVisible && (e = e.filter(\":visible\")), e.length && (t.each([\"first\", \"last\"], function (t, s) {\n        var n = e[s]().data(\"ui-controlgroup-data\");\n        if (n && i[\"_\" + n.widgetName + \"Options\"]) {\n          var o = i[\"_\" + n.widgetName + \"Options\"](1 === e.length ? \"only\" : s);\n          o.classes = i._resolveClassesValues(o.classes, n), n.element[n.widgetName](o);\n        } else i._updateCornerClass(e[s](), s);\n      }), this._callChildMethod(\"refresh\"));\n    }\n  }), t.widget(\"ui.checkboxradio\", [t.ui.formResetMixin, {\n    version: \"1.12.1\",\n    options: {\n      disabled: null,\n      label: null,\n      icon: !0,\n      classes: {\n        \"ui-checkboxradio-label\": \"ui-corner-all\",\n        \"ui-checkboxradio-icon\": \"ui-corner-all\"\n      }\n    },\n    _getCreateOptions: function _getCreateOptions() {\n      var e,\n        i,\n        s = this,\n        n = this._super() || {};\n      return this._readType(), i = this.element.labels(), this.label = t(i[i.length - 1]), this.label.length || t.error(\"No label found for checkboxradio widget\"), this.originalLabel = \"\", this.label.contents().not(this.element[0]).each(function () {\n        s.originalLabel += 3 === this.nodeType ? t(this).text() : this.outerHTML;\n      }), this.originalLabel && (n.label = this.originalLabel), e = this.element[0].disabled, null != e && (n.disabled = e), n;\n    },\n    _create: function _create() {\n      var t = this.element[0].checked;\n      this._bindFormResetHandler(), null == this.options.disabled && (this.options.disabled = this.element[0].disabled), this._setOption(\"disabled\", this.options.disabled), this._addClass(\"ui-checkboxradio\", \"ui-helper-hidden-accessible\"), this._addClass(this.label, \"ui-checkboxradio-label\", \"ui-button ui-widget\"), \"radio\" === this.type && this._addClass(this.label, \"ui-checkboxradio-radio-label\"), this.options.label && this.options.label !== this.originalLabel ? this._updateLabel() : this.originalLabel && (this.options.label = this.originalLabel), this._enhance(), t && (this._addClass(this.label, \"ui-checkboxradio-checked\", \"ui-state-active\"), this.icon && this._addClass(this.icon, null, \"ui-state-hover\")), this._on({\n        change: \"_toggleClasses\",\n        focus: function focus() {\n          this._addClass(this.label, null, \"ui-state-focus ui-visual-focus\");\n        },\n        blur: function blur() {\n          this._removeClass(this.label, null, \"ui-state-focus ui-visual-focus\");\n        }\n      });\n    },\n    _readType: function _readType() {\n      var e = this.element[0].nodeName.toLowerCase();\n      this.type = this.element[0].type, \"input\" === e && /radio|checkbox/.test(this.type) || t.error(\"Can't create checkboxradio on element.nodeName=\" + e + \" and element.type=\" + this.type);\n    },\n    _enhance: function _enhance() {\n      this._updateIcon(this.element[0].checked);\n    },\n    widget: function widget() {\n      return this.label;\n    },\n    _getRadioGroup: function _getRadioGroup() {\n      var e,\n        i = this.element[0].name,\n        s = \"input[name='\" + t.ui.escapeSelector(i) + \"']\";\n      return i ? (e = this.form.length ? t(this.form[0].elements).filter(s) : t(s).filter(function () {\n        return 0 === t(this).form().length;\n      }), e.not(this.element)) : t([]);\n    },\n    _toggleClasses: function _toggleClasses() {\n      var e = this.element[0].checked;\n      this._toggleClass(this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", e), this.options.icon && \"checkbox\" === this.type && this._toggleClass(this.icon, null, \"ui-icon-check ui-state-checked\", e)._toggleClass(this.icon, null, \"ui-icon-blank\", !e), \"radio\" === this.type && this._getRadioGroup().each(function () {\n        var e = t(this).checkboxradio(\"instance\");\n        e && e._removeClass(e.label, \"ui-checkboxradio-checked\", \"ui-state-active\");\n      });\n    },\n    _destroy: function _destroy() {\n      this._unbindFormResetHandler(), this.icon && (this.icon.remove(), this.iconSpace.remove());\n    },\n    _setOption: function _setOption(t, e) {\n      return \"label\" !== t || e ? (this._super(t, e), \"disabled\" === t ? (this._toggleClass(this.label, null, \"ui-state-disabled\", e), this.element[0].disabled = e, void 0) : (this.refresh(), void 0)) : void 0;\n    },\n    _updateIcon: function _updateIcon(e) {\n      var i = \"ui-icon ui-icon-background \";\n      this.options.icon ? (this.icon || (this.icon = t(\"<span>\"), this.iconSpace = t(\"<span> </span>\"), this._addClass(this.iconSpace, \"ui-checkboxradio-icon-space\")), \"checkbox\" === this.type ? (i += e ? \"ui-icon-check ui-state-checked\" : \"ui-icon-blank\", this._removeClass(this.icon, null, e ? \"ui-icon-blank\" : \"ui-icon-check\")) : i += \"ui-icon-blank\", this._addClass(this.icon, \"ui-checkboxradio-icon\", i), e || this._removeClass(this.icon, null, \"ui-icon-check ui-state-checked\"), this.icon.prependTo(this.label).after(this.iconSpace)) : void 0 !== this.icon && (this.icon.remove(), this.iconSpace.remove(), delete this.icon);\n    },\n    _updateLabel: function _updateLabel() {\n      var t = this.label.contents().not(this.element[0]);\n      this.icon && (t = t.not(this.icon[0])), this.iconSpace && (t = t.not(this.iconSpace[0])), t.remove(), this.label.append(this.options.label);\n    },\n    refresh: function refresh() {\n      var t = this.element[0].checked,\n        e = this.element[0].disabled;\n      this._updateIcon(t), this._toggleClass(this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", t), null !== this.options.label && this._updateLabel(), e !== this.options.disabled && this._setOptions({\n        disabled: e\n      });\n    }\n  }]), t.ui.checkboxradio, t.widget(\"ui.button\", {\n    version: \"1.12.1\",\n    defaultElement: \"<button>\",\n    options: {\n      classes: {\n        \"ui-button\": \"ui-corner-all\"\n      },\n      disabled: null,\n      icon: null,\n      iconPosition: \"beginning\",\n      label: null,\n      showLabel: !0\n    },\n    _getCreateOptions: function _getCreateOptions() {\n      var t,\n        e = this._super() || {};\n      return this.isInput = this.element.is(\"input\"), t = this.element[0].disabled, null != t && (e.disabled = t), this.originalLabel = this.isInput ? this.element.val() : this.element.html(), this.originalLabel && (e.label = this.originalLabel), e;\n    },\n    _create: function _create() {\n      !this.option.showLabel & !this.options.icon && (this.options.showLabel = !0), null == this.options.disabled && (this.options.disabled = this.element[0].disabled || !1), this.hasTitle = !!this.element.attr(\"title\"), this.options.label && this.options.label !== this.originalLabel && (this.isInput ? this.element.val(this.options.label) : this.element.html(this.options.label)), this._addClass(\"ui-button\", \"ui-widget\"), this._setOption(\"disabled\", this.options.disabled), this._enhance(), this.element.is(\"a\") && this._on({\n        keyup: function keyup(e) {\n          e.keyCode === t.ui.keyCode.SPACE && (e.preventDefault(), this.element[0].click ? this.element[0].click() : this.element.trigger(\"click\"));\n        }\n      });\n    },\n    _enhance: function _enhance() {\n      this.element.is(\"button\") || this.element.attr(\"role\", \"button\"), this.options.icon && (this._updateIcon(\"icon\", this.options.icon), this._updateTooltip());\n    },\n    _updateTooltip: function _updateTooltip() {\n      this.title = this.element.attr(\"title\"), this.options.showLabel || this.title || this.element.attr(\"title\", this.options.label);\n    },\n    _updateIcon: function _updateIcon(e, i) {\n      var s = \"iconPosition\" !== e,\n        n = s ? this.options.iconPosition : i,\n        o = \"top\" === n || \"bottom\" === n;\n      this.icon ? s && this._removeClass(this.icon, null, this.options.icon) : (this.icon = t(\"<span>\"), this._addClass(this.icon, \"ui-button-icon\", \"ui-icon\"), this.options.showLabel || this._addClass(\"ui-button-icon-only\")), s && this._addClass(this.icon, null, i), this._attachIcon(n), o ? (this._addClass(this.icon, null, \"ui-widget-icon-block\"), this.iconSpace && this.iconSpace.remove()) : (this.iconSpace || (this.iconSpace = t(\"<span> </span>\"), this._addClass(this.iconSpace, \"ui-button-icon-space\")), this._removeClass(this.icon, null, \"ui-wiget-icon-block\"), this._attachIconSpace(n));\n    },\n    _destroy: function _destroy() {\n      this.element.removeAttr(\"role\"), this.icon && this.icon.remove(), this.iconSpace && this.iconSpace.remove(), this.hasTitle || this.element.removeAttr(\"title\");\n    },\n    _attachIconSpace: function _attachIconSpace(t) {\n      this.icon[/^(?:end|bottom)/.test(t) ? \"before\" : \"after\"](this.iconSpace);\n    },\n    _attachIcon: function _attachIcon(t) {\n      this.element[/^(?:end|bottom)/.test(t) ? \"append\" : \"prepend\"](this.icon);\n    },\n    _setOptions: function _setOptions(t) {\n      var e = void 0 === t.showLabel ? this.options.showLabel : t.showLabel,\n        i = void 0 === t.icon ? this.options.icon : t.icon;\n      e || i || (t.showLabel = !0), this._super(t);\n    },\n    _setOption: function _setOption(t, e) {\n      \"icon\" === t && (e ? this._updateIcon(t, e) : this.icon && (this.icon.remove(), this.iconSpace && this.iconSpace.remove())), \"iconPosition\" === t && this._updateIcon(t, e), \"showLabel\" === t && (this._toggleClass(\"ui-button-icon-only\", null, !e), this._updateTooltip()), \"label\" === t && (this.isInput ? this.element.val(e) : (this.element.html(e), this.icon && (this._attachIcon(this.options.iconPosition), this._attachIconSpace(this.options.iconPosition)))), this._super(t, e), \"disabled\" === t && (this._toggleClass(null, \"ui-state-disabled\", e), this.element[0].disabled = e, e && this.element.blur());\n    },\n    refresh: function refresh() {\n      var t = this.element.is(\"input, button\") ? this.element[0].disabled : this.element.hasClass(\"ui-button-disabled\");\n      t !== this.options.disabled && this._setOptions({\n        disabled: t\n      }), this._updateTooltip();\n    }\n  }), t.uiBackCompat !== !1 && (t.widget(\"ui.button\", t.ui.button, {\n    options: {\n      text: !0,\n      icons: {\n        primary: null,\n        secondary: null\n      }\n    },\n    _create: function _create() {\n      this.options.showLabel && !this.options.text && (this.options.showLabel = this.options.text), !this.options.showLabel && this.options.text && (this.options.text = this.options.showLabel), this.options.icon || !this.options.icons.primary && !this.options.icons.secondary ? this.options.icon && (this.options.icons.primary = this.options.icon) : this.options.icons.primary ? this.options.icon = this.options.icons.primary : (this.options.icon = this.options.icons.secondary, this.options.iconPosition = \"end\"), this._super();\n    },\n    _setOption: function _setOption(t, e) {\n      return \"text\" === t ? (this._super(\"showLabel\", e), void 0) : (\"showLabel\" === t && (this.options.text = e), \"icon\" === t && (this.options.icons.primary = e), \"icons\" === t && (e.primary ? (this._super(\"icon\", e.primary), this._super(\"iconPosition\", \"beginning\")) : e.secondary && (this._super(\"icon\", e.secondary), this._super(\"iconPosition\", \"end\"))), this._superApply(arguments), void 0);\n    }\n  }), t.fn.button = function (e) {\n    return function () {\n      return !this.length || this.length && \"INPUT\" !== this[0].tagName || this.length && \"INPUT\" === this[0].tagName && \"checkbox\" !== this.attr(\"type\") && \"radio\" !== this.attr(\"type\") ? e.apply(this, arguments) : (t.ui.checkboxradio || t.error(\"Checkboxradio widget missing\"), 0 === arguments.length ? this.checkboxradio({\n        icon: !1\n      }) : this.checkboxradio.apply(this, arguments));\n    };\n  }(t.fn.button), t.fn.buttonset = function () {\n    return t.ui.controlgroup || t.error(\"Controlgroup widget missing\"), \"option\" === arguments[0] && \"items\" === arguments[1] && arguments[2] ? this.controlgroup.apply(this, [arguments[0], \"items.button\", arguments[2]]) : \"option\" === arguments[0] && \"items\" === arguments[1] ? this.controlgroup.apply(this, [arguments[0], \"items.button\"]) : (\"object\" == _typeof(arguments[0]) && arguments[0].items && (arguments[0].items = {\n      button: arguments[0].items\n    }), this.controlgroup.apply(this, arguments));\n  }), t.ui.button, t.extend(t.ui, {\n    datepicker: {\n      version: \"1.12.1\"\n    }\n  });\n  var m;\n  t.extend(s.prototype, {\n    markerClassName: \"hasDatepicker\",\n    maxRows: 4,\n    _widgetDatepicker: function _widgetDatepicker() {\n      return this.dpDiv;\n    },\n    setDefaults: function setDefaults(t) {\n      return a(this._defaults, t || {}), this;\n    },\n    _attachDatepicker: function _attachDatepicker(e, i) {\n      var s, n, o;\n      s = e.nodeName.toLowerCase(), n = \"div\" === s || \"span\" === s, e.id || (this.uuid += 1, e.id = \"dp\" + this.uuid), o = this._newInst(t(e), n), o.settings = t.extend({}, i || {}), \"input\" === s ? this._connectDatepicker(e, o) : n && this._inlineDatepicker(e, o);\n    },\n    _newInst: function _newInst(e, i) {\n      var s = e[0].id.replace(/([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\");\n      return {\n        id: s,\n        input: e,\n        selectedDay: 0,\n        selectedMonth: 0,\n        selectedYear: 0,\n        drawMonth: 0,\n        drawYear: 0,\n        inline: i,\n        dpDiv: i ? n(t(\"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\")) : this.dpDiv\n      };\n    },\n    _connectDatepicker: function _connectDatepicker(e, i) {\n      var s = t(e);\n      i.append = t([]), i.trigger = t([]), s.hasClass(this.markerClassName) || (this._attachments(s, i), s.addClass(this.markerClassName).on(\"keydown\", this._doKeyDown).on(\"keypress\", this._doKeyPress).on(\"keyup\", this._doKeyUp), this._autoSize(i), t.data(e, \"datepicker\", i), i.settings.disabled && this._disableDatepicker(e));\n    },\n    _attachments: function _attachments(e, i) {\n      var s,\n        n,\n        o,\n        a = this._get(i, \"appendText\"),\n        r = this._get(i, \"isRTL\");\n      i.append && i.append.remove(), a && (i.append = t(\"<span class='\" + this._appendClass + \"'>\" + a + \"</span>\"), e[r ? \"before\" : \"after\"](i.append)), e.off(\"focus\", this._showDatepicker), i.trigger && i.trigger.remove(), s = this._get(i, \"showOn\"), (\"focus\" === s || \"both\" === s) && e.on(\"focus\", this._showDatepicker), (\"button\" === s || \"both\" === s) && (n = this._get(i, \"buttonText\"), o = this._get(i, \"buttonImage\"), i.trigger = t(this._get(i, \"buttonImageOnly\") ? t(\"<img/>\").addClass(this._triggerClass).attr({\n        src: o,\n        alt: n,\n        title: n\n      }) : t(\"<button type='button'></button>\").addClass(this._triggerClass).html(o ? t(\"<img/>\").attr({\n        src: o,\n        alt: n,\n        title: n\n      }) : n)), e[r ? \"before\" : \"after\"](i.trigger), i.trigger.on(\"click\", function () {\n        return t.datepicker._datepickerShowing && t.datepicker._lastInput === e[0] ? t.datepicker._hideDatepicker() : t.datepicker._datepickerShowing && t.datepicker._lastInput !== e[0] ? (t.datepicker._hideDatepicker(), t.datepicker._showDatepicker(e[0])) : t.datepicker._showDatepicker(e[0]), !1;\n      }));\n    },\n    _autoSize: function _autoSize(t) {\n      if (this._get(t, \"autoSize\") && !t.inline) {\n        var e,\n          i,\n          s,\n          n,\n          o = new Date(2009, 11, 20),\n          a = this._get(t, \"dateFormat\");\n        a.match(/[DM]/) && (e = function e(t) {\n          for (i = 0, s = 0, n = 0; t.length > n; n++) t[n].length > i && (i = t[n].length, s = n);\n          return s;\n        }, o.setMonth(e(this._get(t, a.match(/MM/) ? \"monthNames\" : \"monthNamesShort\"))), o.setDate(e(this._get(t, a.match(/DD/) ? \"dayNames\" : \"dayNamesShort\")) + 20 - o.getDay())), t.input.attr(\"size\", this._formatDate(t, o).length);\n      }\n    },\n    _inlineDatepicker: function _inlineDatepicker(e, i) {\n      var s = t(e);\n      s.hasClass(this.markerClassName) || (s.addClass(this.markerClassName).append(i.dpDiv), t.data(e, \"datepicker\", i), this._setDate(i, this._getDefaultDate(i), !0), this._updateDatepicker(i), this._updateAlternate(i), i.settings.disabled && this._disableDatepicker(e), i.dpDiv.css(\"display\", \"block\"));\n    },\n    _dialogDatepicker: function _dialogDatepicker(e, i, s, n, o) {\n      var r,\n        h,\n        l,\n        c,\n        u,\n        d = this._dialogInst;\n      return d || (this.uuid += 1, r = \"dp\" + this.uuid, this._dialogInput = t(\"<input type='text' id='\" + r + \"' style='position: absolute; top: -100px; width: 0px;'/>\"), this._dialogInput.on(\"keydown\", this._doKeyDown), t(\"body\").append(this._dialogInput), d = this._dialogInst = this._newInst(this._dialogInput, !1), d.settings = {}, t.data(this._dialogInput[0], \"datepicker\", d)), a(d.settings, n || {}), i = i && i.constructor === Date ? this._formatDate(d, i) : i, this._dialogInput.val(i), this._pos = o ? o.length ? o : [o.pageX, o.pageY] : null, this._pos || (h = document.documentElement.clientWidth, l = document.documentElement.clientHeight, c = document.documentElement.scrollLeft || document.body.scrollLeft, u = document.documentElement.scrollTop || document.body.scrollTop, this._pos = [h / 2 - 100 + c, l / 2 - 150 + u]), this._dialogInput.css(\"left\", this._pos[0] + 20 + \"px\").css(\"top\", this._pos[1] + \"px\"), d.settings.onSelect = s, this._inDialog = !0, this.dpDiv.addClass(this._dialogClass), this._showDatepicker(this._dialogInput[0]), t.blockUI && t.blockUI(this.dpDiv), t.data(this._dialogInput[0], \"datepicker\", d), this;\n    },\n    _destroyDatepicker: function _destroyDatepicker(e) {\n      var i,\n        s = t(e),\n        n = t.data(e, \"datepicker\");\n      s.hasClass(this.markerClassName) && (i = e.nodeName.toLowerCase(), t.removeData(e, \"datepicker\"), \"input\" === i ? (n.append.remove(), n.trigger.remove(), s.removeClass(this.markerClassName).off(\"focus\", this._showDatepicker).off(\"keydown\", this._doKeyDown).off(\"keypress\", this._doKeyPress).off(\"keyup\", this._doKeyUp)) : (\"div\" === i || \"span\" === i) && s.removeClass(this.markerClassName).empty(), m === n && (m = null));\n    },\n    _enableDatepicker: function _enableDatepicker(e) {\n      var i,\n        s,\n        n = t(e),\n        o = t.data(e, \"datepicker\");\n      n.hasClass(this.markerClassName) && (i = e.nodeName.toLowerCase(), \"input\" === i ? (e.disabled = !1, o.trigger.filter(\"button\").each(function () {\n        this.disabled = !1;\n      }).end().filter(\"img\").css({\n        opacity: \"1.0\",\n        cursor: \"\"\n      })) : (\"div\" === i || \"span\" === i) && (s = n.children(\".\" + this._inlineClass), s.children().removeClass(\"ui-state-disabled\"), s.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\", !1)), this._disabledInputs = t.map(this._disabledInputs, function (t) {\n        return t === e ? null : t;\n      }));\n    },\n    _disableDatepicker: function _disableDatepicker(e) {\n      var i,\n        s,\n        n = t(e),\n        o = t.data(e, \"datepicker\");\n      n.hasClass(this.markerClassName) && (i = e.nodeName.toLowerCase(), \"input\" === i ? (e.disabled = !0, o.trigger.filter(\"button\").each(function () {\n        this.disabled = !0;\n      }).end().filter(\"img\").css({\n        opacity: \"0.5\",\n        cursor: \"default\"\n      })) : (\"div\" === i || \"span\" === i) && (s = n.children(\".\" + this._inlineClass), s.children().addClass(\"ui-state-disabled\"), s.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\", !0)), this._disabledInputs = t.map(this._disabledInputs, function (t) {\n        return t === e ? null : t;\n      }), this._disabledInputs[this._disabledInputs.length] = e);\n    },\n    _isDisabledDatepicker: function _isDisabledDatepicker(t) {\n      if (!t) return !1;\n      for (var e = 0; this._disabledInputs.length > e; e++) if (this._disabledInputs[e] === t) return !0;\n      return !1;\n    },\n    _getInst: function _getInst(e) {\n      try {\n        return t.data(e, \"datepicker\");\n      } catch (i) {\n        throw \"Missing instance data for this datepicker\";\n      }\n    },\n    _optionDatepicker: function _optionDatepicker(e, i, s) {\n      var n,\n        o,\n        r,\n        h,\n        l = this._getInst(e);\n      return 2 === arguments.length && \"string\" == typeof i ? \"defaults\" === i ? t.extend({}, t.datepicker._defaults) : l ? \"all\" === i ? t.extend({}, l.settings) : this._get(l, i) : null : (n = i || {}, \"string\" == typeof i && (n = {}, n[i] = s), l && (this._curInst === l && this._hideDatepicker(), o = this._getDateDatepicker(e, !0), r = this._getMinMaxDate(l, \"min\"), h = this._getMinMaxDate(l, \"max\"), a(l.settings, n), null !== r && void 0 !== n.dateFormat && void 0 === n.minDate && (l.settings.minDate = this._formatDate(l, r)), null !== h && void 0 !== n.dateFormat && void 0 === n.maxDate && (l.settings.maxDate = this._formatDate(l, h)), \"disabled\" in n && (n.disabled ? this._disableDatepicker(e) : this._enableDatepicker(e)), this._attachments(t(e), l), this._autoSize(l), this._setDate(l, o), this._updateAlternate(l), this._updateDatepicker(l)), void 0);\n    },\n    _changeDatepicker: function _changeDatepicker(t, e, i) {\n      this._optionDatepicker(t, e, i);\n    },\n    _refreshDatepicker: function _refreshDatepicker(t) {\n      var e = this._getInst(t);\n      e && this._updateDatepicker(e);\n    },\n    _setDateDatepicker: function _setDateDatepicker(t, e) {\n      var i = this._getInst(t);\n      i && (this._setDate(i, e), this._updateDatepicker(i), this._updateAlternate(i));\n    },\n    _getDateDatepicker: function _getDateDatepicker(t, e) {\n      var i = this._getInst(t);\n      return i && !i.inline && this._setDateFromField(i, e), i ? this._getDate(i) : null;\n    },\n    _doKeyDown: function _doKeyDown(e) {\n      var i,\n        s,\n        n,\n        o = t.datepicker._getInst(e.target),\n        a = !0,\n        r = o.dpDiv.is(\".ui-datepicker-rtl\");\n      if (o._keyEvent = !0, t.datepicker._datepickerShowing) switch (e.keyCode) {\n        case 9:\n          t.datepicker._hideDatepicker(), a = !1;\n          break;\n        case 13:\n          return n = t(\"td.\" + t.datepicker._dayOverClass + \":not(.\" + t.datepicker._currentClass + \")\", o.dpDiv), n[0] && t.datepicker._selectDay(e.target, o.selectedMonth, o.selectedYear, n[0]), i = t.datepicker._get(o, \"onSelect\"), i ? (s = t.datepicker._formatDate(o), i.apply(o.input ? o.input[0] : null, [s, o])) : t.datepicker._hideDatepicker(), !1;\n        case 27:\n          t.datepicker._hideDatepicker();\n          break;\n        case 33:\n          t.datepicker._adjustDate(e.target, e.ctrlKey ? -t.datepicker._get(o, \"stepBigMonths\") : -t.datepicker._get(o, \"stepMonths\"), \"M\");\n          break;\n        case 34:\n          t.datepicker._adjustDate(e.target, e.ctrlKey ? +t.datepicker._get(o, \"stepBigMonths\") : +t.datepicker._get(o, \"stepMonths\"), \"M\");\n          break;\n        case 35:\n          (e.ctrlKey || e.metaKey) && t.datepicker._clearDate(e.target), a = e.ctrlKey || e.metaKey;\n          break;\n        case 36:\n          (e.ctrlKey || e.metaKey) && t.datepicker._gotoToday(e.target), a = e.ctrlKey || e.metaKey;\n          break;\n        case 37:\n          (e.ctrlKey || e.metaKey) && t.datepicker._adjustDate(e.target, r ? 1 : -1, \"D\"), a = e.ctrlKey || e.metaKey, e.originalEvent.altKey && t.datepicker._adjustDate(e.target, e.ctrlKey ? -t.datepicker._get(o, \"stepBigMonths\") : -t.datepicker._get(o, \"stepMonths\"), \"M\");\n          break;\n        case 38:\n          (e.ctrlKey || e.metaKey) && t.datepicker._adjustDate(e.target, -7, \"D\"), a = e.ctrlKey || e.metaKey;\n          break;\n        case 39:\n          (e.ctrlKey || e.metaKey) && t.datepicker._adjustDate(e.target, r ? -1 : 1, \"D\"), a = e.ctrlKey || e.metaKey, e.originalEvent.altKey && t.datepicker._adjustDate(e.target, e.ctrlKey ? +t.datepicker._get(o, \"stepBigMonths\") : +t.datepicker._get(o, \"stepMonths\"), \"M\");\n          break;\n        case 40:\n          (e.ctrlKey || e.metaKey) && t.datepicker._adjustDate(e.target, 7, \"D\"), a = e.ctrlKey || e.metaKey;\n          break;\n        default:\n          a = !1;\n      } else 36 === e.keyCode && e.ctrlKey ? t.datepicker._showDatepicker(this) : a = !1;\n      a && (e.preventDefault(), e.stopPropagation());\n    },\n    _doKeyPress: function _doKeyPress(e) {\n      var i,\n        s,\n        n = t.datepicker._getInst(e.target);\n      return t.datepicker._get(n, \"constrainInput\") ? (i = t.datepicker._possibleChars(t.datepicker._get(n, \"dateFormat\")), s = String.fromCharCode(null == e.charCode ? e.keyCode : e.charCode), e.ctrlKey || e.metaKey || \" \" > s || !i || i.indexOf(s) > -1) : void 0;\n    },\n    _doKeyUp: function _doKeyUp(e) {\n      var i,\n        s = t.datepicker._getInst(e.target);\n      if (s.input.val() !== s.lastVal) try {\n        i = t.datepicker.parseDate(t.datepicker._get(s, \"dateFormat\"), s.input ? s.input.val() : null, t.datepicker._getFormatConfig(s)), i && (t.datepicker._setDateFromField(s), t.datepicker._updateAlternate(s), t.datepicker._updateDatepicker(s));\n      } catch (n) {}\n      return !0;\n    },\n    _showDatepicker: function _showDatepicker(e) {\n      if (e = e.target || e, \"input\" !== e.nodeName.toLowerCase() && (e = t(\"input\", e.parentNode)[0]), !t.datepicker._isDisabledDatepicker(e) && t.datepicker._lastInput !== e) {\n        var s, n, o, r, h, l, c;\n        s = t.datepicker._getInst(e), t.datepicker._curInst && t.datepicker._curInst !== s && (t.datepicker._curInst.dpDiv.stop(!0, !0), s && t.datepicker._datepickerShowing && t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])), n = t.datepicker._get(s, \"beforeShow\"), o = n ? n.apply(e, [e, s]) : {}, o !== !1 && (a(s.settings, o), s.lastVal = null, t.datepicker._lastInput = e, t.datepicker._setDateFromField(s), t.datepicker._inDialog && (e.value = \"\"), t.datepicker._pos || (t.datepicker._pos = t.datepicker._findPos(e), t.datepicker._pos[1] += e.offsetHeight), r = !1, t(e).parents().each(function () {\n          return r |= \"fixed\" === t(this).css(\"position\"), !r;\n        }), h = {\n          left: t.datepicker._pos[0],\n          top: t.datepicker._pos[1]\n        }, t.datepicker._pos = null, s.dpDiv.empty(), s.dpDiv.css({\n          position: \"absolute\",\n          display: \"block\",\n          top: \"-1000px\"\n        }), t.datepicker._updateDatepicker(s), h = t.datepicker._checkOffset(s, h, r), s.dpDiv.css({\n          position: t.datepicker._inDialog && t.blockUI ? \"static\" : r ? \"fixed\" : \"absolute\",\n          display: \"none\",\n          left: h.left + \"px\",\n          top: h.top + \"px\"\n        }), s.inline || (l = t.datepicker._get(s, \"showAnim\"), c = t.datepicker._get(s, \"duration\"), s.dpDiv.css(\"z-index\", i(t(e)) + 1), t.datepicker._datepickerShowing = !0, t.effects && t.effects.effect[l] ? s.dpDiv.show(l, t.datepicker._get(s, \"showOptions\"), c) : s.dpDiv[l || \"show\"](l ? c : null), t.datepicker._shouldFocusInput(s) && s.input.trigger(\"focus\"), t.datepicker._curInst = s));\n      }\n    },\n    _updateDatepicker: function _updateDatepicker(e) {\n      this.maxRows = 4, m = e, e.dpDiv.empty().append(this._generateHTML(e)), this._attachHandlers(e);\n      var i,\n        s = this._getNumberOfMonths(e),\n        n = s[1],\n        a = 17,\n        r = e.dpDiv.find(\".\" + this._dayOverClass + \" a\");\n      r.length > 0 && o.apply(r.get(0)), e.dpDiv.removeClass(\"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\").width(\"\"), n > 1 && e.dpDiv.addClass(\"ui-datepicker-multi-\" + n).css(\"width\", a * n + \"em\"), e.dpDiv[(1 !== s[0] || 1 !== s[1] ? \"add\" : \"remove\") + \"Class\"](\"ui-datepicker-multi\"), e.dpDiv[(this._get(e, \"isRTL\") ? \"add\" : \"remove\") + \"Class\"](\"ui-datepicker-rtl\"), e === t.datepicker._curInst && t.datepicker._datepickerShowing && t.datepicker._shouldFocusInput(e) && e.input.trigger(\"focus\"), e.yearshtml && (i = e.yearshtml, setTimeout(function () {\n        i === e.yearshtml && e.yearshtml && e.dpDiv.find(\"select.ui-datepicker-year:first\").replaceWith(e.yearshtml), i = e.yearshtml = null;\n      }, 0));\n    },\n    _shouldFocusInput: function _shouldFocusInput(t) {\n      return t.input && t.input.is(\":visible\") && !t.input.is(\":disabled\") && !t.input.is(\":focus\");\n    },\n    _checkOffset: function _checkOffset(e, i, s) {\n      var n = e.dpDiv.outerWidth(),\n        o = e.dpDiv.outerHeight(),\n        a = e.input ? e.input.outerWidth() : 0,\n        r = e.input ? e.input.outerHeight() : 0,\n        h = document.documentElement.clientWidth + (s ? 0 : t(document).scrollLeft()),\n        l = document.documentElement.clientHeight + (s ? 0 : t(document).scrollTop());\n      return i.left -= this._get(e, \"isRTL\") ? n - a : 0, i.left -= s && i.left === e.input.offset().left ? t(document).scrollLeft() : 0, i.top -= s && i.top === e.input.offset().top + r ? t(document).scrollTop() : 0, i.left -= Math.min(i.left, i.left + n > h && h > n ? Math.abs(i.left + n - h) : 0), i.top -= Math.min(i.top, i.top + o > l && l > o ? Math.abs(o + r) : 0), i;\n    },\n    _findPos: function _findPos(e) {\n      for (var i, s = this._getInst(e), n = this._get(s, \"isRTL\"); e && (\"hidden\" === e.type || 1 !== e.nodeType || t.expr.filters.hidden(e));) e = e[n ? \"previousSibling\" : \"nextSibling\"];\n      return i = t(e).offset(), [i.left, i.top];\n    },\n    _hideDatepicker: function _hideDatepicker(e) {\n      var i,\n        s,\n        n,\n        o,\n        a = this._curInst;\n      !a || e && a !== t.data(e, \"datepicker\") || this._datepickerShowing && (i = this._get(a, \"showAnim\"), s = this._get(a, \"duration\"), n = function n() {\n        t.datepicker._tidyDialog(a);\n      }, t.effects && (t.effects.effect[i] || t.effects[i]) ? a.dpDiv.hide(i, t.datepicker._get(a, \"showOptions\"), s, n) : a.dpDiv[\"slideDown\" === i ? \"slideUp\" : \"fadeIn\" === i ? \"fadeOut\" : \"hide\"](i ? s : null, n), i || n(), this._datepickerShowing = !1, o = this._get(a, \"onClose\"), o && o.apply(a.input ? a.input[0] : null, [a.input ? a.input.val() : \"\", a]), this._lastInput = null, this._inDialog && (this._dialogInput.css({\n        position: \"absolute\",\n        left: \"0\",\n        top: \"-100px\"\n      }), t.blockUI && (t.unblockUI(), t(\"body\").append(this.dpDiv))), this._inDialog = !1);\n    },\n    _tidyDialog: function _tidyDialog(t) {\n      t.dpDiv.removeClass(this._dialogClass).off(\".ui-datepicker-calendar\");\n    },\n    _checkExternalClick: function _checkExternalClick(e) {\n      if (t.datepicker._curInst) {\n        var i = t(e.target),\n          s = t.datepicker._getInst(i[0]);\n        (i[0].id !== t.datepicker._mainDivId && 0 === i.parents(\"#\" + t.datepicker._mainDivId).length && !i.hasClass(t.datepicker.markerClassName) && !i.closest(\".\" + t.datepicker._triggerClass).length && t.datepicker._datepickerShowing && (!t.datepicker._inDialog || !t.blockUI) || i.hasClass(t.datepicker.markerClassName) && t.datepicker._curInst !== s) && t.datepicker._hideDatepicker();\n      }\n    },\n    _adjustDate: function _adjustDate(e, i, s) {\n      var n = t(e),\n        o = this._getInst(n[0]);\n      this._isDisabledDatepicker(n[0]) || (this._adjustInstDate(o, i + (\"M\" === s ? this._get(o, \"showCurrentAtPos\") : 0), s), this._updateDatepicker(o));\n    },\n    _gotoToday: function _gotoToday(e) {\n      var i,\n        s = t(e),\n        n = this._getInst(s[0]);\n      this._get(n, \"gotoCurrent\") && n.currentDay ? (n.selectedDay = n.currentDay, n.drawMonth = n.selectedMonth = n.currentMonth, n.drawYear = n.selectedYear = n.currentYear) : (i = new Date(), n.selectedDay = i.getDate(), n.drawMonth = n.selectedMonth = i.getMonth(), n.drawYear = n.selectedYear = i.getFullYear()), this._notifyChange(n), this._adjustDate(s);\n    },\n    _selectMonthYear: function _selectMonthYear(e, i, s) {\n      var n = t(e),\n        o = this._getInst(n[0]);\n      o[\"selected\" + (\"M\" === s ? \"Month\" : \"Year\")] = o[\"draw\" + (\"M\" === s ? \"Month\" : \"Year\")] = parseInt(i.options[i.selectedIndex].value, 10), this._notifyChange(o), this._adjustDate(n);\n    },\n    _selectDay: function _selectDay(e, i, s, n) {\n      var o,\n        a = t(e);\n      t(n).hasClass(this._unselectableClass) || this._isDisabledDatepicker(a[0]) || (o = this._getInst(a[0]), o.selectedDay = o.currentDay = t(\"a\", n).html(), o.selectedMonth = o.currentMonth = i, o.selectedYear = o.currentYear = s, this._selectDate(e, this._formatDate(o, o.currentDay, o.currentMonth, o.currentYear)));\n    },\n    _clearDate: function _clearDate(e) {\n      var i = t(e);\n      this._selectDate(i, \"\");\n    },\n    _selectDate: function _selectDate(e, i) {\n      var s,\n        n = t(e),\n        o = this._getInst(n[0]);\n      i = null != i ? i : this._formatDate(o), o.input && o.input.val(i), this._updateAlternate(o), s = this._get(o, \"onSelect\"), s ? s.apply(o.input ? o.input[0] : null, [i, o]) : o.input && o.input.trigger(\"change\"), o.inline ? this._updateDatepicker(o) : (this._hideDatepicker(), this._lastInput = o.input[0], \"object\" != _typeof(o.input[0]) && o.input.trigger(\"focus\"), this._lastInput = null);\n    },\n    _updateAlternate: function _updateAlternate(e) {\n      var i,\n        s,\n        n,\n        o = this._get(e, \"altField\");\n      o && (i = this._get(e, \"altFormat\") || this._get(e, \"dateFormat\"), s = this._getDate(e), n = this.formatDate(i, s, this._getFormatConfig(e)), t(o).val(n));\n    },\n    noWeekends: function noWeekends(t) {\n      var e = t.getDay();\n      return [e > 0 && 6 > e, \"\"];\n    },\n    iso8601Week: function iso8601Week(t) {\n      var e,\n        i = new Date(t.getTime());\n      return i.setDate(i.getDate() + 4 - (i.getDay() || 7)), e = i.getTime(), i.setMonth(0), i.setDate(1), Math.floor(Math.round((e - i) / 864e5) / 7) + 1;\n    },\n    parseDate: function parseDate(e, i, s) {\n      if (null == e || null == i) throw \"Invalid arguments\";\n      if (i = \"object\" == _typeof(i) ? \"\" + i : i + \"\", \"\" === i) return null;\n      var n,\n        o,\n        a,\n        r,\n        h = 0,\n        l = (s ? s.shortYearCutoff : null) || this._defaults.shortYearCutoff,\n        c = \"string\" != typeof l ? l : new Date().getFullYear() % 100 + parseInt(l, 10),\n        u = (s ? s.dayNamesShort : null) || this._defaults.dayNamesShort,\n        d = (s ? s.dayNames : null) || this._defaults.dayNames,\n        p = (s ? s.monthNamesShort : null) || this._defaults.monthNamesShort,\n        f = (s ? s.monthNames : null) || this._defaults.monthNames,\n        g = -1,\n        m = -1,\n        _ = -1,\n        v = -1,\n        b = !1,\n        y = function y(t) {\n          var i = e.length > n + 1 && e.charAt(n + 1) === t;\n          return i && n++, i;\n        },\n        w = function w(t) {\n          var e = y(t),\n            s = \"@\" === t ? 14 : \"!\" === t ? 20 : \"y\" === t && e ? 4 : \"o\" === t ? 3 : 2,\n            n = \"y\" === t ? s : 1,\n            o = RegExp(\"^\\\\d{\" + n + \",\" + s + \"}\"),\n            a = i.substring(h).match(o);\n          if (!a) throw \"Missing number at position \" + h;\n          return h += a[0].length, parseInt(a[0], 10);\n        },\n        k = function k(e, s, n) {\n          var o = -1,\n            a = t.map(y(e) ? n : s, function (t, e) {\n              return [[e, t]];\n            }).sort(function (t, e) {\n              return -(t[1].length - e[1].length);\n            });\n          if (t.each(a, function (t, e) {\n            var s = e[1];\n            return i.substr(h, s.length).toLowerCase() === s.toLowerCase() ? (o = e[0], h += s.length, !1) : void 0;\n          }), -1 !== o) return o + 1;\n          throw \"Unknown name at position \" + h;\n        },\n        x = function x() {\n          if (i.charAt(h) !== e.charAt(n)) throw \"Unexpected literal at position \" + h;\n          h++;\n        };\n      for (n = 0; e.length > n; n++) if (b) \"'\" !== e.charAt(n) || y(\"'\") ? x() : b = !1;else switch (e.charAt(n)) {\n        case \"d\":\n          _ = w(\"d\");\n          break;\n        case \"D\":\n          k(\"D\", u, d);\n          break;\n        case \"o\":\n          v = w(\"o\");\n          break;\n        case \"m\":\n          m = w(\"m\");\n          break;\n        case \"M\":\n          m = k(\"M\", p, f);\n          break;\n        case \"y\":\n          g = w(\"y\");\n          break;\n        case \"@\":\n          r = new Date(w(\"@\")), g = r.getFullYear(), m = r.getMonth() + 1, _ = r.getDate();\n          break;\n        case \"!\":\n          r = new Date((w(\"!\") - this._ticksTo1970) / 1e4), g = r.getFullYear(), m = r.getMonth() + 1, _ = r.getDate();\n          break;\n        case \"'\":\n          y(\"'\") ? x() : b = !0;\n          break;\n        default:\n          x();\n      }\n      if (i.length > h && (a = i.substr(h), !/^\\s+/.test(a))) throw \"Extra/unparsed characters found in date: \" + a;\n      if (-1 === g ? g = new Date().getFullYear() : 100 > g && (g += new Date().getFullYear() - new Date().getFullYear() % 100 + (c >= g ? 0 : -100)), v > -1) for (m = 1, _ = v;;) {\n        if (o = this._getDaysInMonth(g, m - 1), o >= _) break;\n        m++, _ -= o;\n      }\n      if (r = this._daylightSavingAdjust(new Date(g, m - 1, _)), r.getFullYear() !== g || r.getMonth() + 1 !== m || r.getDate() !== _) throw \"Invalid date\";\n      return r;\n    },\n    ATOM: \"yy-mm-dd\",\n    COOKIE: \"D, dd M yy\",\n    ISO_8601: \"yy-mm-dd\",\n    RFC_822: \"D, d M y\",\n    RFC_850: \"DD, dd-M-y\",\n    RFC_1036: \"D, d M y\",\n    RFC_1123: \"D, d M yy\",\n    RFC_2822: \"D, d M yy\",\n    RSS: \"D, d M y\",\n    TICKS: \"!\",\n    TIMESTAMP: \"@\",\n    W3C: \"yy-mm-dd\",\n    _ticksTo1970: 1e7 * 60 * 60 * 24 * (718685 + Math.floor(492.5) - Math.floor(19.7) + Math.floor(4.925)),\n    formatDate: function formatDate(t, e, i) {\n      if (!e) return \"\";\n      var s,\n        n = (i ? i.dayNamesShort : null) || this._defaults.dayNamesShort,\n        o = (i ? i.dayNames : null) || this._defaults.dayNames,\n        a = (i ? i.monthNamesShort : null) || this._defaults.monthNamesShort,\n        r = (i ? i.monthNames : null) || this._defaults.monthNames,\n        h = function h(e) {\n          var i = t.length > s + 1 && t.charAt(s + 1) === e;\n          return i && s++, i;\n        },\n        l = function l(t, e, i) {\n          var s = \"\" + e;\n          if (h(t)) for (; i > s.length;) s = \"0\" + s;\n          return s;\n        },\n        c = function c(t, e, i, s) {\n          return h(t) ? s[e] : i[e];\n        },\n        u = \"\",\n        d = !1;\n      if (e) for (s = 0; t.length > s; s++) if (d) \"'\" !== t.charAt(s) || h(\"'\") ? u += t.charAt(s) : d = !1;else switch (t.charAt(s)) {\n        case \"d\":\n          u += l(\"d\", e.getDate(), 2);\n          break;\n        case \"D\":\n          u += c(\"D\", e.getDay(), n, o);\n          break;\n        case \"o\":\n          u += l(\"o\", Math.round((new Date(e.getFullYear(), e.getMonth(), e.getDate()).getTime() - new Date(e.getFullYear(), 0, 0).getTime()) / 864e5), 3);\n          break;\n        case \"m\":\n          u += l(\"m\", e.getMonth() + 1, 2);\n          break;\n        case \"M\":\n          u += c(\"M\", e.getMonth(), a, r);\n          break;\n        case \"y\":\n          u += h(\"y\") ? e.getFullYear() : (10 > e.getFullYear() % 100 ? \"0\" : \"\") + e.getFullYear() % 100;\n          break;\n        case \"@\":\n          u += e.getTime();\n          break;\n        case \"!\":\n          u += 1e4 * e.getTime() + this._ticksTo1970;\n          break;\n        case \"'\":\n          h(\"'\") ? u += \"'\" : d = !0;\n          break;\n        default:\n          u += t.charAt(s);\n      }\n      return u;\n    },\n    _possibleChars: function _possibleChars(t) {\n      var e,\n        i = \"\",\n        s = !1,\n        n = function n(i) {\n          var s = t.length > e + 1 && t.charAt(e + 1) === i;\n          return s && e++, s;\n        };\n      for (e = 0; t.length > e; e++) if (s) \"'\" !== t.charAt(e) || n(\"'\") ? i += t.charAt(e) : s = !1;else switch (t.charAt(e)) {\n        case \"d\":\n        case \"m\":\n        case \"y\":\n        case \"@\":\n          i += \"0123456789\";\n          break;\n        case \"D\":\n        case \"M\":\n          return null;\n        case \"'\":\n          n(\"'\") ? i += \"'\" : s = !0;\n          break;\n        default:\n          i += t.charAt(e);\n      }\n      return i;\n    },\n    _get: function _get(t, e) {\n      return void 0 !== t.settings[e] ? t.settings[e] : this._defaults[e];\n    },\n    _setDateFromField: function _setDateFromField(t, e) {\n      if (t.input.val() !== t.lastVal) {\n        var i = this._get(t, \"dateFormat\"),\n          s = t.lastVal = t.input ? t.input.val() : null,\n          n = this._getDefaultDate(t),\n          o = n,\n          a = this._getFormatConfig(t);\n        try {\n          o = this.parseDate(i, s, a) || n;\n        } catch (r) {\n          s = e ? \"\" : s;\n        }\n        t.selectedDay = o.getDate(), t.drawMonth = t.selectedMonth = o.getMonth(), t.drawYear = t.selectedYear = o.getFullYear(), t.currentDay = s ? o.getDate() : 0, t.currentMonth = s ? o.getMonth() : 0, t.currentYear = s ? o.getFullYear() : 0, this._adjustInstDate(t);\n      }\n    },\n    _getDefaultDate: function _getDefaultDate(t) {\n      return this._restrictMinMax(t, this._determineDate(t, this._get(t, \"defaultDate\"), new Date()));\n    },\n    _determineDate: function _determineDate(e, i, s) {\n      var n = function n(t) {\n          var e = new Date();\n          return e.setDate(e.getDate() + t), e;\n        },\n        o = function o(i) {\n          try {\n            return t.datepicker.parseDate(t.datepicker._get(e, \"dateFormat\"), i, t.datepicker._getFormatConfig(e));\n          } catch (s) {}\n          for (var n = (i.toLowerCase().match(/^c/) ? t.datepicker._getDate(e) : null) || new Date(), o = n.getFullYear(), a = n.getMonth(), r = n.getDate(), h = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g, l = h.exec(i); l;) {\n            switch (l[2] || \"d\") {\n              case \"d\":\n              case \"D\":\n                r += parseInt(l[1], 10);\n                break;\n              case \"w\":\n              case \"W\":\n                r += 7 * parseInt(l[1], 10);\n                break;\n              case \"m\":\n              case \"M\":\n                a += parseInt(l[1], 10), r = Math.min(r, t.datepicker._getDaysInMonth(o, a));\n                break;\n              case \"y\":\n              case \"Y\":\n                o += parseInt(l[1], 10), r = Math.min(r, t.datepicker._getDaysInMonth(o, a));\n            }\n            l = h.exec(i);\n          }\n          return new Date(o, a, r);\n        },\n        a = null == i || \"\" === i ? s : \"string\" == typeof i ? o(i) : \"number\" == typeof i ? isNaN(i) ? s : n(i) : new Date(i.getTime());\n      return a = a && \"Invalid Date\" == \"\" + a ? s : a, a && (a.setHours(0), a.setMinutes(0), a.setSeconds(0), a.setMilliseconds(0)), this._daylightSavingAdjust(a);\n    },\n    _daylightSavingAdjust: function _daylightSavingAdjust(t) {\n      return t ? (t.setHours(t.getHours() > 12 ? t.getHours() + 2 : 0), t) : null;\n    },\n    _setDate: function _setDate(t, e, i) {\n      var s = !e,\n        n = t.selectedMonth,\n        o = t.selectedYear,\n        a = this._restrictMinMax(t, this._determineDate(t, e, new Date()));\n      t.selectedDay = t.currentDay = a.getDate(), t.drawMonth = t.selectedMonth = t.currentMonth = a.getMonth(), t.drawYear = t.selectedYear = t.currentYear = a.getFullYear(), n === t.selectedMonth && o === t.selectedYear || i || this._notifyChange(t), this._adjustInstDate(t), t.input && t.input.val(s ? \"\" : this._formatDate(t));\n    },\n    _getDate: function _getDate(t) {\n      var e = !t.currentYear || t.input && \"\" === t.input.val() ? null : this._daylightSavingAdjust(new Date(t.currentYear, t.currentMonth, t.currentDay));\n      return e;\n    },\n    _attachHandlers: function _attachHandlers(e) {\n      var i = this._get(e, \"stepMonths\"),\n        s = \"#\" + e.id.replace(/\\\\\\\\/g, \"\\\\\");\n      e.dpDiv.find(\"[data-handler]\").map(function () {\n        var e = {\n          prev: function prev() {\n            t.datepicker._adjustDate(s, -i, \"M\");\n          },\n          next: function next() {\n            t.datepicker._adjustDate(s, +i, \"M\");\n          },\n          hide: function hide() {\n            t.datepicker._hideDatepicker();\n          },\n          today: function today() {\n            t.datepicker._gotoToday(s);\n          },\n          selectDay: function selectDay() {\n            return t.datepicker._selectDay(s, +this.getAttribute(\"data-month\"), +this.getAttribute(\"data-year\"), this), !1;\n          },\n          selectMonth: function selectMonth() {\n            return t.datepicker._selectMonthYear(s, this, \"M\"), !1;\n          },\n          selectYear: function selectYear() {\n            return t.datepicker._selectMonthYear(s, this, \"Y\"), !1;\n          }\n        };\n        t(this).on(this.getAttribute(\"data-event\"), e[this.getAttribute(\"data-handler\")]);\n      });\n    },\n    _generateHTML: function _generateHTML(t) {\n      var e,\n        i,\n        s,\n        n,\n        o,\n        a,\n        r,\n        h,\n        l,\n        c,\n        u,\n        d,\n        p,\n        f,\n        g,\n        m,\n        _,\n        v,\n        b,\n        y,\n        w,\n        k,\n        x,\n        C,\n        D,\n        I,\n        T,\n        P,\n        M,\n        S,\n        H,\n        z,\n        O,\n        A,\n        N,\n        W,\n        E,\n        F,\n        L,\n        R = new Date(),\n        B = this._daylightSavingAdjust(new Date(R.getFullYear(), R.getMonth(), R.getDate())),\n        Y = this._get(t, \"isRTL\"),\n        j = this._get(t, \"showButtonPanel\"),\n        q = this._get(t, \"hideIfNoPrevNext\"),\n        K = this._get(t, \"navigationAsDateFormat\"),\n        U = this._getNumberOfMonths(t),\n        V = this._get(t, \"showCurrentAtPos\"),\n        $ = this._get(t, \"stepMonths\"),\n        X = 1 !== U[0] || 1 !== U[1],\n        G = this._daylightSavingAdjust(t.currentDay ? new Date(t.currentYear, t.currentMonth, t.currentDay) : new Date(9999, 9, 9)),\n        Q = this._getMinMaxDate(t, \"min\"),\n        J = this._getMinMaxDate(t, \"max\"),\n        Z = t.drawMonth - V,\n        te = t.drawYear;\n      if (0 > Z && (Z += 12, te--), J) for (e = this._daylightSavingAdjust(new Date(J.getFullYear(), J.getMonth() - U[0] * U[1] + 1, J.getDate())), e = Q && Q > e ? Q : e; this._daylightSavingAdjust(new Date(te, Z, 1)) > e;) Z--, 0 > Z && (Z = 11, te--);\n      for (t.drawMonth = Z, t.drawYear = te, i = this._get(t, \"prevText\"), i = K ? this.formatDate(i, this._daylightSavingAdjust(new Date(te, Z - $, 1)), this._getFormatConfig(t)) : i, s = this._canAdjustMonth(t, -1, te, Z) ? \"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='\" + i + \"'><span class='ui-icon ui-icon-circle-triangle-\" + (Y ? \"e\" : \"w\") + \"'>\" + i + \"</span></a>\" : q ? \"\" : \"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\" + i + \"'><span class='ui-icon ui-icon-circle-triangle-\" + (Y ? \"e\" : \"w\") + \"'>\" + i + \"</span></a>\", n = this._get(t, \"nextText\"), n = K ? this.formatDate(n, this._daylightSavingAdjust(new Date(te, Z + $, 1)), this._getFormatConfig(t)) : n, o = this._canAdjustMonth(t, 1, te, Z) ? \"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='\" + n + \"'><span class='ui-icon ui-icon-circle-triangle-\" + (Y ? \"w\" : \"e\") + \"'>\" + n + \"</span></a>\" : q ? \"\" : \"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\" + n + \"'><span class='ui-icon ui-icon-circle-triangle-\" + (Y ? \"w\" : \"e\") + \"'>\" + n + \"</span></a>\", a = this._get(t, \"currentText\"), r = this._get(t, \"gotoCurrent\") && t.currentDay ? G : B, a = K ? this.formatDate(a, r, this._getFormatConfig(t)) : a, h = t.inline ? \"\" : \"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\" + this._get(t, \"closeText\") + \"</button>\", l = j ? \"<div class='ui-datepicker-buttonpane ui-widget-content'>\" + (Y ? h : \"\") + (this._isInRange(t, r) ? \"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>\" + a + \"</button>\" : \"\") + (Y ? \"\" : h) + \"</div>\" : \"\", c = parseInt(this._get(t, \"firstDay\"), 10), c = isNaN(c) ? 0 : c, u = this._get(t, \"showWeek\"), d = this._get(t, \"dayNames\"), p = this._get(t, \"dayNamesMin\"), f = this._get(t, \"monthNames\"), g = this._get(t, \"monthNamesShort\"), m = this._get(t, \"beforeShowDay\"), _ = this._get(t, \"showOtherMonths\"), v = this._get(t, \"selectOtherMonths\"), b = this._getDefaultDate(t), y = \"\", k = 0; U[0] > k; k++) {\n        for (x = \"\", this.maxRows = 4, C = 0; U[1] > C; C++) {\n          if (D = this._daylightSavingAdjust(new Date(te, Z, t.selectedDay)), I = \" ui-corner-all\", T = \"\", X) {\n            if (T += \"<div class='ui-datepicker-group\", U[1] > 1) switch (C) {\n              case 0:\n                T += \" ui-datepicker-group-first\", I = \" ui-corner-\" + (Y ? \"right\" : \"left\");\n                break;\n              case U[1] - 1:\n                T += \" ui-datepicker-group-last\", I = \" ui-corner-\" + (Y ? \"left\" : \"right\");\n                break;\n              default:\n                T += \" ui-datepicker-group-middle\", I = \"\";\n            }\n            T += \"'>\";\n          }\n          for (T += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + I + \"'>\" + (/all|left/.test(I) && 0 === k ? Y ? o : s : \"\") + (/all|right/.test(I) && 0 === k ? Y ? s : o : \"\") + this._generateMonthYearHeader(t, Z, te, Q, J, k > 0 || C > 0, f, g) + \"</div><table class='ui-datepicker-calendar'><thead>\" + \"<tr>\", P = u ? \"<th class='ui-datepicker-week-col'>\" + this._get(t, \"weekHeader\") + \"</th>\" : \"\", w = 0; 7 > w; w++) M = (w + c) % 7, P += \"<th scope='col'\" + ((w + c + 6) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\") + \">\" + \"<span title='\" + d[M] + \"'>\" + p[M] + \"</span></th>\";\n          for (T += P + \"</tr></thead><tbody>\", S = this._getDaysInMonth(te, Z), te === t.selectedYear && Z === t.selectedMonth && (t.selectedDay = Math.min(t.selectedDay, S)), H = (this._getFirstDayOfMonth(te, Z) - c + 7) % 7, z = Math.ceil((H + S) / 7), O = X ? this.maxRows > z ? this.maxRows : z : z, this.maxRows = O, A = this._daylightSavingAdjust(new Date(te, Z, 1 - H)), N = 0; O > N; N++) {\n            for (T += \"<tr>\", W = u ? \"<td class='ui-datepicker-week-col'>\" + this._get(t, \"calculateWeek\")(A) + \"</td>\" : \"\", w = 0; 7 > w; w++) E = m ? m.apply(t.input ? t.input[0] : null, [A]) : [!0, \"\"], F = A.getMonth() !== Z, L = F && !v || !E[0] || Q && Q > A || J && A > J, W += \"<td class='\" + ((w + c + 6) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\") + (F ? \" ui-datepicker-other-month\" : \"\") + (A.getTime() === D.getTime() && Z === t.selectedMonth && t._keyEvent || b.getTime() === A.getTime() && b.getTime() === D.getTime() ? \" \" + this._dayOverClass : \"\") + (L ? \" \" + this._unselectableClass + \" ui-state-disabled\" : \"\") + (F && !_ ? \"\" : \" \" + E[1] + (A.getTime() === G.getTime() ? \" \" + this._currentClass : \"\") + (A.getTime() === B.getTime() ? \" ui-datepicker-today\" : \"\")) + \"'\" + (F && !_ || !E[2] ? \"\" : \" title='\" + E[2].replace(/'/g, \"&#39;\") + \"'\") + (L ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + A.getMonth() + \"' data-year='\" + A.getFullYear() + \"'\") + \">\" + (F && !_ ? \"&#xa0;\" : L ? \"<span class='ui-state-default'>\" + A.getDate() + \"</span>\" : \"<a class='ui-state-default\" + (A.getTime() === B.getTime() ? \" ui-state-highlight\" : \"\") + (A.getTime() === G.getTime() ? \" ui-state-active\" : \"\") + (F ? \" ui-priority-secondary\" : \"\") + \"' href='#'>\" + A.getDate() + \"</a>\") + \"</td>\", A.setDate(A.getDate() + 1), A = this._daylightSavingAdjust(A);\n            T += W + \"</tr>\";\n          }\n          Z++, Z > 11 && (Z = 0, te++), T += \"</tbody></table>\" + (X ? \"</div>\" + (U[0] > 0 && C === U[1] - 1 ? \"<div class='ui-datepicker-row-break'></div>\" : \"\") : \"\"), x += T;\n        }\n        y += x;\n      }\n      return y += l, t._keyEvent = !1, y;\n    },\n    _generateMonthYearHeader: function _generateMonthYearHeader(t, e, i, s, n, o, a, r) {\n      var h,\n        l,\n        c,\n        u,\n        d,\n        p,\n        f,\n        g,\n        m = this._get(t, \"changeMonth\"),\n        _ = this._get(t, \"changeYear\"),\n        v = this._get(t, \"showMonthAfterYear\"),\n        b = \"<div class='ui-datepicker-title'>\",\n        y = \"\";\n      if (o || !m) y += \"<span class='ui-datepicker-month'>\" + a[e] + \"</span>\";else {\n        for (h = s && s.getFullYear() === i, l = n && n.getFullYear() === i, y += \"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\", c = 0; 12 > c; c++) (!h || c >= s.getMonth()) && (!l || n.getMonth() >= c) && (y += \"<option value='\" + c + \"'\" + (c === e ? \" selected='selected'\" : \"\") + \">\" + r[c] + \"</option>\");\n        y += \"</select>\";\n      }\n      if (v || (b += y + (!o && m && _ ? \"\" : \"&#xa0;\")), !t.yearshtml) if (t.yearshtml = \"\", o || !_) b += \"<span class='ui-datepicker-year'>\" + i + \"</span>\";else {\n        for (u = this._get(t, \"yearRange\").split(\":\"), d = new Date().getFullYear(), p = function p(t) {\n          var e = t.match(/c[+\\-].*/) ? i + parseInt(t.substring(1), 10) : t.match(/[+\\-].*/) ? d + parseInt(t, 10) : parseInt(t, 10);\n          return isNaN(e) ? d : e;\n        }, f = p(u[0]), g = Math.max(f, p(u[1] || \"\")), f = s ? Math.max(f, s.getFullYear()) : f, g = n ? Math.min(g, n.getFullYear()) : g, t.yearshtml += \"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\"; g >= f; f++) t.yearshtml += \"<option value='\" + f + \"'\" + (f === i ? \" selected='selected'\" : \"\") + \">\" + f + \"</option>\";\n        t.yearshtml += \"</select>\", b += t.yearshtml, t.yearshtml = null;\n      }\n      return b += this._get(t, \"yearSuffix\"), v && (b += (!o && m && _ ? \"\" : \"&#xa0;\") + y), b += \"</div>\";\n    },\n    _adjustInstDate: function _adjustInstDate(t, e, i) {\n      var s = t.selectedYear + (\"Y\" === i ? e : 0),\n        n = t.selectedMonth + (\"M\" === i ? e : 0),\n        o = Math.min(t.selectedDay, this._getDaysInMonth(s, n)) + (\"D\" === i ? e : 0),\n        a = this._restrictMinMax(t, this._daylightSavingAdjust(new Date(s, n, o)));\n      t.selectedDay = a.getDate(), t.drawMonth = t.selectedMonth = a.getMonth(), t.drawYear = t.selectedYear = a.getFullYear(), (\"M\" === i || \"Y\" === i) && this._notifyChange(t);\n    },\n    _restrictMinMax: function _restrictMinMax(t, e) {\n      var i = this._getMinMaxDate(t, \"min\"),\n        s = this._getMinMaxDate(t, \"max\"),\n        n = i && i > e ? i : e;\n      return s && n > s ? s : n;\n    },\n    _notifyChange: function _notifyChange(t) {\n      var e = this._get(t, \"onChangeMonthYear\");\n      e && e.apply(t.input ? t.input[0] : null, [t.selectedYear, t.selectedMonth + 1, t]);\n    },\n    _getNumberOfMonths: function _getNumberOfMonths(t) {\n      var e = this._get(t, \"numberOfMonths\");\n      return null == e ? [1, 1] : \"number\" == typeof e ? [1, e] : e;\n    },\n    _getMinMaxDate: function _getMinMaxDate(t, e) {\n      return this._determineDate(t, this._get(t, e + \"Date\"), null);\n    },\n    _getDaysInMonth: function _getDaysInMonth(t, e) {\n      return 32 - this._daylightSavingAdjust(new Date(t, e, 32)).getDate();\n    },\n    _getFirstDayOfMonth: function _getFirstDayOfMonth(t, e) {\n      return new Date(t, e, 1).getDay();\n    },\n    _canAdjustMonth: function _canAdjustMonth(t, e, i, s) {\n      var n = this._getNumberOfMonths(t),\n        o = this._daylightSavingAdjust(new Date(i, s + (0 > e ? e : n[0] * n[1]), 1));\n      return 0 > e && o.setDate(this._getDaysInMonth(o.getFullYear(), o.getMonth())), this._isInRange(t, o);\n    },\n    _isInRange: function _isInRange(t, e) {\n      var i,\n        s,\n        n = this._getMinMaxDate(t, \"min\"),\n        o = this._getMinMaxDate(t, \"max\"),\n        a = null,\n        r = null,\n        h = this._get(t, \"yearRange\");\n      return h && (i = h.split(\":\"), s = new Date().getFullYear(), a = parseInt(i[0], 10), r = parseInt(i[1], 10), i[0].match(/[+\\-].*/) && (a += s), i[1].match(/[+\\-].*/) && (r += s)), (!n || e.getTime() >= n.getTime()) && (!o || e.getTime() <= o.getTime()) && (!a || e.getFullYear() >= a) && (!r || r >= e.getFullYear());\n    },\n    _getFormatConfig: function _getFormatConfig(t) {\n      var e = this._get(t, \"shortYearCutoff\");\n      return e = \"string\" != typeof e ? e : new Date().getFullYear() % 100 + parseInt(e, 10), {\n        shortYearCutoff: e,\n        dayNamesShort: this._get(t, \"dayNamesShort\"),\n        dayNames: this._get(t, \"dayNames\"),\n        monthNamesShort: this._get(t, \"monthNamesShort\"),\n        monthNames: this._get(t, \"monthNames\")\n      };\n    },\n    _formatDate: function _formatDate(t, e, i, s) {\n      e || (t.currentDay = t.selectedDay, t.currentMonth = t.selectedMonth, t.currentYear = t.selectedYear);\n      var n = e ? \"object\" == _typeof(e) ? e : this._daylightSavingAdjust(new Date(s, i, e)) : this._daylightSavingAdjust(new Date(t.currentYear, t.currentMonth, t.currentDay));\n      return this.formatDate(this._get(t, \"dateFormat\"), n, this._getFormatConfig(t));\n    }\n  }), t.fn.datepicker = function (e) {\n    if (!this.length) return this;\n    t.datepicker.initialized || (t(document).on(\"mousedown\", t.datepicker._checkExternalClick), t.datepicker.initialized = !0), 0 === t(\"#\" + t.datepicker._mainDivId).length && t(\"body\").append(t.datepicker.dpDiv);\n    var i = Array.prototype.slice.call(arguments, 1);\n    return \"string\" != typeof e || \"isDisabled\" !== e && \"getDate\" !== e && \"widget\" !== e ? \"option\" === e && 2 === arguments.length && \"string\" == typeof arguments[1] ? t.datepicker[\"_\" + e + \"Datepicker\"].apply(t.datepicker, [this[0]].concat(i)) : this.each(function () {\n      \"string\" == typeof e ? t.datepicker[\"_\" + e + \"Datepicker\"].apply(t.datepicker, [this].concat(i)) : t.datepicker._attachDatepicker(this, e);\n    }) : t.datepicker[\"_\" + e + \"Datepicker\"].apply(t.datepicker, [this[0]].concat(i));\n  }, t.datepicker = new s(), t.datepicker.initialized = !1, t.datepicker.uuid = new Date().getTime(), t.datepicker.version = \"1.12.1\", t.datepicker, t.ui.ie = !!/msie [\\w.]+/.exec(navigator.userAgent.toLowerCase());\n  var _ = !1;\n  t(document).on(\"mouseup\", function () {\n    _ = !1;\n  }), t.widget(\"ui.mouse\", {\n    version: \"1.12.1\",\n    options: {\n      cancel: \"input, textarea, button, select, option\",\n      distance: 1,\n      delay: 0\n    },\n    _mouseInit: function _mouseInit() {\n      var e = this;\n      this.element.on(\"mousedown.\" + this.widgetName, function (t) {\n        return e._mouseDown(t);\n      }).on(\"click.\" + this.widgetName, function (i) {\n        return !0 === t.data(i.target, e.widgetName + \".preventClickEvent\") ? (t.removeData(i.target, e.widgetName + \".preventClickEvent\"), i.stopImmediatePropagation(), !1) : void 0;\n      }), this.started = !1;\n    },\n    _mouseDestroy: function _mouseDestroy() {\n      this.element.off(\".\" + this.widgetName), this._mouseMoveDelegate && this.document.off(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).off(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n    },\n    _mouseDown: function _mouseDown(e) {\n      if (!_) {\n        this._mouseMoved = !1, this._mouseStarted && this._mouseUp(e), this._mouseDownEvent = e;\n        var i = this,\n          s = 1 === e.which,\n          n = \"string\" == typeof this.options.cancel && e.target.nodeName ? t(e.target).closest(this.options.cancel).length : !1;\n        return s && !n && this._mouseCapture(e) ? (this.mouseDelayMet = !this.options.delay, this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function () {\n          i.mouseDelayMet = !0;\n        }, this.options.delay)), this._mouseDistanceMet(e) && this._mouseDelayMet(e) && (this._mouseStarted = this._mouseStart(e) !== !1, !this._mouseStarted) ? (e.preventDefault(), !0) : (!0 === t.data(e.target, this.widgetName + \".preventClickEvent\") && t.removeData(e.target, this.widgetName + \".preventClickEvent\"), this._mouseMoveDelegate = function (t) {\n          return i._mouseMove(t);\n        }, this._mouseUpDelegate = function (t) {\n          return i._mouseUp(t);\n        }, this.document.on(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).on(\"mouseup.\" + this.widgetName, this._mouseUpDelegate), e.preventDefault(), _ = !0, !0)) : !0;\n      }\n    },\n    _mouseMove: function _mouseMove(e) {\n      if (this._mouseMoved) {\n        if (t.ui.ie && (!document.documentMode || 9 > document.documentMode) && !e.button) return this._mouseUp(e);\n        if (!e.which) if (e.originalEvent.altKey || e.originalEvent.ctrlKey || e.originalEvent.metaKey || e.originalEvent.shiftKey) this.ignoreMissingWhich = !0;else if (!this.ignoreMissingWhich) return this._mouseUp(e);\n      }\n      return (e.which || e.button) && (this._mouseMoved = !0), this._mouseStarted ? (this._mouseDrag(e), e.preventDefault()) : (this._mouseDistanceMet(e) && this._mouseDelayMet(e) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, e) !== !1, this._mouseStarted ? this._mouseDrag(e) : this._mouseUp(e)), !this._mouseStarted);\n    },\n    _mouseUp: function _mouseUp(e) {\n      this.document.off(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).off(\"mouseup.\" + this.widgetName, this._mouseUpDelegate), this._mouseStarted && (this._mouseStarted = !1, e.target === this._mouseDownEvent.target && t.data(e.target, this.widgetName + \".preventClickEvent\", !0), this._mouseStop(e)), this._mouseDelayTimer && (clearTimeout(this._mouseDelayTimer), delete this._mouseDelayTimer), this.ignoreMissingWhich = !1, _ = !1, e.preventDefault();\n    },\n    _mouseDistanceMet: function _mouseDistanceMet(t) {\n      return Math.max(Math.abs(this._mouseDownEvent.pageX - t.pageX), Math.abs(this._mouseDownEvent.pageY - t.pageY)) >= this.options.distance;\n    },\n    _mouseDelayMet: function _mouseDelayMet() {\n      return this.mouseDelayMet;\n    },\n    _mouseStart: function _mouseStart() {},\n    _mouseDrag: function _mouseDrag() {},\n    _mouseStop: function _mouseStop() {},\n    _mouseCapture: function _mouseCapture() {\n      return !0;\n    }\n  }), t.ui.plugin = {\n    add: function add(e, i, s) {\n      var n,\n        o = t.ui[e].prototype;\n      for (n in s) o.plugins[n] = o.plugins[n] || [], o.plugins[n].push([i, s[n]]);\n    },\n    call: function call(t, e, i, s) {\n      var n,\n        o = t.plugins[e];\n      if (o && (s || t.element[0].parentNode && 11 !== t.element[0].parentNode.nodeType)) for (n = 0; o.length > n; n++) t.options[o[n][0]] && o[n][1].apply(t.element, i);\n    }\n  }, t.ui.safeBlur = function (e) {\n    e && \"body\" !== e.nodeName.toLowerCase() && t(e).trigger(\"blur\");\n  }, t.widget(\"ui.draggable\", t.ui.mouse, {\n    version: \"1.12.1\",\n    widgetEventPrefix: \"drag\",\n    options: {\n      addClasses: !0,\n      appendTo: \"parent\",\n      axis: !1,\n      connectToSortable: !1,\n      containment: !1,\n      cursor: \"auto\",\n      cursorAt: !1,\n      grid: !1,\n      handle: !1,\n      helper: \"original\",\n      iframeFix: !1,\n      opacity: !1,\n      refreshPositions: !1,\n      revert: !1,\n      revertDuration: 500,\n      scope: \"default\",\n      scroll: !0,\n      scrollSensitivity: 20,\n      scrollSpeed: 20,\n      snap: !1,\n      snapMode: \"both\",\n      snapTolerance: 20,\n      stack: !1,\n      zIndex: !1,\n      drag: null,\n      start: null,\n      stop: null\n    },\n    _create: function _create() {\n      \"original\" === this.options.helper && this._setPositionRelative(), this.options.addClasses && this._addClass(\"ui-draggable\"), this._setHandleClassName(), this._mouseInit();\n    },\n    _setOption: function _setOption(t, e) {\n      this._super(t, e), \"handle\" === t && (this._removeHandleClassName(), this._setHandleClassName());\n    },\n    _destroy: function _destroy() {\n      return (this.helper || this.element).is(\".ui-draggable-dragging\") ? (this.destroyOnClear = !0, void 0) : (this._removeHandleClassName(), this._mouseDestroy(), void 0);\n    },\n    _mouseCapture: function _mouseCapture(e) {\n      var i = this.options;\n      return this.helper || i.disabled || t(e.target).closest(\".ui-resizable-handle\").length > 0 ? !1 : (this.handle = this._getHandle(e), this.handle ? (this._blurActiveElement(e), this._blockFrames(i.iframeFix === !0 ? \"iframe\" : i.iframeFix), !0) : !1);\n    },\n    _blockFrames: function _blockFrames(e) {\n      this.iframeBlocks = this.document.find(e).map(function () {\n        var e = t(this);\n        return t(\"<div>\").css(\"position\", \"absolute\").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0];\n      });\n    },\n    _unblockFrames: function _unblockFrames() {\n      this.iframeBlocks && (this.iframeBlocks.remove(), delete this.iframeBlocks);\n    },\n    _blurActiveElement: function _blurActiveElement(e) {\n      var i = t.ui.safeActiveElement(this.document[0]),\n        s = t(e.target);\n      s.closest(i).length || t.ui.safeBlur(i);\n    },\n    _mouseStart: function _mouseStart(e) {\n      var i = this.options;\n      return this.helper = this._createHelper(e), this._addClass(this.helper, \"ui-draggable-dragging\"), this._cacheHelperProportions(), t.ui.ddmanager && (t.ui.ddmanager.current = this), this._cacheMargins(), this.cssPosition = this.helper.css(\"position\"), this.scrollParent = this.helper.scrollParent(!0), this.offsetParent = this.helper.offsetParent(), this.hasFixedAncestor = this.helper.parents().filter(function () {\n        return \"fixed\" === t(this).css(\"position\");\n      }).length > 0, this.positionAbs = this.element.offset(), this._refreshOffsets(e), this.originalPosition = this.position = this._generatePosition(e, !1), this.originalPageX = e.pageX, this.originalPageY = e.pageY, i.cursorAt && this._adjustOffsetFromHelper(i.cursorAt), this._setContainment(), this._trigger(\"start\", e) === !1 ? (this._clear(), !1) : (this._cacheHelperProportions(), t.ui.ddmanager && !i.dropBehaviour && t.ui.ddmanager.prepareOffsets(this, e), this._mouseDrag(e, !0), t.ui.ddmanager && t.ui.ddmanager.dragStart(this, e), !0);\n    },\n    _refreshOffsets: function _refreshOffsets(t) {\n      this.offset = {\n        top: this.positionAbs.top - this.margins.top,\n        left: this.positionAbs.left - this.margins.left,\n        scroll: !1,\n        parent: this._getParentOffset(),\n        relative: this._getRelativeOffset()\n      }, this.offset.click = {\n        left: t.pageX - this.offset.left,\n        top: t.pageY - this.offset.top\n      };\n    },\n    _mouseDrag: function _mouseDrag(e, i) {\n      if (this.hasFixedAncestor && (this.offset.parent = this._getParentOffset()), this.position = this._generatePosition(e, !0), this.positionAbs = this._convertPositionTo(\"absolute\"), !i) {\n        var s = this._uiHash();\n        if (this._trigger(\"drag\", e, s) === !1) return this._mouseUp(new t.Event(\"mouseup\", e)), !1;\n        this.position = s.position;\n      }\n      return this.helper[0].style.left = this.position.left + \"px\", this.helper[0].style.top = this.position.top + \"px\", t.ui.ddmanager && t.ui.ddmanager.drag(this, e), !1;\n    },\n    _mouseStop: function _mouseStop(e) {\n      var i = this,\n        s = !1;\n      return t.ui.ddmanager && !this.options.dropBehaviour && (s = t.ui.ddmanager.drop(this, e)), this.dropped && (s = this.dropped, this.dropped = !1), \"invalid\" === this.options.revert && !s || \"valid\" === this.options.revert && s || this.options.revert === !0 || t.isFunction(this.options.revert) && this.options.revert.call(this.element, s) ? t(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function () {\n        i._trigger(\"stop\", e) !== !1 && i._clear();\n      }) : this._trigger(\"stop\", e) !== !1 && this._clear(), !1;\n    },\n    _mouseUp: function _mouseUp(e) {\n      return this._unblockFrames(), t.ui.ddmanager && t.ui.ddmanager.dragStop(this, e), this.handleElement.is(e.target) && this.element.trigger(\"focus\"), t.ui.mouse.prototype._mouseUp.call(this, e);\n    },\n    cancel: function cancel() {\n      return this.helper.is(\".ui-draggable-dragging\") ? this._mouseUp(new t.Event(\"mouseup\", {\n        target: this.element[0]\n      })) : this._clear(), this;\n    },\n    _getHandle: function _getHandle(e) {\n      return this.options.handle ? !!t(e.target).closest(this.element.find(this.options.handle)).length : !0;\n    },\n    _setHandleClassName: function _setHandleClassName() {\n      this.handleElement = this.options.handle ? this.element.find(this.options.handle) : this.element, this._addClass(this.handleElement, \"ui-draggable-handle\");\n    },\n    _removeHandleClassName: function _removeHandleClassName() {\n      this._removeClass(this.handleElement, \"ui-draggable-handle\");\n    },\n    _createHelper: function _createHelper(e) {\n      var i = this.options,\n        s = t.isFunction(i.helper),\n        n = s ? t(i.helper.apply(this.element[0], [e])) : \"clone\" === i.helper ? this.element.clone().removeAttr(\"id\") : this.element;\n      return n.parents(\"body\").length || n.appendTo(\"parent\" === i.appendTo ? this.element[0].parentNode : i.appendTo), s && n[0] === this.element[0] && this._setPositionRelative(), n[0] === this.element[0] || /(fixed|absolute)/.test(n.css(\"position\")) || n.css(\"position\", \"absolute\"), n;\n    },\n    _setPositionRelative: function _setPositionRelative() {\n      /^(?:r|a|f)/.test(this.element.css(\"position\")) || (this.element[0].style.position = \"relative\");\n    },\n    _adjustOffsetFromHelper: function _adjustOffsetFromHelper(e) {\n      \"string\" == typeof e && (e = e.split(\" \")), t.isArray(e) && (e = {\n        left: +e[0],\n        top: +e[1] || 0\n      }), \"left\" in e && (this.offset.click.left = e.left + this.margins.left), \"right\" in e && (this.offset.click.left = this.helperProportions.width - e.right + this.margins.left), \"top\" in e && (this.offset.click.top = e.top + this.margins.top), \"bottom\" in e && (this.offset.click.top = this.helperProportions.height - e.bottom + this.margins.top);\n    },\n    _isRootNode: function _isRootNode(t) {\n      return /(html|body)/i.test(t.tagName) || t === this.document[0];\n    },\n    _getParentOffset: function _getParentOffset() {\n      var e = this.offsetParent.offset(),\n        i = this.document[0];\n      return \"absolute\" === this.cssPosition && this.scrollParent[0] !== i && t.contains(this.scrollParent[0], this.offsetParent[0]) && (e.left += this.scrollParent.scrollLeft(), e.top += this.scrollParent.scrollTop()), this._isRootNode(this.offsetParent[0]) && (e = {\n        top: 0,\n        left: 0\n      }), {\n        top: e.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"), 10) || 0),\n        left: e.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"), 10) || 0)\n      };\n    },\n    _getRelativeOffset: function _getRelativeOffset() {\n      if (\"relative\" !== this.cssPosition) return {\n        top: 0,\n        left: 0\n      };\n      var t = this.element.position(),\n        e = this._isRootNode(this.scrollParent[0]);\n      return {\n        top: t.top - (parseInt(this.helper.css(\"top\"), 10) || 0) + (e ? 0 : this.scrollParent.scrollTop()),\n        left: t.left - (parseInt(this.helper.css(\"left\"), 10) || 0) + (e ? 0 : this.scrollParent.scrollLeft())\n      };\n    },\n    _cacheMargins: function _cacheMargins() {\n      this.margins = {\n        left: parseInt(this.element.css(\"marginLeft\"), 10) || 0,\n        top: parseInt(this.element.css(\"marginTop\"), 10) || 0,\n        right: parseInt(this.element.css(\"marginRight\"), 10) || 0,\n        bottom: parseInt(this.element.css(\"marginBottom\"), 10) || 0\n      };\n    },\n    _cacheHelperProportions: function _cacheHelperProportions() {\n      this.helperProportions = {\n        width: this.helper.outerWidth(),\n        height: this.helper.outerHeight()\n      };\n    },\n    _setContainment: function _setContainment() {\n      var e,\n        i,\n        s,\n        n = this.options,\n        o = this.document[0];\n      return this.relativeContainer = null, n.containment ? \"window\" === n.containment ? (this.containment = [t(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, t(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, t(window).scrollLeft() + t(window).width() - this.helperProportions.width - this.margins.left, t(window).scrollTop() + (t(window).height() || o.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top], void 0) : \"document\" === n.containment ? (this.containment = [0, 0, t(o).width() - this.helperProportions.width - this.margins.left, (t(o).height() || o.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top], void 0) : n.containment.constructor === Array ? (this.containment = n.containment, void 0) : (\"parent\" === n.containment && (n.containment = this.helper[0].parentNode), i = t(n.containment), s = i[0], s && (e = /(scroll|auto)/.test(i.css(\"overflow\")), this.containment = [(parseInt(i.css(\"borderLeftWidth\"), 10) || 0) + (parseInt(i.css(\"paddingLeft\"), 10) || 0), (parseInt(i.css(\"borderTopWidth\"), 10) || 0) + (parseInt(i.css(\"paddingTop\"), 10) || 0), (e ? Math.max(s.scrollWidth, s.offsetWidth) : s.offsetWidth) - (parseInt(i.css(\"borderRightWidth\"), 10) || 0) - (parseInt(i.css(\"paddingRight\"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (e ? Math.max(s.scrollHeight, s.offsetHeight) : s.offsetHeight) - (parseInt(i.css(\"borderBottomWidth\"), 10) || 0) - (parseInt(i.css(\"paddingBottom\"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom], this.relativeContainer = i), void 0) : (this.containment = null, void 0);\n    },\n    _convertPositionTo: function _convertPositionTo(t, e) {\n      e || (e = this.position);\n      var i = \"absolute\" === t ? 1 : -1,\n        s = this._isRootNode(this.scrollParent[0]);\n      return {\n        top: e.top + this.offset.relative.top * i + this.offset.parent.top * i - (\"fixed\" === this.cssPosition ? -this.offset.scroll.top : s ? 0 : this.offset.scroll.top) * i,\n        left: e.left + this.offset.relative.left * i + this.offset.parent.left * i - (\"fixed\" === this.cssPosition ? -this.offset.scroll.left : s ? 0 : this.offset.scroll.left) * i\n      };\n    },\n    _generatePosition: function _generatePosition(t, e) {\n      var i,\n        s,\n        n,\n        o,\n        a = this.options,\n        r = this._isRootNode(this.scrollParent[0]),\n        h = t.pageX,\n        l = t.pageY;\n      return r && this.offset.scroll || (this.offset.scroll = {\n        top: this.scrollParent.scrollTop(),\n        left: this.scrollParent.scrollLeft()\n      }), e && (this.containment && (this.relativeContainer ? (s = this.relativeContainer.offset(), i = [this.containment[0] + s.left, this.containment[1] + s.top, this.containment[2] + s.left, this.containment[3] + s.top]) : i = this.containment, t.pageX - this.offset.click.left < i[0] && (h = i[0] + this.offset.click.left), t.pageY - this.offset.click.top < i[1] && (l = i[1] + this.offset.click.top), t.pageX - this.offset.click.left > i[2] && (h = i[2] + this.offset.click.left), t.pageY - this.offset.click.top > i[3] && (l = i[3] + this.offset.click.top)), a.grid && (n = a.grid[1] ? this.originalPageY + Math.round((l - this.originalPageY) / a.grid[1]) * a.grid[1] : this.originalPageY, l = i ? n - this.offset.click.top >= i[1] || n - this.offset.click.top > i[3] ? n : n - this.offset.click.top >= i[1] ? n - a.grid[1] : n + a.grid[1] : n, o = a.grid[0] ? this.originalPageX + Math.round((h - this.originalPageX) / a.grid[0]) * a.grid[0] : this.originalPageX, h = i ? o - this.offset.click.left >= i[0] || o - this.offset.click.left > i[2] ? o : o - this.offset.click.left >= i[0] ? o - a.grid[0] : o + a.grid[0] : o), \"y\" === a.axis && (h = this.originalPageX), \"x\" === a.axis && (l = this.originalPageY)), {\n        top: l - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (\"fixed\" === this.cssPosition ? -this.offset.scroll.top : r ? 0 : this.offset.scroll.top),\n        left: h - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (\"fixed\" === this.cssPosition ? -this.offset.scroll.left : r ? 0 : this.offset.scroll.left)\n      };\n    },\n    _clear: function _clear() {\n      this._removeClass(this.helper, \"ui-draggable-dragging\"), this.helper[0] === this.element[0] || this.cancelHelperRemoval || this.helper.remove(), this.helper = null, this.cancelHelperRemoval = !1, this.destroyOnClear && this.destroy();\n    },\n    _trigger: function _trigger(e, i, s) {\n      return s = s || this._uiHash(), t.ui.plugin.call(this, e, [i, s, this], !0), /^(drag|start|stop)/.test(e) && (this.positionAbs = this._convertPositionTo(\"absolute\"), s.offset = this.positionAbs), t.Widget.prototype._trigger.call(this, e, i, s);\n    },\n    plugins: {},\n    _uiHash: function _uiHash() {\n      return {\n        helper: this.helper,\n        position: this.position,\n        originalPosition: this.originalPosition,\n        offset: this.positionAbs\n      };\n    }\n  }), t.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n    start: function start(e, i, s) {\n      var n = t.extend({}, i, {\n        item: s.element\n      });\n      s.sortables = [], t(s.options.connectToSortable).each(function () {\n        var i = t(this).sortable(\"instance\");\n        i && !i.options.disabled && (s.sortables.push(i), i.refreshPositions(), i._trigger(\"activate\", e, n));\n      });\n    },\n    stop: function stop(e, i, s) {\n      var n = t.extend({}, i, {\n        item: s.element\n      });\n      s.cancelHelperRemoval = !1, t.each(s.sortables, function () {\n        var t = this;\n        t.isOver ? (t.isOver = 0, s.cancelHelperRemoval = !0, t.cancelHelperRemoval = !1, t._storedCSS = {\n          position: t.placeholder.css(\"position\"),\n          top: t.placeholder.css(\"top\"),\n          left: t.placeholder.css(\"left\")\n        }, t._mouseStop(e), t.options.helper = t.options._helper) : (t.cancelHelperRemoval = !0, t._trigger(\"deactivate\", e, n));\n      });\n    },\n    drag: function drag(e, i, s) {\n      t.each(s.sortables, function () {\n        var n = !1,\n          o = this;\n        o.positionAbs = s.positionAbs, o.helperProportions = s.helperProportions, o.offset.click = s.offset.click, o._intersectsWith(o.containerCache) && (n = !0, t.each(s.sortables, function () {\n          return this.positionAbs = s.positionAbs, this.helperProportions = s.helperProportions, this.offset.click = s.offset.click, this !== o && this._intersectsWith(this.containerCache) && t.contains(o.element[0], this.element[0]) && (n = !1), n;\n        })), n ? (o.isOver || (o.isOver = 1, s._parent = i.helper.parent(), o.currentItem = i.helper.appendTo(o.element).data(\"ui-sortable-item\", !0), o.options._helper = o.options.helper, o.options.helper = function () {\n          return i.helper[0];\n        }, e.target = o.currentItem[0], o._mouseCapture(e, !0), o._mouseStart(e, !0, !0), o.offset.click.top = s.offset.click.top, o.offset.click.left = s.offset.click.left, o.offset.parent.left -= s.offset.parent.left - o.offset.parent.left, o.offset.parent.top -= s.offset.parent.top - o.offset.parent.top, s._trigger(\"toSortable\", e), s.dropped = o.element, t.each(s.sortables, function () {\n          this.refreshPositions();\n        }), s.currentItem = s.element, o.fromOutside = s), o.currentItem && (o._mouseDrag(e), i.position = o.position)) : o.isOver && (o.isOver = 0, o.cancelHelperRemoval = !0, o.options._revert = o.options.revert, o.options.revert = !1, o._trigger(\"out\", e, o._uiHash(o)), o._mouseStop(e, !0), o.options.revert = o.options._revert, o.options.helper = o.options._helper, o.placeholder && o.placeholder.remove(), i.helper.appendTo(s._parent), s._refreshOffsets(e), i.position = s._generatePosition(e, !0), s._trigger(\"fromSortable\", e), s.dropped = !1, t.each(s.sortables, function () {\n          this.refreshPositions();\n        }));\n      });\n    }\n  }), t.ui.plugin.add(\"draggable\", \"cursor\", {\n    start: function start(e, i, s) {\n      var n = t(\"body\"),\n        o = s.options;\n      n.css(\"cursor\") && (o._cursor = n.css(\"cursor\")), n.css(\"cursor\", o.cursor);\n    },\n    stop: function stop(e, i, s) {\n      var n = s.options;\n      n._cursor && t(\"body\").css(\"cursor\", n._cursor);\n    }\n  }), t.ui.plugin.add(\"draggable\", \"opacity\", {\n    start: function start(e, i, s) {\n      var n = t(i.helper),\n        o = s.options;\n      n.css(\"opacity\") && (o._opacity = n.css(\"opacity\")), n.css(\"opacity\", o.opacity);\n    },\n    stop: function stop(e, i, s) {\n      var n = s.options;\n      n._opacity && t(i.helper).css(\"opacity\", n._opacity);\n    }\n  }), t.ui.plugin.add(\"draggable\", \"scroll\", {\n    start: function start(t, e, i) {\n      i.scrollParentNotHidden || (i.scrollParentNotHidden = i.helper.scrollParent(!1)), i.scrollParentNotHidden[0] !== i.document[0] && \"HTML\" !== i.scrollParentNotHidden[0].tagName && (i.overflowOffset = i.scrollParentNotHidden.offset());\n    },\n    drag: function drag(e, i, s) {\n      var n = s.options,\n        o = !1,\n        a = s.scrollParentNotHidden[0],\n        r = s.document[0];\n      a !== r && \"HTML\" !== a.tagName ? (n.axis && \"x\" === n.axis || (s.overflowOffset.top + a.offsetHeight - e.pageY < n.scrollSensitivity ? a.scrollTop = o = a.scrollTop + n.scrollSpeed : e.pageY - s.overflowOffset.top < n.scrollSensitivity && (a.scrollTop = o = a.scrollTop - n.scrollSpeed)), n.axis && \"y\" === n.axis || (s.overflowOffset.left + a.offsetWidth - e.pageX < n.scrollSensitivity ? a.scrollLeft = o = a.scrollLeft + n.scrollSpeed : e.pageX - s.overflowOffset.left < n.scrollSensitivity && (a.scrollLeft = o = a.scrollLeft - n.scrollSpeed))) : (n.axis && \"x\" === n.axis || (e.pageY - t(r).scrollTop() < n.scrollSensitivity ? o = t(r).scrollTop(t(r).scrollTop() - n.scrollSpeed) : t(window).height() - (e.pageY - t(r).scrollTop()) < n.scrollSensitivity && (o = t(r).scrollTop(t(r).scrollTop() + n.scrollSpeed))), n.axis && \"y\" === n.axis || (e.pageX - t(r).scrollLeft() < n.scrollSensitivity ? o = t(r).scrollLeft(t(r).scrollLeft() - n.scrollSpeed) : t(window).width() - (e.pageX - t(r).scrollLeft()) < n.scrollSensitivity && (o = t(r).scrollLeft(t(r).scrollLeft() + n.scrollSpeed)))), o !== !1 && t.ui.ddmanager && !n.dropBehaviour && t.ui.ddmanager.prepareOffsets(s, e);\n    }\n  }), t.ui.plugin.add(\"draggable\", \"snap\", {\n    start: function start(e, i, s) {\n      var n = s.options;\n      s.snapElements = [], t(n.snap.constructor !== String ? n.snap.items || \":data(ui-draggable)\" : n.snap).each(function () {\n        var e = t(this),\n          i = e.offset();\n        this !== s.element[0] && s.snapElements.push({\n          item: this,\n          width: e.outerWidth(),\n          height: e.outerHeight(),\n          top: i.top,\n          left: i.left\n        });\n      });\n    },\n    drag: function drag(e, i, s) {\n      var n,\n        o,\n        a,\n        r,\n        h,\n        l,\n        c,\n        u,\n        d,\n        p,\n        f = s.options,\n        g = f.snapTolerance,\n        m = i.offset.left,\n        _ = m + s.helperProportions.width,\n        v = i.offset.top,\n        b = v + s.helperProportions.height;\n      for (d = s.snapElements.length - 1; d >= 0; d--) h = s.snapElements[d].left - s.margins.left, l = h + s.snapElements[d].width, c = s.snapElements[d].top - s.margins.top, u = c + s.snapElements[d].height, h - g > _ || m > l + g || c - g > b || v > u + g || !t.contains(s.snapElements[d].item.ownerDocument, s.snapElements[d].item) ? (s.snapElements[d].snapping && s.options.snap.release && s.options.snap.release.call(s.element, e, t.extend(s._uiHash(), {\n        snapItem: s.snapElements[d].item\n      })), s.snapElements[d].snapping = !1) : (\"inner\" !== f.snapMode && (n = g >= Math.abs(c - b), o = g >= Math.abs(u - v), a = g >= Math.abs(h - _), r = g >= Math.abs(l - m), n && (i.position.top = s._convertPositionTo(\"relative\", {\n        top: c - s.helperProportions.height,\n        left: 0\n      }).top), o && (i.position.top = s._convertPositionTo(\"relative\", {\n        top: u,\n        left: 0\n      }).top), a && (i.position.left = s._convertPositionTo(\"relative\", {\n        top: 0,\n        left: h - s.helperProportions.width\n      }).left), r && (i.position.left = s._convertPositionTo(\"relative\", {\n        top: 0,\n        left: l\n      }).left)), p = n || o || a || r, \"outer\" !== f.snapMode && (n = g >= Math.abs(c - v), o = g >= Math.abs(u - b), a = g >= Math.abs(h - m), r = g >= Math.abs(l - _), n && (i.position.top = s._convertPositionTo(\"relative\", {\n        top: c,\n        left: 0\n      }).top), o && (i.position.top = s._convertPositionTo(\"relative\", {\n        top: u - s.helperProportions.height,\n        left: 0\n      }).top), a && (i.position.left = s._convertPositionTo(\"relative\", {\n        top: 0,\n        left: h\n      }).left), r && (i.position.left = s._convertPositionTo(\"relative\", {\n        top: 0,\n        left: l - s.helperProportions.width\n      }).left)), !s.snapElements[d].snapping && (n || o || a || r || p) && s.options.snap.snap && s.options.snap.snap.call(s.element, e, t.extend(s._uiHash(), {\n        snapItem: s.snapElements[d].item\n      })), s.snapElements[d].snapping = n || o || a || r || p);\n    }\n  }), t.ui.plugin.add(\"draggable\", \"stack\", {\n    start: function start(e, i, s) {\n      var n,\n        o = s.options,\n        a = t.makeArray(t(o.stack)).sort(function (e, i) {\n          return (parseInt(t(e).css(\"zIndex\"), 10) || 0) - (parseInt(t(i).css(\"zIndex\"), 10) || 0);\n        });\n      a.length && (n = parseInt(t(a[0]).css(\"zIndex\"), 10) || 0, t(a).each(function (e) {\n        t(this).css(\"zIndex\", n + e);\n      }), this.css(\"zIndex\", n + a.length));\n    }\n  }), t.ui.plugin.add(\"draggable\", \"zIndex\", {\n    start: function start(e, i, s) {\n      var n = t(i.helper),\n        o = s.options;\n      n.css(\"zIndex\") && (o._zIndex = n.css(\"zIndex\")), n.css(\"zIndex\", o.zIndex);\n    },\n    stop: function stop(e, i, s) {\n      var n = s.options;\n      n._zIndex && t(i.helper).css(\"zIndex\", n._zIndex);\n    }\n  }), t.ui.draggable, t.widget(\"ui.resizable\", t.ui.mouse, {\n    version: \"1.12.1\",\n    widgetEventPrefix: \"resize\",\n    options: {\n      alsoResize: !1,\n      animate: !1,\n      animateDuration: \"slow\",\n      animateEasing: \"swing\",\n      aspectRatio: !1,\n      autoHide: !1,\n      classes: {\n        \"ui-resizable-se\": \"ui-icon ui-icon-gripsmall-diagonal-se\"\n      },\n      containment: !1,\n      ghost: !1,\n      grid: !1,\n      handles: \"e,s,se\",\n      helper: !1,\n      maxHeight: null,\n      maxWidth: null,\n      minHeight: 10,\n      minWidth: 10,\n      zIndex: 90,\n      resize: null,\n      start: null,\n      stop: null\n    },\n    _num: function _num(t) {\n      return parseFloat(t) || 0;\n    },\n    _isNumber: function _isNumber(t) {\n      return !isNaN(parseFloat(t));\n    },\n    _hasScroll: function _hasScroll(e, i) {\n      if (\"hidden\" === t(e).css(\"overflow\")) return !1;\n      var s = i && \"left\" === i ? \"scrollLeft\" : \"scrollTop\",\n        n = !1;\n      return e[s] > 0 ? !0 : (e[s] = 1, n = e[s] > 0, e[s] = 0, n);\n    },\n    _create: function _create() {\n      var e,\n        i = this.options,\n        s = this;\n      this._addClass(\"ui-resizable\"), t.extend(this, {\n        _aspectRatio: !!i.aspectRatio,\n        aspectRatio: i.aspectRatio,\n        originalElement: this.element,\n        _proportionallyResizeElements: [],\n        _helper: i.helper || i.ghost || i.animate ? i.helper || \"ui-resizable-helper\" : null\n      }), this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i) && (this.element.wrap(t(\"<div class='ui-wrapper' style='overflow: hidden;'></div>\").css({\n        position: this.element.css(\"position\"),\n        width: this.element.outerWidth(),\n        height: this.element.outerHeight(),\n        top: this.element.css(\"top\"),\n        left: this.element.css(\"left\")\n      })), this.element = this.element.parent().data(\"ui-resizable\", this.element.resizable(\"instance\")), this.elementIsWrapper = !0, e = {\n        marginTop: this.originalElement.css(\"marginTop\"),\n        marginRight: this.originalElement.css(\"marginRight\"),\n        marginBottom: this.originalElement.css(\"marginBottom\"),\n        marginLeft: this.originalElement.css(\"marginLeft\")\n      }, this.element.css(e), this.originalElement.css(\"margin\", 0), this.originalResizeStyle = this.originalElement.css(\"resize\"), this.originalElement.css(\"resize\", \"none\"), this._proportionallyResizeElements.push(this.originalElement.css({\n        position: \"static\",\n        zoom: 1,\n        display: \"block\"\n      })), this.originalElement.css(e), this._proportionallyResize()), this._setupHandles(), i.autoHide && t(this.element).on(\"mouseenter\", function () {\n        i.disabled || (s._removeClass(\"ui-resizable-autohide\"), s._handles.show());\n      }).on(\"mouseleave\", function () {\n        i.disabled || s.resizing || (s._addClass(\"ui-resizable-autohide\"), s._handles.hide());\n      }), this._mouseInit();\n    },\n    _destroy: function _destroy() {\n      this._mouseDestroy();\n      var e,\n        i = function i(e) {\n          t(e).removeData(\"resizable\").removeData(\"ui-resizable\").off(\".resizable\").find(\".ui-resizable-handle\").remove();\n        };\n      return this.elementIsWrapper && (i(this.element), e = this.element, this.originalElement.css({\n        position: e.css(\"position\"),\n        width: e.outerWidth(),\n        height: e.outerHeight(),\n        top: e.css(\"top\"),\n        left: e.css(\"left\")\n      }).insertAfter(e), e.remove()), this.originalElement.css(\"resize\", this.originalResizeStyle), i(this.originalElement), this;\n    },\n    _setOption: function _setOption(t, e) {\n      switch (this._super(t, e), t) {\n        case \"handles\":\n          this._removeHandles(), this._setupHandles();\n          break;\n        default:\n      }\n    },\n    _setupHandles: function _setupHandles() {\n      var e,\n        i,\n        s,\n        n,\n        o,\n        a = this.options,\n        r = this;\n      if (this.handles = a.handles || (t(\".ui-resizable-handle\", this.element).length ? {\n        n: \".ui-resizable-n\",\n        e: \".ui-resizable-e\",\n        s: \".ui-resizable-s\",\n        w: \".ui-resizable-w\",\n        se: \".ui-resizable-se\",\n        sw: \".ui-resizable-sw\",\n        ne: \".ui-resizable-ne\",\n        nw: \".ui-resizable-nw\"\n      } : \"e,s,se\"), this._handles = t(), this.handles.constructor === String) for (\"all\" === this.handles && (this.handles = \"n,e,s,w,se,sw,ne,nw\"), s = this.handles.split(\",\"), this.handles = {}, i = 0; s.length > i; i++) e = t.trim(s[i]), n = \"ui-resizable-\" + e, o = t(\"<div>\"), this._addClass(o, \"ui-resizable-handle \" + n), o.css({\n        zIndex: a.zIndex\n      }), this.handles[e] = \".ui-resizable-\" + e, this.element.append(o);\n      this._renderAxis = function (e) {\n        var i, s, n, o;\n        e = e || this.element;\n        for (i in this.handles) this.handles[i].constructor === String ? this.handles[i] = this.element.children(this.handles[i]).first().show() : (this.handles[i].jquery || this.handles[i].nodeType) && (this.handles[i] = t(this.handles[i]), this._on(this.handles[i], {\n          mousedown: r._mouseDown\n        })), this.elementIsWrapper && this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i) && (s = t(this.handles[i], this.element), o = /sw|ne|nw|se|n|s/.test(i) ? s.outerHeight() : s.outerWidth(), n = [\"padding\", /ne|nw|n/.test(i) ? \"Top\" : /se|sw|s/.test(i) ? \"Bottom\" : /^e$/.test(i) ? \"Right\" : \"Left\"].join(\"\"), e.css(n, o), this._proportionallyResize()), this._handles = this._handles.add(this.handles[i]);\n      }, this._renderAxis(this.element), this._handles = this._handles.add(this.element.find(\".ui-resizable-handle\")), this._handles.disableSelection(), this._handles.on(\"mouseover\", function () {\n        r.resizing || (this.className && (o = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)), r.axis = o && o[1] ? o[1] : \"se\");\n      }), a.autoHide && (this._handles.hide(), this._addClass(\"ui-resizable-autohide\"));\n    },\n    _removeHandles: function _removeHandles() {\n      this._handles.remove();\n    },\n    _mouseCapture: function _mouseCapture(e) {\n      var i,\n        s,\n        n = !1;\n      for (i in this.handles) s = t(this.handles[i])[0], (s === e.target || t.contains(s, e.target)) && (n = !0);\n      return !this.options.disabled && n;\n    },\n    _mouseStart: function _mouseStart(e) {\n      var i,\n        s,\n        n,\n        o = this.options,\n        a = this.element;\n      return this.resizing = !0, this._renderProxy(), i = this._num(this.helper.css(\"left\")), s = this._num(this.helper.css(\"top\")), o.containment && (i += t(o.containment).scrollLeft() || 0, s += t(o.containment).scrollTop() || 0), this.offset = this.helper.offset(), this.position = {\n        left: i,\n        top: s\n      }, this.size = this._helper ? {\n        width: this.helper.width(),\n        height: this.helper.height()\n      } : {\n        width: a.width(),\n        height: a.height()\n      }, this.originalSize = this._helper ? {\n        width: a.outerWidth(),\n        height: a.outerHeight()\n      } : {\n        width: a.width(),\n        height: a.height()\n      }, this.sizeDiff = {\n        width: a.outerWidth() - a.width(),\n        height: a.outerHeight() - a.height()\n      }, this.originalPosition = {\n        left: i,\n        top: s\n      }, this.originalMousePosition = {\n        left: e.pageX,\n        top: e.pageY\n      }, this.aspectRatio = \"number\" == typeof o.aspectRatio ? o.aspectRatio : this.originalSize.width / this.originalSize.height || 1, n = t(\".ui-resizable-\" + this.axis).css(\"cursor\"), t(\"body\").css(\"cursor\", \"auto\" === n ? this.axis + \"-resize\" : n), this._addClass(\"ui-resizable-resizing\"), this._propagate(\"start\", e), !0;\n    },\n    _mouseDrag: function _mouseDrag(e) {\n      var i,\n        s,\n        n = this.originalMousePosition,\n        o = this.axis,\n        a = e.pageX - n.left || 0,\n        r = e.pageY - n.top || 0,\n        h = this._change[o];\n      return this._updatePrevProperties(), h ? (i = h.apply(this, [e, a, r]), this._updateVirtualBoundaries(e.shiftKey), (this._aspectRatio || e.shiftKey) && (i = this._updateRatio(i, e)), i = this._respectSize(i, e), this._updateCache(i), this._propagate(\"resize\", e), s = this._applyChanges(), !this._helper && this._proportionallyResizeElements.length && this._proportionallyResize(), t.isEmptyObject(s) || (this._updatePrevProperties(), this._trigger(\"resize\", e, this.ui()), this._applyChanges()), !1) : !1;\n    },\n    _mouseStop: function _mouseStop(e) {\n      this.resizing = !1;\n      var i,\n        s,\n        n,\n        o,\n        a,\n        r,\n        h,\n        l = this.options,\n        c = this;\n      return this._helper && (i = this._proportionallyResizeElements, s = i.length && /textarea/i.test(i[0].nodeName), n = s && this._hasScroll(i[0], \"left\") ? 0 : c.sizeDiff.height, o = s ? 0 : c.sizeDiff.width, a = {\n        width: c.helper.width() - o,\n        height: c.helper.height() - n\n      }, r = parseFloat(c.element.css(\"left\")) + (c.position.left - c.originalPosition.left) || null, h = parseFloat(c.element.css(\"top\")) + (c.position.top - c.originalPosition.top) || null, l.animate || this.element.css(t.extend(a, {\n        top: h,\n        left: r\n      })), c.helper.height(c.size.height), c.helper.width(c.size.width), this._helper && !l.animate && this._proportionallyResize()), t(\"body\").css(\"cursor\", \"auto\"), this._removeClass(\"ui-resizable-resizing\"), this._propagate(\"stop\", e), this._helper && this.helper.remove(), !1;\n    },\n    _updatePrevProperties: function _updatePrevProperties() {\n      this.prevPosition = {\n        top: this.position.top,\n        left: this.position.left\n      }, this.prevSize = {\n        width: this.size.width,\n        height: this.size.height\n      };\n    },\n    _applyChanges: function _applyChanges() {\n      var t = {};\n      return this.position.top !== this.prevPosition.top && (t.top = this.position.top + \"px\"), this.position.left !== this.prevPosition.left && (t.left = this.position.left + \"px\"), this.size.width !== this.prevSize.width && (t.width = this.size.width + \"px\"), this.size.height !== this.prevSize.height && (t.height = this.size.height + \"px\"), this.helper.css(t), t;\n    },\n    _updateVirtualBoundaries: function _updateVirtualBoundaries(t) {\n      var e,\n        i,\n        s,\n        n,\n        o,\n        a = this.options;\n      o = {\n        minWidth: this._isNumber(a.minWidth) ? a.minWidth : 0,\n        maxWidth: this._isNumber(a.maxWidth) ? a.maxWidth : 1 / 0,\n        minHeight: this._isNumber(a.minHeight) ? a.minHeight : 0,\n        maxHeight: this._isNumber(a.maxHeight) ? a.maxHeight : 1 / 0\n      }, (this._aspectRatio || t) && (e = o.minHeight * this.aspectRatio, s = o.minWidth / this.aspectRatio, i = o.maxHeight * this.aspectRatio, n = o.maxWidth / this.aspectRatio, e > o.minWidth && (o.minWidth = e), s > o.minHeight && (o.minHeight = s), o.maxWidth > i && (o.maxWidth = i), o.maxHeight > n && (o.maxHeight = n)), this._vBoundaries = o;\n    },\n    _updateCache: function _updateCache(t) {\n      this.offset = this.helper.offset(), this._isNumber(t.left) && (this.position.left = t.left), this._isNumber(t.top) && (this.position.top = t.top), this._isNumber(t.height) && (this.size.height = t.height), this._isNumber(t.width) && (this.size.width = t.width);\n    },\n    _updateRatio: function _updateRatio(t) {\n      var e = this.position,\n        i = this.size,\n        s = this.axis;\n      return this._isNumber(t.height) ? t.width = t.height * this.aspectRatio : this._isNumber(t.width) && (t.height = t.width / this.aspectRatio), \"sw\" === s && (t.left = e.left + (i.width - t.width), t.top = null), \"nw\" === s && (t.top = e.top + (i.height - t.height), t.left = e.left + (i.width - t.width)), t;\n    },\n    _respectSize: function _respectSize(t) {\n      var e = this._vBoundaries,\n        i = this.axis,\n        s = this._isNumber(t.width) && e.maxWidth && e.maxWidth < t.width,\n        n = this._isNumber(t.height) && e.maxHeight && e.maxHeight < t.height,\n        o = this._isNumber(t.width) && e.minWidth && e.minWidth > t.width,\n        a = this._isNumber(t.height) && e.minHeight && e.minHeight > t.height,\n        r = this.originalPosition.left + this.originalSize.width,\n        h = this.originalPosition.top + this.originalSize.height,\n        l = /sw|nw|w/.test(i),\n        c = /nw|ne|n/.test(i);\n      return o && (t.width = e.minWidth), a && (t.height = e.minHeight), s && (t.width = e.maxWidth), n && (t.height = e.maxHeight), o && l && (t.left = r - e.minWidth), s && l && (t.left = r - e.maxWidth), a && c && (t.top = h - e.minHeight), n && c && (t.top = h - e.maxHeight), t.width || t.height || t.left || !t.top ? t.width || t.height || t.top || !t.left || (t.left = null) : t.top = null, t;\n    },\n    _getPaddingPlusBorderDimensions: function _getPaddingPlusBorderDimensions(t) {\n      for (var e = 0, i = [], s = [t.css(\"borderTopWidth\"), t.css(\"borderRightWidth\"), t.css(\"borderBottomWidth\"), t.css(\"borderLeftWidth\")], n = [t.css(\"paddingTop\"), t.css(\"paddingRight\"), t.css(\"paddingBottom\"), t.css(\"paddingLeft\")]; 4 > e; e++) i[e] = parseFloat(s[e]) || 0, i[e] += parseFloat(n[e]) || 0;\n      return {\n        height: i[0] + i[2],\n        width: i[1] + i[3]\n      };\n    },\n    _proportionallyResize: function _proportionallyResize() {\n      if (this._proportionallyResizeElements.length) for (var t, e = 0, i = this.helper || this.element; this._proportionallyResizeElements.length > e; e++) t = this._proportionallyResizeElements[e], this.outerDimensions || (this.outerDimensions = this._getPaddingPlusBorderDimensions(t)), t.css({\n        height: i.height() - this.outerDimensions.height || 0,\n        width: i.width() - this.outerDimensions.width || 0\n      });\n    },\n    _renderProxy: function _renderProxy() {\n      var e = this.element,\n        i = this.options;\n      this.elementOffset = e.offset(), this._helper ? (this.helper = this.helper || t(\"<div style='overflow:hidden;'></div>\"), this._addClass(this.helper, this._helper), this.helper.css({\n        width: this.element.outerWidth(),\n        height: this.element.outerHeight(),\n        position: \"absolute\",\n        left: this.elementOffset.left + \"px\",\n        top: this.elementOffset.top + \"px\",\n        zIndex: ++i.zIndex\n      }), this.helper.appendTo(\"body\").disableSelection()) : this.helper = this.element;\n    },\n    _change: {\n      e: function e(t, _e) {\n        return {\n          width: this.originalSize.width + _e\n        };\n      },\n      w: function w(t, e) {\n        var i = this.originalSize,\n          s = this.originalPosition;\n        return {\n          left: s.left + e,\n          width: i.width - e\n        };\n      },\n      n: function n(t, e, i) {\n        var s = this.originalSize,\n          n = this.originalPosition;\n        return {\n          top: n.top + i,\n          height: s.height - i\n        };\n      },\n      s: function s(t, e, i) {\n        return {\n          height: this.originalSize.height + i\n        };\n      },\n      se: function se(e, i, s) {\n        return t.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [e, i, s]));\n      },\n      sw: function sw(e, i, s) {\n        return t.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [e, i, s]));\n      },\n      ne: function ne(e, i, s) {\n        return t.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [e, i, s]));\n      },\n      nw: function nw(e, i, s) {\n        return t.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [e, i, s]));\n      }\n    },\n    _propagate: function _propagate(e, i) {\n      t.ui.plugin.call(this, e, [i, this.ui()]), \"resize\" !== e && this._trigger(e, i, this.ui());\n    },\n    plugins: {},\n    ui: function ui() {\n      return {\n        originalElement: this.originalElement,\n        element: this.element,\n        helper: this.helper,\n        position: this.position,\n        size: this.size,\n        originalSize: this.originalSize,\n        originalPosition: this.originalPosition\n      };\n    }\n  }), t.ui.plugin.add(\"resizable\", \"animate\", {\n    stop: function stop(e) {\n      var i = t(this).resizable(\"instance\"),\n        s = i.options,\n        n = i._proportionallyResizeElements,\n        o = n.length && /textarea/i.test(n[0].nodeName),\n        a = o && i._hasScroll(n[0], \"left\") ? 0 : i.sizeDiff.height,\n        r = o ? 0 : i.sizeDiff.width,\n        h = {\n          width: i.size.width - r,\n          height: i.size.height - a\n        },\n        l = parseFloat(i.element.css(\"left\")) + (i.position.left - i.originalPosition.left) || null,\n        c = parseFloat(i.element.css(\"top\")) + (i.position.top - i.originalPosition.top) || null;\n      i.element.animate(t.extend(h, c && l ? {\n        top: c,\n        left: l\n      } : {}), {\n        duration: s.animateDuration,\n        easing: s.animateEasing,\n        step: function step() {\n          var s = {\n            width: parseFloat(i.element.css(\"width\")),\n            height: parseFloat(i.element.css(\"height\")),\n            top: parseFloat(i.element.css(\"top\")),\n            left: parseFloat(i.element.css(\"left\"))\n          };\n          n && n.length && t(n[0]).css({\n            width: s.width,\n            height: s.height\n          }), i._updateCache(s), i._propagate(\"resize\", e);\n        }\n      });\n    }\n  }), t.ui.plugin.add(\"resizable\", \"containment\", {\n    start: function start() {\n      var e,\n        i,\n        s,\n        n,\n        o,\n        a,\n        r,\n        h = t(this).resizable(\"instance\"),\n        l = h.options,\n        c = h.element,\n        u = l.containment,\n        d = u instanceof t ? u.get(0) : /parent/.test(u) ? c.parent().get(0) : u;\n      d && (h.containerElement = t(d), /document/.test(u) || u === document ? (h.containerOffset = {\n        left: 0,\n        top: 0\n      }, h.containerPosition = {\n        left: 0,\n        top: 0\n      }, h.parentData = {\n        element: t(document),\n        left: 0,\n        top: 0,\n        width: t(document).width(),\n        height: t(document).height() || document.body.parentNode.scrollHeight\n      }) : (e = t(d), i = [], t([\"Top\", \"Right\", \"Left\", \"Bottom\"]).each(function (t, s) {\n        i[t] = h._num(e.css(\"padding\" + s));\n      }), h.containerOffset = e.offset(), h.containerPosition = e.position(), h.containerSize = {\n        height: e.innerHeight() - i[3],\n        width: e.innerWidth() - i[1]\n      }, s = h.containerOffset, n = h.containerSize.height, o = h.containerSize.width, a = h._hasScroll(d, \"left\") ? d.scrollWidth : o, r = h._hasScroll(d) ? d.scrollHeight : n, h.parentData = {\n        element: d,\n        left: s.left,\n        top: s.top,\n        width: a,\n        height: r\n      }));\n    },\n    resize: function resize(e) {\n      var i,\n        s,\n        n,\n        o,\n        a = t(this).resizable(\"instance\"),\n        r = a.options,\n        h = a.containerOffset,\n        l = a.position,\n        c = a._aspectRatio || e.shiftKey,\n        u = {\n          top: 0,\n          left: 0\n        },\n        d = a.containerElement,\n        p = !0;\n      d[0] !== document && /static/.test(d.css(\"position\")) && (u = h), l.left < (a._helper ? h.left : 0) && (a.size.width = a.size.width + (a._helper ? a.position.left - h.left : a.position.left - u.left), c && (a.size.height = a.size.width / a.aspectRatio, p = !1), a.position.left = r.helper ? h.left : 0), l.top < (a._helper ? h.top : 0) && (a.size.height = a.size.height + (a._helper ? a.position.top - h.top : a.position.top), c && (a.size.width = a.size.height * a.aspectRatio, p = !1), a.position.top = a._helper ? h.top : 0), n = a.containerElement.get(0) === a.element.parent().get(0), o = /relative|absolute/.test(a.containerElement.css(\"position\")), n && o ? (a.offset.left = a.parentData.left + a.position.left, a.offset.top = a.parentData.top + a.position.top) : (a.offset.left = a.element.offset().left, a.offset.top = a.element.offset().top), i = Math.abs(a.sizeDiff.width + (a._helper ? a.offset.left - u.left : a.offset.left - h.left)), s = Math.abs(a.sizeDiff.height + (a._helper ? a.offset.top - u.top : a.offset.top - h.top)), i + a.size.width >= a.parentData.width && (a.size.width = a.parentData.width - i, c && (a.size.height = a.size.width / a.aspectRatio, p = !1)), s + a.size.height >= a.parentData.height && (a.size.height = a.parentData.height - s, c && (a.size.width = a.size.height * a.aspectRatio, p = !1)), p || (a.position.left = a.prevPosition.left, a.position.top = a.prevPosition.top, a.size.width = a.prevSize.width, a.size.height = a.prevSize.height);\n    },\n    stop: function stop() {\n      var e = t(this).resizable(\"instance\"),\n        i = e.options,\n        s = e.containerOffset,\n        n = e.containerPosition,\n        o = e.containerElement,\n        a = t(e.helper),\n        r = a.offset(),\n        h = a.outerWidth() - e.sizeDiff.width,\n        l = a.outerHeight() - e.sizeDiff.height;\n      e._helper && !i.animate && /relative/.test(o.css(\"position\")) && t(this).css({\n        left: r.left - n.left - s.left,\n        width: h,\n        height: l\n      }), e._helper && !i.animate && /static/.test(o.css(\"position\")) && t(this).css({\n        left: r.left - n.left - s.left,\n        width: h,\n        height: l\n      });\n    }\n  }), t.ui.plugin.add(\"resizable\", \"alsoResize\", {\n    start: function start() {\n      var e = t(this).resizable(\"instance\"),\n        i = e.options;\n      t(i.alsoResize).each(function () {\n        var e = t(this);\n        e.data(\"ui-resizable-alsoresize\", {\n          width: parseFloat(e.width()),\n          height: parseFloat(e.height()),\n          left: parseFloat(e.css(\"left\")),\n          top: parseFloat(e.css(\"top\"))\n        });\n      });\n    },\n    resize: function resize(e, i) {\n      var s = t(this).resizable(\"instance\"),\n        n = s.options,\n        o = s.originalSize,\n        a = s.originalPosition,\n        r = {\n          height: s.size.height - o.height || 0,\n          width: s.size.width - o.width || 0,\n          top: s.position.top - a.top || 0,\n          left: s.position.left - a.left || 0\n        };\n      t(n.alsoResize).each(function () {\n        var e = t(this),\n          s = t(this).data(\"ui-resizable-alsoresize\"),\n          n = {},\n          o = e.parents(i.originalElement[0]).length ? [\"width\", \"height\"] : [\"width\", \"height\", \"top\", \"left\"];\n        t.each(o, function (t, e) {\n          var i = (s[e] || 0) + (r[e] || 0);\n          i && i >= 0 && (n[e] = i || null);\n        }), e.css(n);\n      });\n    },\n    stop: function stop() {\n      t(this).removeData(\"ui-resizable-alsoresize\");\n    }\n  }), t.ui.plugin.add(\"resizable\", \"ghost\", {\n    start: function start() {\n      var e = t(this).resizable(\"instance\"),\n        i = e.size;\n      e.ghost = e.originalElement.clone(), e.ghost.css({\n        opacity: .25,\n        display: \"block\",\n        position: \"relative\",\n        height: i.height,\n        width: i.width,\n        margin: 0,\n        left: 0,\n        top: 0\n      }), e._addClass(e.ghost, \"ui-resizable-ghost\"), t.uiBackCompat !== !1 && \"string\" == typeof e.options.ghost && e.ghost.addClass(this.options.ghost), e.ghost.appendTo(e.helper);\n    },\n    resize: function resize() {\n      var e = t(this).resizable(\"instance\");\n      e.ghost && e.ghost.css({\n        position: \"relative\",\n        height: e.size.height,\n        width: e.size.width\n      });\n    },\n    stop: function stop() {\n      var e = t(this).resizable(\"instance\");\n      e.ghost && e.helper && e.helper.get(0).removeChild(e.ghost.get(0));\n    }\n  }), t.ui.plugin.add(\"resizable\", \"grid\", {\n    resize: function resize() {\n      var e,\n        i = t(this).resizable(\"instance\"),\n        s = i.options,\n        n = i.size,\n        o = i.originalSize,\n        a = i.originalPosition,\n        r = i.axis,\n        h = \"number\" == typeof s.grid ? [s.grid, s.grid] : s.grid,\n        l = h[0] || 1,\n        c = h[1] || 1,\n        u = Math.round((n.width - o.width) / l) * l,\n        d = Math.round((n.height - o.height) / c) * c,\n        p = o.width + u,\n        f = o.height + d,\n        g = s.maxWidth && p > s.maxWidth,\n        m = s.maxHeight && f > s.maxHeight,\n        _ = s.minWidth && s.minWidth > p,\n        v = s.minHeight && s.minHeight > f;\n      s.grid = h, _ && (p += l), v && (f += c), g && (p -= l), m && (f -= c), /^(se|s|e)$/.test(r) ? (i.size.width = p, i.size.height = f) : /^(ne)$/.test(r) ? (i.size.width = p, i.size.height = f, i.position.top = a.top - d) : /^(sw)$/.test(r) ? (i.size.width = p, i.size.height = f, i.position.left = a.left - u) : ((0 >= f - c || 0 >= p - l) && (e = i._getPaddingPlusBorderDimensions(this)), f - c > 0 ? (i.size.height = f, i.position.top = a.top - d) : (f = c - e.height, i.size.height = f, i.position.top = a.top + o.height - f), p - l > 0 ? (i.size.width = p, i.position.left = a.left - u) : (p = l - e.width, i.size.width = p, i.position.left = a.left + o.width - p));\n    }\n  }), t.ui.resizable, t.widget(\"ui.dialog\", {\n    version: \"1.12.1\",\n    options: {\n      appendTo: \"body\",\n      autoOpen: !0,\n      buttons: [],\n      classes: {\n        \"ui-dialog\": \"ui-corner-all\",\n        \"ui-dialog-titlebar\": \"ui-corner-all\"\n      },\n      closeOnEscape: !0,\n      closeText: \"Close\",\n      draggable: !0,\n      hide: null,\n      height: \"auto\",\n      maxHeight: null,\n      maxWidth: null,\n      minHeight: 150,\n      minWidth: 150,\n      modal: !1,\n      position: {\n        my: \"center\",\n        at: \"center\",\n        of: window,\n        collision: \"fit\",\n        using: function using(e) {\n          var i = t(this).css(e).offset().top;\n          0 > i && t(this).css(\"top\", e.top - i);\n        }\n      },\n      resizable: !0,\n      show: null,\n      title: null,\n      width: 300,\n      beforeClose: null,\n      close: null,\n      drag: null,\n      dragStart: null,\n      dragStop: null,\n      focus: null,\n      open: null,\n      resize: null,\n      resizeStart: null,\n      resizeStop: null\n    },\n    sizeRelatedOptions: {\n      buttons: !0,\n      height: !0,\n      maxHeight: !0,\n      maxWidth: !0,\n      minHeight: !0,\n      minWidth: !0,\n      width: !0\n    },\n    resizableRelatedOptions: {\n      maxHeight: !0,\n      maxWidth: !0,\n      minHeight: !0,\n      minWidth: !0\n    },\n    _create: function _create() {\n      this.originalCss = {\n        display: this.element[0].style.display,\n        width: this.element[0].style.width,\n        minHeight: this.element[0].style.minHeight,\n        maxHeight: this.element[0].style.maxHeight,\n        height: this.element[0].style.height\n      }, this.originalPosition = {\n        parent: this.element.parent(),\n        index: this.element.parent().children().index(this.element)\n      }, this.originalTitle = this.element.attr(\"title\"), null == this.options.title && null != this.originalTitle && (this.options.title = this.originalTitle), this.options.disabled && (this.options.disabled = !1), this._createWrapper(), this.element.show().removeAttr(\"title\").appendTo(this.uiDialog), this._addClass(\"ui-dialog-content\", \"ui-widget-content\"), this._createTitlebar(), this._createButtonPane(), this.options.draggable && t.fn.draggable && this._makeDraggable(), this.options.resizable && t.fn.resizable && this._makeResizable(), this._isOpen = !1, this._trackFocus();\n    },\n    _init: function _init() {\n      this.options.autoOpen && this.open();\n    },\n    _appendTo: function _appendTo() {\n      var e = this.options.appendTo;\n      return e && (e.jquery || e.nodeType) ? t(e) : this.document.find(e || \"body\").eq(0);\n    },\n    _destroy: function _destroy() {\n      var t,\n        e = this.originalPosition;\n      this._untrackInstance(), this._destroyOverlay(), this.element.removeUniqueId().css(this.originalCss).detach(), this.uiDialog.remove(), this.originalTitle && this.element.attr(\"title\", this.originalTitle), t = e.parent.children().eq(e.index), t.length && t[0] !== this.element[0] ? t.before(this.element) : e.parent.append(this.element);\n    },\n    widget: function widget() {\n      return this.uiDialog;\n    },\n    disable: t.noop,\n    enable: t.noop,\n    close: function close(e) {\n      var i = this;\n      this._isOpen && this._trigger(\"beforeClose\", e) !== !1 && (this._isOpen = !1, this._focusedElement = null, this._destroyOverlay(), this._untrackInstance(), this.opener.filter(\":focusable\").trigger(\"focus\").length || t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])), this._hide(this.uiDialog, this.options.hide, function () {\n        i._trigger(\"close\", e);\n      }));\n    },\n    isOpen: function isOpen() {\n      return this._isOpen;\n    },\n    moveToTop: function moveToTop() {\n      this._moveToTop();\n    },\n    _moveToTop: function _moveToTop(e, i) {\n      var s = !1,\n        n = this.uiDialog.siblings(\".ui-front:visible\").map(function () {\n          return +t(this).css(\"z-index\");\n        }).get(),\n        o = Math.max.apply(null, n);\n      return o >= +this.uiDialog.css(\"z-index\") && (this.uiDialog.css(\"z-index\", o + 1), s = !0), s && !i && this._trigger(\"focus\", e), s;\n    },\n    open: function open() {\n      var e = this;\n      return this._isOpen ? (this._moveToTop() && this._focusTabbable(), void 0) : (this._isOpen = !0, this.opener = t(t.ui.safeActiveElement(this.document[0])), this._size(), this._position(), this._createOverlay(), this._moveToTop(null, !0), this.overlay && this.overlay.css(\"z-index\", this.uiDialog.css(\"z-index\") - 1), this._show(this.uiDialog, this.options.show, function () {\n        e._focusTabbable(), e._trigger(\"focus\");\n      }), this._makeFocusTarget(), this._trigger(\"open\"), void 0);\n    },\n    _focusTabbable: function _focusTabbable() {\n      var t = this._focusedElement;\n      t || (t = this.element.find(\"[autofocus]\")), t.length || (t = this.element.find(\":tabbable\")), t.length || (t = this.uiDialogButtonPane.find(\":tabbable\")), t.length || (t = this.uiDialogTitlebarClose.filter(\":tabbable\")), t.length || (t = this.uiDialog), t.eq(0).trigger(\"focus\");\n    },\n    _keepFocus: function _keepFocus(e) {\n      function i() {\n        var e = t.ui.safeActiveElement(this.document[0]),\n          i = this.uiDialog[0] === e || t.contains(this.uiDialog[0], e);\n        i || this._focusTabbable();\n      }\n      e.preventDefault(), i.call(this), this._delay(i);\n    },\n    _createWrapper: function _createWrapper() {\n      this.uiDialog = t(\"<div>\").hide().attr({\n        tabIndex: -1,\n        role: \"dialog\"\n      }).appendTo(this._appendTo()), this._addClass(this.uiDialog, \"ui-dialog\", \"ui-widget ui-widget-content ui-front\"), this._on(this.uiDialog, {\n        keydown: function keydown(e) {\n          if (this.options.closeOnEscape && !e.isDefaultPrevented() && e.keyCode && e.keyCode === t.ui.keyCode.ESCAPE) return e.preventDefault(), this.close(e), void 0;\n          if (e.keyCode === t.ui.keyCode.TAB && !e.isDefaultPrevented()) {\n            var i = this.uiDialog.find(\":tabbable\"),\n              s = i.filter(\":first\"),\n              n = i.filter(\":last\");\n            e.target !== n[0] && e.target !== this.uiDialog[0] || e.shiftKey ? e.target !== s[0] && e.target !== this.uiDialog[0] || !e.shiftKey || (this._delay(function () {\n              n.trigger(\"focus\");\n            }), e.preventDefault()) : (this._delay(function () {\n              s.trigger(\"focus\");\n            }), e.preventDefault());\n          }\n        },\n        mousedown: function mousedown(t) {\n          this._moveToTop(t) && this._focusTabbable();\n        }\n      }), this.element.find(\"[aria-describedby]\").length || this.uiDialog.attr({\n        \"aria-describedby\": this.element.uniqueId().attr(\"id\")\n      });\n    },\n    _createTitlebar: function _createTitlebar() {\n      var e;\n      this.uiDialogTitlebar = t(\"<div>\"), this._addClass(this.uiDialogTitlebar, \"ui-dialog-titlebar\", \"ui-widget-header ui-helper-clearfix\"), this._on(this.uiDialogTitlebar, {\n        mousedown: function mousedown(e) {\n          t(e.target).closest(\".ui-dialog-titlebar-close\") || this.uiDialog.trigger(\"focus\");\n        }\n      }), this.uiDialogTitlebarClose = t(\"<button type='button'></button>\").button({\n        label: t(\"<a>\").text(this.options.closeText).html(),\n        icon: \"ui-icon-closethick\",\n        showLabel: !1\n      }).appendTo(this.uiDialogTitlebar), this._addClass(this.uiDialogTitlebarClose, \"ui-dialog-titlebar-close\"), this._on(this.uiDialogTitlebarClose, {\n        click: function click(t) {\n          t.preventDefault(), this.close(t);\n        }\n      }), e = t(\"<span>\").uniqueId().prependTo(this.uiDialogTitlebar), this._addClass(e, \"ui-dialog-title\"), this._title(e), this.uiDialogTitlebar.prependTo(this.uiDialog), this.uiDialog.attr({\n        \"aria-labelledby\": e.attr(\"id\")\n      });\n    },\n    _title: function _title(t) {\n      this.options.title ? t.text(this.options.title) : t.html(\"&#160;\");\n    },\n    _createButtonPane: function _createButtonPane() {\n      this.uiDialogButtonPane = t(\"<div>\"), this._addClass(this.uiDialogButtonPane, \"ui-dialog-buttonpane\", \"ui-widget-content ui-helper-clearfix\"), this.uiButtonSet = t(\"<div>\").appendTo(this.uiDialogButtonPane), this._addClass(this.uiButtonSet, \"ui-dialog-buttonset\"), this._createButtons();\n    },\n    _createButtons: function _createButtons() {\n      var e = this,\n        i = this.options.buttons;\n      return this.uiDialogButtonPane.remove(), this.uiButtonSet.empty(), t.isEmptyObject(i) || t.isArray(i) && !i.length ? (this._removeClass(this.uiDialog, \"ui-dialog-buttons\"), void 0) : (t.each(i, function (i, s) {\n        var n, o;\n        s = t.isFunction(s) ? {\n          click: s,\n          text: i\n        } : s, s = t.extend({\n          type: \"button\"\n        }, s), n = s.click, o = {\n          icon: s.icon,\n          iconPosition: s.iconPosition,\n          showLabel: s.showLabel,\n          icons: s.icons,\n          text: s.text\n        }, delete s.click, delete s.icon, delete s.iconPosition, delete s.showLabel, delete s.icons, \"boolean\" == typeof s.text && delete s.text, t(\"<button></button>\", s).button(o).appendTo(e.uiButtonSet).on(\"click\", function () {\n          n.apply(e.element[0], arguments);\n        });\n      }), this._addClass(this.uiDialog, \"ui-dialog-buttons\"), this.uiDialogButtonPane.appendTo(this.uiDialog), void 0);\n    },\n    _makeDraggable: function _makeDraggable() {\n      function e(t) {\n        return {\n          position: t.position,\n          offset: t.offset\n        };\n      }\n      var i = this,\n        s = this.options;\n      this.uiDialog.draggable({\n        cancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n        handle: \".ui-dialog-titlebar\",\n        containment: \"document\",\n        start: function start(s, n) {\n          i._addClass(t(this), \"ui-dialog-dragging\"), i._blockFrames(), i._trigger(\"dragStart\", s, e(n));\n        },\n        drag: function drag(t, s) {\n          i._trigger(\"drag\", t, e(s));\n        },\n        stop: function stop(n, o) {\n          var a = o.offset.left - i.document.scrollLeft(),\n            r = o.offset.top - i.document.scrollTop();\n          s.position = {\n            my: \"left top\",\n            at: \"left\" + (a >= 0 ? \"+\" : \"\") + a + \" \" + \"top\" + (r >= 0 ? \"+\" : \"\") + r,\n            of: i.window\n          }, i._removeClass(t(this), \"ui-dialog-dragging\"), i._unblockFrames(), i._trigger(\"dragStop\", n, e(o));\n        }\n      });\n    },\n    _makeResizable: function _makeResizable() {\n      function e(t) {\n        return {\n          originalPosition: t.originalPosition,\n          originalSize: t.originalSize,\n          position: t.position,\n          size: t.size\n        };\n      }\n      var i = this,\n        s = this.options,\n        n = s.resizable,\n        o = this.uiDialog.css(\"position\"),\n        a = \"string\" == typeof n ? n : \"n,e,s,w,se,sw,ne,nw\";\n      this.uiDialog.resizable({\n        cancel: \".ui-dialog-content\",\n        containment: \"document\",\n        alsoResize: this.element,\n        maxWidth: s.maxWidth,\n        maxHeight: s.maxHeight,\n        minWidth: s.minWidth,\n        minHeight: this._minHeight(),\n        handles: a,\n        start: function start(s, n) {\n          i._addClass(t(this), \"ui-dialog-resizing\"), i._blockFrames(), i._trigger(\"resizeStart\", s, e(n));\n        },\n        resize: function resize(t, s) {\n          i._trigger(\"resize\", t, e(s));\n        },\n        stop: function stop(n, o) {\n          var a = i.uiDialog.offset(),\n            r = a.left - i.document.scrollLeft(),\n            h = a.top - i.document.scrollTop();\n          s.height = i.uiDialog.height(), s.width = i.uiDialog.width(), s.position = {\n            my: \"left top\",\n            at: \"left\" + (r >= 0 ? \"+\" : \"\") + r + \" \" + \"top\" + (h >= 0 ? \"+\" : \"\") + h,\n            of: i.window\n          }, i._removeClass(t(this), \"ui-dialog-resizing\"), i._unblockFrames(), i._trigger(\"resizeStop\", n, e(o));\n        }\n      }).css(\"position\", o);\n    },\n    _trackFocus: function _trackFocus() {\n      this._on(this.widget(), {\n        focusin: function focusin(e) {\n          this._makeFocusTarget(), this._focusedElement = t(e.target);\n        }\n      });\n    },\n    _makeFocusTarget: function _makeFocusTarget() {\n      this._untrackInstance(), this._trackingInstances().unshift(this);\n    },\n    _untrackInstance: function _untrackInstance() {\n      var e = this._trackingInstances(),\n        i = t.inArray(this, e);\n      -1 !== i && e.splice(i, 1);\n    },\n    _trackingInstances: function _trackingInstances() {\n      var t = this.document.data(\"ui-dialog-instances\");\n      return t || (t = [], this.document.data(\"ui-dialog-instances\", t)), t;\n    },\n    _minHeight: function _minHeight() {\n      var t = this.options;\n      return \"auto\" === t.height ? t.minHeight : Math.min(t.minHeight, t.height);\n    },\n    _position: function _position() {\n      var t = this.uiDialog.is(\":visible\");\n      t || this.uiDialog.show(), this.uiDialog.position(this.options.position), t || this.uiDialog.hide();\n    },\n    _setOptions: function _setOptions(e) {\n      var i = this,\n        s = !1,\n        n = {};\n      t.each(e, function (t, e) {\n        i._setOption(t, e), t in i.sizeRelatedOptions && (s = !0), t in i.resizableRelatedOptions && (n[t] = e);\n      }), s && (this._size(), this._position()), this.uiDialog.is(\":data(ui-resizable)\") && this.uiDialog.resizable(\"option\", n);\n    },\n    _setOption: function _setOption(e, i) {\n      var s,\n        n,\n        o = this.uiDialog;\n      \"disabled\" !== e && (this._super(e, i), \"appendTo\" === e && this.uiDialog.appendTo(this._appendTo()), \"buttons\" === e && this._createButtons(), \"closeText\" === e && this.uiDialogTitlebarClose.button({\n        label: t(\"<a>\").text(\"\" + this.options.closeText).html()\n      }), \"draggable\" === e && (s = o.is(\":data(ui-draggable)\"), s && !i && o.draggable(\"destroy\"), !s && i && this._makeDraggable()), \"position\" === e && this._position(), \"resizable\" === e && (n = o.is(\":data(ui-resizable)\"), n && !i && o.resizable(\"destroy\"), n && \"string\" == typeof i && o.resizable(\"option\", \"handles\", i), n || i === !1 || this._makeResizable()), \"title\" === e && this._title(this.uiDialogTitlebar.find(\".ui-dialog-title\")));\n    },\n    _size: function _size() {\n      var t,\n        e,\n        i,\n        s = this.options;\n      this.element.show().css({\n        width: \"auto\",\n        minHeight: 0,\n        maxHeight: \"none\",\n        height: 0\n      }), s.minWidth > s.width && (s.width = s.minWidth), t = this.uiDialog.css({\n        height: \"auto\",\n        width: s.width\n      }).outerHeight(), e = Math.max(0, s.minHeight - t), i = \"number\" == typeof s.maxHeight ? Math.max(0, s.maxHeight - t) : \"none\", \"auto\" === s.height ? this.element.css({\n        minHeight: e,\n        maxHeight: i,\n        height: \"auto\"\n      }) : this.element.height(Math.max(0, s.height - t)), this.uiDialog.is(\":data(ui-resizable)\") && this.uiDialog.resizable(\"option\", \"minHeight\", this._minHeight());\n    },\n    _blockFrames: function _blockFrames() {\n      this.iframeBlocks = this.document.find(\"iframe\").map(function () {\n        var e = t(this);\n        return t(\"<div>\").css({\n          position: \"absolute\",\n          width: e.outerWidth(),\n          height: e.outerHeight()\n        }).appendTo(e.parent()).offset(e.offset())[0];\n      });\n    },\n    _unblockFrames: function _unblockFrames() {\n      this.iframeBlocks && (this.iframeBlocks.remove(), delete this.iframeBlocks);\n    },\n    _allowInteraction: function _allowInteraction(e) {\n      return t(e.target).closest(\".ui-dialog\").length ? !0 : !!t(e.target).closest(\".ui-datepicker\").length;\n    },\n    _createOverlay: function _createOverlay() {\n      if (this.options.modal) {\n        var e = !0;\n        this._delay(function () {\n          e = !1;\n        }), this.document.data(\"ui-dialog-overlays\") || this._on(this.document, {\n          focusin: function focusin(t) {\n            e || this._allowInteraction(t) || (t.preventDefault(), this._trackingInstances()[0]._focusTabbable());\n          }\n        }), this.overlay = t(\"<div>\").appendTo(this._appendTo()), this._addClass(this.overlay, null, \"ui-widget-overlay ui-front\"), this._on(this.overlay, {\n          mousedown: \"_keepFocus\"\n        }), this.document.data(\"ui-dialog-overlays\", (this.document.data(\"ui-dialog-overlays\") || 0) + 1);\n      }\n    },\n    _destroyOverlay: function _destroyOverlay() {\n      if (this.options.modal && this.overlay) {\n        var t = this.document.data(\"ui-dialog-overlays\") - 1;\n        t ? this.document.data(\"ui-dialog-overlays\", t) : (this._off(this.document, \"focusin\"), this.document.removeData(\"ui-dialog-overlays\")), this.overlay.remove(), this.overlay = null;\n      }\n    }\n  }), t.uiBackCompat !== !1 && t.widget(\"ui.dialog\", t.ui.dialog, {\n    options: {\n      dialogClass: \"\"\n    },\n    _createWrapper: function _createWrapper() {\n      this._super(), this.uiDialog.addClass(this.options.dialogClass);\n    },\n    _setOption: function _setOption(t, e) {\n      \"dialogClass\" === t && this.uiDialog.removeClass(this.options.dialogClass).addClass(e), this._superApply(arguments);\n    }\n  }), t.ui.dialog, t.widget(\"ui.droppable\", {\n    version: \"1.12.1\",\n    widgetEventPrefix: \"drop\",\n    options: {\n      accept: \"*\",\n      addClasses: !0,\n      greedy: !1,\n      scope: \"default\",\n      tolerance: \"intersect\",\n      activate: null,\n      deactivate: null,\n      drop: null,\n      out: null,\n      over: null\n    },\n    _create: function _create() {\n      var e,\n        i = this.options,\n        s = i.accept;\n      this.isover = !1, this.isout = !0, this.accept = t.isFunction(s) ? s : function (t) {\n        return t.is(s);\n      }, this.proportions = function () {\n        return arguments.length ? (e = arguments[0], void 0) : e ? e : e = {\n          width: this.element[0].offsetWidth,\n          height: this.element[0].offsetHeight\n        };\n      }, this._addToManager(i.scope), i.addClasses && this._addClass(\"ui-droppable\");\n    },\n    _addToManager: function _addToManager(e) {\n      t.ui.ddmanager.droppables[e] = t.ui.ddmanager.droppables[e] || [], t.ui.ddmanager.droppables[e].push(this);\n    },\n    _splice: function _splice(t) {\n      for (var e = 0; t.length > e; e++) t[e] === this && t.splice(e, 1);\n    },\n    _destroy: function _destroy() {\n      var e = t.ui.ddmanager.droppables[this.options.scope];\n      this._splice(e);\n    },\n    _setOption: function _setOption(e, i) {\n      if (\"accept\" === e) this.accept = t.isFunction(i) ? i : function (t) {\n        return t.is(i);\n      };else if (\"scope\" === e) {\n        var s = t.ui.ddmanager.droppables[this.options.scope];\n        this._splice(s), this._addToManager(i);\n      }\n      this._super(e, i);\n    },\n    _activate: function _activate(e) {\n      var i = t.ui.ddmanager.current;\n      this._addActiveClass(), i && this._trigger(\"activate\", e, this.ui(i));\n    },\n    _deactivate: function _deactivate(e) {\n      var i = t.ui.ddmanager.current;\n      this._removeActiveClass(), i && this._trigger(\"deactivate\", e, this.ui(i));\n    },\n    _over: function _over(e) {\n      var i = t.ui.ddmanager.current;\n      i && (i.currentItem || i.element)[0] !== this.element[0] && this.accept.call(this.element[0], i.currentItem || i.element) && (this._addHoverClass(), this._trigger(\"over\", e, this.ui(i)));\n    },\n    _out: function _out(e) {\n      var i = t.ui.ddmanager.current;\n      i && (i.currentItem || i.element)[0] !== this.element[0] && this.accept.call(this.element[0], i.currentItem || i.element) && (this._removeHoverClass(), this._trigger(\"out\", e, this.ui(i)));\n    },\n    _drop: function _drop(e, i) {\n      var s = i || t.ui.ddmanager.current,\n        n = !1;\n      return s && (s.currentItem || s.element)[0] !== this.element[0] ? (this.element.find(\":data(ui-droppable)\").not(\".ui-draggable-dragging\").each(function () {\n        var i = t(this).droppable(\"instance\");\n        return i.options.greedy && !i.options.disabled && i.options.scope === s.options.scope && i.accept.call(i.element[0], s.currentItem || s.element) && v(s, t.extend(i, {\n          offset: i.element.offset()\n        }), i.options.tolerance, e) ? (n = !0, !1) : void 0;\n      }), n ? !1 : this.accept.call(this.element[0], s.currentItem || s.element) ? (this._removeActiveClass(), this._removeHoverClass(), this._trigger(\"drop\", e, this.ui(s)), this.element) : !1) : !1;\n    },\n    ui: function ui(t) {\n      return {\n        draggable: t.currentItem || t.element,\n        helper: t.helper,\n        position: t.position,\n        offset: t.positionAbs\n      };\n    },\n    _addHoverClass: function _addHoverClass() {\n      this._addClass(\"ui-droppable-hover\");\n    },\n    _removeHoverClass: function _removeHoverClass() {\n      this._removeClass(\"ui-droppable-hover\");\n    },\n    _addActiveClass: function _addActiveClass() {\n      this._addClass(\"ui-droppable-active\");\n    },\n    _removeActiveClass: function _removeActiveClass() {\n      this._removeClass(\"ui-droppable-active\");\n    }\n  });\n  var v = t.ui.intersect = function () {\n    function t(t, e, i) {\n      return t >= e && e + i > t;\n    }\n    return function (e, i, s, n) {\n      if (!i.offset) return !1;\n      var o = (e.positionAbs || e.position.absolute).left + e.margins.left,\n        a = (e.positionAbs || e.position.absolute).top + e.margins.top,\n        r = o + e.helperProportions.width,\n        h = a + e.helperProportions.height,\n        l = i.offset.left,\n        c = i.offset.top,\n        u = l + i.proportions().width,\n        d = c + i.proportions().height;\n      switch (s) {\n        case \"fit\":\n          return o >= l && u >= r && a >= c && d >= h;\n        case \"intersect\":\n          return o + e.helperProportions.width / 2 > l && u > r - e.helperProportions.width / 2 && a + e.helperProportions.height / 2 > c && d > h - e.helperProportions.height / 2;\n        case \"pointer\":\n          return t(n.pageY, c, i.proportions().height) && t(n.pageX, l, i.proportions().width);\n        case \"touch\":\n          return (a >= c && d >= a || h >= c && d >= h || c > a && h > d) && (o >= l && u >= o || r >= l && u >= r || l > o && r > u);\n        default:\n          return !1;\n      }\n    };\n  }();\n  t.ui.ddmanager = {\n    current: null,\n    droppables: {\n      \"default\": []\n    },\n    prepareOffsets: function prepareOffsets(e, i) {\n      var s,\n        n,\n        o = t.ui.ddmanager.droppables[e.options.scope] || [],\n        a = i ? i.type : null,\n        r = (e.currentItem || e.element).find(\":data(ui-droppable)\").addBack();\n      t: for (s = 0; o.length > s; s++) if (!(o[s].options.disabled || e && !o[s].accept.call(o[s].element[0], e.currentItem || e.element))) {\n        for (n = 0; r.length > n; n++) if (r[n] === o[s].element[0]) {\n          o[s].proportions().height = 0;\n          continue t;\n        }\n        o[s].visible = \"none\" !== o[s].element.css(\"display\"), o[s].visible && (\"mousedown\" === a && o[s]._activate.call(o[s], i), o[s].offset = o[s].element.offset(), o[s].proportions({\n          width: o[s].element[0].offsetWidth,\n          height: o[s].element[0].offsetHeight\n        }));\n      }\n    },\n    drop: function drop(e, i) {\n      var s = !1;\n      return t.each((t.ui.ddmanager.droppables[e.options.scope] || []).slice(), function () {\n        this.options && (!this.options.disabled && this.visible && v(e, this, this.options.tolerance, i) && (s = this._drop.call(this, i) || s), !this.options.disabled && this.visible && this.accept.call(this.element[0], e.currentItem || e.element) && (this.isout = !0, this.isover = !1, this._deactivate.call(this, i)));\n      }), s;\n    },\n    dragStart: function dragStart(e, i) {\n      e.element.parentsUntil(\"body\").on(\"scroll.droppable\", function () {\n        e.options.refreshPositions || t.ui.ddmanager.prepareOffsets(e, i);\n      });\n    },\n    drag: function drag(e, i) {\n      e.options.refreshPositions && t.ui.ddmanager.prepareOffsets(e, i), t.each(t.ui.ddmanager.droppables[e.options.scope] || [], function () {\n        if (!this.options.disabled && !this.greedyChild && this.visible) {\n          var s,\n            n,\n            o,\n            a = v(e, this, this.options.tolerance, i),\n            r = !a && this.isover ? \"isout\" : a && !this.isover ? \"isover\" : null;\n          r && (this.options.greedy && (n = this.options.scope, o = this.element.parents(\":data(ui-droppable)\").filter(function () {\n            return t(this).droppable(\"instance\").options.scope === n;\n          }), o.length && (s = t(o[0]).droppable(\"instance\"), s.greedyChild = \"isover\" === r)), s && \"isover\" === r && (s.isover = !1, s.isout = !0, s._out.call(s, i)), this[r] = !0, this[\"isout\" === r ? \"isover\" : \"isout\"] = !1, this[\"isover\" === r ? \"_over\" : \"_out\"].call(this, i), s && \"isout\" === r && (s.isout = !1, s.isover = !0, s._over.call(s, i)));\n        }\n      });\n    },\n    dragStop: function dragStop(e, i) {\n      e.element.parentsUntil(\"body\").off(\"scroll.droppable\"), e.options.refreshPositions || t.ui.ddmanager.prepareOffsets(e, i);\n    }\n  }, t.uiBackCompat !== !1 && t.widget(\"ui.droppable\", t.ui.droppable, {\n    options: {\n      hoverClass: !1,\n      activeClass: !1\n    },\n    _addActiveClass: function _addActiveClass() {\n      this._super(), this.options.activeClass && this.element.addClass(this.options.activeClass);\n    },\n    _removeActiveClass: function _removeActiveClass() {\n      this._super(), this.options.activeClass && this.element.removeClass(this.options.activeClass);\n    },\n    _addHoverClass: function _addHoverClass() {\n      this._super(), this.options.hoverClass && this.element.addClass(this.options.hoverClass);\n    },\n    _removeHoverClass: function _removeHoverClass() {\n      this._super(), this.options.hoverClass && this.element.removeClass(this.options.hoverClass);\n    }\n  }), t.ui.droppable, t.widget(\"ui.progressbar\", {\n    version: \"1.12.1\",\n    options: {\n      classes: {\n        \"ui-progressbar\": \"ui-corner-all\",\n        \"ui-progressbar-value\": \"ui-corner-left\",\n        \"ui-progressbar-complete\": \"ui-corner-right\"\n      },\n      max: 100,\n      value: 0,\n      change: null,\n      complete: null\n    },\n    min: 0,\n    _create: function _create() {\n      this.oldValue = this.options.value = this._constrainedValue(), this.element.attr({\n        role: \"progressbar\",\n        \"aria-valuemin\": this.min\n      }), this._addClass(\"ui-progressbar\", \"ui-widget ui-widget-content\"), this.valueDiv = t(\"<div>\").appendTo(this.element), this._addClass(this.valueDiv, \"ui-progressbar-value\", \"ui-widget-header\"), this._refreshValue();\n    },\n    _destroy: function _destroy() {\n      this.element.removeAttr(\"role aria-valuemin aria-valuemax aria-valuenow\"), this.valueDiv.remove();\n    },\n    value: function value(t) {\n      return void 0 === t ? this.options.value : (this.options.value = this._constrainedValue(t), this._refreshValue(), void 0);\n    },\n    _constrainedValue: function _constrainedValue(t) {\n      return void 0 === t && (t = this.options.value), this.indeterminate = t === !1, \"number\" != typeof t && (t = 0), this.indeterminate ? !1 : Math.min(this.options.max, Math.max(this.min, t));\n    },\n    _setOptions: function _setOptions(t) {\n      var e = t.value;\n      delete t.value, this._super(t), this.options.value = this._constrainedValue(e), this._refreshValue();\n    },\n    _setOption: function _setOption(t, e) {\n      \"max\" === t && (e = Math.max(this.min, e)), this._super(t, e);\n    },\n    _setOptionDisabled: function _setOptionDisabled(t) {\n      this._super(t), this.element.attr(\"aria-disabled\", t), this._toggleClass(null, \"ui-state-disabled\", !!t);\n    },\n    _percentage: function _percentage() {\n      return this.indeterminate ? 100 : 100 * (this.options.value - this.min) / (this.options.max - this.min);\n    },\n    _refreshValue: function _refreshValue() {\n      var e = this.options.value,\n        i = this._percentage();\n      this.valueDiv.toggle(this.indeterminate || e > this.min).width(i.toFixed(0) + \"%\"), this._toggleClass(this.valueDiv, \"ui-progressbar-complete\", null, e === this.options.max)._toggleClass(\"ui-progressbar-indeterminate\", null, this.indeterminate), this.indeterminate ? (this.element.removeAttr(\"aria-valuenow\"), this.overlayDiv || (this.overlayDiv = t(\"<div>\").appendTo(this.valueDiv), this._addClass(this.overlayDiv, \"ui-progressbar-overlay\"))) : (this.element.attr({\n        \"aria-valuemax\": this.options.max,\n        \"aria-valuenow\": e\n      }), this.overlayDiv && (this.overlayDiv.remove(), this.overlayDiv = null)), this.oldValue !== e && (this.oldValue = e, this._trigger(\"change\")), e === this.options.max && this._trigger(\"complete\");\n    }\n  }), t.widget(\"ui.selectable\", t.ui.mouse, {\n    version: \"1.12.1\",\n    options: {\n      appendTo: \"body\",\n      autoRefresh: !0,\n      distance: 0,\n      filter: \"*\",\n      tolerance: \"touch\",\n      selected: null,\n      selecting: null,\n      start: null,\n      stop: null,\n      unselected: null,\n      unselecting: null\n    },\n    _create: function _create() {\n      var e = this;\n      this._addClass(\"ui-selectable\"), this.dragged = !1, this.refresh = function () {\n        e.elementPos = t(e.element[0]).offset(), e.selectees = t(e.options.filter, e.element[0]), e._addClass(e.selectees, \"ui-selectee\"), e.selectees.each(function () {\n          var i = t(this),\n            s = i.offset(),\n            n = {\n              left: s.left - e.elementPos.left,\n              top: s.top - e.elementPos.top\n            };\n          t.data(this, \"selectable-item\", {\n            element: this,\n            $element: i,\n            left: n.left,\n            top: n.top,\n            right: n.left + i.outerWidth(),\n            bottom: n.top + i.outerHeight(),\n            startselected: !1,\n            selected: i.hasClass(\"ui-selected\"),\n            selecting: i.hasClass(\"ui-selecting\"),\n            unselecting: i.hasClass(\"ui-unselecting\")\n          });\n        });\n      }, this.refresh(), this._mouseInit(), this.helper = t(\"<div>\"), this._addClass(this.helper, \"ui-selectable-helper\");\n    },\n    _destroy: function _destroy() {\n      this.selectees.removeData(\"selectable-item\"), this._mouseDestroy();\n    },\n    _mouseStart: function _mouseStart(e) {\n      var i = this,\n        s = this.options;\n      this.opos = [e.pageX, e.pageY], this.elementPos = t(this.element[0]).offset(), this.options.disabled || (this.selectees = t(s.filter, this.element[0]), this._trigger(\"start\", e), t(s.appendTo).append(this.helper), this.helper.css({\n        left: e.pageX,\n        top: e.pageY,\n        width: 0,\n        height: 0\n      }), s.autoRefresh && this.refresh(), this.selectees.filter(\".ui-selected\").each(function () {\n        var s = t.data(this, \"selectable-item\");\n        s.startselected = !0, e.metaKey || e.ctrlKey || (i._removeClass(s.$element, \"ui-selected\"), s.selected = !1, i._addClass(s.$element, \"ui-unselecting\"), s.unselecting = !0, i._trigger(\"unselecting\", e, {\n          unselecting: s.element\n        }));\n      }), t(e.target).parents().addBack().each(function () {\n        var s,\n          n = t.data(this, \"selectable-item\");\n        return n ? (s = !e.metaKey && !e.ctrlKey || !n.$element.hasClass(\"ui-selected\"), i._removeClass(n.$element, s ? \"ui-unselecting\" : \"ui-selected\")._addClass(n.$element, s ? \"ui-selecting\" : \"ui-unselecting\"), n.unselecting = !s, n.selecting = s, n.selected = s, s ? i._trigger(\"selecting\", e, {\n          selecting: n.element\n        }) : i._trigger(\"unselecting\", e, {\n          unselecting: n.element\n        }), !1) : void 0;\n      }));\n    },\n    _mouseDrag: function _mouseDrag(e) {\n      if (this.dragged = !0, !this.options.disabled) {\n        var i,\n          s = this,\n          n = this.options,\n          o = this.opos[0],\n          a = this.opos[1],\n          r = e.pageX,\n          h = e.pageY;\n        return o > r && (i = r, r = o, o = i), a > h && (i = h, h = a, a = i), this.helper.css({\n          left: o,\n          top: a,\n          width: r - o,\n          height: h - a\n        }), this.selectees.each(function () {\n          var i = t.data(this, \"selectable-item\"),\n            l = !1,\n            c = {};\n          i && i.element !== s.element[0] && (c.left = i.left + s.elementPos.left, c.right = i.right + s.elementPos.left, c.top = i.top + s.elementPos.top, c.bottom = i.bottom + s.elementPos.top, \"touch\" === n.tolerance ? l = !(c.left > r || o > c.right || c.top > h || a > c.bottom) : \"fit\" === n.tolerance && (l = c.left > o && r > c.right && c.top > a && h > c.bottom), l ? (i.selected && (s._removeClass(i.$element, \"ui-selected\"), i.selected = !1), i.unselecting && (s._removeClass(i.$element, \"ui-unselecting\"), i.unselecting = !1), i.selecting || (s._addClass(i.$element, \"ui-selecting\"), i.selecting = !0, s._trigger(\"selecting\", e, {\n            selecting: i.element\n          }))) : (i.selecting && ((e.metaKey || e.ctrlKey) && i.startselected ? (s._removeClass(i.$element, \"ui-selecting\"), i.selecting = !1, s._addClass(i.$element, \"ui-selected\"), i.selected = !0) : (s._removeClass(i.$element, \"ui-selecting\"), i.selecting = !1, i.startselected && (s._addClass(i.$element, \"ui-unselecting\"), i.unselecting = !0), s._trigger(\"unselecting\", e, {\n            unselecting: i.element\n          }))), i.selected && (e.metaKey || e.ctrlKey || i.startselected || (s._removeClass(i.$element, \"ui-selected\"), i.selected = !1, s._addClass(i.$element, \"ui-unselecting\"), i.unselecting = !0, s._trigger(\"unselecting\", e, {\n            unselecting: i.element\n          })))));\n        }), !1;\n      }\n    },\n    _mouseStop: function _mouseStop(e) {\n      var i = this;\n      return this.dragged = !1, t(\".ui-unselecting\", this.element[0]).each(function () {\n        var s = t.data(this, \"selectable-item\");\n        i._removeClass(s.$element, \"ui-unselecting\"), s.unselecting = !1, s.startselected = !1, i._trigger(\"unselected\", e, {\n          unselected: s.element\n        });\n      }), t(\".ui-selecting\", this.element[0]).each(function () {\n        var s = t.data(this, \"selectable-item\");\n        i._removeClass(s.$element, \"ui-selecting\")._addClass(s.$element, \"ui-selected\"), s.selecting = !1, s.selected = !0, s.startselected = !0, i._trigger(\"selected\", e, {\n          selected: s.element\n        });\n      }), this._trigger(\"stop\", e), this.helper.remove(), !1;\n    }\n  }), t.widget(\"ui.selectmenu\", [t.ui.formResetMixin, {\n    version: \"1.12.1\",\n    defaultElement: \"<select>\",\n    options: {\n      appendTo: null,\n      classes: {\n        \"ui-selectmenu-button-open\": \"ui-corner-top\",\n        \"ui-selectmenu-button-closed\": \"ui-corner-all\"\n      },\n      disabled: null,\n      icons: {\n        button: \"ui-icon-triangle-1-s\"\n      },\n      position: {\n        my: \"left top\",\n        at: \"left bottom\",\n        collision: \"none\"\n      },\n      width: !1,\n      change: null,\n      close: null,\n      focus: null,\n      open: null,\n      select: null\n    },\n    _create: function _create() {\n      var e = this.element.uniqueId().attr(\"id\");\n      this.ids = {\n        element: e,\n        button: e + \"-button\",\n        menu: e + \"-menu\"\n      }, this._drawButton(), this._drawMenu(), this._bindFormResetHandler(), this._rendered = !1, this.menuItems = t();\n    },\n    _drawButton: function _drawButton() {\n      var e,\n        i = this,\n        s = this._parseOption(this.element.find(\"option:selected\"), this.element[0].selectedIndex);\n      this.labels = this.element.labels().attr(\"for\", this.ids.button), this._on(this.labels, {\n        click: function click(t) {\n          this.button.focus(), t.preventDefault();\n        }\n      }), this.element.hide(), this.button = t(\"<span>\", {\n        tabindex: this.options.disabled ? -1 : 0,\n        id: this.ids.button,\n        role: \"combobox\",\n        \"aria-expanded\": \"false\",\n        \"aria-autocomplete\": \"list\",\n        \"aria-owns\": this.ids.menu,\n        \"aria-haspopup\": \"true\",\n        title: this.element.attr(\"title\")\n      }).insertAfter(this.element), this._addClass(this.button, \"ui-selectmenu-button ui-selectmenu-button-closed\", \"ui-button ui-widget\"), e = t(\"<span>\").appendTo(this.button), this._addClass(e, \"ui-selectmenu-icon\", \"ui-icon \" + this.options.icons.button), this.buttonItem = this._renderButtonItem(s).appendTo(this.button), this.options.width !== !1 && this._resizeButton(), this._on(this.button, this._buttonEvents), this.button.one(\"focusin\", function () {\n        i._rendered || i._refreshMenu();\n      });\n    },\n    _drawMenu: function _drawMenu() {\n      var e = this;\n      this.menu = t(\"<ul>\", {\n        \"aria-hidden\": \"true\",\n        \"aria-labelledby\": this.ids.button,\n        id: this.ids.menu\n      }), this.menuWrap = t(\"<div>\").append(this.menu), this._addClass(this.menuWrap, \"ui-selectmenu-menu\", \"ui-front\"), this.menuWrap.appendTo(this._appendTo()), this.menuInstance = this.menu.menu({\n        classes: {\n          \"ui-menu\": \"ui-corner-bottom\"\n        },\n        role: \"listbox\",\n        select: function select(t, i) {\n          t.preventDefault(), e._setSelection(), e._select(i.item.data(\"ui-selectmenu-item\"), t);\n        },\n        focus: function focus(t, i) {\n          var s = i.item.data(\"ui-selectmenu-item\");\n          null != e.focusIndex && s.index !== e.focusIndex && (e._trigger(\"focus\", t, {\n            item: s\n          }), e.isOpen || e._select(s, t)), e.focusIndex = s.index, e.button.attr(\"aria-activedescendant\", e.menuItems.eq(s.index).attr(\"id\"));\n        }\n      }).menu(\"instance\"), this.menuInstance._off(this.menu, \"mouseleave\"), this.menuInstance._closeOnDocumentClick = function () {\n        return !1;\n      }, this.menuInstance._isDivider = function () {\n        return !1;\n      };\n    },\n    refresh: function refresh() {\n      this._refreshMenu(), this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(this._getSelectedItem().data(\"ui-selectmenu-item\") || {})), null === this.options.width && this._resizeButton();\n    },\n    _refreshMenu: function _refreshMenu() {\n      var t,\n        e = this.element.find(\"option\");\n      this.menu.empty(), this._parseOptions(e), this._renderMenu(this.menu, this.items), this.menuInstance.refresh(), this.menuItems = this.menu.find(\"li\").not(\".ui-selectmenu-optgroup\").find(\".ui-menu-item-wrapper\"), this._rendered = !0, e.length && (t = this._getSelectedItem(), this.menuInstance.focus(null, t), this._setAria(t.data(\"ui-selectmenu-item\")), this._setOption(\"disabled\", this.element.prop(\"disabled\")));\n    },\n    open: function open(t) {\n      this.options.disabled || (this._rendered ? (this._removeClass(this.menu.find(\".ui-state-active\"), null, \"ui-state-active\"), this.menuInstance.focus(null, this._getSelectedItem())) : this._refreshMenu(), this.menuItems.length && (this.isOpen = !0, this._toggleAttr(), this._resizeMenu(), this._position(), this._on(this.document, this._documentClick), this._trigger(\"open\", t)));\n    },\n    _position: function _position() {\n      this.menuWrap.position(t.extend({\n        of: this.button\n      }, this.options.position));\n    },\n    close: function close(t) {\n      this.isOpen && (this.isOpen = !1, this._toggleAttr(), this.range = null, this._off(this.document), this._trigger(\"close\", t));\n    },\n    widget: function widget() {\n      return this.button;\n    },\n    menuWidget: function menuWidget() {\n      return this.menu;\n    },\n    _renderButtonItem: function _renderButtonItem(e) {\n      var i = t(\"<span>\");\n      return this._setText(i, e.label), this._addClass(i, \"ui-selectmenu-text\"), i;\n    },\n    _renderMenu: function _renderMenu(e, i) {\n      var s = this,\n        n = \"\";\n      t.each(i, function (i, o) {\n        var a;\n        o.optgroup !== n && (a = t(\"<li>\", {\n          text: o.optgroup\n        }), s._addClass(a, \"ui-selectmenu-optgroup\", \"ui-menu-divider\" + (o.element.parent(\"optgroup\").prop(\"disabled\") ? \" ui-state-disabled\" : \"\")), a.appendTo(e), n = o.optgroup), s._renderItemData(e, o);\n      });\n    },\n    _renderItemData: function _renderItemData(t, e) {\n      return this._renderItem(t, e).data(\"ui-selectmenu-item\", e);\n    },\n    _renderItem: function _renderItem(e, i) {\n      var s = t(\"<li>\"),\n        n = t(\"<div>\", {\n          title: i.element.attr(\"title\")\n        });\n      return i.disabled && this._addClass(s, null, \"ui-state-disabled\"), this._setText(n, i.label), s.append(n).appendTo(e);\n    },\n    _setText: function _setText(t, e) {\n      e ? t.text(e) : t.html(\"&#160;\");\n    },\n    _move: function _move(t, e) {\n      var i,\n        s,\n        n = \".ui-menu-item\";\n      this.isOpen ? i = this.menuItems.eq(this.focusIndex).parent(\"li\") : (i = this.menuItems.eq(this.element[0].selectedIndex).parent(\"li\"), n += \":not(.ui-state-disabled)\"), s = \"first\" === t || \"last\" === t ? i[\"first\" === t ? \"prevAll\" : \"nextAll\"](n).eq(-1) : i[t + \"All\"](n).eq(0), s.length && this.menuInstance.focus(e, s);\n    },\n    _getSelectedItem: function _getSelectedItem() {\n      return this.menuItems.eq(this.element[0].selectedIndex).parent(\"li\");\n    },\n    _toggle: function _toggle(t) {\n      this[this.isOpen ? \"close\" : \"open\"](t);\n    },\n    _setSelection: function _setSelection() {\n      var t;\n      this.range && (window.getSelection ? (t = window.getSelection(), t.removeAllRanges(), t.addRange(this.range)) : this.range.select(), this.button.focus());\n    },\n    _documentClick: {\n      mousedown: function mousedown(e) {\n        this.isOpen && (t(e.target).closest(\".ui-selectmenu-menu, #\" + t.ui.escapeSelector(this.ids.button)).length || this.close(e));\n      }\n    },\n    _buttonEvents: {\n      mousedown: function mousedown() {\n        var t;\n        window.getSelection ? (t = window.getSelection(), t.rangeCount && (this.range = t.getRangeAt(0))) : this.range = document.selection.createRange();\n      },\n      click: function click(t) {\n        this._setSelection(), this._toggle(t);\n      },\n      keydown: function keydown(e) {\n        var i = !0;\n        switch (e.keyCode) {\n          case t.ui.keyCode.TAB:\n          case t.ui.keyCode.ESCAPE:\n            this.close(e), i = !1;\n            break;\n          case t.ui.keyCode.ENTER:\n            this.isOpen && this._selectFocusedItem(e);\n            break;\n          case t.ui.keyCode.UP:\n            e.altKey ? this._toggle(e) : this._move(\"prev\", e);\n            break;\n          case t.ui.keyCode.DOWN:\n            e.altKey ? this._toggle(e) : this._move(\"next\", e);\n            break;\n          case t.ui.keyCode.SPACE:\n            this.isOpen ? this._selectFocusedItem(e) : this._toggle(e);\n            break;\n          case t.ui.keyCode.LEFT:\n            this._move(\"prev\", e);\n            break;\n          case t.ui.keyCode.RIGHT:\n            this._move(\"next\", e);\n            break;\n          case t.ui.keyCode.HOME:\n          case t.ui.keyCode.PAGE_UP:\n            this._move(\"first\", e);\n            break;\n          case t.ui.keyCode.END:\n          case t.ui.keyCode.PAGE_DOWN:\n            this._move(\"last\", e);\n            break;\n          default:\n            this.menu.trigger(e), i = !1;\n        }\n        i && e.preventDefault();\n      }\n    },\n    _selectFocusedItem: function _selectFocusedItem(t) {\n      var e = this.menuItems.eq(this.focusIndex).parent(\"li\");\n      e.hasClass(\"ui-state-disabled\") || this._select(e.data(\"ui-selectmenu-item\"), t);\n    },\n    _select: function _select(t, e) {\n      var i = this.element[0].selectedIndex;\n      this.element[0].selectedIndex = t.index, this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(t)), this._setAria(t), this._trigger(\"select\", e, {\n        item: t\n      }), t.index !== i && this._trigger(\"change\", e, {\n        item: t\n      }), this.close(e);\n    },\n    _setAria: function _setAria(t) {\n      var e = this.menuItems.eq(t.index).attr(\"id\");\n      this.button.attr({\n        \"aria-labelledby\": e,\n        \"aria-activedescendant\": e\n      }), this.menu.attr(\"aria-activedescendant\", e);\n    },\n    _setOption: function _setOption(t, e) {\n      if (\"icons\" === t) {\n        var i = this.button.find(\"span.ui-icon\");\n        this._removeClass(i, null, this.options.icons.button)._addClass(i, null, e.button);\n      }\n      this._super(t, e), \"appendTo\" === t && this.menuWrap.appendTo(this._appendTo()), \"width\" === t && this._resizeButton();\n    },\n    _setOptionDisabled: function _setOptionDisabled(t) {\n      this._super(t), this.menuInstance.option(\"disabled\", t), this.button.attr(\"aria-disabled\", t), this._toggleClass(this.button, null, \"ui-state-disabled\", t), this.element.prop(\"disabled\", t), t ? (this.button.attr(\"tabindex\", -1), this.close()) : this.button.attr(\"tabindex\", 0);\n    },\n    _appendTo: function _appendTo() {\n      var e = this.options.appendTo;\n      return e && (e = e.jquery || e.nodeType ? t(e) : this.document.find(e).eq(0)), e && e[0] || (e = this.element.closest(\".ui-front, dialog\")), e.length || (e = this.document[0].body), e;\n    },\n    _toggleAttr: function _toggleAttr() {\n      this.button.attr(\"aria-expanded\", this.isOpen), this._removeClass(this.button, \"ui-selectmenu-button-\" + (this.isOpen ? \"closed\" : \"open\"))._addClass(this.button, \"ui-selectmenu-button-\" + (this.isOpen ? \"open\" : \"closed\"))._toggleClass(this.menuWrap, \"ui-selectmenu-open\", null, this.isOpen), this.menu.attr(\"aria-hidden\", !this.isOpen);\n    },\n    _resizeButton: function _resizeButton() {\n      var t = this.options.width;\n      return t === !1 ? (this.button.css(\"width\", \"\"), void 0) : (null === t && (t = this.element.show().outerWidth(), this.element.hide()), this.button.outerWidth(t), void 0);\n    },\n    _resizeMenu: function _resizeMenu() {\n      this.menu.outerWidth(Math.max(this.button.outerWidth(), this.menu.width(\"\").outerWidth() + 1));\n    },\n    _getCreateOptions: function _getCreateOptions() {\n      var t = this._super();\n      return t.disabled = this.element.prop(\"disabled\"), t;\n    },\n    _parseOptions: function _parseOptions(e) {\n      var i = this,\n        s = [];\n      e.each(function (e, n) {\n        s.push(i._parseOption(t(n), e));\n      }), this.items = s;\n    },\n    _parseOption: function _parseOption(t, e) {\n      var i = t.parent(\"optgroup\");\n      return {\n        element: t,\n        index: e,\n        value: t.val(),\n        label: t.text(),\n        optgroup: i.attr(\"label\") || \"\",\n        disabled: i.prop(\"disabled\") || t.prop(\"disabled\")\n      };\n    },\n    _destroy: function _destroy() {\n      this._unbindFormResetHandler(), this.menuWrap.remove(), this.button.remove(), this.element.show(), this.element.removeUniqueId(), this.labels.attr(\"for\", this.ids.element);\n    }\n  }]), t.widget(\"ui.slider\", t.ui.mouse, {\n    version: \"1.12.1\",\n    widgetEventPrefix: \"slide\",\n    options: {\n      animate: !1,\n      classes: {\n        \"ui-slider\": \"ui-corner-all\",\n        \"ui-slider-handle\": \"ui-corner-all\",\n        \"ui-slider-range\": \"ui-corner-all ui-widget-header\"\n      },\n      distance: 0,\n      max: 100,\n      min: 0,\n      orientation: \"horizontal\",\n      range: !1,\n      step: 1,\n      value: 0,\n      values: null,\n      change: null,\n      slide: null,\n      start: null,\n      stop: null\n    },\n    numPages: 5,\n    _create: function _create() {\n      this._keySliding = !1, this._mouseSliding = !1, this._animateOff = !0, this._handleIndex = null, this._detectOrientation(), this._mouseInit(), this._calculateNewMax(), this._addClass(\"ui-slider ui-slider-\" + this.orientation, \"ui-widget ui-widget-content\"), this._refresh(), this._animateOff = !1;\n    },\n    _refresh: function _refresh() {\n      this._createRange(), this._createHandles(), this._setupEvents(), this._refreshValue();\n    },\n    _createHandles: function _createHandles() {\n      var e,\n        i,\n        s = this.options,\n        n = this.element.find(\".ui-slider-handle\"),\n        o = \"<span tabindex='0'></span>\",\n        a = [];\n      for (i = s.values && s.values.length || 1, n.length > i && (n.slice(i).remove(), n = n.slice(0, i)), e = n.length; i > e; e++) a.push(o);\n      this.handles = n.add(t(a.join(\"\")).appendTo(this.element)), this._addClass(this.handles, \"ui-slider-handle\", \"ui-state-default\"), this.handle = this.handles.eq(0), this.handles.each(function (e) {\n        t(this).data(\"ui-slider-handle-index\", e).attr(\"tabIndex\", 0);\n      });\n    },\n    _createRange: function _createRange() {\n      var e = this.options;\n      e.range ? (e.range === !0 && (e.values ? e.values.length && 2 !== e.values.length ? e.values = [e.values[0], e.values[0]] : t.isArray(e.values) && (e.values = e.values.slice(0)) : e.values = [this._valueMin(), this._valueMin()]), this.range && this.range.length ? (this._removeClass(this.range, \"ui-slider-range-min ui-slider-range-max\"), this.range.css({\n        left: \"\",\n        bottom: \"\"\n      })) : (this.range = t(\"<div>\").appendTo(this.element), this._addClass(this.range, \"ui-slider-range\")), (\"min\" === e.range || \"max\" === e.range) && this._addClass(this.range, \"ui-slider-range-\" + e.range)) : (this.range && this.range.remove(), this.range = null);\n    },\n    _setupEvents: function _setupEvents() {\n      this._off(this.handles), this._on(this.handles, this._handleEvents), this._hoverable(this.handles), this._focusable(this.handles);\n    },\n    _destroy: function _destroy() {\n      this.handles.remove(), this.range && this.range.remove(), this._mouseDestroy();\n    },\n    _mouseCapture: function _mouseCapture(e) {\n      var i,\n        s,\n        n,\n        o,\n        a,\n        r,\n        h,\n        l,\n        c = this,\n        u = this.options;\n      return u.disabled ? !1 : (this.elementSize = {\n        width: this.element.outerWidth(),\n        height: this.element.outerHeight()\n      }, this.elementOffset = this.element.offset(), i = {\n        x: e.pageX,\n        y: e.pageY\n      }, s = this._normValueFromMouse(i), n = this._valueMax() - this._valueMin() + 1, this.handles.each(function (e) {\n        var i = Math.abs(s - c.values(e));\n        (n > i || n === i && (e === c._lastChangedValue || c.values(e) === u.min)) && (n = i, o = t(this), a = e);\n      }), r = this._start(e, a), r === !1 ? !1 : (this._mouseSliding = !0, this._handleIndex = a, this._addClass(o, null, \"ui-state-active\"), o.trigger(\"focus\"), h = o.offset(), l = !t(e.target).parents().addBack().is(\".ui-slider-handle\"), this._clickOffset = l ? {\n        left: 0,\n        top: 0\n      } : {\n        left: e.pageX - h.left - o.width() / 2,\n        top: e.pageY - h.top - o.height() / 2 - (parseInt(o.css(\"borderTopWidth\"), 10) || 0) - (parseInt(o.css(\"borderBottomWidth\"), 10) || 0) + (parseInt(o.css(\"marginTop\"), 10) || 0)\n      }, this.handles.hasClass(\"ui-state-hover\") || this._slide(e, a, s), this._animateOff = !0, !0));\n    },\n    _mouseStart: function _mouseStart() {\n      return !0;\n    },\n    _mouseDrag: function _mouseDrag(t) {\n      var e = {\n          x: t.pageX,\n          y: t.pageY\n        },\n        i = this._normValueFromMouse(e);\n      return this._slide(t, this._handleIndex, i), !1;\n    },\n    _mouseStop: function _mouseStop(t) {\n      return this._removeClass(this.handles, null, \"ui-state-active\"), this._mouseSliding = !1, this._stop(t, this._handleIndex), this._change(t, this._handleIndex), this._handleIndex = null, this._clickOffset = null, this._animateOff = !1, !1;\n    },\n    _detectOrientation: function _detectOrientation() {\n      this.orientation = \"vertical\" === this.options.orientation ? \"vertical\" : \"horizontal\";\n    },\n    _normValueFromMouse: function _normValueFromMouse(t) {\n      var e, i, s, n, o;\n      return \"horizontal\" === this.orientation ? (e = this.elementSize.width, i = t.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0)) : (e = this.elementSize.height, i = t.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0)), s = i / e, s > 1 && (s = 1), 0 > s && (s = 0), \"vertical\" === this.orientation && (s = 1 - s), n = this._valueMax() - this._valueMin(), o = this._valueMin() + s * n, this._trimAlignValue(o);\n    },\n    _uiHash: function _uiHash(t, e, i) {\n      var s = {\n        handle: this.handles[t],\n        handleIndex: t,\n        value: void 0 !== e ? e : this.value()\n      };\n      return this._hasMultipleValues() && (s.value = void 0 !== e ? e : this.values(t), s.values = i || this.values()), s;\n    },\n    _hasMultipleValues: function _hasMultipleValues() {\n      return this.options.values && this.options.values.length;\n    },\n    _start: function _start(t, e) {\n      return this._trigger(\"start\", t, this._uiHash(e));\n    },\n    _slide: function _slide(t, e, i) {\n      var s,\n        n,\n        o = this.value(),\n        a = this.values();\n      this._hasMultipleValues() && (n = this.values(e ? 0 : 1), o = this.values(e), 2 === this.options.values.length && this.options.range === !0 && (i = 0 === e ? Math.min(n, i) : Math.max(n, i)), a[e] = i), i !== o && (s = this._trigger(\"slide\", t, this._uiHash(e, i, a)), s !== !1 && (this._hasMultipleValues() ? this.values(e, i) : this.value(i)));\n    },\n    _stop: function _stop(t, e) {\n      this._trigger(\"stop\", t, this._uiHash(e));\n    },\n    _change: function _change(t, e) {\n      this._keySliding || this._mouseSliding || (this._lastChangedValue = e, this._trigger(\"change\", t, this._uiHash(e)));\n    },\n    value: function value(t) {\n      return arguments.length ? (this.options.value = this._trimAlignValue(t), this._refreshValue(), this._change(null, 0), void 0) : this._value();\n    },\n    values: function values(e, i) {\n      var s, n, o;\n      if (arguments.length > 1) return this.options.values[e] = this._trimAlignValue(i), this._refreshValue(), this._change(null, e), void 0;\n      if (!arguments.length) return this._values();\n      if (!t.isArray(arguments[0])) return this._hasMultipleValues() ? this._values(e) : this.value();\n      for (s = this.options.values, n = arguments[0], o = 0; s.length > o; o += 1) s[o] = this._trimAlignValue(n[o]), this._change(null, o);\n      this._refreshValue();\n    },\n    _setOption: function _setOption(e, i) {\n      var s,\n        n = 0;\n      switch (\"range\" === e && this.options.range === !0 && (\"min\" === i ? (this.options.value = this._values(0), this.options.values = null) : \"max\" === i && (this.options.value = this._values(this.options.values.length - 1), this.options.values = null)), t.isArray(this.options.values) && (n = this.options.values.length), this._super(e, i), e) {\n        case \"orientation\":\n          this._detectOrientation(), this._removeClass(\"ui-slider-horizontal ui-slider-vertical\")._addClass(\"ui-slider-\" + this.orientation), this._refreshValue(), this.options.range && this._refreshRange(i), this.handles.css(\"horizontal\" === i ? \"bottom\" : \"left\", \"\");\n          break;\n        case \"value\":\n          this._animateOff = !0, this._refreshValue(), this._change(null, 0), this._animateOff = !1;\n          break;\n        case \"values\":\n          for (this._animateOff = !0, this._refreshValue(), s = n - 1; s >= 0; s--) this._change(null, s);\n          this._animateOff = !1;\n          break;\n        case \"step\":\n        case \"min\":\n        case \"max\":\n          this._animateOff = !0, this._calculateNewMax(), this._refreshValue(), this._animateOff = !1;\n          break;\n        case \"range\":\n          this._animateOff = !0, this._refresh(), this._animateOff = !1;\n      }\n    },\n    _setOptionDisabled: function _setOptionDisabled(t) {\n      this._super(t), this._toggleClass(null, \"ui-state-disabled\", !!t);\n    },\n    _value: function _value() {\n      var t = this.options.value;\n      return t = this._trimAlignValue(t);\n    },\n    _values: function _values(t) {\n      var e, i, s;\n      if (arguments.length) return e = this.options.values[t], e = this._trimAlignValue(e);\n      if (this._hasMultipleValues()) {\n        for (i = this.options.values.slice(), s = 0; i.length > s; s += 1) i[s] = this._trimAlignValue(i[s]);\n        return i;\n      }\n      return [];\n    },\n    _trimAlignValue: function _trimAlignValue(t) {\n      if (this._valueMin() >= t) return this._valueMin();\n      if (t >= this._valueMax()) return this._valueMax();\n      var e = this.options.step > 0 ? this.options.step : 1,\n        i = (t - this._valueMin()) % e,\n        s = t - i;\n      return 2 * Math.abs(i) >= e && (s += i > 0 ? e : -e), parseFloat(s.toFixed(5));\n    },\n    _calculateNewMax: function _calculateNewMax() {\n      var t = this.options.max,\n        e = this._valueMin(),\n        i = this.options.step,\n        s = Math.round((t - e) / i) * i;\n      t = s + e, t > this.options.max && (t -= i), this.max = parseFloat(t.toFixed(this._precision()));\n    },\n    _precision: function _precision() {\n      var t = this._precisionOf(this.options.step);\n      return null !== this.options.min && (t = Math.max(t, this._precisionOf(this.options.min))), t;\n    },\n    _precisionOf: function _precisionOf(t) {\n      var e = \"\" + t,\n        i = e.indexOf(\".\");\n      return -1 === i ? 0 : e.length - i - 1;\n    },\n    _valueMin: function _valueMin() {\n      return this.options.min;\n    },\n    _valueMax: function _valueMax() {\n      return this.max;\n    },\n    _refreshRange: function _refreshRange(t) {\n      \"vertical\" === t && this.range.css({\n        width: \"\",\n        left: \"\"\n      }), \"horizontal\" === t && this.range.css({\n        height: \"\",\n        bottom: \"\"\n      });\n    },\n    _refreshValue: function _refreshValue() {\n      var e,\n        i,\n        s,\n        n,\n        o,\n        a = this.options.range,\n        r = this.options,\n        h = this,\n        l = this._animateOff ? !1 : r.animate,\n        c = {};\n      this._hasMultipleValues() ? this.handles.each(function (s) {\n        i = 100 * ((h.values(s) - h._valueMin()) / (h._valueMax() - h._valueMin())), c[\"horizontal\" === h.orientation ? \"left\" : \"bottom\"] = i + \"%\", t(this).stop(1, 1)[l ? \"animate\" : \"css\"](c, r.animate), h.options.range === !0 && (\"horizontal\" === h.orientation ? (0 === s && h.range.stop(1, 1)[l ? \"animate\" : \"css\"]({\n          left: i + \"%\"\n        }, r.animate), 1 === s && h.range[l ? \"animate\" : \"css\"]({\n          width: i - e + \"%\"\n        }, {\n          queue: !1,\n          duration: r.animate\n        })) : (0 === s && h.range.stop(1, 1)[l ? \"animate\" : \"css\"]({\n          bottom: i + \"%\"\n        }, r.animate), 1 === s && h.range[l ? \"animate\" : \"css\"]({\n          height: i - e + \"%\"\n        }, {\n          queue: !1,\n          duration: r.animate\n        }))), e = i;\n      }) : (s = this.value(), n = this._valueMin(), o = this._valueMax(), i = o !== n ? 100 * ((s - n) / (o - n)) : 0, c[\"horizontal\" === this.orientation ? \"left\" : \"bottom\"] = i + \"%\", this.handle.stop(1, 1)[l ? \"animate\" : \"css\"](c, r.animate), \"min\" === a && \"horizontal\" === this.orientation && this.range.stop(1, 1)[l ? \"animate\" : \"css\"]({\n        width: i + \"%\"\n      }, r.animate), \"max\" === a && \"horizontal\" === this.orientation && this.range.stop(1, 1)[l ? \"animate\" : \"css\"]({\n        width: 100 - i + \"%\"\n      }, r.animate), \"min\" === a && \"vertical\" === this.orientation && this.range.stop(1, 1)[l ? \"animate\" : \"css\"]({\n        height: i + \"%\"\n      }, r.animate), \"max\" === a && \"vertical\" === this.orientation && this.range.stop(1, 1)[l ? \"animate\" : \"css\"]({\n        height: 100 - i + \"%\"\n      }, r.animate));\n    },\n    _handleEvents: {\n      keydown: function keydown(e) {\n        var i,\n          s,\n          n,\n          o,\n          a = t(e.target).data(\"ui-slider-handle-index\");\n        switch (e.keyCode) {\n          case t.ui.keyCode.HOME:\n          case t.ui.keyCode.END:\n          case t.ui.keyCode.PAGE_UP:\n          case t.ui.keyCode.PAGE_DOWN:\n          case t.ui.keyCode.UP:\n          case t.ui.keyCode.RIGHT:\n          case t.ui.keyCode.DOWN:\n          case t.ui.keyCode.LEFT:\n            if (e.preventDefault(), !this._keySliding && (this._keySliding = !0, this._addClass(t(e.target), null, \"ui-state-active\"), i = this._start(e, a), i === !1)) return;\n        }\n        switch (o = this.options.step, s = n = this._hasMultipleValues() ? this.values(a) : this.value(), e.keyCode) {\n          case t.ui.keyCode.HOME:\n            n = this._valueMin();\n            break;\n          case t.ui.keyCode.END:\n            n = this._valueMax();\n            break;\n          case t.ui.keyCode.PAGE_UP:\n            n = this._trimAlignValue(s + (this._valueMax() - this._valueMin()) / this.numPages);\n            break;\n          case t.ui.keyCode.PAGE_DOWN:\n            n = this._trimAlignValue(s - (this._valueMax() - this._valueMin()) / this.numPages);\n            break;\n          case t.ui.keyCode.UP:\n          case t.ui.keyCode.RIGHT:\n            if (s === this._valueMax()) return;\n            n = this._trimAlignValue(s + o);\n            break;\n          case t.ui.keyCode.DOWN:\n          case t.ui.keyCode.LEFT:\n            if (s === this._valueMin()) return;\n            n = this._trimAlignValue(s - o);\n        }\n        this._slide(e, a, n);\n      },\n      keyup: function keyup(e) {\n        var i = t(e.target).data(\"ui-slider-handle-index\");\n        this._keySliding && (this._keySliding = !1, this._stop(e, i), this._change(e, i), this._removeClass(t(e.target), null, \"ui-state-active\"));\n      }\n    }\n  }), t.widget(\"ui.sortable\", t.ui.mouse, {\n    version: \"1.12.1\",\n    widgetEventPrefix: \"sort\",\n    ready: !1,\n    options: {\n      appendTo: \"parent\",\n      axis: !1,\n      connectWith: !1,\n      containment: !1,\n      cursor: \"auto\",\n      cursorAt: !1,\n      dropOnEmpty: !0,\n      forcePlaceholderSize: !1,\n      forceHelperSize: !1,\n      grid: !1,\n      handle: !1,\n      helper: \"original\",\n      items: \"> *\",\n      opacity: !1,\n      placeholder: !1,\n      revert: !1,\n      scroll: !0,\n      scrollSensitivity: 20,\n      scrollSpeed: 20,\n      scope: \"default\",\n      tolerance: \"intersect\",\n      zIndex: 1e3,\n      activate: null,\n      beforeStop: null,\n      change: null,\n      deactivate: null,\n      out: null,\n      over: null,\n      receive: null,\n      remove: null,\n      sort: null,\n      start: null,\n      stop: null,\n      update: null\n    },\n    _isOverAxis: function _isOverAxis(t, e, i) {\n      return t >= e && e + i > t;\n    },\n    _isFloating: function _isFloating(t) {\n      return /left|right/.test(t.css(\"float\")) || /inline|table-cell/.test(t.css(\"display\"));\n    },\n    _create: function _create() {\n      this.containerCache = {}, this._addClass(\"ui-sortable\"), this.refresh(), this.offset = this.element.offset(), this._mouseInit(), this._setHandleClassName(), this.ready = !0;\n    },\n    _setOption: function _setOption(t, e) {\n      this._super(t, e), \"handle\" === t && this._setHandleClassName();\n    },\n    _setHandleClassName: function _setHandleClassName() {\n      var e = this;\n      this._removeClass(this.element.find(\".ui-sortable-handle\"), \"ui-sortable-handle\"), t.each(this.items, function () {\n        e._addClass(this.instance.options.handle ? this.item.find(this.instance.options.handle) : this.item, \"ui-sortable-handle\");\n      });\n    },\n    _destroy: function _destroy() {\n      this._mouseDestroy();\n      for (var t = this.items.length - 1; t >= 0; t--) this.items[t].item.removeData(this.widgetName + \"-item\");\n      return this;\n    },\n    _mouseCapture: function _mouseCapture(e, i) {\n      var s = null,\n        n = !1,\n        o = this;\n      return this.reverting ? !1 : this.options.disabled || \"static\" === this.options.type ? !1 : (this._refreshItems(e), t(e.target).parents().each(function () {\n        return t.data(this, o.widgetName + \"-item\") === o ? (s = t(this), !1) : void 0;\n      }), t.data(e.target, o.widgetName + \"-item\") === o && (s = t(e.target)), s ? !this.options.handle || i || (t(this.options.handle, s).find(\"*\").addBack().each(function () {\n        this === e.target && (n = !0);\n      }), n) ? (this.currentItem = s, this._removeCurrentsFromItems(), !0) : !1 : !1);\n    },\n    _mouseStart: function _mouseStart(e, i, s) {\n      var n,\n        o,\n        a = this.options;\n      if (this.currentContainer = this, this.refreshPositions(), this.helper = this._createHelper(e), this._cacheHelperProportions(), this._cacheMargins(), this.scrollParent = this.helper.scrollParent(), this.offset = this.currentItem.offset(), this.offset = {\n        top: this.offset.top - this.margins.top,\n        left: this.offset.left - this.margins.left\n      }, t.extend(this.offset, {\n        click: {\n          left: e.pageX - this.offset.left,\n          top: e.pageY - this.offset.top\n        },\n        parent: this._getParentOffset(),\n        relative: this._getRelativeOffset()\n      }), this.helper.css(\"position\", \"absolute\"), this.cssPosition = this.helper.css(\"position\"), this.originalPosition = this._generatePosition(e), this.originalPageX = e.pageX, this.originalPageY = e.pageY, a.cursorAt && this._adjustOffsetFromHelper(a.cursorAt), this.domPosition = {\n        prev: this.currentItem.prev()[0],\n        parent: this.currentItem.parent()[0]\n      }, this.helper[0] !== this.currentItem[0] && this.currentItem.hide(), this._createPlaceholder(), a.containment && this._setContainment(), a.cursor && \"auto\" !== a.cursor && (o = this.document.find(\"body\"), this.storedCursor = o.css(\"cursor\"), o.css(\"cursor\", a.cursor), this.storedStylesheet = t(\"<style>*{ cursor: \" + a.cursor + \" !important; }</style>\").appendTo(o)), a.opacity && (this.helper.css(\"opacity\") && (this._storedOpacity = this.helper.css(\"opacity\")), this.helper.css(\"opacity\", a.opacity)), a.zIndex && (this.helper.css(\"zIndex\") && (this._storedZIndex = this.helper.css(\"zIndex\")), this.helper.css(\"zIndex\", a.zIndex)), this.scrollParent[0] !== this.document[0] && \"HTML\" !== this.scrollParent[0].tagName && (this.overflowOffset = this.scrollParent.offset()), this._trigger(\"start\", e, this._uiHash()), this._preserveHelperProportions || this._cacheHelperProportions(), !s) for (n = this.containers.length - 1; n >= 0; n--) this.containers[n]._trigger(\"activate\", e, this._uiHash(this));\n      return t.ui.ddmanager && (t.ui.ddmanager.current = this), t.ui.ddmanager && !a.dropBehaviour && t.ui.ddmanager.prepareOffsets(this, e), this.dragging = !0, this._addClass(this.helper, \"ui-sortable-helper\"), this._mouseDrag(e), !0;\n    },\n    _mouseDrag: function _mouseDrag(e) {\n      var i,\n        s,\n        n,\n        o,\n        a = this.options,\n        r = !1;\n      for (this.position = this._generatePosition(e), this.positionAbs = this._convertPositionTo(\"absolute\"), this.lastPositionAbs || (this.lastPositionAbs = this.positionAbs), this.options.scroll && (this.scrollParent[0] !== this.document[0] && \"HTML\" !== this.scrollParent[0].tagName ? (this.overflowOffset.top + this.scrollParent[0].offsetHeight - e.pageY < a.scrollSensitivity ? this.scrollParent[0].scrollTop = r = this.scrollParent[0].scrollTop + a.scrollSpeed : e.pageY - this.overflowOffset.top < a.scrollSensitivity && (this.scrollParent[0].scrollTop = r = this.scrollParent[0].scrollTop - a.scrollSpeed), this.overflowOffset.left + this.scrollParent[0].offsetWidth - e.pageX < a.scrollSensitivity ? this.scrollParent[0].scrollLeft = r = this.scrollParent[0].scrollLeft + a.scrollSpeed : e.pageX - this.overflowOffset.left < a.scrollSensitivity && (this.scrollParent[0].scrollLeft = r = this.scrollParent[0].scrollLeft - a.scrollSpeed)) : (e.pageY - this.document.scrollTop() < a.scrollSensitivity ? r = this.document.scrollTop(this.document.scrollTop() - a.scrollSpeed) : this.window.height() - (e.pageY - this.document.scrollTop()) < a.scrollSensitivity && (r = this.document.scrollTop(this.document.scrollTop() + a.scrollSpeed)), e.pageX - this.document.scrollLeft() < a.scrollSensitivity ? r = this.document.scrollLeft(this.document.scrollLeft() - a.scrollSpeed) : this.window.width() - (e.pageX - this.document.scrollLeft()) < a.scrollSensitivity && (r = this.document.scrollLeft(this.document.scrollLeft() + a.scrollSpeed))), r !== !1 && t.ui.ddmanager && !a.dropBehaviour && t.ui.ddmanager.prepareOffsets(this, e)), this.positionAbs = this._convertPositionTo(\"absolute\"), this.options.axis && \"y\" === this.options.axis || (this.helper[0].style.left = this.position.left + \"px\"), this.options.axis && \"x\" === this.options.axis || (this.helper[0].style.top = this.position.top + \"px\"), i = this.items.length - 1; i >= 0; i--) if (s = this.items[i], n = s.item[0], o = this._intersectsWithPointer(s), o && s.instance === this.currentContainer && n !== this.currentItem[0] && this.placeholder[1 === o ? \"next\" : \"prev\"]()[0] !== n && !t.contains(this.placeholder[0], n) && (\"semi-dynamic\" === this.options.type ? !t.contains(this.element[0], n) : !0)) {\n        if (this.direction = 1 === o ? \"down\" : \"up\", \"pointer\" !== this.options.tolerance && !this._intersectsWithSides(s)) break;\n        this._rearrange(e, s), this._trigger(\"change\", e, this._uiHash());\n        break;\n      }\n      return this._contactContainers(e), t.ui.ddmanager && t.ui.ddmanager.drag(this, e), this._trigger(\"sort\", e, this._uiHash()), this.lastPositionAbs = this.positionAbs, !1;\n    },\n    _mouseStop: function _mouseStop(e, i) {\n      if (e) {\n        if (t.ui.ddmanager && !this.options.dropBehaviour && t.ui.ddmanager.drop(this, e), this.options.revert) {\n          var s = this,\n            n = this.placeholder.offset(),\n            o = this.options.axis,\n            a = {};\n          o && \"x\" !== o || (a.left = n.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft)), o && \"y\" !== o || (a.top = n.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop)), this.reverting = !0, t(this.helper).animate(a, parseInt(this.options.revert, 10) || 500, function () {\n            s._clear(e);\n          });\n        } else this._clear(e, i);\n        return !1;\n      }\n    },\n    cancel: function cancel() {\n      if (this.dragging) {\n        this._mouseUp(new t.Event(\"mouseup\", {\n          target: null\n        })), \"original\" === this.options.helper ? (this.currentItem.css(this._storedCSS), this._removeClass(this.currentItem, \"ui-sortable-helper\")) : this.currentItem.show();\n        for (var e = this.containers.length - 1; e >= 0; e--) this.containers[e]._trigger(\"deactivate\", null, this._uiHash(this)), this.containers[e].containerCache.over && (this.containers[e]._trigger(\"out\", null, this._uiHash(this)), this.containers[e].containerCache.over = 0);\n      }\n      return this.placeholder && (this.placeholder[0].parentNode && this.placeholder[0].parentNode.removeChild(this.placeholder[0]), \"original\" !== this.options.helper && this.helper && this.helper[0].parentNode && this.helper.remove(), t.extend(this, {\n        helper: null,\n        dragging: !1,\n        reverting: !1,\n        _noFinalSort: null\n      }), this.domPosition.prev ? t(this.domPosition.prev).after(this.currentItem) : t(this.domPosition.parent).prepend(this.currentItem)), this;\n    },\n    serialize: function serialize(e) {\n      var i = this._getItemsAsjQuery(e && e.connected),\n        s = [];\n      return e = e || {}, t(i).each(function () {\n        var i = (t(e.item || this).attr(e.attribute || \"id\") || \"\").match(e.expression || /(.+)[\\-=_](.+)/);\n        i && s.push((e.key || i[1] + \"[]\") + \"=\" + (e.key && e.expression ? i[1] : i[2]));\n      }), !s.length && e.key && s.push(e.key + \"=\"), s.join(\"&\");\n    },\n    toArray: function toArray(e) {\n      var i = this._getItemsAsjQuery(e && e.connected),\n        s = [];\n      return e = e || {}, i.each(function () {\n        s.push(t(e.item || this).attr(e.attribute || \"id\") || \"\");\n      }), s;\n    },\n    _intersectsWith: function _intersectsWith(t) {\n      var e = this.positionAbs.left,\n        i = e + this.helperProportions.width,\n        s = this.positionAbs.top,\n        n = s + this.helperProportions.height,\n        o = t.left,\n        a = o + t.width,\n        r = t.top,\n        h = r + t.height,\n        l = this.offset.click.top,\n        c = this.offset.click.left,\n        u = \"x\" === this.options.axis || s + l > r && h > s + l,\n        d = \"y\" === this.options.axis || e + c > o && a > e + c,\n        p = u && d;\n      return \"pointer\" === this.options.tolerance || this.options.forcePointerForContainers || \"pointer\" !== this.options.tolerance && this.helperProportions[this.floating ? \"width\" : \"height\"] > t[this.floating ? \"width\" : \"height\"] ? p : e + this.helperProportions.width / 2 > o && a > i - this.helperProportions.width / 2 && s + this.helperProportions.height / 2 > r && h > n - this.helperProportions.height / 2;\n    },\n    _intersectsWithPointer: function _intersectsWithPointer(t) {\n      var e,\n        i,\n        s = \"x\" === this.options.axis || this._isOverAxis(this.positionAbs.top + this.offset.click.top, t.top, t.height),\n        n = \"y\" === this.options.axis || this._isOverAxis(this.positionAbs.left + this.offset.click.left, t.left, t.width),\n        o = s && n;\n      return o ? (e = this._getDragVerticalDirection(), i = this._getDragHorizontalDirection(), this.floating ? \"right\" === i || \"down\" === e ? 2 : 1 : e && (\"down\" === e ? 2 : 1)) : !1;\n    },\n    _intersectsWithSides: function _intersectsWithSides(t) {\n      var e = this._isOverAxis(this.positionAbs.top + this.offset.click.top, t.top + t.height / 2, t.height),\n        i = this._isOverAxis(this.positionAbs.left + this.offset.click.left, t.left + t.width / 2, t.width),\n        s = this._getDragVerticalDirection(),\n        n = this._getDragHorizontalDirection();\n      return this.floating && n ? \"right\" === n && i || \"left\" === n && !i : s && (\"down\" === s && e || \"up\" === s && !e);\n    },\n    _getDragVerticalDirection: function _getDragVerticalDirection() {\n      var t = this.positionAbs.top - this.lastPositionAbs.top;\n      return 0 !== t && (t > 0 ? \"down\" : \"up\");\n    },\n    _getDragHorizontalDirection: function _getDragHorizontalDirection() {\n      var t = this.positionAbs.left - this.lastPositionAbs.left;\n      return 0 !== t && (t > 0 ? \"right\" : \"left\");\n    },\n    refresh: function refresh(t) {\n      return this._refreshItems(t), this._setHandleClassName(), this.refreshPositions(), this;\n    },\n    _connectWith: function _connectWith() {\n      var t = this.options;\n      return t.connectWith.constructor === String ? [t.connectWith] : t.connectWith;\n    },\n    _getItemsAsjQuery: function _getItemsAsjQuery(e) {\n      function i() {\n        r.push(this);\n      }\n      var s,\n        n,\n        o,\n        a,\n        r = [],\n        h = [],\n        l = this._connectWith();\n      if (l && e) for (s = l.length - 1; s >= 0; s--) for (o = t(l[s], this.document[0]), n = o.length - 1; n >= 0; n--) a = t.data(o[n], this.widgetFullName), a && a !== this && !a.options.disabled && h.push([t.isFunction(a.options.items) ? a.options.items.call(a.element) : t(a.options.items, a.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), a]);\n      for (h.push([t.isFunction(this.options.items) ? this.options.items.call(this.element, null, {\n        options: this.options,\n        item: this.currentItem\n      }) : t(this.options.items, this.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), this]), s = h.length - 1; s >= 0; s--) h[s][0].each(i);\n      return t(r);\n    },\n    _removeCurrentsFromItems: function _removeCurrentsFromItems() {\n      var e = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n      this.items = t.grep(this.items, function (t) {\n        for (var i = 0; e.length > i; i++) if (e[i] === t.item[0]) return !1;\n        return !0;\n      });\n    },\n    _refreshItems: function _refreshItems(e) {\n      this.items = [], this.containers = [this];\n      var i,\n        s,\n        n,\n        o,\n        a,\n        r,\n        h,\n        l,\n        c = this.items,\n        u = [[t.isFunction(this.options.items) ? this.options.items.call(this.element[0], e, {\n          item: this.currentItem\n        }) : t(this.options.items, this.element), this]],\n        d = this._connectWith();\n      if (d && this.ready) for (i = d.length - 1; i >= 0; i--) for (n = t(d[i], this.document[0]), s = n.length - 1; s >= 0; s--) o = t.data(n[s], this.widgetFullName), o && o !== this && !o.options.disabled && (u.push([t.isFunction(o.options.items) ? o.options.items.call(o.element[0], e, {\n        item: this.currentItem\n      }) : t(o.options.items, o.element), o]), this.containers.push(o));\n      for (i = u.length - 1; i >= 0; i--) for (a = u[i][1], r = u[i][0], s = 0, l = r.length; l > s; s++) h = t(r[s]), h.data(this.widgetName + \"-item\", a), c.push({\n        item: h,\n        instance: a,\n        width: 0,\n        height: 0,\n        left: 0,\n        top: 0\n      });\n    },\n    refreshPositions: function refreshPositions(e) {\n      this.floating = this.items.length ? \"x\" === this.options.axis || this._isFloating(this.items[0].item) : !1, this.offsetParent && this.helper && (this.offset.parent = this._getParentOffset());\n      var i, s, n, o;\n      for (i = this.items.length - 1; i >= 0; i--) s = this.items[i], s.instance !== this.currentContainer && this.currentContainer && s.item[0] !== this.currentItem[0] || (n = this.options.toleranceElement ? t(this.options.toleranceElement, s.item) : s.item, e || (s.width = n.outerWidth(), s.height = n.outerHeight()), o = n.offset(), s.left = o.left, s.top = o.top);\n      if (this.options.custom && this.options.custom.refreshContainers) this.options.custom.refreshContainers.call(this);else for (i = this.containers.length - 1; i >= 0; i--) o = this.containers[i].element.offset(), this.containers[i].containerCache.left = o.left, this.containers[i].containerCache.top = o.top, this.containers[i].containerCache.width = this.containers[i].element.outerWidth(), this.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n      return this;\n    },\n    _createPlaceholder: function _createPlaceholder(e) {\n      e = e || this;\n      var i,\n        s = e.options;\n      s.placeholder && s.placeholder.constructor !== String || (i = s.placeholder, s.placeholder = {\n        element: function element() {\n          var s = e.currentItem[0].nodeName.toLowerCase(),\n            n = t(\"<\" + s + \">\", e.document[0]);\n          return e._addClass(n, \"ui-sortable-placeholder\", i || e.currentItem[0].className)._removeClass(n, \"ui-sortable-helper\"), \"tbody\" === s ? e._createTrPlaceholder(e.currentItem.find(\"tr\").eq(0), t(\"<tr>\", e.document[0]).appendTo(n)) : \"tr\" === s ? e._createTrPlaceholder(e.currentItem, n) : \"img\" === s && n.attr(\"src\", e.currentItem.attr(\"src\")), i || n.css(\"visibility\", \"hidden\"), n;\n        },\n        update: function update(t, n) {\n          (!i || s.forcePlaceholderSize) && (n.height() || n.height(e.currentItem.innerHeight() - parseInt(e.currentItem.css(\"paddingTop\") || 0, 10) - parseInt(e.currentItem.css(\"paddingBottom\") || 0, 10)), n.width() || n.width(e.currentItem.innerWidth() - parseInt(e.currentItem.css(\"paddingLeft\") || 0, 10) - parseInt(e.currentItem.css(\"paddingRight\") || 0, 10)));\n        }\n      }), e.placeholder = t(s.placeholder.element.call(e.element, e.currentItem)), e.currentItem.after(e.placeholder), s.placeholder.update(e, e.placeholder);\n    },\n    _createTrPlaceholder: function _createTrPlaceholder(e, i) {\n      var s = this;\n      e.children().each(function () {\n        t(\"<td>&#160;</td>\", s.document[0]).attr(\"colspan\", t(this).attr(\"colspan\") || 1).appendTo(i);\n      });\n    },\n    _contactContainers: function _contactContainers(e) {\n      var i,\n        s,\n        n,\n        o,\n        a,\n        r,\n        h,\n        l,\n        c,\n        u,\n        d = null,\n        p = null;\n      for (i = this.containers.length - 1; i >= 0; i--) if (!t.contains(this.currentItem[0], this.containers[i].element[0])) if (this._intersectsWith(this.containers[i].containerCache)) {\n        if (d && t.contains(this.containers[i].element[0], d.element[0])) continue;\n        d = this.containers[i], p = i;\n      } else this.containers[i].containerCache.over && (this.containers[i]._trigger(\"out\", e, this._uiHash(this)), this.containers[i].containerCache.over = 0);\n      if (d) if (1 === this.containers.length) this.containers[p].containerCache.over || (this.containers[p]._trigger(\"over\", e, this._uiHash(this)), this.containers[p].containerCache.over = 1);else {\n        for (n = 1e4, o = null, c = d.floating || this._isFloating(this.currentItem), a = c ? \"left\" : \"top\", r = c ? \"width\" : \"height\", u = c ? \"pageX\" : \"pageY\", s = this.items.length - 1; s >= 0; s--) t.contains(this.containers[p].element[0], this.items[s].item[0]) && this.items[s].item[0] !== this.currentItem[0] && (h = this.items[s].item.offset()[a], l = !1, e[u] - h > this.items[s][r] / 2 && (l = !0), n > Math.abs(e[u] - h) && (n = Math.abs(e[u] - h), o = this.items[s], this.direction = l ? \"up\" : \"down\"));\n        if (!o && !this.options.dropOnEmpty) return;\n        if (this.currentContainer === this.containers[p]) return this.currentContainer.containerCache.over || (this.containers[p]._trigger(\"over\", e, this._uiHash()), this.currentContainer.containerCache.over = 1), void 0;\n        o ? this._rearrange(e, o, null, !0) : this._rearrange(e, null, this.containers[p].element, !0), this._trigger(\"change\", e, this._uiHash()), this.containers[p]._trigger(\"change\", e, this._uiHash(this)), this.currentContainer = this.containers[p], this.options.placeholder.update(this.currentContainer, this.placeholder), this.containers[p]._trigger(\"over\", e, this._uiHash(this)), this.containers[p].containerCache.over = 1;\n      }\n    },\n    _createHelper: function _createHelper(e) {\n      var i = this.options,\n        s = t.isFunction(i.helper) ? t(i.helper.apply(this.element[0], [e, this.currentItem])) : \"clone\" === i.helper ? this.currentItem.clone() : this.currentItem;\n      return s.parents(\"body\").length || t(\"parent\" !== i.appendTo ? i.appendTo : this.currentItem[0].parentNode)[0].appendChild(s[0]), s[0] === this.currentItem[0] && (this._storedCSS = {\n        width: this.currentItem[0].style.width,\n        height: this.currentItem[0].style.height,\n        position: this.currentItem.css(\"position\"),\n        top: this.currentItem.css(\"top\"),\n        left: this.currentItem.css(\"left\")\n      }), (!s[0].style.width || i.forceHelperSize) && s.width(this.currentItem.width()), (!s[0].style.height || i.forceHelperSize) && s.height(this.currentItem.height()), s;\n    },\n    _adjustOffsetFromHelper: function _adjustOffsetFromHelper(e) {\n      \"string\" == typeof e && (e = e.split(\" \")), t.isArray(e) && (e = {\n        left: +e[0],\n        top: +e[1] || 0\n      }), \"left\" in e && (this.offset.click.left = e.left + this.margins.left), \"right\" in e && (this.offset.click.left = this.helperProportions.width - e.right + this.margins.left), \"top\" in e && (this.offset.click.top = e.top + this.margins.top), \"bottom\" in e && (this.offset.click.top = this.helperProportions.height - e.bottom + this.margins.top);\n    },\n    _getParentOffset: function _getParentOffset() {\n      this.offsetParent = this.helper.offsetParent();\n      var e = this.offsetParent.offset();\n      return \"absolute\" === this.cssPosition && this.scrollParent[0] !== this.document[0] && t.contains(this.scrollParent[0], this.offsetParent[0]) && (e.left += this.scrollParent.scrollLeft(), e.top += this.scrollParent.scrollTop()), (this.offsetParent[0] === this.document[0].body || this.offsetParent[0].tagName && \"html\" === this.offsetParent[0].tagName.toLowerCase() && t.ui.ie) && (e = {\n        top: 0,\n        left: 0\n      }), {\n        top: e.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"), 10) || 0),\n        left: e.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"), 10) || 0)\n      };\n    },\n    _getRelativeOffset: function _getRelativeOffset() {\n      if (\"relative\" === this.cssPosition) {\n        var t = this.currentItem.position();\n        return {\n          top: t.top - (parseInt(this.helper.css(\"top\"), 10) || 0) + this.scrollParent.scrollTop(),\n          left: t.left - (parseInt(this.helper.css(\"left\"), 10) || 0) + this.scrollParent.scrollLeft()\n        };\n      }\n      return {\n        top: 0,\n        left: 0\n      };\n    },\n    _cacheMargins: function _cacheMargins() {\n      this.margins = {\n        left: parseInt(this.currentItem.css(\"marginLeft\"), 10) || 0,\n        top: parseInt(this.currentItem.css(\"marginTop\"), 10) || 0\n      };\n    },\n    _cacheHelperProportions: function _cacheHelperProportions() {\n      this.helperProportions = {\n        width: this.helper.outerWidth(),\n        height: this.helper.outerHeight()\n      };\n    },\n    _setContainment: function _setContainment() {\n      var e,\n        i,\n        s,\n        n = this.options;\n      \"parent\" === n.containment && (n.containment = this.helper[0].parentNode), (\"document\" === n.containment || \"window\" === n.containment) && (this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, \"document\" === n.containment ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left, (\"document\" === n.containment ? this.document.height() || document.body.parentNode.scrollHeight : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]), /^(document|window|parent)$/.test(n.containment) || (e = t(n.containment)[0], i = t(n.containment).offset(), s = \"hidden\" !== t(e).css(\"overflow\"), this.containment = [i.left + (parseInt(t(e).css(\"borderLeftWidth\"), 10) || 0) + (parseInt(t(e).css(\"paddingLeft\"), 10) || 0) - this.margins.left, i.top + (parseInt(t(e).css(\"borderTopWidth\"), 10) || 0) + (parseInt(t(e).css(\"paddingTop\"), 10) || 0) - this.margins.top, i.left + (s ? Math.max(e.scrollWidth, e.offsetWidth) : e.offsetWidth) - (parseInt(t(e).css(\"borderLeftWidth\"), 10) || 0) - (parseInt(t(e).css(\"paddingRight\"), 10) || 0) - this.helperProportions.width - this.margins.left, i.top + (s ? Math.max(e.scrollHeight, e.offsetHeight) : e.offsetHeight) - (parseInt(t(e).css(\"borderTopWidth\"), 10) || 0) - (parseInt(t(e).css(\"paddingBottom\"), 10) || 0) - this.helperProportions.height - this.margins.top]);\n    },\n    _convertPositionTo: function _convertPositionTo(e, i) {\n      i || (i = this.position);\n      var s = \"absolute\" === e ? 1 : -1,\n        n = \"absolute\" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && t.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent,\n        o = /(html|body)/i.test(n[0].tagName);\n      return {\n        top: i.top + this.offset.relative.top * s + this.offset.parent.top * s - (\"fixed\" === this.cssPosition ? -this.scrollParent.scrollTop() : o ? 0 : n.scrollTop()) * s,\n        left: i.left + this.offset.relative.left * s + this.offset.parent.left * s - (\"fixed\" === this.cssPosition ? -this.scrollParent.scrollLeft() : o ? 0 : n.scrollLeft()) * s\n      };\n    },\n    _generatePosition: function _generatePosition(e) {\n      var i,\n        s,\n        n = this.options,\n        o = e.pageX,\n        a = e.pageY,\n        r = \"absolute\" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && t.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent,\n        h = /(html|body)/i.test(r[0].tagName);\n      return \"relative\" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0] || (this.offset.relative = this._getRelativeOffset()), this.originalPosition && (this.containment && (e.pageX - this.offset.click.left < this.containment[0] && (o = this.containment[0] + this.offset.click.left), e.pageY - this.offset.click.top < this.containment[1] && (a = this.containment[1] + this.offset.click.top), e.pageX - this.offset.click.left > this.containment[2] && (o = this.containment[2] + this.offset.click.left), e.pageY - this.offset.click.top > this.containment[3] && (a = this.containment[3] + this.offset.click.top)), n.grid && (i = this.originalPageY + Math.round((a - this.originalPageY) / n.grid[1]) * n.grid[1], a = this.containment ? i - this.offset.click.top >= this.containment[1] && i - this.offset.click.top <= this.containment[3] ? i : i - this.offset.click.top >= this.containment[1] ? i - n.grid[1] : i + n.grid[1] : i, s = this.originalPageX + Math.round((o - this.originalPageX) / n.grid[0]) * n.grid[0], o = this.containment ? s - this.offset.click.left >= this.containment[0] && s - this.offset.click.left <= this.containment[2] ? s : s - this.offset.click.left >= this.containment[0] ? s - n.grid[0] : s + n.grid[0] : s)), {\n        top: a - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (\"fixed\" === this.cssPosition ? -this.scrollParent.scrollTop() : h ? 0 : r.scrollTop()),\n        left: o - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (\"fixed\" === this.cssPosition ? -this.scrollParent.scrollLeft() : h ? 0 : r.scrollLeft())\n      };\n    },\n    _rearrange: function _rearrange(t, e, i, s) {\n      i ? i[0].appendChild(this.placeholder[0]) : e.item[0].parentNode.insertBefore(this.placeholder[0], \"down\" === this.direction ? e.item[0] : e.item[0].nextSibling), this.counter = this.counter ? ++this.counter : 1;\n      var n = this.counter;\n      this._delay(function () {\n        n === this.counter && this.refreshPositions(!s);\n      });\n    },\n    _clear: function _clear(t, e) {\n      function i(t, e, i) {\n        return function (s) {\n          i._trigger(t, s, e._uiHash(e));\n        };\n      }\n      this.reverting = !1;\n      var s,\n        n = [];\n      if (!this._noFinalSort && this.currentItem.parent().length && this.placeholder.before(this.currentItem), this._noFinalSort = null, this.helper[0] === this.currentItem[0]) {\n        for (s in this._storedCSS) (\"auto\" === this._storedCSS[s] || \"static\" === this._storedCSS[s]) && (this._storedCSS[s] = \"\");\n        this.currentItem.css(this._storedCSS), this._removeClass(this.currentItem, \"ui-sortable-helper\");\n      } else this.currentItem.show();\n      for (this.fromOutside && !e && n.push(function (t) {\n        this._trigger(\"receive\", t, this._uiHash(this.fromOutside));\n      }), !this.fromOutside && this.domPosition.prev === this.currentItem.prev().not(\".ui-sortable-helper\")[0] && this.domPosition.parent === this.currentItem.parent()[0] || e || n.push(function (t) {\n        this._trigger(\"update\", t, this._uiHash());\n      }), this !== this.currentContainer && (e || (n.push(function (t) {\n        this._trigger(\"remove\", t, this._uiHash());\n      }), n.push(function (t) {\n        return function (e) {\n          t._trigger(\"receive\", e, this._uiHash(this));\n        };\n      }.call(this, this.currentContainer)), n.push(function (t) {\n        return function (e) {\n          t._trigger(\"update\", e, this._uiHash(this));\n        };\n      }.call(this, this.currentContainer)))), s = this.containers.length - 1; s >= 0; s--) e || n.push(i(\"deactivate\", this, this.containers[s])), this.containers[s].containerCache.over && (n.push(i(\"out\", this, this.containers[s])), this.containers[s].containerCache.over = 0);\n      if (this.storedCursor && (this.document.find(\"body\").css(\"cursor\", this.storedCursor), this.storedStylesheet.remove()), this._storedOpacity && this.helper.css(\"opacity\", this._storedOpacity), this._storedZIndex && this.helper.css(\"zIndex\", \"auto\" === this._storedZIndex ? \"\" : this._storedZIndex), this.dragging = !1, e || this._trigger(\"beforeStop\", t, this._uiHash()), this.placeholder[0].parentNode.removeChild(this.placeholder[0]), this.cancelHelperRemoval || (this.helper[0] !== this.currentItem[0] && this.helper.remove(), this.helper = null), !e) {\n        for (s = 0; n.length > s; s++) n[s].call(this, t);\n        this._trigger(\"stop\", t, this._uiHash());\n      }\n      return this.fromOutside = !1, !this.cancelHelperRemoval;\n    },\n    _trigger: function _trigger() {\n      t.Widget.prototype._trigger.apply(this, arguments) === !1 && this.cancel();\n    },\n    _uiHash: function _uiHash(e) {\n      var i = e || this;\n      return {\n        helper: i.helper,\n        placeholder: i.placeholder || t([]),\n        position: i.position,\n        originalPosition: i.originalPosition,\n        offset: i.positionAbs,\n        item: i.currentItem,\n        sender: e ? e.element : null\n      };\n    }\n  }), t.widget(\"ui.spinner\", {\n    version: \"1.12.1\",\n    defaultElement: \"<input>\",\n    widgetEventPrefix: \"spin\",\n    options: {\n      classes: {\n        \"ui-spinner\": \"ui-corner-all\",\n        \"ui-spinner-down\": \"ui-corner-br\",\n        \"ui-spinner-up\": \"ui-corner-tr\"\n      },\n      culture: null,\n      icons: {\n        down: \"ui-icon-triangle-1-s\",\n        up: \"ui-icon-triangle-1-n\"\n      },\n      incremental: !0,\n      max: null,\n      min: null,\n      numberFormat: null,\n      page: 10,\n      step: 1,\n      change: null,\n      spin: null,\n      start: null,\n      stop: null\n    },\n    _create: function _create() {\n      this._setOption(\"max\", this.options.max), this._setOption(\"min\", this.options.min), this._setOption(\"step\", this.options.step), \"\" !== this.value() && this._value(this.element.val(), !0), this._draw(), this._on(this._events), this._refresh(), this._on(this.window, {\n        beforeunload: function beforeunload() {\n          this.element.removeAttr(\"autocomplete\");\n        }\n      });\n    },\n    _getCreateOptions: function _getCreateOptions() {\n      var e = this._super(),\n        i = this.element;\n      return t.each([\"min\", \"max\", \"step\"], function (t, s) {\n        var n = i.attr(s);\n        null != n && n.length && (e[s] = n);\n      }), e;\n    },\n    _events: {\n      keydown: function keydown(t) {\n        this._start(t) && this._keydown(t) && t.preventDefault();\n      },\n      keyup: \"_stop\",\n      focus: function focus() {\n        this.previous = this.element.val();\n      },\n      blur: function blur(t) {\n        return this.cancelBlur ? (delete this.cancelBlur, void 0) : (this._stop(), this._refresh(), this.previous !== this.element.val() && this._trigger(\"change\", t), void 0);\n      },\n      mousewheel: function mousewheel(t, e) {\n        if (e) {\n          if (!this.spinning && !this._start(t)) return !1;\n          this._spin((e > 0 ? 1 : -1) * this.options.step, t), clearTimeout(this.mousewheelTimer), this.mousewheelTimer = this._delay(function () {\n            this.spinning && this._stop(t);\n          }, 100), t.preventDefault();\n        }\n      },\n      \"mousedown .ui-spinner-button\": function mousedownUiSpinnerButton(e) {\n        function i() {\n          var e = this.element[0] === t.ui.safeActiveElement(this.document[0]);\n          e || (this.element.trigger(\"focus\"), this.previous = s, this._delay(function () {\n            this.previous = s;\n          }));\n        }\n        var s;\n        s = this.element[0] === t.ui.safeActiveElement(this.document[0]) ? this.previous : this.element.val(), e.preventDefault(), i.call(this), this.cancelBlur = !0, this._delay(function () {\n          delete this.cancelBlur, i.call(this);\n        }), this._start(e) !== !1 && this._repeat(null, t(e.currentTarget).hasClass(\"ui-spinner-up\") ? 1 : -1, e);\n      },\n      \"mouseup .ui-spinner-button\": \"_stop\",\n      \"mouseenter .ui-spinner-button\": function mouseenterUiSpinnerButton(e) {\n        return t(e.currentTarget).hasClass(\"ui-state-active\") ? this._start(e) === !1 ? !1 : (this._repeat(null, t(e.currentTarget).hasClass(\"ui-spinner-up\") ? 1 : -1, e), void 0) : void 0;\n      },\n      \"mouseleave .ui-spinner-button\": \"_stop\"\n    },\n    _enhance: function _enhance() {\n      this.uiSpinner = this.element.attr(\"autocomplete\", \"off\").wrap(\"<span>\").parent().append(\"<a></a><a></a>\");\n    },\n    _draw: function _draw() {\n      this._enhance(), this._addClass(this.uiSpinner, \"ui-spinner\", \"ui-widget ui-widget-content\"), this._addClass(\"ui-spinner-input\"), this.element.attr(\"role\", \"spinbutton\"), this.buttons = this.uiSpinner.children(\"a\").attr(\"tabIndex\", -1).attr(\"aria-hidden\", !0).button({\n        classes: {\n          \"ui-button\": \"\"\n        }\n      }), this._removeClass(this.buttons, \"ui-corner-all\"), this._addClass(this.buttons.first(), \"ui-spinner-button ui-spinner-up\"), this._addClass(this.buttons.last(), \"ui-spinner-button ui-spinner-down\"), this.buttons.first().button({\n        icon: this.options.icons.up,\n        showLabel: !1\n      }), this.buttons.last().button({\n        icon: this.options.icons.down,\n        showLabel: !1\n      }), this.buttons.height() > Math.ceil(.5 * this.uiSpinner.height()) && this.uiSpinner.height() > 0 && this.uiSpinner.height(this.uiSpinner.height());\n    },\n    _keydown: function _keydown(e) {\n      var i = this.options,\n        s = t.ui.keyCode;\n      switch (e.keyCode) {\n        case s.UP:\n          return this._repeat(null, 1, e), !0;\n        case s.DOWN:\n          return this._repeat(null, -1, e), !0;\n        case s.PAGE_UP:\n          return this._repeat(null, i.page, e), !0;\n        case s.PAGE_DOWN:\n          return this._repeat(null, -i.page, e), !0;\n      }\n      return !1;\n    },\n    _start: function _start(t) {\n      return this.spinning || this._trigger(\"start\", t) !== !1 ? (this.counter || (this.counter = 1), this.spinning = !0, !0) : !1;\n    },\n    _repeat: function _repeat(t, e, i) {\n      t = t || 500, clearTimeout(this.timer), this.timer = this._delay(function () {\n        this._repeat(40, e, i);\n      }, t), this._spin(e * this.options.step, i);\n    },\n    _spin: function _spin(t, e) {\n      var i = this.value() || 0;\n      this.counter || (this.counter = 1), i = this._adjustValue(i + t * this._increment(this.counter)), this.spinning && this._trigger(\"spin\", e, {\n        value: i\n      }) === !1 || (this._value(i), this.counter++);\n    },\n    _increment: function _increment(e) {\n      var i = this.options.incremental;\n      return i ? t.isFunction(i) ? i(e) : Math.floor(e * e * e / 5e4 - e * e / 500 + 17 * e / 200 + 1) : 1;\n    },\n    _precision: function _precision() {\n      var t = this._precisionOf(this.options.step);\n      return null !== this.options.min && (t = Math.max(t, this._precisionOf(this.options.min))), t;\n    },\n    _precisionOf: function _precisionOf(t) {\n      var e = \"\" + t,\n        i = e.indexOf(\".\");\n      return -1 === i ? 0 : e.length - i - 1;\n    },\n    _adjustValue: function _adjustValue(t) {\n      var e,\n        i,\n        s = this.options;\n      return e = null !== s.min ? s.min : 0, i = t - e, i = Math.round(i / s.step) * s.step, t = e + i, t = parseFloat(t.toFixed(this._precision())), null !== s.max && t > s.max ? s.max : null !== s.min && s.min > t ? s.min : t;\n    },\n    _stop: function _stop(t) {\n      this.spinning && (clearTimeout(this.timer), clearTimeout(this.mousewheelTimer), this.counter = 0, this.spinning = !1, this._trigger(\"stop\", t));\n    },\n    _setOption: function _setOption(t, e) {\n      var i, s, n;\n      return \"culture\" === t || \"numberFormat\" === t ? (i = this._parse(this.element.val()), this.options[t] = e, this.element.val(this._format(i)), void 0) : ((\"max\" === t || \"min\" === t || \"step\" === t) && \"string\" == typeof e && (e = this._parse(e)), \"icons\" === t && (s = this.buttons.first().find(\".ui-icon\"), this._removeClass(s, null, this.options.icons.up), this._addClass(s, null, e.up), n = this.buttons.last().find(\".ui-icon\"), this._removeClass(n, null, this.options.icons.down), this._addClass(n, null, e.down)), this._super(t, e), void 0);\n    },\n    _setOptionDisabled: function _setOptionDisabled(t) {\n      this._super(t), this._toggleClass(this.uiSpinner, null, \"ui-state-disabled\", !!t), this.element.prop(\"disabled\", !!t), this.buttons.button(t ? \"disable\" : \"enable\");\n    },\n    _setOptions: r(function (t) {\n      this._super(t);\n    }),\n    _parse: function _parse(t) {\n      return \"string\" == typeof t && \"\" !== t && (t = window.Globalize && this.options.numberFormat ? Globalize.parseFloat(t, 10, this.options.culture) : +t), \"\" === t || isNaN(t) ? null : t;\n    },\n    _format: function _format(t) {\n      return \"\" === t ? \"\" : window.Globalize && this.options.numberFormat ? Globalize.format(t, this.options.numberFormat, this.options.culture) : t;\n    },\n    _refresh: function _refresh() {\n      this.element.attr({\n        \"aria-valuemin\": this.options.min,\n        \"aria-valuemax\": this.options.max,\n        \"aria-valuenow\": this._parse(this.element.val())\n      });\n    },\n    isValid: function isValid() {\n      var t = this.value();\n      return null === t ? !1 : t === this._adjustValue(t);\n    },\n    _value: function _value(t, e) {\n      var i;\n      \"\" !== t && (i = this._parse(t), null !== i && (e || (i = this._adjustValue(i)), t = this._format(i))), this.element.val(t), this._refresh();\n    },\n    _destroy: function _destroy() {\n      this.element.prop(\"disabled\", !1).removeAttr(\"autocomplete role aria-valuemin aria-valuemax aria-valuenow\"), this.uiSpinner.replaceWith(this.element);\n    },\n    stepUp: r(function (t) {\n      this._stepUp(t);\n    }),\n    _stepUp: function _stepUp(t) {\n      this._start() && (this._spin((t || 1) * this.options.step), this._stop());\n    },\n    stepDown: r(function (t) {\n      this._stepDown(t);\n    }),\n    _stepDown: function _stepDown(t) {\n      this._start() && (this._spin((t || 1) * -this.options.step), this._stop());\n    },\n    pageUp: r(function (t) {\n      this._stepUp((t || 1) * this.options.page);\n    }),\n    pageDown: r(function (t) {\n      this._stepDown((t || 1) * this.options.page);\n    }),\n    value: function value(t) {\n      return arguments.length ? (r(this._value).call(this, t), void 0) : this._parse(this.element.val());\n    },\n    widget: function widget() {\n      return this.uiSpinner;\n    }\n  }), t.uiBackCompat !== !1 && t.widget(\"ui.spinner\", t.ui.spinner, {\n    _enhance: function _enhance() {\n      this.uiSpinner = this.element.attr(\"autocomplete\", \"off\").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());\n    },\n    _uiSpinnerHtml: function _uiSpinnerHtml() {\n      return \"<span>\";\n    },\n    _buttonHtml: function _buttonHtml() {\n      return \"<a></a><a></a>\";\n    }\n  }), t.ui.spinner, t.widget(\"ui.tabs\", {\n    version: \"1.12.1\",\n    delay: 300,\n    options: {\n      active: null,\n      classes: {\n        \"ui-tabs\": \"ui-corner-all\",\n        \"ui-tabs-nav\": \"ui-corner-all\",\n        \"ui-tabs-panel\": \"ui-corner-bottom\",\n        \"ui-tabs-tab\": \"ui-corner-top\"\n      },\n      collapsible: !1,\n      event: \"click\",\n      heightStyle: \"content\",\n      hide: null,\n      show: null,\n      activate: null,\n      beforeActivate: null,\n      beforeLoad: null,\n      load: null\n    },\n    _isLocal: function () {\n      var t = /#.*$/;\n      return function (e) {\n        var i, s;\n        i = e.href.replace(t, \"\"), s = location.href.replace(t, \"\");\n        try {\n          i = decodeURIComponent(i);\n        } catch (n) {}\n        try {\n          s = decodeURIComponent(s);\n        } catch (n) {}\n        return e.hash.length > 1 && i === s;\n      };\n    }(),\n    _create: function _create() {\n      var e = this,\n        i = this.options;\n      this.running = !1, this._addClass(\"ui-tabs\", \"ui-widget ui-widget-content\"), this._toggleClass(\"ui-tabs-collapsible\", null, i.collapsible), this._processTabs(), i.active = this._initialActive(), t.isArray(i.disabled) && (i.disabled = t.unique(i.disabled.concat(t.map(this.tabs.filter(\".ui-state-disabled\"), function (t) {\n        return e.tabs.index(t);\n      }))).sort()), this.active = this.options.active !== !1 && this.anchors.length ? this._findActive(i.active) : t(), this._refresh(), this.active.length && this.load(i.active);\n    },\n    _initialActive: function _initialActive() {\n      var e = this.options.active,\n        i = this.options.collapsible,\n        s = location.hash.substring(1);\n      return null === e && (s && this.tabs.each(function (i, n) {\n        return t(n).attr(\"aria-controls\") === s ? (e = i, !1) : void 0;\n      }), null === e && (e = this.tabs.index(this.tabs.filter(\".ui-tabs-active\"))), (null === e || -1 === e) && (e = this.tabs.length ? 0 : !1)), e !== !1 && (e = this.tabs.index(this.tabs.eq(e)), -1 === e && (e = i ? !1 : 0)), !i && e === !1 && this.anchors.length && (e = 0), e;\n    },\n    _getCreateEventData: function _getCreateEventData() {\n      return {\n        tab: this.active,\n        panel: this.active.length ? this._getPanelForTab(this.active) : t()\n      };\n    },\n    _tabKeydown: function _tabKeydown(e) {\n      var i = t(t.ui.safeActiveElement(this.document[0])).closest(\"li\"),\n        s = this.tabs.index(i),\n        n = !0;\n      if (!this._handlePageNav(e)) {\n        switch (e.keyCode) {\n          case t.ui.keyCode.RIGHT:\n          case t.ui.keyCode.DOWN:\n            s++;\n            break;\n          case t.ui.keyCode.UP:\n          case t.ui.keyCode.LEFT:\n            n = !1, s--;\n            break;\n          case t.ui.keyCode.END:\n            s = this.anchors.length - 1;\n            break;\n          case t.ui.keyCode.HOME:\n            s = 0;\n            break;\n          case t.ui.keyCode.SPACE:\n            return e.preventDefault(), clearTimeout(this.activating), this._activate(s), void 0;\n          case t.ui.keyCode.ENTER:\n            return e.preventDefault(), clearTimeout(this.activating), this._activate(s === this.options.active ? !1 : s), void 0;\n          default:\n            return;\n        }\n        e.preventDefault(), clearTimeout(this.activating), s = this._focusNextTab(s, n), e.ctrlKey || e.metaKey || (i.attr(\"aria-selected\", \"false\"), this.tabs.eq(s).attr(\"aria-selected\", \"true\"), this.activating = this._delay(function () {\n          this.option(\"active\", s);\n        }, this.delay));\n      }\n    },\n    _panelKeydown: function _panelKeydown(e) {\n      this._handlePageNav(e) || e.ctrlKey && e.keyCode === t.ui.keyCode.UP && (e.preventDefault(), this.active.trigger(\"focus\"));\n    },\n    _handlePageNav: function _handlePageNav(e) {\n      return e.altKey && e.keyCode === t.ui.keyCode.PAGE_UP ? (this._activate(this._focusNextTab(this.options.active - 1, !1)), !0) : e.altKey && e.keyCode === t.ui.keyCode.PAGE_DOWN ? (this._activate(this._focusNextTab(this.options.active + 1, !0)), !0) : void 0;\n    },\n    _findNextTab: function _findNextTab(e, i) {\n      function s() {\n        return e > n && (e = 0), 0 > e && (e = n), e;\n      }\n      for (var n = this.tabs.length - 1; -1 !== t.inArray(s(), this.options.disabled);) e = i ? e + 1 : e - 1;\n      return e;\n    },\n    _focusNextTab: function _focusNextTab(t, e) {\n      return t = this._findNextTab(t, e), this.tabs.eq(t).trigger(\"focus\"), t;\n    },\n    _setOption: function _setOption(t, e) {\n      return \"active\" === t ? (this._activate(e), void 0) : (this._super(t, e), \"collapsible\" === t && (this._toggleClass(\"ui-tabs-collapsible\", null, e), e || this.options.active !== !1 || this._activate(0)), \"event\" === t && this._setupEvents(e), \"heightStyle\" === t && this._setupHeightStyle(e), void 0);\n    },\n    _sanitizeSelector: function _sanitizeSelector(t) {\n      return t ? t.replace(/[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\") : \"\";\n    },\n    refresh: function refresh() {\n      var e = this.options,\n        i = this.tablist.children(\":has(a[href])\");\n      e.disabled = t.map(i.filter(\".ui-state-disabled\"), function (t) {\n        return i.index(t);\n      }), this._processTabs(), e.active !== !1 && this.anchors.length ? this.active.length && !t.contains(this.tablist[0], this.active[0]) ? this.tabs.length === e.disabled.length ? (e.active = !1, this.active = t()) : this._activate(this._findNextTab(Math.max(0, e.active - 1), !1)) : e.active = this.tabs.index(this.active) : (e.active = !1, this.active = t()), this._refresh();\n    },\n    _refresh: function _refresh() {\n      this._setOptionDisabled(this.options.disabled), this._setupEvents(this.options.event), this._setupHeightStyle(this.options.heightStyle), this.tabs.not(this.active).attr({\n        \"aria-selected\": \"false\",\n        \"aria-expanded\": \"false\",\n        tabIndex: -1\n      }), this.panels.not(this._getPanelForTab(this.active)).hide().attr({\n        \"aria-hidden\": \"true\"\n      }), this.active.length ? (this.active.attr({\n        \"aria-selected\": \"true\",\n        \"aria-expanded\": \"true\",\n        tabIndex: 0\n      }), this._addClass(this.active, \"ui-tabs-active\", \"ui-state-active\"), this._getPanelForTab(this.active).show().attr({\n        \"aria-hidden\": \"false\"\n      })) : this.tabs.eq(0).attr(\"tabIndex\", 0);\n    },\n    _processTabs: function _processTabs() {\n      var e = this,\n        i = this.tabs,\n        s = this.anchors,\n        n = this.panels;\n      this.tablist = this._getList().attr(\"role\", \"tablist\"), this._addClass(this.tablist, \"ui-tabs-nav\", \"ui-helper-reset ui-helper-clearfix ui-widget-header\"), this.tablist.on(\"mousedown\" + this.eventNamespace, \"> li\", function (e) {\n        t(this).is(\".ui-state-disabled\") && e.preventDefault();\n      }).on(\"focus\" + this.eventNamespace, \".ui-tabs-anchor\", function () {\n        t(this).closest(\"li\").is(\".ui-state-disabled\") && this.blur();\n      }), this.tabs = this.tablist.find(\"> li:has(a[href])\").attr({\n        role: \"tab\",\n        tabIndex: -1\n      }), this._addClass(this.tabs, \"ui-tabs-tab\", \"ui-state-default\"), this.anchors = this.tabs.map(function () {\n        return t(\"a\", this)[0];\n      }).attr({\n        role: \"presentation\",\n        tabIndex: -1\n      }), this._addClass(this.anchors, \"ui-tabs-anchor\"), this.panels = t(), this.anchors.each(function (i, s) {\n        var n,\n          o,\n          a,\n          r = t(s).uniqueId().attr(\"id\"),\n          h = t(s).closest(\"li\"),\n          l = h.attr(\"aria-controls\");\n        e._isLocal(s) ? (n = s.hash, a = n.substring(1), o = e.element.find(e._sanitizeSelector(n))) : (a = h.attr(\"aria-controls\") || t({}).uniqueId()[0].id, n = \"#\" + a, o = e.element.find(n), o.length || (o = e._createPanel(a), o.insertAfter(e.panels[i - 1] || e.tablist)), o.attr(\"aria-live\", \"polite\")), o.length && (e.panels = e.panels.add(o)), l && h.data(\"ui-tabs-aria-controls\", l), h.attr({\n          \"aria-controls\": a,\n          \"aria-labelledby\": r\n        }), o.attr(\"aria-labelledby\", r);\n      }), this.panels.attr(\"role\", \"tabpanel\"), this._addClass(this.panels, \"ui-tabs-panel\", \"ui-widget-content\"), i && (this._off(i.not(this.tabs)), this._off(s.not(this.anchors)), this._off(n.not(this.panels)));\n    },\n    _getList: function _getList() {\n      return this.tablist || this.element.find(\"ol, ul\").eq(0);\n    },\n    _createPanel: function _createPanel(e) {\n      return t(\"<div>\").attr(\"id\", e).data(\"ui-tabs-destroy\", !0);\n    },\n    _setOptionDisabled: function _setOptionDisabled(e) {\n      var i, s, n;\n      for (t.isArray(e) && (e.length ? e.length === this.anchors.length && (e = !0) : e = !1), n = 0; s = this.tabs[n]; n++) i = t(s), e === !0 || -1 !== t.inArray(n, e) ? (i.attr(\"aria-disabled\", \"true\"), this._addClass(i, null, \"ui-state-disabled\")) : (i.removeAttr(\"aria-disabled\"), this._removeClass(i, null, \"ui-state-disabled\"));\n      this.options.disabled = e, this._toggleClass(this.widget(), this.widgetFullName + \"-disabled\", null, e === !0);\n    },\n    _setupEvents: function _setupEvents(e) {\n      var i = {};\n      e && t.each(e.split(\" \"), function (t, e) {\n        i[e] = \"_eventHandler\";\n      }), this._off(this.anchors.add(this.tabs).add(this.panels)), this._on(!0, this.anchors, {\n        click: function click(t) {\n          t.preventDefault();\n        }\n      }), this._on(this.anchors, i), this._on(this.tabs, {\n        keydown: \"_tabKeydown\"\n      }), this._on(this.panels, {\n        keydown: \"_panelKeydown\"\n      }), this._focusable(this.tabs), this._hoverable(this.tabs);\n    },\n    _setupHeightStyle: function _setupHeightStyle(e) {\n      var i,\n        s = this.element.parent();\n      \"fill\" === e ? (i = s.height(), i -= this.element.outerHeight() - this.element.height(), this.element.siblings(\":visible\").each(function () {\n        var e = t(this),\n          s = e.css(\"position\");\n        \"absolute\" !== s && \"fixed\" !== s && (i -= e.outerHeight(!0));\n      }), this.element.children().not(this.panels).each(function () {\n        i -= t(this).outerHeight(!0);\n      }), this.panels.each(function () {\n        t(this).height(Math.max(0, i - t(this).innerHeight() + t(this).height()));\n      }).css(\"overflow\", \"auto\")) : \"auto\" === e && (i = 0, this.panels.each(function () {\n        i = Math.max(i, t(this).height(\"\").height());\n      }).height(i));\n    },\n    _eventHandler: function _eventHandler(e) {\n      var i = this.options,\n        s = this.active,\n        n = t(e.currentTarget),\n        o = n.closest(\"li\"),\n        a = o[0] === s[0],\n        r = a && i.collapsible,\n        h = r ? t() : this._getPanelForTab(o),\n        l = s.length ? this._getPanelForTab(s) : t(),\n        c = {\n          oldTab: s,\n          oldPanel: l,\n          newTab: r ? t() : o,\n          newPanel: h\n        };\n      e.preventDefault(), o.hasClass(\"ui-state-disabled\") || o.hasClass(\"ui-tabs-loading\") || this.running || a && !i.collapsible || this._trigger(\"beforeActivate\", e, c) === !1 || (i.active = r ? !1 : this.tabs.index(o), this.active = a ? t() : o, this.xhr && this.xhr.abort(), l.length || h.length || t.error(\"jQuery UI Tabs: Mismatching fragment identifier.\"), h.length && this.load(this.tabs.index(o), e), this._toggle(e, c));\n    },\n    _toggle: function _toggle(e, i) {\n      function s() {\n        o.running = !1, o._trigger(\"activate\", e, i);\n      }\n      function n() {\n        o._addClass(i.newTab.closest(\"li\"), \"ui-tabs-active\", \"ui-state-active\"), a.length && o.options.show ? o._show(a, o.options.show, s) : (a.show(), s());\n      }\n      var o = this,\n        a = i.newPanel,\n        r = i.oldPanel;\n      this.running = !0, r.length && this.options.hide ? this._hide(r, this.options.hide, function () {\n        o._removeClass(i.oldTab.closest(\"li\"), \"ui-tabs-active\", \"ui-state-active\"), n();\n      }) : (this._removeClass(i.oldTab.closest(\"li\"), \"ui-tabs-active\", \"ui-state-active\"), r.hide(), n()), r.attr(\"aria-hidden\", \"true\"), i.oldTab.attr({\n        \"aria-selected\": \"false\",\n        \"aria-expanded\": \"false\"\n      }), a.length && r.length ? i.oldTab.attr(\"tabIndex\", -1) : a.length && this.tabs.filter(function () {\n        return 0 === t(this).attr(\"tabIndex\");\n      }).attr(\"tabIndex\", -1), a.attr(\"aria-hidden\", \"false\"), i.newTab.attr({\n        \"aria-selected\": \"true\",\n        \"aria-expanded\": \"true\",\n        tabIndex: 0\n      });\n    },\n    _activate: function _activate(e) {\n      var i,\n        s = this._findActive(e);\n      s[0] !== this.active[0] && (s.length || (s = this.active), i = s.find(\".ui-tabs-anchor\")[0], this._eventHandler({\n        target: i,\n        currentTarget: i,\n        preventDefault: t.noop\n      }));\n    },\n    _findActive: function _findActive(e) {\n      return e === !1 ? t() : this.tabs.eq(e);\n    },\n    _getIndex: function _getIndex(e) {\n      return \"string\" == typeof e && (e = this.anchors.index(this.anchors.filter(\"[href$='\" + t.ui.escapeSelector(e) + \"']\"))), e;\n    },\n    _destroy: function _destroy() {\n      this.xhr && this.xhr.abort(), this.tablist.removeAttr(\"role\").off(this.eventNamespace), this.anchors.removeAttr(\"role tabIndex\").removeUniqueId(), this.tabs.add(this.panels).each(function () {\n        t.data(this, \"ui-tabs-destroy\") ? t(this).remove() : t(this).removeAttr(\"role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded\");\n      }), this.tabs.each(function () {\n        var e = t(this),\n          i = e.data(\"ui-tabs-aria-controls\");\n        i ? e.attr(\"aria-controls\", i).removeData(\"ui-tabs-aria-controls\") : e.removeAttr(\"aria-controls\");\n      }), this.panels.show(), \"content\" !== this.options.heightStyle && this.panels.css(\"height\", \"\");\n    },\n    enable: function enable(e) {\n      var i = this.options.disabled;\n      i !== !1 && (void 0 === e ? i = !1 : (e = this._getIndex(e), i = t.isArray(i) ? t.map(i, function (t) {\n        return t !== e ? t : null;\n      }) : t.map(this.tabs, function (t, i) {\n        return i !== e ? i : null;\n      })), this._setOptionDisabled(i));\n    },\n    disable: function disable(e) {\n      var i = this.options.disabled;\n      if (i !== !0) {\n        if (void 0 === e) i = !0;else {\n          if (e = this._getIndex(e), -1 !== t.inArray(e, i)) return;\n          i = t.isArray(i) ? t.merge([e], i).sort() : [e];\n        }\n        this._setOptionDisabled(i);\n      }\n    },\n    load: function load(e, i) {\n      e = this._getIndex(e);\n      var s = this,\n        n = this.tabs.eq(e),\n        o = n.find(\".ui-tabs-anchor\"),\n        a = this._getPanelForTab(n),\n        r = {\n          tab: n,\n          panel: a\n        },\n        h = function h(t, e) {\n          \"abort\" === e && s.panels.stop(!1, !0), s._removeClass(n, \"ui-tabs-loading\"), a.removeAttr(\"aria-busy\"), t === s.xhr && delete s.xhr;\n        };\n      this._isLocal(o[0]) || (this.xhr = t.ajax(this._ajaxSettings(o, i, r)), this.xhr && \"canceled\" !== this.xhr.statusText && (this._addClass(n, \"ui-tabs-loading\"), a.attr(\"aria-busy\", \"true\"), this.xhr.done(function (t, e, n) {\n        setTimeout(function () {\n          a.html(t), s._trigger(\"load\", i, r), h(n, e);\n        }, 1);\n      }).fail(function (t, e) {\n        setTimeout(function () {\n          h(t, e);\n        }, 1);\n      })));\n    },\n    _ajaxSettings: function _ajaxSettings(e, i, s) {\n      var n = this;\n      return {\n        url: e.attr(\"href\").replace(/#.*$/, \"\"),\n        beforeSend: function beforeSend(e, o) {\n          return n._trigger(\"beforeLoad\", i, t.extend({\n            jqXHR: e,\n            ajaxSettings: o\n          }, s));\n        }\n      };\n    },\n    _getPanelForTab: function _getPanelForTab(e) {\n      var i = t(e).attr(\"aria-controls\");\n      return this.element.find(this._sanitizeSelector(\"#\" + i));\n    }\n  }), t.uiBackCompat !== !1 && t.widget(\"ui.tabs\", t.ui.tabs, {\n    _processTabs: function _processTabs() {\n      this._superApply(arguments), this._addClass(this.tabs, \"ui-tab\");\n    }\n  }), t.ui.tabs, t.widget(\"ui.tooltip\", {\n    version: \"1.12.1\",\n    options: {\n      classes: {\n        \"ui-tooltip\": \"ui-corner-all ui-widget-shadow\"\n      },\n      content: function content() {\n        var e = t(this).attr(\"title\") || \"\";\n        return t(\"<a>\").text(e).html();\n      },\n      hide: !0,\n      items: \"[title]:not([disabled])\",\n      position: {\n        my: \"left top+15\",\n        at: \"left bottom\",\n        collision: \"flipfit flip\"\n      },\n      show: !0,\n      track: !1,\n      close: null,\n      open: null\n    },\n    _addDescribedBy: function _addDescribedBy(e, i) {\n      var s = (e.attr(\"aria-describedby\") || \"\").split(/\\s+/);\n      s.push(i), e.data(\"ui-tooltip-id\", i).attr(\"aria-describedby\", t.trim(s.join(\" \")));\n    },\n    _removeDescribedBy: function _removeDescribedBy(e) {\n      var i = e.data(\"ui-tooltip-id\"),\n        s = (e.attr(\"aria-describedby\") || \"\").split(/\\s+/),\n        n = t.inArray(i, s);\n      -1 !== n && s.splice(n, 1), e.removeData(\"ui-tooltip-id\"), s = t.trim(s.join(\" \")), s ? e.attr(\"aria-describedby\", s) : e.removeAttr(\"aria-describedby\");\n    },\n    _create: function _create() {\n      this._on({\n        mouseover: \"open\",\n        focusin: \"open\"\n      }), this.tooltips = {}, this.parents = {}, this.liveRegion = t(\"<div>\").attr({\n        role: \"log\",\n        \"aria-live\": \"assertive\",\n        \"aria-relevant\": \"additions\"\n      }).appendTo(this.document[0].body), this._addClass(this.liveRegion, null, \"ui-helper-hidden-accessible\"), this.disabledTitles = t([]);\n    },\n    _setOption: function _setOption(e, i) {\n      var s = this;\n      this._super(e, i), \"content\" === e && t.each(this.tooltips, function (t, e) {\n        s._updateContent(e.element);\n      });\n    },\n    _setOptionDisabled: function _setOptionDisabled(t) {\n      this[t ? \"_disable\" : \"_enable\"]();\n    },\n    _disable: function _disable() {\n      var e = this;\n      t.each(this.tooltips, function (i, s) {\n        var n = t.Event(\"blur\");\n        n.target = n.currentTarget = s.element[0], e.close(n, !0);\n      }), this.disabledTitles = this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function () {\n        var e = t(this);\n        return e.is(\"[title]\") ? e.data(\"ui-tooltip-title\", e.attr(\"title\")).removeAttr(\"title\") : void 0;\n      }));\n    },\n    _enable: function _enable() {\n      this.disabledTitles.each(function () {\n        var e = t(this);\n        e.data(\"ui-tooltip-title\") && e.attr(\"title\", e.data(\"ui-tooltip-title\"));\n      }), this.disabledTitles = t([]);\n    },\n    open: function open(e) {\n      var i = this,\n        s = t(e ? e.target : this.element).closest(this.options.items);\n      s.length && !s.data(\"ui-tooltip-id\") && (s.attr(\"title\") && s.data(\"ui-tooltip-title\", s.attr(\"title\")), s.data(\"ui-tooltip-open\", !0), e && \"mouseover\" === e.type && s.parents().each(function () {\n        var e,\n          s = t(this);\n        s.data(\"ui-tooltip-open\") && (e = t.Event(\"blur\"), e.target = e.currentTarget = this, i.close(e, !0)), s.attr(\"title\") && (s.uniqueId(), i.parents[this.id] = {\n          element: this,\n          title: s.attr(\"title\")\n        }, s.attr(\"title\", \"\"));\n      }), this._registerCloseHandlers(e, s), this._updateContent(s, e));\n    },\n    _updateContent: function _updateContent(t, e) {\n      var i,\n        s = this.options.content,\n        n = this,\n        o = e ? e.type : null;\n      return \"string\" == typeof s || s.nodeType || s.jquery ? this._open(e, t, s) : (i = s.call(t[0], function (i) {\n        n._delay(function () {\n          t.data(\"ui-tooltip-open\") && (e && (e.type = o), this._open(e, t, i));\n        });\n      }), i && this._open(e, t, i), void 0);\n    },\n    _open: function _open(e, i, s) {\n      function n(t) {\n        l.of = t, a.is(\":hidden\") || a.position(l);\n      }\n      var o,\n        a,\n        r,\n        h,\n        l = t.extend({}, this.options.position);\n      if (s) {\n        if (o = this._find(i)) return o.tooltip.find(\".ui-tooltip-content\").html(s), void 0;\n        i.is(\"[title]\") && (e && \"mouseover\" === e.type ? i.attr(\"title\", \"\") : i.removeAttr(\"title\")), o = this._tooltip(i), a = o.tooltip, this._addDescribedBy(i, a.attr(\"id\")), a.find(\".ui-tooltip-content\").html(s), this.liveRegion.children().hide(), h = t(\"<div>\").html(a.find(\".ui-tooltip-content\").html()), h.removeAttr(\"name\").find(\"[name]\").removeAttr(\"name\"), h.removeAttr(\"id\").find(\"[id]\").removeAttr(\"id\"), h.appendTo(this.liveRegion), this.options.track && e && /^mouse/.test(e.type) ? (this._on(this.document, {\n          mousemove: n\n        }), n(e)) : a.position(t.extend({\n          of: i\n        }, this.options.position)), a.hide(), this._show(a, this.options.show), this.options.track && this.options.show && this.options.show.delay && (r = this.delayedShow = setInterval(function () {\n          a.is(\":visible\") && (n(l.of), clearInterval(r));\n        }, t.fx.interval)), this._trigger(\"open\", e, {\n          tooltip: a\n        });\n      }\n    },\n    _registerCloseHandlers: function _registerCloseHandlers(e, i) {\n      var s = {\n        keyup: function keyup(e) {\n          if (e.keyCode === t.ui.keyCode.ESCAPE) {\n            var s = t.Event(e);\n            s.currentTarget = i[0], this.close(s, !0);\n          }\n        }\n      };\n      i[0] !== this.element[0] && (s.remove = function () {\n        this._removeTooltip(this._find(i).tooltip);\n      }), e && \"mouseover\" !== e.type || (s.mouseleave = \"close\"), e && \"focusin\" !== e.type || (s.focusout = \"close\"), this._on(!0, i, s);\n    },\n    close: function close(e) {\n      var i,\n        s = this,\n        n = t(e ? e.currentTarget : this.element),\n        o = this._find(n);\n      return o ? (i = o.tooltip, o.closing || (clearInterval(this.delayedShow), n.data(\"ui-tooltip-title\") && !n.attr(\"title\") && n.attr(\"title\", n.data(\"ui-tooltip-title\")), this._removeDescribedBy(n), o.hiding = !0, i.stop(!0), this._hide(i, this.options.hide, function () {\n        s._removeTooltip(t(this));\n      }), n.removeData(\"ui-tooltip-open\"), this._off(n, \"mouseleave focusout keyup\"), n[0] !== this.element[0] && this._off(n, \"remove\"), this._off(this.document, \"mousemove\"), e && \"mouseleave\" === e.type && t.each(this.parents, function (e, i) {\n        t(i.element).attr(\"title\", i.title), delete s.parents[e];\n      }), o.closing = !0, this._trigger(\"close\", e, {\n        tooltip: i\n      }), o.hiding || (o.closing = !1)), void 0) : (n.removeData(\"ui-tooltip-open\"), void 0);\n    },\n    _tooltip: function _tooltip(e) {\n      var i = t(\"<div>\").attr(\"role\", \"tooltip\"),\n        s = t(\"<div>\").appendTo(i),\n        n = i.uniqueId().attr(\"id\");\n      return this._addClass(s, \"ui-tooltip-content\"), this._addClass(i, \"ui-tooltip\", \"ui-widget ui-widget-content\"), i.appendTo(this._appendTo(e)), this.tooltips[n] = {\n        element: e,\n        tooltip: i\n      };\n    },\n    _find: function _find(t) {\n      var e = t.data(\"ui-tooltip-id\");\n      return e ? this.tooltips[e] : null;\n    },\n    _removeTooltip: function _removeTooltip(t) {\n      t.remove(), delete this.tooltips[t.attr(\"id\")];\n    },\n    _appendTo: function _appendTo(t) {\n      var e = t.closest(\".ui-front, dialog\");\n      return e.length || (e = this.document[0].body), e;\n    },\n    _destroy: function _destroy() {\n      var e = this;\n      t.each(this.tooltips, function (i, s) {\n        var n = t.Event(\"blur\"),\n          o = s.element;\n        n.target = n.currentTarget = o[0], e.close(n, !0), t(\"#\" + i).remove(), o.data(\"ui-tooltip-title\") && (o.attr(\"title\") || o.attr(\"title\", o.data(\"ui-tooltip-title\")), o.removeData(\"ui-tooltip-title\"));\n      }), this.liveRegion.remove();\n    }\n  }), t.uiBackCompat !== !1 && t.widget(\"ui.tooltip\", t.ui.tooltip, {\n    options: {\n      tooltipClass: null\n    },\n    _tooltip: function _tooltip() {\n      var t = this._superApply(arguments);\n      return this.options.tooltipClass && t.tooltip.addClass(this.options.tooltipClass), t;\n    }\n  }), t.ui.tooltip;\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery-ui.min.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/jquery.auto-complete.js":
/*!*****************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/jquery.auto-complete.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/*\n\tjQuery autoComplete v1.0.7\n    Copyright (c) 2014 Simon Steinberger / Pixabay\n    GitHub: https://github.com/Pixabay/jQuery-autoComplete\n\tLicense: http://www.opensource.org/licenses/mit-license.php\n*/\n\n(function ($) {\n  $.fn.autoComplete = function (options) {\n    var o = $.extend({}, $.fn.autoComplete.defaults, options);\n\n    // public methods\n    if (typeof options == 'string') {\n      this.each(function () {\n        var that = $(this);\n        if (options == 'destroy') {\n          $(window).off('resize.autocomplete', that.updateSC);\n          that.off('blur.autocomplete focus.autocomplete keydown.autocomplete keyup.autocomplete');\n          if (that.data('autocomplete')) that.attr('autocomplete', that.data('autocomplete'));else that.removeAttr('autocomplete');\n          $(that.data('sc')).remove();\n          that.removeData('sc').removeData('autocomplete');\n        }\n      });\n      return this;\n    }\n    return this.each(function () {\n      var that = $(this);\n      // sc = 'suggestions container'\n      that.sc = $('<div class=\"autocomplete-suggestions ' + o.menuClass + '\"></div>');\n      that.data('sc', that.sc).data('autocomplete', that.attr('autocomplete'));\n      that.attr('autocomplete', 'off');\n      that.cache = {};\n      that.last_val = '';\n      that.updateSC = function (resize, next) {\n        that.sc.css({\n          top: that.offset().top + that.outerHeight(),\n          left: that.offset().left,\n          width: that.outerWidth()\n        });\n        if (!resize) {\n          that.sc.show();\n          if (!that.sc.maxHeight) that.sc.maxHeight = parseInt(that.sc.css('max-height'));\n          if (!that.sc.suggestionHeight) that.sc.suggestionHeight = $('.autocomplete-suggestion', that.sc).first().outerHeight();\n          if (that.sc.suggestionHeight) if (!next) that.sc.scrollTop(0);else {\n            var scrTop = that.sc.scrollTop(),\n              selTop = next.offset().top - that.sc.offset().top;\n            if (selTop + that.sc.suggestionHeight - that.sc.maxHeight > 0) that.sc.scrollTop(selTop + that.sc.suggestionHeight + scrTop - that.sc.maxHeight);else if (selTop < 0) that.sc.scrollTop(selTop + scrTop);\n          }\n        }\n      };\n      $(window).on('resize.autocomplete', that.updateSC);\n      that.sc.appendTo('body');\n      that.sc.on('mouseleave', '.autocomplete-suggestion', function () {\n        $('.autocomplete-suggestion.selected').removeClass('selected');\n      });\n      that.sc.on('mouseenter', '.autocomplete-suggestion', function () {\n        $('.autocomplete-suggestion.selected').removeClass('selected');\n        $(this).addClass('selected');\n      });\n      that.sc.on('mousedown click', '.autocomplete-suggestion', function (e) {\n        var item = $(this),\n          v = item.data('val');\n        if (v || item.hasClass('autocomplete-suggestion')) {\n          // else outside click\n          that.val(v);\n          o.onSelect(e, v, item);\n          that.sc.hide();\n        }\n        return false;\n      });\n      that.on('blur.autocomplete', function () {\n        var over_sb;\n        try {\n          over_sb = $('.autocomplete-suggestions:hover').length;\n        } catch (e) {\n          over_sb = 0;\n        } // IE7 fix :hover\n        if (!over_sb) {\n          that.last_val = that.val();\n          that.sc.hide();\n          setTimeout(function () {\n            that.sc.hide();\n          }, 350); // hide suggestions on fast input\n        } else if (!that.is(':focus')) setTimeout(function () {\n          that.focus();\n        }, 20);\n      });\n      if (!o.minChars) that.on('focus.autocomplete', function () {\n        that.last_val = '\\n';\n        that.trigger('keyup.autocomplete');\n      });\n      function suggest(data) {\n        var val = that.val();\n        that.cache[val] = data;\n        if (data.length && val.length >= o.minChars) {\n          var s = '';\n          for (var i = 0; i < data.length; i++) s += o.renderItem(data[i], val);\n          that.sc.html(s);\n          that.updateSC(0);\n        } else that.sc.hide();\n      }\n      that.on('keydown.autocomplete', function (e) {\n        // down (40), up (38)\n        if ((e.which == 40 || e.which == 38) && that.sc.html()) {\n          var next,\n            sel = $('.autocomplete-suggestion.selected', that.sc);\n          if (!sel.length) {\n            next = e.which == 40 ? $('.autocomplete-suggestion', that.sc).first() : $('.autocomplete-suggestion', that.sc).last();\n            that.val(next.addClass('selected').data('val'));\n          } else {\n            next = e.which == 40 ? sel.next('.autocomplete-suggestion') : sel.prev('.autocomplete-suggestion');\n            if (next.length) {\n              sel.removeClass('selected');\n              that.val(next.addClass('selected').data('val'));\n            } else {\n              sel.removeClass('selected');\n              that.val(that.last_val);\n              next = 0;\n            }\n          }\n          that.updateSC(0, next);\n          return false;\n        }\n        // esc\n        else if (e.which == 27) that.val(that.last_val).sc.hide();\n        // enter or tab\n        else if (e.which == 13 || e.which == 9) {\n          var sel = $('.autocomplete-suggestion.selected', that.sc);\n          if (sel.length && that.sc.is(':visible')) {\n            o.onSelect(e, sel.data('val'), sel);\n            setTimeout(function () {\n              that.sc.hide();\n            }, 20);\n          }\n        }\n      });\n      that.on('keyup.autocomplete', function (e) {\n        if (!~$.inArray(e.which, [13, 27, 35, 36, 37, 38, 39, 40])) {\n          var val = that.val();\n          if (val.length >= o.minChars) {\n            if (val != that.last_val) {\n              that.last_val = val;\n              clearTimeout(that.timer);\n              if (o.cache) {\n                if (val in that.cache) {\n                  suggest(that.cache[val]);\n                  return;\n                }\n                // no requests if previous suggestions were empty\n                for (var i = 1; i < val.length - o.minChars; i++) {\n                  var part = val.slice(0, val.length - i);\n                  if (part in that.cache && !that.cache[part].length) {\n                    suggest([]);\n                    return;\n                  }\n                }\n              }\n              that.timer = setTimeout(function () {\n                o.source(val, suggest);\n              }, o.delay);\n            }\n          } else {\n            that.last_val = val;\n            that.sc.hide();\n          }\n        }\n      });\n    });\n  };\n  $.fn.autoComplete.defaults = {\n    source: 0,\n    minChars: 3,\n    delay: 150,\n    cache: 1,\n    menuClass: '',\n    renderItem: function renderItem(item, search) {\n      // escape special characters\n      search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n      var re = new RegExp(\"(\" + search.split(' ').join('|') + \")\", \"gi\");\n      return '<div class=\"autocomplete-suggestion\" data-val=\"' + item + '\">' + item.replace(re, \"<b>$1</b>\") + '</div>';\n    },\n    onSelect: function onSelect(e, term, item) {}\n  };\n})(jQuery);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery.auto-complete.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/jquery.bootstrap-wizard.js":
/*!********************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/jquery.bootstrap-wizard.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/*!\n * jQuery twitter bootstrap wizard plugin\n * Examples and documentation at: http://github.com/VinceG/twitter-bootstrap-wizard\n * version 1.0\n * Requires jQuery v1.3.2 or later\n * Supports Bootstrap 2.2.x, 2.3.x, 3.0\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n * Authors: Vadim Vincent Gabriel (http://vadimg.com), Jason Gill (www.gilluminate.com)\n */\n;\n(function ($) {\n  var bootstrapWizardCreate = function bootstrapWizardCreate(element, options) {\n    var element = $(element);\n    var obj = this;\n\n    // selector skips any 'li' elements that do not contain a child with a tab data-toggle\n    var baseItemSelector = 'li:has([data-toggle=\"tab\"])';\n\n    // Merge options with defaults\n    var $settings = $.extend({}, $.fn.bootstrapWizard.defaults, options);\n    var $activeTab = null;\n    var $navigation = null;\n    this.rebindClick = function (selector, fn) {\n      selector.unbind('click', fn).bind('click', fn);\n    };\n    this.fixNavigationButtons = function () {\n      // Get the current active tab\n      if (!$activeTab.length) {\n        // Select first one\n        $navigation.find('a:first').tab('show');\n        $activeTab = $navigation.find(baseItemSelector + ':first');\n      }\n\n      // See if we're currently in the first/last then disable the previous and last buttons\n      $($settings.previousSelector, element).toggleClass('disabled', obj.firstIndex() >= obj.currentIndex());\n      $($settings.nextSelector, element).toggleClass('disabled', obj.currentIndex() >= obj.navigationLength());\n\n      // We are unbinding and rebinding to ensure single firing and no double-click errors\n      obj.rebindClick($($settings.nextSelector, element), obj.next);\n      obj.rebindClick($($settings.previousSelector, element), obj.previous);\n      obj.rebindClick($($settings.lastSelector, element), obj.last);\n      obj.rebindClick($($settings.firstSelector, element), obj.first);\n      if ($settings.onTabShow && typeof $settings.onTabShow === 'function' && $settings.onTabShow($activeTab, $navigation, obj.currentIndex()) === false) {\n        return false;\n      }\n    };\n    this.next = function (e) {\n      // If we clicked the last then dont activate this\n      if (element.hasClass('last')) {\n        return false;\n      }\n      if ($settings.onNext && typeof $settings.onNext === 'function' && $settings.onNext($activeTab, $navigation, obj.nextIndex()) === false) {\n        return false;\n      }\n\n      // Did we click the last button\n      $index = obj.nextIndex();\n      if ($index > obj.navigationLength()) {} else {\n        $navigation.find(baseItemSelector + ':eq(' + $index + ') a').tab('show');\n      }\n    };\n    this.previous = function (e) {\n      // If we clicked the first then dont activate this\n      if (element.hasClass('first')) {\n        return false;\n      }\n      if ($settings.onPrevious && typeof $settings.onPrevious === 'function' && $settings.onPrevious($activeTab, $navigation, obj.previousIndex()) === false) {\n        return false;\n      }\n      $index = obj.previousIndex();\n      if ($index < 0) {} else {\n        $navigation.find(baseItemSelector + ':eq(' + $index + ') a').tab('show');\n      }\n    };\n    this.first = function (e) {\n      if ($settings.onFirst && typeof $settings.onFirst === 'function' && $settings.onFirst($activeTab, $navigation, obj.firstIndex()) === false) {\n        return false;\n      }\n\n      // If the element is disabled then we won't do anything\n      if (element.hasClass('disabled')) {\n        return false;\n      }\n      $navigation.find(baseItemSelector + ':eq(0) a').tab('show');\n    };\n    this.last = function (e) {\n      if ($settings.onLast && typeof $settings.onLast === 'function' && $settings.onLast($activeTab, $navigation, obj.lastIndex()) === false) {\n        return false;\n      }\n\n      // If the element is disabled then we won't do anything\n      if (element.hasClass('disabled')) {\n        return false;\n      }\n      $navigation.find(baseItemSelector + ':eq(' + obj.navigationLength() + ') a').tab('show');\n    };\n    this.currentIndex = function () {\n      return $navigation.find(baseItemSelector).index($activeTab);\n    };\n    this.firstIndex = function () {\n      return 0;\n    };\n    this.lastIndex = function () {\n      return obj.navigationLength();\n    };\n    this.getIndex = function (e) {\n      return $navigation.find(baseItemSelector).index(e);\n    };\n    this.nextIndex = function () {\n      return $navigation.find(baseItemSelector).index($activeTab) + 1;\n    };\n    this.previousIndex = function () {\n      return $navigation.find(baseItemSelector).index($activeTab) - 1;\n    };\n    this.navigationLength = function () {\n      return $navigation.find(baseItemSelector).length - 1;\n    };\n    this.activeTab = function () {\n      return $activeTab;\n    };\n    this.nextTab = function () {\n      return $navigation.find(baseItemSelector + ':eq(' + (obj.currentIndex() + 1) + ')').length ? $navigation.find(baseItemSelector + ':eq(' + (obj.currentIndex() + 1) + ')') : null;\n    };\n    this.previousTab = function () {\n      if (obj.currentIndex() <= 0) {\n        return null;\n      }\n      return $navigation.find(baseItemSelector + ':eq(' + parseInt(obj.currentIndex() - 1) + ')');\n    };\n    this.show = function (index) {\n      if (isNaN(index)) {\n        return element.find(baseItemSelector + ' a[href=#' + index + ']').tab('show');\n      } else {\n        return element.find(baseItemSelector + ':eq(' + index + ') a').tab('show');\n      }\n    };\n    this.disable = function (index) {\n      $navigation.find(baseItemSelector + ':eq(' + index + ')').addClass('disabled');\n    };\n    this.enable = function (index) {\n      $navigation.find(baseItemSelector + ':eq(' + index + ')').removeClass('disabled');\n    };\n    this.hide = function (index) {\n      $navigation.find(baseItemSelector + ':eq(' + index + ')').hide();\n    };\n    this.display = function (index) {\n      $navigation.find(baseItemSelector + ':eq(' + index + ')').show();\n    };\n    this.remove = function (args) {\n      var $index = args[0];\n      var $removeTabPane = typeof args[1] != 'undefined' ? args[1] : false;\n      var $item = $navigation.find(baseItemSelector + ':eq(' + $index + ')');\n\n      // Remove the tab pane first if needed\n      if ($removeTabPane) {\n        var $href = $item.find('a').attr('href');\n        $($href).remove();\n      }\n\n      // Remove menu item\n      $item.remove();\n    };\n    var innerTabClick = function innerTabClick(e) {\n      // Get the index of the clicked tab\n      var clickedIndex = $navigation.find(baseItemSelector).index($(e.currentTarget).parent(baseItemSelector));\n      if ($settings.onTabClick && typeof $settings.onTabClick === 'function' && $settings.onTabClick($activeTab, $navigation, obj.currentIndex(), clickedIndex) === false) {\n        return false;\n      }\n    };\n    var innerTabShown = function innerTabShown(e) {\n      // use shown instead of show to help prevent double firing\n      $element = $(e.target).parent();\n      var nextTab = $navigation.find(baseItemSelector).index($element);\n\n      // If it's disabled then do not change\n      if ($element.hasClass('disabled')) {\n        return false;\n      }\n      if ($settings.onTabChange && typeof $settings.onTabChange === 'function' && $settings.onTabChange($activeTab, $navigation, obj.currentIndex(), nextTab) === false) {\n        return false;\n      }\n      $activeTab = $element; // activated tab\n      obj.fixNavigationButtons();\n    };\n    this.resetWizard = function () {\n      // remove the existing handlers\n      $('a[data-toggle=\"tab\"]', $navigation).off('click', innerTabClick);\n      $('a[data-toggle=\"tab\"]', $navigation).off('shown shown.bs.tab', innerTabShown);\n\n      // reset elements based on current state of the DOM\n      $navigation = element.find('ul:first', element);\n      $activeTab = $navigation.find(baseItemSelector + '.active', element);\n\n      // re-add handlers\n      $('a[data-toggle=\"tab\"]', $navigation).on('click', innerTabClick);\n      $('a[data-toggle=\"tab\"]', $navigation).on('shown shown.bs.tab', innerTabShown);\n      obj.fixNavigationButtons();\n    };\n    $navigation = element.find('ul:first', element);\n    $activeTab = $navigation.find(baseItemSelector + '.active', element);\n    if (!$navigation.hasClass($settings.tabClass)) {\n      $navigation.addClass($settings.tabClass);\n    }\n\n    // Load onInit\n    if ($settings.onInit && typeof $settings.onInit === 'function') {\n      $settings.onInit($activeTab, $navigation, 0);\n    }\n\n    // Load onShow\n    if ($settings.onShow && typeof $settings.onShow === 'function') {\n      $settings.onShow($activeTab, $navigation, obj.nextIndex());\n    }\n    $('a[data-toggle=\"tab\"]', $navigation).on('click', innerTabClick);\n\n    // attach to both shown and shown.bs.tab to support Bootstrap versions 2.3.2 and 3.0.0\n    $('a[data-toggle=\"tab\"]', $navigation).on('shown shown.bs.tab', innerTabShown);\n  };\n  $.fn.bootstrapWizard = function (options) {\n    //expose methods\n    if (typeof options == 'string') {\n      var args = Array.prototype.slice.call(arguments, 1);\n      if (args.length === 1) {\n        args.toString();\n      }\n      return this.data('bootstrapWizard')[options](args);\n    }\n    return this.each(function (index) {\n      var element = $(this);\n      // Return early if this element already has a plugin instance\n      if (element.data('bootstrapWizard')) return;\n      // pass options to plugin constructor\n      var wizard = new bootstrapWizardCreate(element, options);\n      // Store plugin object in this element's data\n      element.data('bootstrapWizard', wizard);\n      // and then trigger initial change\n      wizard.fixNavigationButtons();\n    });\n  };\n\n  // expose options\n  $.fn.bootstrapWizard.defaults = {\n    tabClass: 'nav nav-pills',\n    nextSelector: '.wizard li.next',\n    previousSelector: '.wizard li.previous',\n    firstSelector: '.wizard li.first',\n    lastSelector: '.wizard li.last',\n    onShow: null,\n    onInit: null,\n    onNext: null,\n    onPrevious: null,\n    onLast: null,\n    onFirst: null,\n    onTabChange: null,\n    onTabClick: null,\n    onTabShow: null\n  };\n})(jQuery);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery.bootstrap-wizard.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/jquery.select-bootstrap.js":
/*!********************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/jquery.select-bootstrap.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*!\n * Bootstrap-select v1.11.2 (http://silviomoreto.github.io/bootstrap-select)\n *\n * Copyright 2013-2016 bootstrap-select\n * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)\n */\n\n/*\n\n     Creative Tim Modifications\n      Line: 384-385 - we changed glyphicons with material-icons.\n     Line: 599 - we put tickIcon inside of span tag.\n\n*/\n\n(function (root, factory) {\n  if (true) {\n    // AMD. Register as an anonymous module unless amdModuleId is set\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (a0) {\n      return factory(a0);\n    }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n})(this, function (jQuery) {\n  (function ($) {\n    'use strict';\n\n    //<editor-fold desc=\"Shims\">\n    if (!String.prototype.includes) {\n      (function () {\n        'use strict';\n\n        // needed to support `apply`/`call` with `undefined`/`null`\n        var toString = {}.toString;\n        var defineProperty = function () {\n          // IE 8 only supports `Object.defineProperty` on DOM elements\n          try {\n            var object = {};\n            var $defineProperty = Object.defineProperty;\n            var result = $defineProperty(object, object, object) && $defineProperty;\n          } catch (error) {}\n          return result;\n        }();\n        var indexOf = ''.indexOf;\n        var includes = function includes(search) {\n          if (this == null) {\n            throw new TypeError();\n          }\n          var string = String(this);\n          if (search && toString.call(search) == '[object RegExp]') {\n            throw new TypeError();\n          }\n          var stringLength = string.length;\n          var searchString = String(search);\n          var searchLength = searchString.length;\n          var position = arguments.length > 1 ? arguments[1] : undefined;\n          // `ToInteger`\n          var pos = position ? Number(position) : 0;\n          if (pos != pos) {\n            // better `isNaN`\n            pos = 0;\n          }\n          var start = Math.min(Math.max(pos, 0), stringLength);\n          // Avoid the `indexOf` call if no match is possible\n          if (searchLength + start > stringLength) {\n            return false;\n          }\n          return indexOf.call(string, searchString, pos) != -1;\n        };\n        if (defineProperty) {\n          defineProperty(String.prototype, 'includes', {\n            'value': includes,\n            'configurable': true,\n            'writable': true\n          });\n        } else {\n          String.prototype.includes = includes;\n        }\n      })();\n    }\n    if (!String.prototype.startsWith) {\n      (function () {\n        'use strict';\n\n        // needed to support `apply`/`call` with `undefined`/`null`\n        var defineProperty = function () {\n          // IE 8 only supports `Object.defineProperty` on DOM elements\n          try {\n            var object = {};\n            var $defineProperty = Object.defineProperty;\n            var result = $defineProperty(object, object, object) && $defineProperty;\n          } catch (error) {}\n          return result;\n        }();\n        var toString = {}.toString;\n        var startsWith = function startsWith(search) {\n          if (this == null) {\n            throw new TypeError();\n          }\n          var string = String(this);\n          if (search && toString.call(search) == '[object RegExp]') {\n            throw new TypeError();\n          }\n          var stringLength = string.length;\n          var searchString = String(search);\n          var searchLength = searchString.length;\n          var position = arguments.length > 1 ? arguments[1] : undefined;\n          // `ToInteger`\n          var pos = position ? Number(position) : 0;\n          if (pos != pos) {\n            // better `isNaN`\n            pos = 0;\n          }\n          var start = Math.min(Math.max(pos, 0), stringLength);\n          // Avoid the `indexOf` call if no match is possible\n          if (searchLength + start > stringLength) {\n            return false;\n          }\n          var index = -1;\n          while (++index < searchLength) {\n            if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {\n              return false;\n            }\n          }\n          return true;\n        };\n        if (defineProperty) {\n          defineProperty(String.prototype, 'startsWith', {\n            'value': startsWith,\n            'configurable': true,\n            'writable': true\n          });\n        } else {\n          String.prototype.startsWith = startsWith;\n        }\n      })();\n    }\n    if (!Object.keys) {\n      Object.keys = function (o,\n      // object\n      k,\n      // key\n      r // result array\n      ) {\n        // initialize object and result\n        r = [];\n        // iterate over object keys\n        for (k in o)\n        // fill result array with non-prototypical keys\n        r.hasOwnProperty.call(o, k) && r.push(k);\n        // return result\n        return r;\n      };\n    }\n\n    // set data-selected on select element if the value has been programmatically selected\n    // prior to initialization of bootstrap-select\n    // * consider removing or replacing an alternative method *\n    var valHooks = {\n      useDefault: false,\n      _set: $.valHooks.select.set\n    };\n    $.valHooks.select.set = function (elem, value) {\n      if (value && !valHooks.useDefault) $(elem).data('selected', true);\n      return valHooks._set.apply(this, arguments);\n    };\n    var changed_arguments = null;\n    $.fn.triggerNative = function (eventName) {\n      var el = this[0],\n        event;\n      if (el.dispatchEvent) {\n        // for modern browsers & IE9+\n        if (typeof Event === 'function') {\n          // For modern browsers\n          event = new Event(eventName, {\n            bubbles: true\n          });\n        } else {\n          // For IE since it doesn't support Event constructor\n          event = document.createEvent('Event');\n          event.initEvent(eventName, true, false);\n        }\n        el.dispatchEvent(event);\n      } else if (el.fireEvent) {\n        // for IE8\n        event = document.createEventObject();\n        event.eventType = eventName;\n        el.fireEvent('on' + eventName, event);\n      } else {\n        // fall back to jQuery.trigger\n        this.trigger(eventName);\n      }\n    };\n    //</editor-fold>\n\n    // Case insensitive contains search\n    $.expr.pseudos.icontains = function (obj, index, meta) {\n      var $obj = $(obj);\n      var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase();\n      return haystack.includes(meta[3].toUpperCase());\n    };\n\n    // Case insensitive begins search\n    $.expr.pseudos.ibegins = function (obj, index, meta) {\n      var $obj = $(obj);\n      var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase();\n      return haystack.startsWith(meta[3].toUpperCase());\n    };\n\n    // Case and accent insensitive contains search\n    $.expr.pseudos.aicontains = function (obj, index, meta) {\n      var $obj = $(obj);\n      var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase();\n      return haystack.includes(meta[3].toUpperCase());\n    };\n\n    // Case and accent insensitive begins search\n    $.expr.pseudos.aibegins = function (obj, index, meta) {\n      var $obj = $(obj);\n      var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase();\n      return haystack.startsWith(meta[3].toUpperCase());\n    };\n\n    /**\n     * Remove all diatrics from the given text.\n     * @access private\n     * @param {String} text\n     * @returns {String}\n     */\n    function normalizeToBase(text) {\n      var rExps = [{\n        re: /[\\xC0-\\xC6]/g,\n        ch: \"A\"\n      }, {\n        re: /[\\xE0-\\xE6]/g,\n        ch: \"a\"\n      }, {\n        re: /[\\xC8-\\xCB]/g,\n        ch: \"E\"\n      }, {\n        re: /[\\xE8-\\xEB]/g,\n        ch: \"e\"\n      }, {\n        re: /[\\xCC-\\xCF]/g,\n        ch: \"I\"\n      }, {\n        re: /[\\xEC-\\xEF]/g,\n        ch: \"i\"\n      }, {\n        re: /[\\xD2-\\xD6]/g,\n        ch: \"O\"\n      }, {\n        re: /[\\xF2-\\xF6]/g,\n        ch: \"o\"\n      }, {\n        re: /[\\xD9-\\xDC]/g,\n        ch: \"U\"\n      }, {\n        re: /[\\xF9-\\xFC]/g,\n        ch: \"u\"\n      }, {\n        re: /[\\xC7-\\xE7]/g,\n        ch: \"c\"\n      }, {\n        re: /[\\xD1]/g,\n        ch: \"N\"\n      }, {\n        re: /[\\xF1]/g,\n        ch: \"n\"\n      }];\n      $.each(rExps, function () {\n        text = text.replace(this.re, this.ch);\n      });\n      return text;\n    }\n\n    // List of HTML entities for escaping.\n    var escapeMap = {\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      \"'\": '&#x27;',\n      '`': '&#x60;'\n    };\n    var unescapeMap = {\n      '&amp;': '&',\n      '&lt;': '<',\n      '&gt;': '>',\n      '&quot;': '\"',\n      '&#x27;': \"'\",\n      '&#x60;': '`'\n    };\n\n    // Functions for escaping and unescaping strings to/from HTML interpolation.\n    var createEscaper = function createEscaper(map) {\n      var escaper = function escaper(match) {\n        return map[match];\n      };\n      // Regexes for identifying a key that needs to be escaped.\n      var source = '(?:' + Object.keys(map).join('|') + ')';\n      var testRegexp = RegExp(source);\n      var replaceRegexp = RegExp(source, 'g');\n      return function (string) {\n        string = string == null ? '' : '' + string;\n        return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n      };\n    };\n    var htmlEscape = createEscaper(escapeMap);\n    var htmlUnescape = createEscaper(unescapeMap);\n    var Selectpicker = function Selectpicker(element, options, e) {\n      // bootstrap-select has been initialized - revert valHooks.select.set back to its original function\n      if (!valHooks.useDefault) {\n        $.valHooks.select.set = valHooks._set;\n        valHooks.useDefault = true;\n      }\n      if (e) {\n        e.stopPropagation();\n        e.preventDefault();\n      }\n      this.$element = $(element);\n      this.$newElement = null;\n      this.$button = null;\n      this.$menu = null;\n      this.$lis = null;\n      this.options = options;\n\n      // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a\n      // data-attribute)\n      if (this.options.title === null) {\n        this.options.title = this.$element.attr('title');\n      }\n\n      // Format window padding\n      var winPad = this.options.windowPadding;\n      if (typeof winPad === 'number') {\n        this.options.windowPadding = [winPad, winPad, winPad, winPad];\n      }\n\n      //Expose public methods\n      this.val = Selectpicker.prototype.val;\n      this.render = Selectpicker.prototype.render;\n      this.refresh = Selectpicker.prototype.refresh;\n      this.setStyle = Selectpicker.prototype.setStyle;\n      this.selectAll = Selectpicker.prototype.selectAll;\n      this.deselectAll = Selectpicker.prototype.deselectAll;\n      this.destroy = Selectpicker.prototype.destroy;\n      this.remove = Selectpicker.prototype.remove;\n      this.show = Selectpicker.prototype.show;\n      this.hide = Selectpicker.prototype.hide;\n      this.init();\n    };\n    Selectpicker.VERSION = '1.11.2';\n\n    // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.\n    Selectpicker.DEFAULTS = {\n      noneSelectedText: 'Nothing selected',\n      noneResultsText: 'No results matched {0}',\n      countSelectedText: function countSelectedText(numSelected, numTotal) {\n        return numSelected == 1 ? \"{0} item selected\" : \"{0} items selected\";\n      },\n      maxOptionsText: function maxOptionsText(numAll, numGroup) {\n        return [numAll == 1 ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', numGroup == 1 ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'];\n      },\n      selectAllText: 'Select All',\n      deselectAllText: 'Deselect All',\n      doneButton: false,\n      doneButtonText: 'Close',\n      multipleSeparator: ', ',\n      styleBase: 'btn',\n      style: 'btn-default',\n      size: 'auto',\n      title: null,\n      selectedTextFormat: 'values',\n      width: false,\n      container: false,\n      hideDisabled: false,\n      showSubtext: false,\n      showIcon: true,\n      showContent: true,\n      dropupAuto: true,\n      header: false,\n      liveSearch: false,\n      liveSearchPlaceholder: null,\n      liveSearchNormalize: false,\n      liveSearchStyle: 'contains',\n      actionsBox: false,\n      iconBase: 'material-icons',\n      tickIcon: 'done',\n      showTick: false,\n      template: {\n        caret: '<span class=\"caret\"></span>'\n      },\n      maxOptions: false,\n      mobile: false,\n      selectOnTab: false,\n      dropdownAlignRight: false,\n      windowPadding: 0\n    };\n    Selectpicker.prototype = {\n      constructor: Selectpicker,\n      init: function init() {\n        var that = this,\n          id = this.$element.attr('id');\n        this.$element.addClass('bs-select-hidden');\n\n        // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility\n        // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index=\"' + index + '\"]')\n        this.liObj = {};\n        this.multiple = this.$element.prop('multiple');\n        this.autofocus = this.$element.prop('autofocus');\n        this.$newElement = this.createView();\n        this.$element.after(this.$newElement).appendTo(this.$newElement);\n        this.$button = this.$newElement.children('button');\n        this.$menu = this.$newElement.children('.dropdown-menu');\n        this.$menuInner = this.$menu.children('.inner');\n        this.$searchbox = this.$menu.find('input');\n        this.$element.removeClass('bs-select-hidden');\n        if (this.options.dropdownAlignRight === true) this.$menu.addClass('dropdown-menu-right');\n        if (typeof id !== 'undefined') {\n          this.$button.attr('data-id', id);\n          $('label[for=\"' + id + '\"]').click(function (e) {\n            e.preventDefault();\n            that.$button.focus();\n          });\n        }\n        this.checkDisabled();\n        this.clickListener();\n        if (this.options.liveSearch) this.liveSearchListener();\n        this.render();\n        this.setStyle();\n        this.setWidth();\n        if (this.options.container) this.selectPosition();\n        this.$menu.data('this', this);\n        this.$newElement.data('this', this);\n        if (this.options.mobile) this.mobile();\n        this.$newElement.on({\n          'hide.bs.dropdown': function hideBsDropdown(e) {\n            that.$menuInner.attr('aria-expanded', false);\n            that.$element.trigger('hide.bs.select', e);\n          },\n          'hidden.bs.dropdown': function hiddenBsDropdown(e) {\n            that.$element.trigger('hidden.bs.select', e);\n          },\n          'show.bs.dropdown': function showBsDropdown(e) {\n            that.$menuInner.attr('aria-expanded', true);\n            that.$element.trigger('show.bs.select', e);\n          },\n          'shown.bs.dropdown': function shownBsDropdown(e) {\n            that.$element.trigger('shown.bs.select', e);\n          }\n        });\n        if (that.$element[0].hasAttribute('required')) {\n          this.$element.on('invalid', function () {\n            that.$button.addClass('bs-invalid').focus();\n            that.$element.on({\n              'focus.bs.select': function focusBsSelect() {\n                that.$button.focus();\n                that.$element.off('focus.bs.select');\n              },\n              'shown.bs.select': function shownBsSelect() {\n                that.$element.val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened\n                .off('shown.bs.select');\n              },\n              'rendered.bs.select': function renderedBsSelect() {\n                // if select is no longer invalid, remove the bs-invalid class\n                if (this.validity.valid) that.$button.removeClass('bs-invalid');\n                that.$element.off('rendered.bs.select');\n              }\n            });\n          });\n        }\n        setTimeout(function () {\n          that.$element.trigger('loaded.bs.select');\n        });\n      },\n      createDropdown: function createDropdown() {\n        // Options\n        // If we are multiple or showTick option is set, then add the show-tick class\n        var showTick = this.multiple || this.options.showTick ? ' show-tick' : '',\n          inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',\n          autofocus = this.autofocus ? ' autofocus' : '';\n        // Elements\n        var header = this.options.header ? '<div class=\"popover-title\"><button type=\"button\" class=\"close\" aria-hidden=\"true\">&times;</button>' + this.options.header + '</div>' : '';\n        var searchbox = this.options.liveSearch ? '<div class=\"bs-searchbox\">' + '<input type=\"text\" class=\"form-control\" autocomplete=\"off\"' + (null === this.options.liveSearchPlaceholder ? '' : ' placeholder=\"' + htmlEscape(this.options.liveSearchPlaceholder) + '\"') + ' role=\"textbox\" aria-label=\"Search\">' + '</div>' : '';\n        var actionsbox = this.multiple && this.options.actionsBox ? '<div class=\"bs-actionsbox\">' + '<div class=\"btn-group btn-group-sm btn-block\">' + '<button type=\"button\" class=\"actions-btn bs-select-all btn btn-default\">' + this.options.selectAllText + '</button>' + '<button type=\"button\" class=\"actions-btn bs-deselect-all btn btn-default\">' + this.options.deselectAllText + '</button>' + '</div>' + '</div>' : '';\n        var donebutton = this.multiple && this.options.doneButton ? '<div class=\"bs-donebutton\">' + '<div class=\"btn-group btn-block\">' + '<button type=\"button\" class=\"btn btn-sm btn-default\">' + this.options.doneButtonText + '</button>' + '</div>' + '</div>' : '';\n        var drop = '<div class=\"btn-group bootstrap-select' + showTick + inputGroup + '\">' + '<button type=\"button\" class=\"' + this.options.styleBase + ' dropdown-toggle\" data-toggle=\"dropdown\"' + autofocus + ' role=\"button\">' + '<span class=\"filter-option pull-left\"></span>&nbsp;' + '<span class=\"bs-caret\">' + this.options.template.caret + '</span>' + '</button>' + '<div class=\"dropdown-menu open\" role=\"combobox\">' + header + searchbox + actionsbox + '<ul class=\"dropdown-menu inner\" role=\"listbox\" aria-expanded=\"false\">' + '</ul>' + donebutton + '</div>' + '</div>';\n        return $(drop);\n      },\n      createView: function createView() {\n        var $drop = this.createDropdown(),\n          li = this.createLi();\n        $drop.find('ul')[0].innerHTML = li;\n        return $drop;\n      },\n      reloadLi: function reloadLi() {\n        // rebuild\n        var li = this.createLi();\n        this.$menuInner[0].innerHTML = li;\n      },\n      createLi: function createLi() {\n        var that = this,\n          _li = [],\n          optID = 0,\n          titleOption = document.createElement('option'),\n          liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct\n\n        // Helper functions\n        /**\n         * @param content\n         * @param [index]\n         * @param [classes]\n         * @param [optgroup]\n         * @returns {string}\n         */\n        var generateLI = function generateLI(content, index, classes, optgroup) {\n          return '<li' + (typeof classes !== 'undefined' & '' !== classes ? ' class=\"' + classes + '\"' : '') + (typeof index !== 'undefined' & null !== index ? ' data-original-index=\"' + index + '\"' : '') + (typeof optgroup !== 'undefined' & null !== optgroup ? 'data-optgroup=\"' + optgroup + '\"' : '') + '>' + content + '</li>';\n        };\n\n        /**\n         * @param text\n         * @param [classes]\n         * @param [inline]\n         * @param [tokens]\n         * @returns {string}\n         */\n        var generateA = function generateA(text, classes, inline, tokens) {\n          return '<a tabindex=\"0\"' + (typeof classes !== 'undefined' ? ' class=\"' + classes + '\"' : '') + (inline ? ' style=\"' + inline + '\"' : '') + (that.options.liveSearchNormalize ? ' data-normalized-text=\"' + normalizeToBase(htmlEscape($(text).html())) + '\"' : '') + (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens=\"' + tokens + '\"' : '') + ' role=\"option\">' + text + '<span class=\"' + that.options.iconBase + '  check-mark\"> ' + that.options.tickIcon + ' </span>' + '</a>';\n        };\n        if (this.options.title && !this.multiple) {\n          // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased\n          // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended\n          liIndex--;\n          if (!this.$element.find('.bs-title-option').length) {\n            // Use native JS to prepend option (faster)\n            var element = this.$element[0];\n            titleOption.className = 'bs-title-option';\n            titleOption.innerHTML = this.options.title;\n            titleOption.value = '';\n            element.insertBefore(titleOption, element.firstChild);\n            // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option.\n            // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs,\n            // if so, the select will have the data-selected attribute\n            var $opt = $(element.options[element.selectedIndex]);\n            if ($opt.attr('selected') === undefined && this.$element.data('selected') === undefined) {\n              titleOption.selected = true;\n            }\n          }\n        }\n        this.$element.find('option').each(function (index) {\n          var $this = $(this);\n          liIndex++;\n          if ($this.hasClass('bs-title-option')) return;\n\n          // Get the class and text for the option\n          var optionClass = this.className || '',\n            inline = this.style.cssText,\n            text = $this.data('content') ? $this.data('content') : $this.html(),\n            tokens = $this.data('tokens') ? $this.data('tokens') : null,\n            subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class=\"text-muted\">' + $this.data('subtext') + '</small>' : '',\n            icon = typeof $this.data('icon') !== 'undefined' ? '<span class=\"' + that.options.iconBase + ' ' + $this.data('icon') + '\"></span> ' : '',\n            $parent = $this.parent(),\n            isOptgroup = $parent[0].tagName === 'OPTGROUP',\n            isOptgroupDisabled = isOptgroup && $parent[0].disabled,\n            isDisabled = this.disabled || isOptgroupDisabled;\n          if (icon !== '' && isDisabled) {\n            icon = '<span>' + icon + '</span>';\n          }\n          if (that.options.hideDisabled && (isDisabled && !isOptgroup || isOptgroupDisabled)) {\n            liIndex--;\n            return;\n          }\n          if (!$this.data('content')) {\n            // Prepend any icon and append any subtext to the main text.\n            text = icon + '<span class=\"text\">' + text + subtext + '</span>';\n          }\n          if (isOptgroup && $this.data('divider') !== true) {\n            if (that.options.hideDisabled && isDisabled) {\n              if ($parent.data('allOptionsDisabled') === undefined) {\n                var $options = $parent.children();\n                $parent.data('allOptionsDisabled', $options.filter(':disabled').length === $options.length);\n              }\n              if ($parent.data('allOptionsDisabled')) {\n                liIndex--;\n                return;\n              }\n            }\n            var optGroupClass = ' ' + $parent[0].className || false;\n            if ($this.index() === 0) {\n              // Is it the first option of the optgroup?\n              optID += 1;\n\n              // Get the opt group label\n              var label = $parent[0].label,\n                labelSubtext = typeof $parent.data('subtext') !== 'undefined' ? '<small class=\"text-muted\">' + $parent.data('subtext') + '</small>' : '',\n                labelIcon = $parent.data('icon') ? '<span class=\"' + that.options.iconBase + ' ' + $parent.data('icon') + '\"></span> ' : '';\n              label = labelIcon + '<span class=\"text\">' + htmlEscape(label) + labelSubtext + '</span>';\n              if (index !== 0 && _li.length > 0) {\n                // Is it NOT the first option of the select && are there elements in the dropdown?\n                liIndex++;\n                _li.push(generateLI('', null, 'divider', optID + 'div'));\n              }\n              liIndex++;\n              _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));\n            }\n            if (that.options.hideDisabled && isDisabled) {\n              liIndex--;\n              return;\n            }\n            _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));\n          } else if ($this.data('divider') === true) {\n            _li.push(generateLI('', index, 'divider'));\n          } else if ($this.data('hidden') === true) {\n            _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));\n          } else {\n            var showDivider = this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP';\n\n            // if previous element is not an optgroup and hideDisabled is true\n            if (!showDivider && that.options.hideDisabled) {\n              // get previous elements\n              var $prev = $(this).prevAll();\n              for (var i = 0; i < $prev.length; i++) {\n                // find the first element in the previous elements that is an optgroup\n                if ($prev[i].tagName === 'OPTGROUP') {\n                  var optGroupDistance = 0;\n\n                  // loop through the options in between the current option and the optgroup\n                  // and check if they are hidden or disabled\n                  for (var d = 0; d < i; d++) {\n                    var prevOption = $prev[d];\n                    if (prevOption.disabled || $(prevOption).data('hidden') === true) optGroupDistance++;\n                  }\n\n                  // if all of the options between the current option and the optgroup are hidden or disabled, show the divider\n                  if (optGroupDistance === i) showDivider = true;\n                  break;\n                }\n              }\n            }\n            if (showDivider) {\n              liIndex++;\n              _li.push(generateLI('', null, 'divider', optID + 'div'));\n            }\n            _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));\n          }\n          that.liObj[index] = liIndex;\n        });\n\n        //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button\n        if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {\n          this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');\n        }\n        return _li.join('');\n      },\n      findLis: function findLis() {\n        if (this.$lis == null) this.$lis = this.$menu.find('li');\n        return this.$lis;\n      },\n      /**\n       * @param [updateLi] defaults to true\n       */\n      render: function render(updateLi) {\n        var that = this,\n          notDisabled;\n\n        //Update the LI to match the SELECT\n        if (updateLi !== false) {\n          this.$element.find('option').each(function (index) {\n            var $lis = that.findLis().eq(that.liObj[index]);\n            that.setDisabled(index, this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled, $lis);\n            that.setSelected(index, this.selected, $lis);\n          });\n        }\n        this.togglePlaceholder();\n        this.tabIndex();\n        var selectedItems = this.$element.find('option').map(function () {\n          if (this.selected) {\n            if (that.options.hideDisabled && (this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled)) return;\n            var $this = $(this),\n              icon = $this.data('icon') && that.options.showIcon ? '<i class=\"' + that.options.iconBase + ' ' + $this.data('icon') + '\"></i> ' : '',\n              subtext;\n            if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {\n              subtext = ' <small class=\"text-muted\">' + $this.data('subtext') + '</small>';\n            } else {\n              subtext = '';\n            }\n            if (typeof $this.attr('title') !== 'undefined') {\n              return $this.attr('title');\n            } else if ($this.data('content') && that.options.showContent) {\n              return $this.data('content').toString();\n            } else {\n              return icon + $this.html() + subtext;\n            }\n          }\n        }).toArray();\n\n        //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled\n        //Convert all the values into a comma delimited string\n        var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);\n\n        //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..\n        if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {\n          var max = this.options.selectedTextFormat.split('>');\n          if (max.length > 1 && selectedItems.length > max[1] || max.length == 1 && selectedItems.length >= 2) {\n            notDisabled = this.options.hideDisabled ? ', [disabled]' : '';\n            var totalCount = this.$element.find('option').not('[data-divider=\"true\"], [data-hidden=\"true\"]' + notDisabled).length,\n              tr8nText = typeof this.options.countSelectedText === 'function' ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;\n            title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());\n          }\n        }\n        if (this.options.title == undefined) {\n          this.options.title = this.$element.attr('title');\n        }\n        if (this.options.selectedTextFormat == 'static') {\n          title = this.options.title;\n        }\n\n        //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text\n        if (!title) {\n          title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;\n        }\n\n        //strip all HTML tags and trim the result, then unescape any escaped tags\n        this.$button.attr('title', htmlUnescape($.trim(title.replace(/<[^>]*>?/g, ''))));\n        this.$button.children('.filter-option').html(title);\n        this.$element.trigger('rendered.bs.select');\n      },\n      /**\n       * @param [style]\n       * @param [status]\n       */\n      setStyle: function setStyle(style, status) {\n        if (this.$element.attr('class')) {\n          this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\\[.*\\]/gi, ''));\n        }\n        var buttonClass = style ? style : this.options.style;\n        if (status == 'add') {\n          this.$button.addClass(buttonClass);\n        } else if (status == 'remove') {\n          this.$button.removeClass(buttonClass);\n        } else {\n          this.$button.removeClass(this.options.style);\n          this.$button.addClass(buttonClass);\n        }\n      },\n      liHeight: function liHeight(refresh) {\n        if (!refresh && (this.options.size === false || this.sizeInfo)) return;\n        var newElement = document.createElement('div'),\n          menu = document.createElement('div'),\n          menuInner = document.createElement('ul'),\n          divider = document.createElement('li'),\n          li = document.createElement('li'),\n          a = document.createElement('a'),\n          text = document.createElement('span'),\n          header = this.options.header && this.$menu.find('.popover-title').length > 0 ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,\n          search = this.options.liveSearch ? document.createElement('div') : null,\n          actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,\n          doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;\n        text.className = 'text';\n        newElement.className = this.$menu[0].parentNode.className + ' open';\n        menu.className = 'dropdown-menu open';\n        menuInner.className = 'dropdown-menu inner';\n        divider.className = 'divider';\n        text.appendChild(document.createTextNode('Inner text'));\n        a.appendChild(text);\n        li.appendChild(a);\n        menuInner.appendChild(li);\n        menuInner.appendChild(divider);\n        if (header) menu.appendChild(header);\n        if (search) {\n          // create a span instead of input as creating an input element is slower\n          var input = document.createElement('span');\n          search.className = 'bs-searchbox';\n          input.className = 'form-control';\n          search.appendChild(input);\n          menu.appendChild(search);\n        }\n        if (actions) menu.appendChild(actions);\n        menu.appendChild(menuInner);\n        if (doneButton) menu.appendChild(doneButton);\n        newElement.appendChild(menu);\n        document.body.appendChild(newElement);\n        var liHeight = a.offsetHeight,\n          headerHeight = header ? header.offsetHeight : 0,\n          searchHeight = search ? search.offsetHeight : 0,\n          actionsHeight = actions ? actions.offsetHeight : 0,\n          doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,\n          dividerHeight = $(divider).outerHeight(true),\n          // fall back to jQuery if getComputedStyle is not supported\n          menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false,\n          $menu = menuStyle ? null : $(menu),\n          menuPadding = {\n            vert: parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),\n            horiz: parseInt(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) + parseInt(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) + parseInt(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) + parseInt(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth'))\n          },\n          menuExtras = {\n            vert: menuPadding.vert + parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2,\n            horiz: menuPadding.horiz + parseInt(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) + parseInt(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2\n          };\n        document.body.removeChild(newElement);\n        this.sizeInfo = {\n          liHeight: liHeight,\n          headerHeight: headerHeight,\n          searchHeight: searchHeight,\n          actionsHeight: actionsHeight,\n          doneButtonHeight: doneButtonHeight,\n          dividerHeight: dividerHeight,\n          menuPadding: menuPadding,\n          menuExtras: menuExtras\n        };\n      },\n      setSize: function setSize() {\n        this.findLis();\n        this.liHeight();\n        if (this.options.header) this.$menu.css('padding-top', 0);\n        if (this.options.size === false) return;\n        var that = this,\n          $menu = this.$menu,\n          $menuInner = this.$menuInner,\n          $window = $(window),\n          selectHeight = this.$newElement[0].offsetHeight,\n          selectWidth = this.$newElement[0].offsetWidth,\n          liHeight = this.sizeInfo['liHeight'],\n          headerHeight = this.sizeInfo['headerHeight'],\n          searchHeight = this.sizeInfo['searchHeight'],\n          actionsHeight = this.sizeInfo['actionsHeight'],\n          doneButtonHeight = this.sizeInfo['doneButtonHeight'],\n          divHeight = this.sizeInfo['dividerHeight'],\n          menuPadding = this.sizeInfo['menuPadding'],\n          menuExtras = this.sizeInfo['menuExtras'],\n          notDisabled = this.options.hideDisabled ? '.disabled' : '',\n          menuHeight,\n          menuWidth,\n          getHeight,\n          getWidth,\n          selectOffsetTop,\n          selectOffsetBot,\n          selectOffsetLeft,\n          selectOffsetRight,\n          getPos = function getPos() {\n            var pos = that.$newElement.offset(),\n              $container = $(that.options.container),\n              containerPos;\n            if (that.options.container && !$container.is('body')) {\n              containerPos = $container.offset();\n              containerPos.top += parseInt($container.css('borderTopWidth'));\n              containerPos.left += parseInt($container.css('borderLeftWidth'));\n            } else {\n              containerPos = {\n                top: 0,\n                left: 0\n              };\n            }\n            var winPad = that.options.windowPadding;\n            selectOffsetTop = pos.top - containerPos.top - $window.scrollTop();\n            selectOffsetBot = $window.height() - selectOffsetTop - selectHeight - containerPos.top - winPad[2];\n            selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft();\n            selectOffsetRight = $window.width() - selectOffsetLeft - selectWidth - containerPos.left - winPad[1];\n            selectOffsetTop -= winPad[0];\n            selectOffsetLeft -= winPad[3];\n          };\n        getPos();\n        if (this.options.size === 'auto') {\n          var getSize = function getSize() {\n            var minHeight,\n              hasClass = function hasClass(className, include) {\n                return function (element) {\n                  if (include) {\n                    return element.classList ? element.classList.contains(className) : $(element).hasClass(className);\n                  } else {\n                    return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));\n                  }\n                };\n              },\n              lis = that.$menuInner[0].getElementsByTagName('li'),\n              lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),\n              optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');\n            getPos();\n            menuHeight = selectOffsetBot - menuExtras.vert;\n            menuWidth = selectOffsetRight - menuExtras.horiz;\n            if (that.options.container) {\n              if (!$menu.data('height')) $menu.data('height', $menu.height());\n              getHeight = $menu.data('height');\n              if (!$menu.data('width')) $menu.data('width', $menu.width());\n              getWidth = $menu.data('width');\n            } else {\n              getHeight = $menu.height();\n              getWidth = $menu.width();\n            }\n            if (that.options.dropupAuto) {\n              that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && menuHeight - menuExtras.vert < getHeight);\n            }\n            if (that.$newElement.hasClass('dropup')) {\n              menuHeight = selectOffsetTop - menuExtras.vert;\n            }\n            if (that.options.dropdownAlignRight === 'auto') {\n              $menu.toggleClass('dropdown-menu-right', selectOffsetLeft > selectOffsetRight && menuWidth - menuExtras.horiz < getWidth - selectWidth);\n            }\n            if (lisVisible.length + optGroup.length > 3) {\n              minHeight = liHeight * 3 + menuExtras.vert - 2;\n            } else {\n              minHeight = 0;\n            }\n            $menu.css({\n              'max-height': menuHeight + 'px',\n              'overflow': 'hidden',\n              'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'\n            });\n            $menuInner.css({\n              'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert + 'px',\n              'overflow-y': 'auto',\n              'min-height': Math.max(minHeight - menuPadding.vert, 0) + 'px'\n            });\n          };\n          getSize();\n          this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);\n          $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);\n        } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {\n          var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),\n            divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;\n          menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert;\n          if (that.options.container) {\n            if (!$menu.data('height')) $menu.data('height', $menu.height());\n            getHeight = $menu.data('height');\n          } else {\n            getHeight = $menu.height();\n          }\n          if (that.options.dropupAuto) {\n            //noinspection JSUnusedAssignment\n            this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && menuHeight - menuExtras.vert < getHeight);\n          }\n          $menu.css({\n            'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',\n            'overflow': 'hidden',\n            'min-height': ''\n          });\n          $menuInner.css({\n            'max-height': menuHeight - menuPadding.vert + 'px',\n            'overflow-y': 'auto',\n            'min-height': ''\n          });\n        }\n      },\n      setWidth: function setWidth() {\n        if (this.options.width === 'auto') {\n          this.$menu.css('min-width', '0');\n\n          // Get correct width if element is hidden\n          var $selectClone = this.$menu.parent().clone().appendTo('body'),\n            $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,\n            ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),\n            btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();\n          $selectClone.remove();\n          $selectClone2.remove();\n\n          // Set width to whatever's larger, button title or longest option\n          this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');\n        } else if (this.options.width === 'fit') {\n          // Remove inline min-width so width can be changed from 'auto'\n          this.$menu.css('min-width', '');\n          this.$newElement.css('width', '').addClass('fit-width');\n        } else if (this.options.width) {\n          // Remove inline min-width so width can be changed from 'auto'\n          this.$menu.css('min-width', '');\n          this.$newElement.css('width', this.options.width);\n        } else {\n          // Remove inline min-width/width so width can be changed\n          this.$menu.css('min-width', '');\n          this.$newElement.css('width', '');\n        }\n        // Remove fit-width class if width is changed programmatically\n        if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {\n          this.$newElement.removeClass('fit-width');\n        }\n      },\n      selectPosition: function selectPosition() {\n        this.$bsContainer = $('<div class=\"bs-container\" />');\n        var that = this,\n          $container = $(this.options.container),\n          pos,\n          containerPos,\n          actualHeight,\n          getPlacement = function getPlacement($element) {\n            that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));\n            pos = $element.offset();\n            if (!$container.is('body')) {\n              containerPos = $container.offset();\n              containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop();\n              containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft();\n            } else {\n              containerPos = {\n                top: 0,\n                left: 0\n              };\n            }\n            actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;\n            that.$bsContainer.css({\n              'top': pos.top - containerPos.top + actualHeight,\n              'left': pos.left - containerPos.left,\n              'width': $element[0].offsetWidth\n            });\n          };\n        this.$button.on('click', function () {\n          var $this = $(this);\n          if (that.isDisabled()) {\n            return;\n          }\n          getPlacement(that.$newElement);\n          that.$bsContainer.appendTo(that.options.container).toggleClass('open', !$this.hasClass('open')).append(that.$menu);\n        });\n        $(window).on('resize scroll', function () {\n          getPlacement(that.$newElement);\n        });\n        this.$element.on('hide.bs.select', function () {\n          that.$menu.data('height', that.$menu.height());\n          that.$bsContainer.detach();\n        });\n      },\n      /**\n       * @param {number} index - the index of the option that is being changed\n       * @param {boolean} selected - true if the option is being selected, false if being deselected\n       * @param {JQuery} $lis - the 'li' element that is being modified\n       */\n      setSelected: function setSelected(index, selected, $lis) {\n        if (!$lis) {\n          this.togglePlaceholder(); // check if setSelected is being called by changing the value of the select\n          $lis = this.findLis().eq(this.liObj[index]);\n        }\n        $lis.toggleClass('selected', selected).find('a').attr('aria-selected', selected);\n      },\n      /**\n       * @param {number} index - the index of the option that is being disabled\n       * @param {boolean} disabled - true if the option is being disabled, false if being enabled\n       * @param {JQuery} $lis - the 'li' element that is being modified\n       */\n      setDisabled: function setDisabled(index, disabled, $lis) {\n        if (!$lis) {\n          $lis = this.findLis().eq(this.liObj[index]);\n        }\n        if (disabled) {\n          $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1).attr('aria-disabled', true);\n        } else {\n          $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0).attr('aria-disabled', false);\n        }\n      },\n      isDisabled: function isDisabled() {\n        return this.$element[0].disabled;\n      },\n      checkDisabled: function checkDisabled() {\n        var that = this;\n        if (this.isDisabled()) {\n          this.$newElement.addClass('disabled');\n          this.$button.addClass('disabled').attr('tabindex', -1).attr('aria-disabled', true);\n        } else {\n          if (this.$button.hasClass('disabled')) {\n            this.$newElement.removeClass('disabled');\n            this.$button.removeClass('disabled').attr('aria-disabled', false);\n          }\n          if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {\n            this.$button.removeAttr('tabindex');\n          }\n        }\n        this.$button.click(function () {\n          return !that.isDisabled();\n        });\n      },\n      togglePlaceholder: function togglePlaceholder() {\n        var value = this.$element.val();\n        this.$button.toggleClass('bs-placeholder', value === null || value === '' || value.constructor === Array && value.length === 0);\n      },\n      tabIndex: function tabIndex() {\n        if (this.$element.data('tabindex') !== this.$element.attr('tabindex') && this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98') {\n          this.$element.data('tabindex', this.$element.attr('tabindex'));\n          this.$button.attr('tabindex', this.$element.data('tabindex'));\n        }\n        this.$element.attr('tabindex', -98);\n      },\n      clickListener: function clickListener() {\n        var that = this,\n          $document = $(document);\n        $document.data('spaceSelect', false);\n        this.$button.on('keyup', function (e) {\n          if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {\n            e.preventDefault();\n            $document.data('spaceSelect', false);\n          }\n        });\n        this.$button.on('click', function () {\n          that.setSize();\n        });\n        this.$element.on('shown.bs.select', function () {\n          if (!that.options.liveSearch && !that.multiple) {\n            that.$menuInner.find('.selected a').focus();\n          } else if (!that.multiple) {\n            var selectedIndex = that.liObj[that.$element[0].selectedIndex];\n            if (typeof selectedIndex !== 'number' || that.options.size === false) return;\n\n            // scroll to selected option\n            var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;\n            offset = offset - that.$menuInner[0].offsetHeight / 2 + that.sizeInfo.liHeight / 2;\n            that.$menuInner[0].scrollTop = offset;\n          }\n        });\n        this.$menuInner.on('click', 'li a', function (e) {\n          var $this = $(this),\n            clickedIndex = $this.parent().data('originalIndex'),\n            prevValue = that.$element.val(),\n            prevIndex = that.$element.prop('selectedIndex'),\n            triggerChange = true;\n\n          // Don't close on multi choice menu\n          if (that.multiple && that.options.maxOptions !== 1) {\n            e.stopPropagation();\n          }\n          e.preventDefault();\n\n          //Don't run if we have been disabled\n          if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {\n            var $options = that.$element.find('option'),\n              $option = $options.eq(clickedIndex),\n              state = $option.prop('selected'),\n              $optgroup = $option.parent('optgroup'),\n              maxOptions = that.options.maxOptions,\n              maxOptionsGrp = $optgroup.data('maxOptions') || false;\n            if (!that.multiple) {\n              // Deselect all others if not multi select box\n              $options.prop('selected', false);\n              $option.prop('selected', true);\n              that.$menuInner.find('.selected').removeClass('selected').find('a').attr('aria-selected', false);\n              that.setSelected(clickedIndex, true);\n            } else {\n              // Toggle the one we have chosen if we are multi select.\n              $option.prop('selected', !state);\n              that.setSelected(clickedIndex, !state);\n              $this.blur();\n              if (maxOptions !== false || maxOptionsGrp !== false) {\n                var maxReached = maxOptions < $options.filter(':selected').length,\n                  maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;\n                if (maxOptions && maxReached || maxOptionsGrp && maxReachedGrp) {\n                  if (maxOptions && maxOptions == 1) {\n                    $options.prop('selected', false);\n                    $option.prop('selected', true);\n                    that.$menuInner.find('.selected').removeClass('selected');\n                    that.setSelected(clickedIndex, true);\n                  } else if (maxOptionsGrp && maxOptionsGrp == 1) {\n                    $optgroup.find('option:selected').prop('selected', false);\n                    $option.prop('selected', true);\n                    var optgroupID = $this.parent().data('optgroup');\n                    that.$menuInner.find('[data-optgroup=\"' + optgroupID + '\"]').removeClass('selected');\n                    that.setSelected(clickedIndex, true);\n                  } else {\n                    var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText,\n                      maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText,\n                      maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),\n                      maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),\n                      $notify = $('<div class=\"notify\"></div>');\n                    // If {var} is set in array, replace it\n                    /** @deprecated */\n                    if (maxOptionsArr[2]) {\n                      maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);\n                      maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);\n                    }\n                    $option.prop('selected', false);\n                    that.$menu.append($notify);\n                    if (maxOptions && maxReached) {\n                      $notify.append($('<div>' + maxTxt + '</div>'));\n                      triggerChange = false;\n                      that.$element.trigger('maxReached.bs.select');\n                    }\n                    if (maxOptionsGrp && maxReachedGrp) {\n                      $notify.append($('<div>' + maxTxtGrp + '</div>'));\n                      triggerChange = false;\n                      that.$element.trigger('maxReachedGrp.bs.select');\n                    }\n                    setTimeout(function () {\n                      that.setSelected(clickedIndex, false);\n                    }, 10);\n                    $notify.delay(750).fadeOut(300, function () {\n                      $(this).remove();\n                    });\n                  }\n                }\n              }\n            }\n            if (!that.multiple || that.multiple && that.options.maxOptions === 1) {\n              that.$button.focus();\n            } else if (that.options.liveSearch) {\n              that.$searchbox.focus();\n            }\n\n            // Trigger select 'change'\n            if (triggerChange) {\n              if (prevValue != that.$element.val() && that.multiple || prevIndex != that.$element.prop('selectedIndex') && !that.multiple) {\n                // $option.prop('selected') is current option state (selected/unselected). state is previous option state.\n                changed_arguments = [clickedIndex, $option.prop('selected'), state];\n                that.$element.triggerNative('change');\n              }\n            }\n          }\n        });\n        this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {\n          if (e.currentTarget == this) {\n            e.preventDefault();\n            e.stopPropagation();\n            if (that.options.liveSearch && !$(e.target).hasClass('close')) {\n              that.$searchbox.focus();\n            } else {\n              that.$button.focus();\n            }\n          }\n        });\n        this.$menuInner.on('click', '.divider, .dropdown-header', function (e) {\n          e.preventDefault();\n          e.stopPropagation();\n          if (that.options.liveSearch) {\n            that.$searchbox.focus();\n          } else {\n            that.$button.focus();\n          }\n        });\n        this.$menu.on('click', '.popover-title .close', function () {\n          that.$button.click();\n        });\n        this.$searchbox.on('click', function (e) {\n          e.stopPropagation();\n        });\n        this.$menu.on('click', '.actions-btn', function (e) {\n          if (that.options.liveSearch) {\n            that.$searchbox.focus();\n          } else {\n            that.$button.focus();\n          }\n          e.preventDefault();\n          e.stopPropagation();\n          if ($(this).hasClass('bs-select-all')) {\n            that.selectAll();\n          } else {\n            that.deselectAll();\n          }\n        });\n        this.$element.change(function () {\n          that.render(false);\n          that.$element.trigger('changed.bs.select', changed_arguments);\n          changed_arguments = null;\n        });\n      },\n      liveSearchListener: function liveSearchListener() {\n        var that = this,\n          $no_results = $('<li class=\"no-results\"></li>');\n        this.$button.on('click.dropdown.data-api', function () {\n          that.$menuInner.find('.active').removeClass('active');\n          if (!!that.$searchbox.val()) {\n            that.$searchbox.val('');\n            that.$lis.not('.is-hidden').removeClass('hidden');\n            if (!!$no_results.parent().length) $no_results.remove();\n          }\n          if (!that.multiple) that.$menuInner.find('.selected').addClass('active');\n          setTimeout(function () {\n            that.$searchbox.focus();\n          }, 10);\n        });\n        this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {\n          e.stopPropagation();\n        });\n        this.$searchbox.on('input propertychange', function () {\n          that.$lis.not('.is-hidden').removeClass('hidden');\n          that.$lis.filter('.active').removeClass('active');\n          $no_results.remove();\n          if (that.$searchbox.val()) {\n            var $searchBase = that.$lis.not('.is-hidden, .divider, .dropdown-header'),\n              $hideItems;\n            if (that.options.liveSearchNormalize) {\n              $hideItems = $searchBase.not(':a' + that._searchStyle() + '(\"' + normalizeToBase(that.$searchbox.val()) + '\")');\n            } else {\n              $hideItems = $searchBase.not(':' + that._searchStyle() + '(\"' + that.$searchbox.val() + '\")');\n            }\n            if ($hideItems.length === $searchBase.length) {\n              $no_results.html(that.options.noneResultsText.replace('{0}', '\"' + htmlEscape(that.$searchbox.val()) + '\"'));\n              that.$menuInner.append($no_results);\n              that.$lis.addClass('hidden');\n            } else {\n              $hideItems.addClass('hidden');\n              var $lisVisible = that.$lis.not('.hidden'),\n                $foundDiv;\n\n              // hide divider if first or last visible, or if followed by another divider\n              $lisVisible.each(function (index) {\n                var $this = $(this);\n                if ($this.hasClass('divider')) {\n                  if ($foundDiv === undefined) {\n                    $this.addClass('hidden');\n                  } else {\n                    if ($foundDiv) $foundDiv.addClass('hidden');\n                    $foundDiv = $this;\n                  }\n                } else if ($this.hasClass('dropdown-header') && $lisVisible.eq(index + 1).data('optgroup') !== $this.data('optgroup')) {\n                  $this.addClass('hidden');\n                } else {\n                  $foundDiv = null;\n                }\n              });\n              if ($foundDiv) $foundDiv.addClass('hidden');\n              $searchBase.not('.hidden').first().addClass('active');\n            }\n          }\n        });\n      },\n      _searchStyle: function _searchStyle() {\n        var styles = {\n          begins: 'ibegins',\n          startsWith: 'ibegins'\n        };\n        return styles[this.options.liveSearchStyle] || 'icontains';\n      },\n      val: function val(value) {\n        if (typeof value !== 'undefined') {\n          this.$element.val(value);\n          this.render();\n          return this.$element;\n        } else {\n          return this.$element.val();\n        }\n      },\n      changeAll: function changeAll(status) {\n        if (!this.multiple) return;\n        if (typeof status === 'undefined') status = true;\n        this.findLis();\n        var $options = this.$element.find('option'),\n          $lisVisible = this.$lis.not('.divider, .dropdown-header, .disabled, .hidden'),\n          lisVisLen = $lisVisible.length,\n          selectedOptions = [];\n        if (status) {\n          if ($lisVisible.filter('.selected').length === $lisVisible.length) return;\n        } else {\n          if ($lisVisible.filter('.selected').length === 0) return;\n        }\n        $lisVisible.toggleClass('selected', status);\n        for (var i = 0; i < lisVisLen; i++) {\n          var origIndex = $lisVisible[i].getAttribute('data-original-index');\n          selectedOptions[selectedOptions.length] = $options.eq(origIndex)[0];\n        }\n        $(selectedOptions).prop('selected', status);\n        this.render(false);\n        this.togglePlaceholder();\n        this.$element.triggerNative('change');\n      },\n      selectAll: function selectAll() {\n        return this.changeAll(true);\n      },\n      deselectAll: function deselectAll() {\n        return this.changeAll(false);\n      },\n      toggle: function toggle(e) {\n        e = e || window.event;\n        if (e) e.stopPropagation();\n        this.$button.trigger('click');\n      },\n      keydown: function keydown(e) {\n        var $this = $(this),\n          $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),\n          $items,\n          that = $parent.data('this'),\n          index,\n          next,\n          first,\n          last,\n          prev,\n          nextPrev,\n          prevIndex,\n          isActive,\n          selector = ':not(.disabled, .hidden, .dropdown-header, .divider)',\n          keyCodeMap = {\n            32: ' ',\n            48: '0',\n            49: '1',\n            50: '2',\n            51: '3',\n            52: '4',\n            53: '5',\n            54: '6',\n            55: '7',\n            56: '8',\n            57: '9',\n            59: ';',\n            65: 'a',\n            66: 'b',\n            67: 'c',\n            68: 'd',\n            69: 'e',\n            70: 'f',\n            71: 'g',\n            72: 'h',\n            73: 'i',\n            74: 'j',\n            75: 'k',\n            76: 'l',\n            77: 'm',\n            78: 'n',\n            79: 'o',\n            80: 'p',\n            81: 'q',\n            82: 'r',\n            83: 's',\n            84: 't',\n            85: 'u',\n            86: 'v',\n            87: 'w',\n            88: 'x',\n            89: 'y',\n            90: 'z',\n            96: '0',\n            97: '1',\n            98: '2',\n            99: '3',\n            100: '4',\n            101: '5',\n            102: '6',\n            103: '7',\n            104: '8',\n            105: '9'\n          };\n        if (that.options.liveSearch) $parent = $this.parent().parent();\n        if (that.options.container) $parent = that.$menu;\n        $items = $('[role=\"listbox\"] li', $parent);\n        isActive = that.$newElement.hasClass('open');\n        if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode >= 65 && e.keyCode <= 90)) {\n          if (!that.options.container) {\n            that.setSize();\n            that.$menu.parent().addClass('open');\n            isActive = true;\n          } else {\n            that.$button.trigger('click');\n          }\n          that.$searchbox.focus();\n          return;\n        }\n        if (that.options.liveSearch) {\n          if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive) {\n            e.preventDefault();\n            e.stopPropagation();\n            that.$menuInner.click();\n            that.$button.focus();\n          }\n          // $items contains li elements when liveSearch is enabled\n          $items = $('[role=\"listbox\"] li' + selector, $parent);\n          if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {\n            if ($items.filter('.active').length === 0) {\n              $items = that.$menuInner.find('li');\n              if (that.options.liveSearchNormalize) {\n                $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');\n              } else {\n                $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')');\n              }\n            }\n          }\n        }\n        if (!$items.length) return;\n        if (/(38|40)/.test(e.keyCode.toString(10))) {\n          index = $items.index($items.find('a').filter(':focus').parent());\n          first = $items.filter(selector).first().index();\n          last = $items.filter(selector).last().index();\n          next = $items.eq(index).nextAll(selector).eq(0).index();\n          prev = $items.eq(index).prevAll(selector).eq(0).index();\n          nextPrev = $items.eq(next).prevAll(selector).eq(0).index();\n          if (that.options.liveSearch) {\n            $items.each(function (i) {\n              if (!$(this).hasClass('disabled')) {\n                $(this).data('index', i);\n              }\n            });\n            index = $items.index($items.filter('.active'));\n            first = $items.first().data('index');\n            last = $items.last().data('index');\n            next = $items.eq(index).nextAll().eq(0).data('index');\n            prev = $items.eq(index).prevAll().eq(0).data('index');\n            nextPrev = $items.eq(next).prevAll().eq(0).data('index');\n          }\n          prevIndex = $this.data('prevIndex');\n          if (e.keyCode == 38) {\n            if (that.options.liveSearch) index--;\n            if (index != nextPrev && index > prev) index = prev;\n            if (index < first) index = first;\n            if (index == prevIndex) index = last;\n          } else if (e.keyCode == 40) {\n            if (that.options.liveSearch) index++;\n            if (index == -1) index = 0;\n            if (index != nextPrev && index < next) index = next;\n            if (index > last) index = last;\n            if (index == prevIndex) index = first;\n          }\n          $this.data('prevIndex', index);\n          if (!that.options.liveSearch) {\n            $items.eq(index).children('a').focus();\n          } else {\n            e.preventDefault();\n            if (!$this.hasClass('dropdown-toggle')) {\n              $items.removeClass('active').eq(index).addClass('active').children('a').focus();\n              $this.focus();\n            }\n          }\n        } else if (!$this.is('input')) {\n          var keyIndex = [],\n            count,\n            prevKey;\n          $items.each(function () {\n            if (!$(this).hasClass('disabled')) {\n              if ($.trim($(this).children('a').text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {\n                keyIndex.push($(this).index());\n              }\n            }\n          });\n          count = $(document).data('keycount');\n          count++;\n          $(document).data('keycount', count);\n          prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);\n          if (prevKey != keyCodeMap[e.keyCode]) {\n            count = 1;\n            $(document).data('keycount', count);\n          } else if (count >= keyIndex.length) {\n            $(document).data('keycount', 0);\n            if (count > keyIndex.length) count = 1;\n          }\n          $items.eq(keyIndex[count - 1]).children('a').focus();\n        }\n\n        // Select focused option if \"Enter\", \"Spacebar\" or \"Tab\" (when selectOnTab is true) are pressed inside the menu.\n        if ((/(13|32)/.test(e.keyCode.toString(10)) || /(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab) && isActive) {\n          if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();\n          if (!that.options.liveSearch) {\n            var elem = $(':focus');\n            elem.click();\n            // Bring back focus for multiselects\n            elem.focus();\n            // Prevent screen from scrolling if the user hit the spacebar\n            e.preventDefault();\n            // Fixes spacebar selection of dropdown items in FF & IE\n            $(document).data('spaceSelect', true);\n          } else if (!/(32)/.test(e.keyCode.toString(10))) {\n            that.$menuInner.find('.active a').click();\n            $this.focus();\n          }\n          $(document).data('keycount', 0);\n        }\n        if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch) || /(27)/.test(e.keyCode.toString(10)) && !isActive) {\n          that.$menu.parent().removeClass('open');\n          if (that.options.container) that.$newElement.removeClass('open');\n          that.$button.focus();\n        }\n      },\n      mobile: function mobile() {\n        this.$element.addClass('mobile-device');\n      },\n      refresh: function refresh() {\n        this.$lis = null;\n        this.liObj = {};\n        this.reloadLi();\n        this.render();\n        this.checkDisabled();\n        this.liHeight(true);\n        this.setStyle();\n        this.setWidth();\n        if (this.$lis) this.$searchbox.trigger('propertychange');\n        this.$element.trigger('refreshed.bs.select');\n      },\n      hide: function hide() {\n        this.$newElement.hide();\n      },\n      show: function show() {\n        this.$newElement.show();\n      },\n      remove: function remove() {\n        this.$newElement.remove();\n        this.$element.remove();\n      },\n      destroy: function destroy() {\n        this.$newElement.before(this.$element).remove();\n        if (this.$bsContainer) {\n          this.$bsContainer.remove();\n        } else {\n          this.$menu.remove();\n        }\n        this.$element.off('.bs.select').removeData('selectpicker').removeClass('bs-select-hidden selectpicker');\n      }\n    };\n\n    // SELECTPICKER PLUGIN DEFINITION\n    // ==============================\n    function Plugin(option, event) {\n      // get the args of the outer function..\n      var args = arguments;\n      // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them\n      // to get lost/corrupted in android 2.3 and IE9 #715 #775\n      var _option = option,\n        _event = event;\n      [].shift.apply(args);\n      var value;\n      var chain = this.each(function () {\n        var $this = $(this);\n        if ($this.is('select')) {\n          var data = $this.data('selectpicker'),\n            options = _typeof(_option) == 'object' && _option;\n          if (!data) {\n            var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);\n            config.template = $.extend({}, Selectpicker.DEFAULTS.template, $.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}, $this.data().template, options.template);\n            $this.data('selectpicker', data = new Selectpicker(this, config, _event));\n          } else if (options) {\n            for (var i in options) {\n              if (options.hasOwnProperty(i)) {\n                data.options[i] = options[i];\n              }\n            }\n          }\n          if (typeof _option == 'string') {\n            if (data[_option] instanceof Function) {\n              value = data[_option].apply(data, args);\n            } else {\n              value = data.options[_option];\n            }\n          }\n        }\n      });\n      if (typeof value !== 'undefined') {\n        //noinspection JSUnusedAssignment\n        return value;\n      } else {\n        return chain;\n      }\n    }\n    var old = $.fn.selectpicker;\n    $.fn.selectpicker = Plugin;\n    $.fn.selectpicker.Constructor = Selectpicker;\n\n    // SELECTPICKER NO CONFLICT\n    // ========================\n    $.fn.selectpicker.noConflict = function () {\n      $.fn.selectpicker = old;\n      return this;\n    };\n    $(document).data('keycount', 0).on('keydown.bs.select', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input', Selectpicker.prototype.keydown).on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input', function (e) {\n      e.stopPropagation();\n    });\n\n    // SELECTPICKER DATA-API\n    // =====================\n    $(window).on('load.bs.select.data-api', function () {\n      $('.selectpicker').each(function () {\n        var $selectpicker = $(this);\n        Plugin.call($selectpicker, $selectpicker.data());\n      });\n    });\n  })(jQuery);\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery.select-bootstrap.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/jquery.tagsinput.js":
/*!*************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/jquery.tagsinput.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*\n * bootstrap-tagsinput v0.8.0\n *\n */\n\n(function ($) {\n  \"use strict\";\n\n  var defaultOptions = {\n    tagClass: function tagClass(item) {\n      return 'label label-info';\n    },\n    focusClass: 'focus',\n    itemValue: function itemValue(item) {\n      return item ? item.toString() : item;\n    },\n    itemText: function itemText(item) {\n      return this.itemValue(item);\n    },\n    itemTitle: function itemTitle(item) {\n      return null;\n    },\n    freeInput: true,\n    addOnBlur: true,\n    maxTags: undefined,\n    maxChars: undefined,\n    confirmKeys: [13, 44],\n    delimiter: ',',\n    delimiterRegex: null,\n    cancelConfirmKeysOnEmpty: false,\n    onTagExists: function onTagExists(item, $tag) {\n      $tag.hide().fadeIn();\n    },\n    trimValue: false,\n    allowDuplicates: false,\n    triggerChange: true\n  };\n\n  /**\n   * Constructor function\n   */\n  function TagsInput(element, options) {\n    this.isInit = true;\n    this.itemsArray = [];\n    this.$element = $(element);\n    this.$element.hide();\n    this.isSelect = element.tagName === 'SELECT';\n    this.multiple = this.isSelect && element.hasAttribute('multiple');\n    this.objectItems = options && options.itemValue;\n    this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';\n    this.inputSize = Math.max(1, this.placeholderText.length);\n    this.$container = $('<div class=\"bootstrap-tagsinput\"></div>');\n    this.$input = $('<input type=\"text\" placeholder=\"' + this.placeholderText + '\"/>').appendTo(this.$container);\n    this.$element.before(this.$container);\n    this.build(options);\n    this.isInit = false;\n  }\n  TagsInput.prototype = {\n    constructor: TagsInput,\n    /**\n     * Adds the given item as a new tag. Pass true to dontPushVal to prevent\n     * updating the elements val()\n     */\n    add: function add(item, dontPushVal, options) {\n      var self = this;\n      if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags) return;\n\n      // Ignore falsey values, except false\n      if (item !== false && !item) return;\n\n      // Trim value\n      if (typeof item === \"string\" && self.options.trimValue) {\n        item = $.trim(item);\n      }\n\n      // Throw an error when trying to add an object while the itemValue option was not set\n      if (_typeof(item) === \"object\" && !self.objectItems) throw \"Can't add objects when itemValue option is not set\";\n\n      // Ignore strings only containg whitespace\n      if (item.toString().match(/^\\s*$/)) return;\n\n      // If SELECT but not multiple, remove current tag\n      if (self.isSelect && !self.multiple && self.itemsArray.length > 0) self.remove(self.itemsArray[0]);\n      if (typeof item === \"string\" && this.$element[0].tagName === 'INPUT') {\n        var delimiter = self.options.delimiterRegex ? self.options.delimiterRegex : self.options.delimiter;\n        var items = item.split(delimiter);\n        if (items.length > 1) {\n          for (var i = 0; i < items.length; i++) {\n            this.add(items[i], true);\n          }\n          if (!dontPushVal) self.pushVal(self.options.triggerChange);\n          return;\n        }\n      }\n      var itemValue = self.options.itemValue(item),\n        itemText = self.options.itemText(item),\n        tagClass = self.options.tagClass(item),\n        itemTitle = self.options.itemTitle(item);\n\n      // Ignore items allready added\n      var existing = $.grep(self.itemsArray, function (item) {\n        return self.options.itemValue(item) === itemValue;\n      })[0];\n      if (existing && !self.options.allowDuplicates) {\n        // Invoke onTagExists\n        if (self.options.onTagExists) {\n          var $existingTag = $(\".tag\", self.$container).filter(function () {\n            return $(this).data(\"item\") === existing;\n          });\n          self.options.onTagExists(item, $existingTag);\n        }\n        return;\n      }\n\n      // if length greater than limit\n      if (self.items().toString().length + item.length + 1 > self.options.maxInputLength) return;\n\n      // raise beforeItemAdd arg\n      var beforeItemAddEvent = $.Event('beforeItemAdd', {\n        item: item,\n        cancel: false,\n        options: options\n      });\n      self.$element.trigger(beforeItemAddEvent);\n      if (beforeItemAddEvent.cancel) return;\n\n      // register item in internal array and map\n      self.itemsArray.push(item);\n\n      // add a tag element\n\n      var $tag = $('<span class=\"tag ' + htmlEncode(tagClass) + (itemTitle !== null ? '\" title=\"' + itemTitle : '') + '\">' + htmlEncode(itemText) + '<span data-role=\"remove\"></span></span>');\n      $tag.data('item', item);\n      self.findInputWrapper().before($tag);\n      $tag.after(' ');\n\n      // Check to see if the tag exists in its raw or uri-encoded form\n      var optionExists = $('option[value=\"' + encodeURIComponent(itemValue) + '\"]', self.$element).length || $('option[value=\"' + htmlEncode(itemValue) + '\"]', self.$element).length;\n\n      // add <option /> if item represents a value not present in one of the <select />'s options\n      if (self.isSelect && !optionExists) {\n        var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');\n        $option.data('item', item);\n        $option.attr('value', itemValue);\n        self.$element.append($option);\n      }\n      if (!dontPushVal) self.pushVal(self.options.triggerChange);\n\n      // Add class when reached maxTags\n      if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength) self.$container.addClass('bootstrap-tagsinput-max');\n\n      // If using typeahead, once the tag has been added, clear the typeahead value so it does not stick around in the input.\n      if ($('.typeahead, .twitter-typeahead', self.$container).length) {\n        self.$input.typeahead('val', '');\n      }\n      if (this.isInit) {\n        self.$element.trigger($.Event('itemAddedOnInit', {\n          item: item,\n          options: options\n        }));\n      } else {\n        self.$element.trigger($.Event('itemAdded', {\n          item: item,\n          options: options\n        }));\n      }\n    },\n    /**\n     * Removes the given item. Pass true to dontPushVal to prevent updating the\n     * elements val()\n     */\n    remove: function remove(item, dontPushVal, options) {\n      var self = this;\n      if (self.objectItems) {\n        if (_typeof(item) === \"object\") item = $.grep(self.itemsArray, function (other) {\n          return self.options.itemValue(other) == self.options.itemValue(item);\n        });else item = $.grep(self.itemsArray, function (other) {\n          return self.options.itemValue(other) == item;\n        });\n        item = item[item.length - 1];\n      }\n      if (item) {\n        var beforeItemRemoveEvent = $.Event('beforeItemRemove', {\n          item: item,\n          cancel: false,\n          options: options\n        });\n        self.$element.trigger(beforeItemRemoveEvent);\n        if (beforeItemRemoveEvent.cancel) return;\n        $('.tag', self.$container).filter(function () {\n          return $(this).data('item') === item;\n        }).remove();\n        $('option', self.$element).filter(function () {\n          return $(this).data('item') === item;\n        }).remove();\n        if ($.inArray(item, self.itemsArray) !== -1) self.itemsArray.splice($.inArray(item, self.itemsArray), 1);\n      }\n      if (!dontPushVal) self.pushVal(self.options.triggerChange);\n\n      // Remove class when reached maxTags\n      if (self.options.maxTags > self.itemsArray.length) self.$container.removeClass('bootstrap-tagsinput-max');\n      self.$element.trigger($.Event('itemRemoved', {\n        item: item,\n        options: options\n      }));\n    },\n    /**\n     * Removes all items\n     */\n    removeAll: function removeAll() {\n      var self = this;\n      $('.tag', self.$container).remove();\n      $('option', self.$element).remove();\n      while (self.itemsArray.length > 0) self.itemsArray.pop();\n      self.pushVal(self.options.triggerChange);\n    },\n    /**\n     * Refreshes the tags so they match the text/value of their corresponding\n     * item.\n     */\n    refresh: function refresh() {\n      var self = this;\n      $('.tag', self.$container).each(function () {\n        var $tag = $(this),\n          item = $tag.data('item'),\n          itemValue = self.options.itemValue(item),\n          itemText = self.options.itemText(item),\n          tagClass = self.options.tagClass(item);\n\n        // Update tag's class and inner text\n        $tag.attr('class', null);\n        $tag.addClass('tag ' + htmlEncode(tagClass));\n        $tag.contents().filter(function () {\n          return this.nodeType == 3;\n        })[0].nodeValue = htmlEncode(itemText);\n        if (self.isSelect) {\n          var option = $('option', self.$element).filter(function () {\n            return $(this).data('item') === item;\n          });\n          option.attr('value', itemValue);\n        }\n      });\n    },\n    /**\n     * Returns the items added as tags\n     */\n    items: function items() {\n      return this.itemsArray;\n    },\n    /**\n     * Assembly value by retrieving the value of each item, and set it on the\n     * element.\n     */\n    pushVal: function pushVal() {\n      var self = this,\n        val = $.map(self.items(), function (item) {\n          return self.options.itemValue(item).toString();\n        });\n      self.$element.val(val, true);\n      if (self.options.triggerChange) self.$element.trigger('change');\n    },\n    /**\n     * Initializes the tags input behaviour on the element\n     */\n    build: function build(options) {\n      var self = this;\n      self.options = $.extend({}, defaultOptions, options);\n      // When itemValue is set, freeInput should always be false\n      if (self.objectItems) self.options.freeInput = false;\n      makeOptionItemFunction(self.options, 'itemValue');\n      makeOptionItemFunction(self.options, 'itemText');\n      makeOptionFunction(self.options, 'tagClass');\n\n      // Typeahead Bootstrap version 2.3.2\n      if (self.options.typeahead) {\n        var typeahead = self.options.typeahead || {};\n        makeOptionFunction(typeahead, 'source');\n        self.$input.typeahead($.extend({}, typeahead, {\n          source: function source(query, process) {\n            function processItems(items) {\n              var texts = [];\n              for (var i = 0; i < items.length; i++) {\n                var text = self.options.itemText(items[i]);\n                map[text] = items[i];\n                texts.push(text);\n              }\n              process(texts);\n            }\n            this.map = {};\n            var map = this.map,\n              data = typeahead.source(query);\n            if ($.isFunction(data.success)) {\n              // support for Angular callbacks\n              data.success(processItems);\n            } else if ($.isFunction(data.then)) {\n              // support for Angular promises\n              data.then(processItems);\n            } else {\n              // support for functions and jquery promises\n              $.when(data).then(processItems);\n            }\n          },\n          updater: function updater(text) {\n            self.add(this.map[text]);\n            return this.map[text];\n          },\n          matcher: function matcher(text) {\n            return text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1;\n          },\n          sorter: function sorter(texts) {\n            return texts.sort();\n          },\n          highlighter: function highlighter(text) {\n            var regex = new RegExp('(' + this.query + ')', 'gi');\n            return text.replace(regex, \"<strong>$1</strong>\");\n          }\n        }));\n      }\n\n      // typeahead.js\n      if (self.options.typeaheadjs) {\n        // Determine if main configurations were passed or simply a dataset\n        var typeaheadjs = self.options.typeaheadjs;\n        if (!$.isArray(typeaheadjs)) {\n          typeaheadjs = [null, typeaheadjs];\n        }\n        var valueKey = typeaheadjs[1].valueKey; // We should test typeaheadjs.size >= 1\n        var f_datum = valueKey ? function (datum) {\n          return datum[valueKey];\n        } : function (datum) {\n          return datum;\n        };\n        $.fn.typeahead.apply(self.$input, typeaheadjs).on('typeahead:selected', $.proxy(function (obj, datum) {\n          self.add(f_datum(datum));\n          self.$input.typeahead('val', '');\n        }, self));\n      }\n      self.$container.on('click', $.proxy(function (event) {\n        if (!self.$element.attr('disabled')) {\n          self.$input.removeAttr('disabled');\n        }\n        self.$input.focus();\n      }, self));\n      if (self.options.addOnBlur && self.options.freeInput) {\n        self.$input.on('focusout', $.proxy(function (event) {\n          // HACK: only process on focusout when no typeahead opened, to\n          //       avoid adding the typeahead text as tag\n          if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {\n            self.add(self.$input.val());\n            self.$input.val('');\n          }\n        }, self));\n      }\n\n      // Toggle the 'focus' css class on the container when it has focus\n      self.$container.on({\n        focusin: function focusin() {\n          self.$container.addClass(self.options.focusClass);\n        },\n        focusout: function focusout() {\n          self.$container.removeClass(self.options.focusClass);\n        }\n      });\n      self.$container.on('keydown', 'input', $.proxy(function (event) {\n        var $input = $(event.target),\n          $inputWrapper = self.findInputWrapper();\n        if (self.$element.attr('disabled')) {\n          self.$input.attr('disabled', 'disabled');\n          return;\n        }\n        switch (event.which) {\n          // BACKSPACE\n          case 8:\n            if (doGetCaretPosition($input[0]) === 0) {\n              var prev = $inputWrapper.prev();\n              if (prev.length) {\n                self.remove(prev.data('item'));\n              }\n            }\n            break;\n\n          // DELETE\n          case 46:\n            if (doGetCaretPosition($input[0]) === 0) {\n              var next = $inputWrapper.next();\n              if (next.length) {\n                self.remove(next.data('item'));\n              }\n            }\n            break;\n\n          // LEFT ARROW\n          case 37:\n            // Try to move the input before the previous tag\n            var $prevTag = $inputWrapper.prev();\n            if ($input.val().length === 0 && $prevTag[0]) {\n              $prevTag.before($inputWrapper);\n              $input.focus();\n            }\n            break;\n          // RIGHT ARROW\n          case 39:\n            // Try to move the input after the next tag\n            var $nextTag = $inputWrapper.next();\n            if ($input.val().length === 0 && $nextTag[0]) {\n              $nextTag.after($inputWrapper);\n              $input.focus();\n            }\n            break;\n          default:\n          // ignore\n        }\n\n        // Reset internal input's size\n        var textLength = $input.val().length,\n          wordSpace = Math.ceil(textLength / 5),\n          size = textLength + wordSpace + 1;\n        $input.attr('size', Math.max(this.inputSize, $input.val().length));\n      }, self));\n      self.$container.on('keypress', 'input', $.proxy(function (event) {\n        var $input = $(event.target);\n        if (self.$element.attr('disabled')) {\n          self.$input.attr('disabled', 'disabled');\n          return;\n        }\n        var text = $input.val(),\n          maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;\n        if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {\n          // Only attempt to add a tag if there is data in the field\n          if (text.length !== 0) {\n            self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);\n            $input.val('');\n          }\n\n          // If the field is empty, let the event triggered fire as usual\n          if (self.options.cancelConfirmKeysOnEmpty === false) {\n            event.preventDefault();\n          }\n        }\n\n        // Reset internal input's size\n        var textLength = $input.val().length,\n          wordSpace = Math.ceil(textLength / 5),\n          size = textLength + wordSpace + 1;\n        $input.attr('size', Math.max(this.inputSize, $input.val().length));\n      }, self));\n\n      // Remove icon clicked\n      self.$container.on('click', '[data-role=remove]', $.proxy(function (event) {\n        if (self.$element.attr('disabled')) {\n          return;\n        }\n        self.remove($(event.target).closest('.tag').data('item'));\n      }, self));\n\n      // Only add existing value as tags when using strings as tags\n      if (self.options.itemValue === defaultOptions.itemValue) {\n        if (self.$element[0].tagName === 'INPUT') {\n          self.add(self.$element.val());\n        } else {\n          $('option', self.$element).each(function () {\n            self.add($(this).attr('value'), true);\n          });\n        }\n      }\n    },\n    /**\n     * Removes all tagsinput behaviour and unregsiter all event handlers\n     */\n    destroy: function destroy() {\n      var self = this;\n\n      // Unbind events\n      self.$container.off('keypress', 'input');\n      self.$container.off('click', '[role=remove]');\n      self.$container.remove();\n      self.$element.removeData('tagsinput');\n      self.$element.show();\n    },\n    /**\n     * Sets focus on the tagsinput\n     */\n    focus: function focus() {\n      this.$input.focus();\n    },\n    /**\n     * Returns the internal input element\n     */\n    input: function input() {\n      return this.$input;\n    },\n    /**\n     * Returns the element which is wrapped around the internal input. This\n     * is normally the $container, but typeahead.js moves the $input element.\n     */\n    findInputWrapper: function findInputWrapper() {\n      var elt = this.$input[0],\n        container = this.$container[0];\n      while (elt && elt.parentNode !== container) elt = elt.parentNode;\n      return $(elt);\n    }\n  };\n\n  /**\n   * Register JQuery plugin\n   */\n  $.fn.tagsinput = function (arg1, arg2, arg3) {\n    var results = [];\n    this.each(function () {\n      var tagsinput = $(this).data('tagsinput');\n      // Initialize a new tags input\n      if (!tagsinput) {\n        tagsinput = new TagsInput(this, arg1);\n        $(this).data('tagsinput', tagsinput);\n        results.push(tagsinput);\n        if (this.tagName === 'SELECT') {\n          $('option', $(this)).attr('selected', 'selected');\n        }\n\n        // Init tags from $(this).val()\n        $(this).val($(this).val());\n      } else if (!arg1 && !arg2) {\n        // tagsinput already exists\n        // no function, trying to init\n        results.push(tagsinput);\n      } else if (tagsinput[arg1] !== undefined) {\n        // Invoke function on existing tags input\n        if (tagsinput[arg1].length === 3 && arg3 !== undefined) {\n          var retVal = tagsinput[arg1](arg2, null, arg3);\n        } else {\n          var retVal = tagsinput[arg1](arg2);\n        }\n        if (retVal !== undefined) results.push(retVal);\n      }\n    });\n    if (typeof arg1 == 'string') {\n      // Return the results from the invoked function calls\n      return results.length > 1 ? results : results[0];\n    } else {\n      return results;\n    }\n  };\n  $.fn.tagsinput.Constructor = TagsInput;\n\n  /**\n   * Most options support both a string or number as well as a function as\n   * option value. This function makes sure that the option with the given\n   * key in the given options is wrapped in a function\n   */\n  function makeOptionItemFunction(options, key) {\n    if (typeof options[key] !== 'function') {\n      var propertyName = options[key];\n      options[key] = function (item) {\n        return item[propertyName];\n      };\n    }\n  }\n  function makeOptionFunction(options, key) {\n    if (typeof options[key] !== 'function') {\n      var value = options[key];\n      options[key] = function () {\n        return value;\n      };\n    }\n  }\n  /**\n   * HtmlEncodes the given value\n   */\n  var htmlEncodeContainer = $('<div />');\n  function htmlEncode(value) {\n    if (value) {\n      return htmlEncodeContainer.text(value).html();\n    } else {\n      return '';\n    }\n  }\n\n  /**\n   * Returns the position of the caret in the given input field\n   * http://flightschool.acylt.com/devnotes/caret-position-woes/\n   */\n  function doGetCaretPosition(oField) {\n    var iCaretPos = 0;\n    if (document.selection) {\n      oField.focus();\n      var oSel = document.selection.createRange();\n      oSel.moveStart('character', -oField.value.length);\n      iCaretPos = oSel.text.length;\n    } else if (oField.selectionStart || oField.selectionStart == '0') {\n      iCaretPos = oField.selectionStart;\n    }\n    return iCaretPos;\n  }\n\n  /**\n    * Returns boolean indicates whether user has pressed an expected key combination.\n    * @param object keyPressEvent: JavaScript event object, refer\n    *     http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n    * @param object lookupList: expected key combinations, as in:\n    *     [13, {which: 188, shiftKey: true}]\n    */\n  function keyCombinationInList(keyPressEvent, lookupList) {\n    var found = false;\n    $.each(lookupList, function (index, keyCombination) {\n      if (typeof keyCombination === 'number' && keyPressEvent.which === keyCombination) {\n        found = true;\n        return false;\n      }\n      if (keyPressEvent.which === keyCombination.which) {\n        var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,\n          shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,\n          ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;\n        if (alt && shift && ctrl) {\n          found = true;\n          return false;\n        }\n      }\n    });\n    return found;\n  }\n\n  /**\n   * Initialize tagsinput behaviour on inputs and selects which have\n   * data-role=tagsinput\n   */\n  $(function () {\n    $(\"input[data-role=tagsinput], select[multiple][data-role=tagsinput]\").tagsinput();\n  });\n})(window.jQuery);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery.tagsinput.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/material-dashboard.js":
/*!***************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/material-dashboard.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/*! =========================================================\n *\n * Material Dashboard PRO - V1.1.0\n *\n * =========================================================\n *\n * Copyright 2016 Creative Tim (http://www.creative-tim.com/product/material-dashboard-pro)\n *\n *\n *                       _oo0oo_\n *                      o8888888o\n *                      88\" . \"88\n *                      (| -_- |)\n *                      0\\  =  /0\n *                    ___/`---'\\___\n *                  .' \\|     |// '.\n *                 / \\|||  :  |||// \\\n *                / _||||| -:- |||||- \\\n *               |   | \\\\  -  /// |   |\n *               | \\_|  ''\\---/''  |_/ |\n *               \\  .-\\__  '-'  ___/-. /\n *             ___'. .'  /--.--\\  `. .'___\n *          .\"\" '<  `.___\\_<|>_/___.' >' \"\".\n *         | | :  `- \\`.;`\\ _ /`;.`/ - ` : | |\n *         \\  \\ `_.   \\_ __\\ /__ _/   .-` /  /\n *     =====`-.____`.___ \\_____/___.-`___.-'=====\n *                       `=---='\n *\n *     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n *\n *               Buddha Bless:  \"No Bugs\"\n *\n * ========================================================= */\n\n(function () {\n  isWindows = navigator.platform.indexOf('Win') > -1 ? true : false;\n  if (isWindows && !$('body').hasClass('sidebar-mini')) {\n    // if we are on windows OS we activate the perfectScrollbar function\n    $('.sidebar .sidebar-wrapper, .main-panel').perfectScrollbar();\n    $('html').addClass('perfect-scrollbar-on');\n  } else {\n    $('html').addClass('perfect-scrollbar-off');\n  }\n})();\nvar $layer, $navbar, $navbar_form, $nav_content, $sidebar, $sidebar_nav, $sidebar_wrapper, $toggle, Chartist, content_buff, hover_count, image_src, main_panel_height, md, mobile_menu_content, nav_content, sidebar_container, window_width, isWindows;\nvar breakCards = true;\nvar searchVisible = 0;\nvar transparent = true;\nvar transparentDemo = true;\nvar fixedTop = false;\nvar mobile_menu_visible = 0,\n  mobile_menu_initialized = false,\n  toggle_initialized = false,\n  bootstrap_nav_initialized = false;\nvar seq = 0,\n  delays = 80,\n  durations = 500;\nvar seq2 = 0,\n  delays2 = 80,\n  durations2 = 500;\n$(document).ready(function () {\n  $sidebar = $('.sidebar');\n  $.material.init();\n\n  // We put modals out of wrapper to working properly\n  $('.modal').appendTo(\"body\");\n  md.initSidebarsCheck();\n  if ($('body').hasClass('sidebar-mini')) {\n    md.misc.sidebar_mini_active = true;\n  }\n  window_width = $(window).width();\n\n  // check if there is an image set for the sidebar's background\n  md.checkSidebarImage();\n  md.initMinimizeSidebar();\n\n  //    Activate bootstrap-select\n  if ($(\".selectpicker\").length != 0) {\n    $(\".selectpicker\").selectpicker();\n  }\n\n  //  Activate the tooltips\n  $('[rel=\"tooltip\"]').tooltip();\n\n  //removed class label and label-color from tag span and replaced with data-color\n  var tagClass = $('.tagsinput').data('color');\n  $('.tagsinput').tagsinput({\n    tagClass: ' tag-' + tagClass + ' '\n  });\n\n  //    Activate bootstrap-select\n  $(\".select\").dropdown({\n    \"dropdownClass\": \"dropdown-menu\",\n    \"optionClass\": \"\"\n  });\n  $('.form-control').on(\"focus\", function () {\n    $(this).parent('.input-group').addClass(\"input-group-focus\");\n  }).on(\"blur\", function () {\n    $(this).parent(\".input-group\").removeClass(\"input-group-focus\");\n  });\n  if (breakCards == true) {\n    // We break the cards headers if there is too much stress on them :-)\n    $('[data-header-animation=\"true\"]').each(function () {\n      var $fix_button = $(this);\n      var $card = $(this).parent('.card');\n      $card.find('.fix-broken-card').click(function () {\n        console.log(this);\n        var $header = $(this).parent().parent().siblings('.card-header, .card-image');\n        $header.removeClass('hinge').addClass('fadeInDown');\n        $card.attr('data-count', 0);\n        setTimeout(function () {\n          $header.removeClass('fadeInDown animate');\n        }, 480);\n      });\n      $card.mouseenter(function () {\n        var $this = $(this);\n        hover_count = parseInt($this.attr('data-count'), 10) + 1 || 0;\n        $this.attr(\"data-count\", hover_count);\n        if (hover_count >= 20) {\n          $(this).children('.card-header, .card-image').addClass('hinge animated');\n        }\n      });\n    });\n  }\n});\n\n// activate collapse right menu when the windows is resized\n$(window).resize(function () {\n  md.initSidebarsCheck();\n\n  // reset the seq for charts drawing animations\n  seq = seq2 = 0;\n});\nmd = {\n  misc: {\n    navbar_menu_visible: 0,\n    active_collapse: true,\n    disabled_collapse_init: 0\n  },\n  checkSidebarImage: function checkSidebarImage() {\n    $sidebar = $('.sidebar');\n    image_src = $sidebar.data('image');\n    if (image_src !== undefined) {\n      sidebar_container = '<div class=\"sidebar-background\" style=\"background-image: url(' + image_src + ') \"/>';\n      $sidebar.append(sidebar_container);\n    }\n  },\n  initSliders: function initSliders() {\n    // Sliders for demo purpose\n    $('#sliderRegular').noUiSlider({\n      start: 40,\n      connect: \"lower\",\n      range: {\n        min: 0,\n        max: 100\n      }\n    });\n    $('#sliderDouble').noUiSlider({\n      start: [20, 60],\n      connect: true,\n      range: {\n        min: 0,\n        max: 100\n      }\n    });\n  },\n  initSidebarsCheck: function initSidebarsCheck() {\n    if ($(window).width() <= 991) {\n      if ($sidebar.length != 0) {\n        md.initRightMenu();\n      } else {\n        md.initBootstrapNavbarMenu();\n      }\n    }\n  },\n  initMinimizeSidebar: function initMinimizeSidebar() {\n    // when we are on a Desktop Screen and the collapse is triggered we check if the sidebar mini is active or not. If it is active then we don't let the collapse to show the elements because the elements from the collapse are showing on the hover state over the icons in sidebar mini, not on the click.\n    $('.sidebar .collapse').on('show.bs.collapse', function () {\n      if ($(window).width() > 991 && md.misc.sidebar_mini_active == true) {\n        return false;\n      } else {\n        return true;\n      }\n    });\n    $('#minimizeSidebar').click(function () {\n      var $btn = $(this);\n      if (md.misc.sidebar_mini_active == true) {\n        $('body').removeClass('sidebar-mini');\n        md.misc.sidebar_mini_active = false;\n        if (isWindows) {\n          $('.sidebar .sidebar-wrapper, .main-panel').perfectScrollbar();\n        }\n      } else {\n        $('.sidebar .collapse').collapse('hide').on('hidden.bs.collapse', function () {\n          $(this).css('height', 'auto');\n        });\n        if (isWindows) {\n          $('.sidebar .sidebar-wrapper, .main-panel').perfectScrollbar('destroy');\n        }\n        setTimeout(function () {\n          $('body').addClass('sidebar-mini');\n          $('.sidebar .collapse').css('height', 'auto');\n          md.misc.sidebar_mini_active = true;\n        }, 300);\n      }\n\n      // we simulate the window Resize so the charts will get updated in realtime.\n      var simulateWindowResize = setInterval(function () {\n        window.dispatchEvent(new Event('resize'));\n      }, 180);\n\n      // we stop the simulation of Window Resize after the animations are completed\n      setTimeout(function () {\n        clearInterval(simulateWindowResize);\n      }, 1000);\n    });\n  },\n  checkScrollForTransparentNavbar: debounce(function () {\n    if ($(document).scrollTop() > 260) {\n      if (transparent) {\n        transparent = false;\n        $('.navbar-color-on-scroll').removeClass('navbar-transparent');\n      }\n    } else {\n      if (!transparent) {\n        transparent = true;\n        $('.navbar-color-on-scroll').addClass('navbar-transparent');\n      }\n    }\n  }, 17),\n  initRightMenu: debounce(function () {\n    $sidebar_wrapper = $('.sidebar-wrapper');\n    if (!mobile_menu_initialized) {\n      $navbar = $('nav').find('.navbar-collapse').first().clone(true);\n      nav_content = '';\n      mobile_menu_content = '';\n      $navbar.children('ul').each(function () {\n        content_buff = $(this).html();\n        nav_content = nav_content + content_buff;\n      });\n      nav_content = '<ul class=\"nav nav-mobile-menu\">' + nav_content + '</ul>';\n      $navbar_form = $('nav').find('.navbar-form').clone(true);\n      $sidebar_nav = $sidebar_wrapper.find(' > .nav');\n\n      // insert the navbar form before the sidebar list\n      $nav_content = $(nav_content);\n      $nav_content.insertBefore($sidebar_nav);\n      $navbar_form.insertBefore($nav_content);\n      $(\".sidebar-wrapper .dropdown .dropdown-menu > li > a\").click(function (event) {\n        event.stopPropagation();\n      });\n\n      // simulate resize so all the charts/maps will be redrawn\n      window.dispatchEvent(new Event('resize'));\n      mobile_menu_initialized = true;\n    } else {\n      if ($(window).width() > 991) {\n        // reset all the additions that we made for the sidebar wrapper only if the screen is bigger than 991px\n        $sidebar_wrapper.find('.navbar-form').remove();\n        $sidebar_wrapper.find('.nav-mobile-menu').remove();\n        mobile_menu_initialized = false;\n      }\n    }\n    if (!toggle_initialized) {\n      $toggle = $('.navbar-toggle');\n      $toggle.click(function () {\n        if (mobile_menu_visible == 1) {\n          $('html').removeClass('nav-open');\n          $('.close-layer').remove();\n          setTimeout(function () {\n            $toggle.removeClass('toggled');\n          }, 400);\n          mobile_menu_visible = 0;\n        } else {\n          setTimeout(function () {\n            $toggle.addClass('toggled');\n          }, 430);\n          main_panel_height = $('.main-panel')[0].scrollHeight;\n          $layer = $('<div class=\"close-layer\"></div>');\n          $layer.css('height', main_panel_height + 'px');\n          $layer.appendTo(\".main-panel\");\n          setTimeout(function () {\n            $layer.addClass('visible');\n          }, 100);\n          $layer.click(function () {\n            $('html').removeClass('nav-open');\n            mobile_menu_visible = 0;\n            $layer.removeClass('visible');\n            setTimeout(function () {\n              $layer.remove();\n              $toggle.removeClass('toggled');\n            }, 400);\n          });\n          $('html').addClass('nav-open');\n          mobile_menu_visible = 1;\n        }\n      });\n      toggle_initialized = true;\n    }\n  }, 200),\n  initBootstrapNavbarMenu: debounce(function () {\n    if (!bootstrap_nav_initialized) {\n      $navbar = $('nav').find('.navbar-collapse').first().clone(true);\n      nav_content = '';\n      mobile_menu_content = '';\n\n      //add the content from the regular header to the mobile menu\n      $navbar.children('ul').each(function () {\n        content_buff = $(this).html();\n        nav_content = nav_content + content_buff;\n      });\n      nav_content = '<ul class=\"nav nav-mobile-menu\">' + nav_content + '</ul>';\n      $navbar.html(nav_content);\n      $navbar.addClass('off-canvas-sidebar');\n\n      // append it to the body, so it will come from the right side of the screen\n      $('body').append($navbar);\n      $toggle = $('.navbar-toggle');\n      $navbar.find('a').removeClass('btn btn-round btn-default');\n      $navbar.find('button').removeClass('btn-round btn-fill btn-info btn-primary btn-success btn-danger btn-warning btn-neutral');\n      $navbar.find('button').addClass('btn-simple btn-block');\n      $toggle.click(function () {\n        if (mobile_menu_visible == 1) {\n          $('html').removeClass('nav-open');\n          $('.close-layer').remove();\n          setTimeout(function () {\n            $toggle.removeClass('toggled');\n          }, 400);\n          mobile_menu_visible = 0;\n        } else {\n          setTimeout(function () {\n            $toggle.addClass('toggled');\n          }, 430);\n          $layer = $('<div class=\"close-layer\"></div>');\n          $layer.appendTo(\".wrapper-full-page\");\n          setTimeout(function () {\n            $layer.addClass('visible');\n          }, 100);\n          $layer.click(function () {\n            $('html').removeClass('nav-open');\n            mobile_menu_visible = 0;\n            $layer.removeClass('visible');\n            setTimeout(function () {\n              $layer.remove();\n              $toggle.removeClass('toggled');\n            }, 400);\n          });\n          $('html').addClass('nav-open');\n          mobile_menu_visible = 1;\n        }\n      });\n      bootstrap_nav_initialized = true;\n    }\n  }, 500),\n  startAnimationForLineChart: function startAnimationForLineChart(chart) {\n    chart.on('draw', function (data) {\n      if (data.type === 'line' || data.type === 'area') {\n        data.element.animate({\n          d: {\n            begin: 600,\n            dur: 700,\n            from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(),\n            to: data.path.clone().stringify(),\n            easing: Chartist.Svg.Easing.easeOutQuint\n          }\n        });\n      } else if (data.type === 'point') {\n        seq++;\n        data.element.animate({\n          opacity: {\n            begin: seq * delays,\n            dur: durations,\n            from: 0,\n            to: 1,\n            easing: 'ease'\n          }\n        });\n      }\n    });\n    seq = 0;\n  },\n  startAnimationForBarChart: function startAnimationForBarChart(chart) {\n    chart.on('draw', function (data) {\n      if (data.type === 'bar') {\n        seq2++;\n        data.element.animate({\n          opacity: {\n            begin: seq2 * delays2,\n            dur: durations2,\n            from: 0,\n            to: 1,\n            easing: 'ease'\n          }\n        });\n      }\n    });\n    seq2 = 0;\n  }\n};\n\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n\nfunction debounce(func, wait, immediate) {\n  var timeout;\n  return function () {\n    var context = this,\n      args = arguments;\n    clearTimeout(timeout);\n    timeout = setTimeout(function () {\n      timeout = null;\n      if (!immediate) func.apply(context, args);\n    }, wait);\n    if (immediate && !timeout) func.apply(context, args);\n  };\n}\n;\n\n// close notification on close button click\n$(document).ready(function () {\n  $(\".close\").click(function () {\n    $(\".alert-close\").hide();\n  });\n});\n// Hide alerts on the credit card payment page\n$(document).ready(function () {\n  $(\".payment-alert\").hide();\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/material-dashboard.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/material.min.js":
/*!*********************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/material.min.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("!function (t) {\n  function o(t) {\n    return \"undefined\" == typeof t.which ? !0 : \"number\" == typeof t.which && t.which > 0 ? !t.ctrlKey && !t.metaKey && !t.altKey && 8 != t.which && 9 != t.which && 13 != t.which && 16 != t.which && 17 != t.which && 20 != t.which && 27 != t.which : !1;\n  }\n  function i(o) {\n    var i = t(o);\n    i.prop(\"disabled\") || i.closest(\".form-group\").addClass(\"is-focused\");\n  }\n  function n(o) {\n    o.closest(\"label\").hover(function () {\n      var o = t(this).find(\"input\");\n      o.prop(\"disabled\") || i(o);\n    }, function () {\n      e(t(this).find(\"input\"));\n    });\n  }\n  function e(o) {\n    t(o).closest(\".form-group\").removeClass(\"is-focused\");\n  }\n  t.expr[\":\"].notmdproc = function (o) {\n    return t(o).data(\"mdproc\") ? !1 : !0;\n  }, t.material = {\n    options: {\n      validate: !0,\n      input: !0,\n      ripples: !0,\n      checkbox: !0,\n      togglebutton: !0,\n      radio: !0,\n      arrive: !0,\n      autofill: !1,\n      withRipples: [\".btn:not(.btn-link)\", \".card-image\", \".navbar a:not(.withoutripple)\", \".footer a:not(.withoutripple)\", \".dropdown-menu a\", \".nav-tabs a:not(.withoutripple)\", \".withripple\", \".pagination li:not(.active):not(.disabled) a:not(.withoutripple)\"].join(\",\"),\n      inputElements: \"input.form-control, textarea.form-control, select.form-control\",\n      checkboxElements: \".checkbox > label > input[type=checkbox]\",\n      togglebuttonElements: \".togglebutton > label > input[type=checkbox]\",\n      radioElements: \".radio > label > input[type=radio]\"\n    },\n    checkbox: function checkbox(o) {\n      var i = t(o ? o : this.options.checkboxElements).filter(\":notmdproc\").data(\"mdproc\", !0).after(\"<span class='checkbox-material'><span class='check'></span></span>\");\n      n(i);\n    },\n    togglebutton: function togglebutton(o) {\n      var i = t(o ? o : this.options.togglebuttonElements).filter(\":notmdproc\").data(\"mdproc\", !0).after(\"<span class='toggle'></span>\");\n      n(i);\n    },\n    radio: function radio(o) {\n      var i = t(o ? o : this.options.radioElements).filter(\":notmdproc\").data(\"mdproc\", !0).after(\"<span class='circle'></span><span class='check'></span>\");\n      n(i);\n    },\n    input: function input(o) {\n      t(o ? o : this.options.inputElements).filter(\":notmdproc\").data(\"mdproc\", !0).each(function () {\n        var o = t(this),\n          i = o.closest(\".form-group\");\n        0 === i.length && (o.wrap(\"<div class='form-group'></div>\"), i = o.closest(\".form-group\")), o.attr(\"data-hint\") && (o.after(\"<p class='help-block'>\" + o.attr(\"data-hint\") + \"</p>\"), o.removeAttr(\"data-hint\"));\n        var n = {\n          \"input-lg\": \"form-group-lg\",\n          \"input-sm\": \"form-group-sm\"\n        };\n        if (t.each(n, function (t, n) {\n          o.hasClass(t) && (o.removeClass(t), i.addClass(n));\n        }), o.hasClass(\"floating-label\")) {\n          var e = o.attr(\"placeholder\");\n          o.attr(\"placeholder\", null).removeClass(\"floating-label\");\n          var a = o.attr(\"id\"),\n            r = \"\";\n          a && (r = \"for='\" + a + \"'\"), i.addClass(\"label-floating\"), o.after(\"<label \" + r + \"class='control-label'>\" + e + \"</label>\");\n        }\n        (null === o.val() || \"undefined\" == o.val() || \"\" === o.val()) && i.addClass(\"is-empty\"), i.append(\"<span class='material-input'></span>\"), i.find(\"input[type=file]\").length > 0 && i.addClass(\"is-fileinput\");\n      });\n    },\n    attachInputEventHandlers: function attachInputEventHandlers() {\n      var n = this.options.validate;\n      t(document).on(\"change\", \".checkbox input[type=checkbox]\", function () {\n        t(this).blur();\n      }).on(\"keydown paste\", \".form-control\", function (i) {\n        o(i) && t(this).closest(\".form-group\").removeClass(\"is-empty\");\n      }).on(\"keyup change\", \".form-control\", function () {\n        var o = t(this),\n          i = o.closest(\".form-group\"),\n          e = \"undefined\" == typeof o[0].checkValidity || o[0].checkValidity();\n        \"\" === o.val() ? i.addClass(\"is-empty\") : i.removeClass(\"is-empty\"), n && (e ? i.removeClass(\"has-error\") : i.addClass(\"has-error\"));\n      }).on(\"focus\", \".form-control, .form-group.is-fileinput\", function () {\n        i(this);\n      }).on(\"blur\", \".form-control, .form-group.is-fileinput\", function () {\n        e(this);\n      }).on(\"change\", \".form-group input\", function () {\n        var o = t(this);\n        if (\"file\" != o.attr(\"type\")) {\n          var i = o.closest(\".form-group\"),\n            n = o.val();\n          n ? i.removeClass(\"is-empty\") : i.addClass(\"is-empty\");\n        }\n      }).on(\"change\", \".form-group.is-fileinput input[type='file']\", function () {\n        var o = t(this),\n          i = o.closest(\".form-group\"),\n          n = \"\";\n        t.each(this.files, function (t, o) {\n          n += o.name + \", \";\n        }), n = n.substring(0, n.length - 2), n ? i.removeClass(\"is-empty\") : i.addClass(\"is-empty\"), i.find(\"input.form-control[readonly]\").val(n);\n      });\n    },\n    ripples: function ripples(o) {\n      t(o ? o : this.options.withRipples).ripples();\n    },\n    autofill: function autofill() {\n      var o = setInterval(function () {\n        t(\"input[type!=checkbox]\").each(function () {\n          var o = t(this);\n          o.val() && o.val() !== o.attr(\"value\") && o.trigger(\"change\");\n        });\n      }, 100);\n      setTimeout(function () {\n        clearInterval(o);\n      }, 1e4);\n    },\n    attachAutofillEventHandlers: function attachAutofillEventHandlers() {\n      var o;\n      t(document).on(\"focus\", \"input\", function () {\n        var i = t(this).parents(\"form\").find(\"input\").not(\"[type=file]\");\n        o = setInterval(function () {\n          i.each(function () {\n            var o = t(this);\n            o.val() !== o.attr(\"value\") && o.trigger(\"change\");\n          });\n        }, 100);\n      }).on(\"blur\", \".form-group input\", function () {\n        clearInterval(o);\n      });\n    },\n    init: function init(o) {\n      this.options = t.extend({}, this.options, o);\n      var i = t(document);\n      t.fn.ripples && this.options.ripples && this.ripples(), this.options.input && (this.input(), this.attachInputEventHandlers()), this.options.checkbox && this.checkbox(), this.options.togglebutton && this.togglebutton(), this.options.radio && this.radio(), this.options.autofill && (this.autofill(), this.attachAutofillEventHandlers()), document.arrive && this.options.arrive && (t.fn.ripples && this.options.ripples && i.arrive(this.options.withRipples, function () {\n        t.material.ripples(t(this));\n      }), this.options.input && i.arrive(this.options.inputElements, function () {\n        t.material.input(t(this));\n      }), this.options.checkbox && i.arrive(this.options.checkboxElements, function () {\n        t.material.checkbox(t(this));\n      }), this.options.radio && i.arrive(this.options.radioElements, function () {\n        t.material.radio(t(this));\n      }), this.options.togglebutton && i.arrive(this.options.togglebuttonElements, function () {\n        t.material.togglebutton(t(this));\n      }));\n    }\n  };\n}(jQuery), function (t, o, i, n) {\n  \"use strict\";\n\n  function e(o, i) {\n    r = this, this.element = t(o), this.options = t.extend({}, s, i), this._defaults = s, this._name = a, this.init();\n  }\n  var a = \"ripples\",\n    r = null,\n    s = {};\n  e.prototype.init = function () {\n    var i = this.element;\n    i.on(\"mousedown touchstart\", function (n) {\n      if (!r.isTouch() || \"mousedown\" !== n.type) {\n        i.find(\".ripple-container\").length || i.append('<div class=\"ripple-container\"></div>');\n        var e = i.children(\".ripple-container\"),\n          a = r.getRelY(e, n),\n          s = r.getRelX(e, n);\n        if (a || s) {\n          var l = r.getRipplesColor(i),\n            p = t(\"<div></div>\");\n          p.addClass(\"ripple\").css({\n            left: s,\n            top: a,\n            \"background-color\": l\n          }), e.append(p), function () {\n            return o.getComputedStyle(p[0]).opacity;\n          }(), r.rippleOn(i, p), setTimeout(function () {\n            r.rippleEnd(p);\n          }, 500), i.on(\"mouseup mouseleave touchend\", function () {\n            p.data(\"mousedown\", \"off\"), \"off\" === p.data(\"animating\") && r.rippleOut(p);\n          });\n        }\n      }\n    });\n  }, e.prototype.getNewSize = function (t, o) {\n    return Math.max(t.outerWidth(), t.outerHeight()) / o.outerWidth() * 2.5;\n  }, e.prototype.getRelX = function (t, o) {\n    var i = t.offset();\n    return r.isTouch() ? (o = o.originalEvent, 1 === o.touches.length ? o.touches[0].pageX - i.left : !1) : o.pageX - i.left;\n  }, e.prototype.getRelY = function (t, o) {\n    var i = t.offset();\n    return r.isTouch() ? (o = o.originalEvent, 1 === o.touches.length ? o.touches[0].pageY - i.top : !1) : o.pageY - i.top;\n  }, e.prototype.getRipplesColor = function (t) {\n    var i = t.data(\"ripple-color\") ? t.data(\"ripple-color\") : o.getComputedStyle(t[0]).color;\n    return i;\n  }, e.prototype.hasTransitionSupport = function () {\n    var t = i.body || i.documentElement,\n      o = t.style,\n      e = o.transition !== n || o.WebkitTransition !== n || o.MozTransition !== n || o.MsTransition !== n || o.OTransition !== n;\n    return e;\n  }, e.prototype.isTouch = function () {\n    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  }, e.prototype.rippleEnd = function (t) {\n    t.data(\"animating\", \"off\"), \"off\" === t.data(\"mousedown\") && r.rippleOut(t);\n  }, e.prototype.rippleOut = function (t) {\n    t.off(), r.hasTransitionSupport() ? t.addClass(\"ripple-out\") : t.animate({\n      opacity: 0\n    }, 100, function () {\n      t.trigger(\"transitionend\");\n    }), t.on(\"transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd\", function () {\n      t.remove();\n    });\n  }, e.prototype.rippleOn = function (t, o) {\n    var i = r.getNewSize(t, o);\n    r.hasTransitionSupport() ? o.css({\n      \"-ms-transform\": \"scale(\" + i + \")\",\n      \"-moz-transform\": \"scale(\" + i + \")\",\n      \"-webkit-transform\": \"scale(\" + i + \")\",\n      transform: \"scale(\" + i + \")\"\n    }).addClass(\"ripple-on\").data(\"animating\", \"on\").data(\"mousedown\", \"on\") : o.animate({\n      width: 2 * Math.max(t.outerWidth(), t.outerHeight()),\n      height: 2 * Math.max(t.outerWidth(), t.outerHeight()),\n      \"margin-left\": -1 * Math.max(t.outerWidth(), t.outerHeight()),\n      \"margin-top\": -1 * Math.max(t.outerWidth(), t.outerHeight()),\n      opacity: .2\n    }, 500, function () {\n      o.trigger(\"transitionend\");\n    });\n  }, t.fn.ripples = function (o) {\n    return this.each(function () {\n      t.data(this, \"plugin_\" + a) || t.data(this, \"plugin_\" + a, new e(this, o));\n    });\n  };\n}(jQuery, window, document);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/material.min.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/nouislider.min.js":
/*!***********************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/nouislider.min.js ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*\r\n\r\n$.Link (part of noUiSlider) - WTFPL */\n(function (c) {\n  function m(a, c, d) {\n    if ((a[c] || a[d]) && a[c] === a[d]) throw Error(\"(Link) '\" + c + \"' can't match '\" + d + \"'.'\");\n  }\n  function r(a) {\n    void 0 === a && (a = {});\n    if (\"object\" !== _typeof(a)) throw Error(\"(Format) 'format' option must be an object.\");\n    var h = {};\n    c(u).each(function (c, n) {\n      if (void 0 === a[n]) h[n] = A[c];else if (_typeof(a[n]) === _typeof(A[c])) {\n        if (\"decimals\" === n && (0 > a[n] || 7 < a[n])) throw Error(\"(Format) 'format.decimals' option must be between 0 and 7.\");\n        h[n] = a[n];\n      } else throw Error(\"(Format) 'format.\" + n + \"' must be a \" + _typeof(A[c]) + \".\");\n    });\n    m(h, \"mark\", \"thousand\");\n    m(h, \"prefix\", \"negative\");\n    m(h, \"prefix\", \"negativeBefore\");\n    this.r = h;\n  }\n  function k(a, h) {\n    \"object\" !== _typeof(a) && c.error(\"(Link) Initialize with an object.\");\n    return new k.prototype.p(a.target || function () {}, a.method, a.format || {}, h);\n  }\n  var u = \"decimals mark thousand prefix postfix encoder decoder negative negativeBefore to from\".split(\" \"),\n    A = [2, \".\", \"\", \"\", \"\", function (a) {\n      return a;\n    }, function (a) {\n      return a;\n    }, \"-\", \"\", function (a) {\n      return a;\n    }, function (a) {\n      return a;\n    }];\n  r.prototype.a = function (a) {\n    return this.r[a];\n  };\n  r.prototype.L = function (a) {\n    function c(a) {\n      return a.split(\"\").reverse().join(\"\");\n    }\n    a = this.a(\"encoder\")(a);\n    var d = this.a(\"decimals\"),\n      n = \"\",\n      k = \"\",\n      m = \"\",\n      r = \"\";\n    0 === parseFloat(a.toFixed(d)) && (a = \"0\");\n    0 > a && (n = this.a(\"negative\"), k = this.a(\"negativeBefore\"));\n    a = Math.abs(a).toFixed(d).toString();\n    a = a.split(\".\");\n    this.a(\"thousand\") ? (m = c(a[0]).match(/.{1,3}/g), m = c(m.join(c(this.a(\"thousand\"))))) : m = a[0];\n    this.a(\"mark\") && 1 < a.length && (r = this.a(\"mark\") + a[1]);\n    return this.a(\"to\")(k + this.a(\"prefix\") + n + m + r + this.a(\"postfix\"));\n  };\n  r.prototype.w = function (a) {\n    function c(a) {\n      return a.replace(/[\\-\\/\\\\\\^$*+?.()|\\[\\]{}]/g, \"\\\\$&\");\n    }\n    var d;\n    if (null === a || void 0 === a) return !1;\n    a = this.a(\"from\")(a);\n    a = a.toString();\n    d = a.replace(RegExp(\"^\" + c(this.a(\"negativeBefore\"))), \"\");\n    a !== d ? (a = d, d = \"-\") : d = \"\";\n    a = a.replace(RegExp(\"^\" + c(this.a(\"prefix\"))), \"\");\n    this.a(\"negative\") && (d = \"\", a = a.replace(RegExp(\"^\" + c(this.a(\"negative\"))), \"-\"));\n    a = a.replace(RegExp(c(this.a(\"postfix\")) + \"$\"), \"\").replace(RegExp(c(this.a(\"thousand\")), \"g\"), \"\").replace(this.a(\"mark\"), \".\");\n    a = this.a(\"decoder\")(parseFloat(d + a));\n    return isNaN(a) ? !1 : a;\n  };\n  k.prototype.K = function (a, h) {\n    this.method = h || \"html\";\n    this.j = c(a.replace(\"-tooltip-\", \"\") || \"<div/>\")[0];\n  };\n  k.prototype.H = function (a) {\n    this.method = \"val\";\n    this.j = document.createElement(\"input\");\n    this.j.name = a;\n    this.j.type = \"hidden\";\n  };\n  k.prototype.G = function (a) {\n    function h(a, c) {\n      return [c ? null : a, c ? a : null];\n    }\n    var d = this;\n    this.method = \"val\";\n    this.target = a.on(\"change\", function (a) {\n      d.B.val(h(c(a.target).val(), d.t), {\n        link: d,\n        set: !0\n      });\n    });\n  };\n  k.prototype.p = function (a, h, d, k) {\n    this.g = d;\n    this.update = !k;\n    if (\"string\" === typeof a && 0 === a.indexOf(\"-tooltip-\")) this.K(a, h);else if (\"string\" === typeof a && 0 !== a.indexOf(\"-\")) this.H(a);else if (\"function\" === typeof a) this.target = !1, this.method = a;else {\n      if (a instanceof c || c.zepto && c.zepto.isZ(a)) {\n        if (!h) {\n          if (a.is(\"input, select, textarea\")) {\n            this.G(a);\n            return;\n          }\n          h = \"html\";\n        }\n        if (\"function\" === typeof h || \"string\" === typeof h && a[h]) {\n          this.method = h;\n          this.target = a;\n          return;\n        }\n      }\n      throw new RangeError(\"(Link) Invalid Link.\");\n    }\n  };\n  k.prototype.write = function (a, c, d, k) {\n    if (!this.update || !1 !== k) if (this.u = a, this.F = a = this.format(a), \"function\" === typeof this.method) this.method.call(this.target[0] || d[0], a, c, d);else this.target[this.method](a, c, d);\n  };\n  k.prototype.q = function (a) {\n    this.g = new r(c.extend({}, a, this.g instanceof r ? this.g.r : this.g));\n  };\n  k.prototype.J = function (a) {\n    this.B = a;\n  };\n  k.prototype.I = function (a) {\n    this.t = a;\n  };\n  k.prototype.format = function (a) {\n    return this.g.L(a);\n  };\n  k.prototype.A = function (a) {\n    return this.g.w(a);\n  };\n  k.prototype.p.prototype = k.prototype;\n  c.Link = k;\n})(window.jQuery || window.Zepto); /*\r\n                                   $.fn.noUiSlider - WTFPL - refreshless.com/nouislider/ */\n(function (c) {\n  function m(e) {\n    return \"number\" === typeof e && !isNaN(e) && isFinite(e);\n  }\n  function r(e) {\n    return c.isArray(e) ? e : [e];\n  }\n  function k(e, b) {\n    e.addClass(b);\n    setTimeout(function () {\n      e.removeClass(b);\n    }, 300);\n  }\n  function u(e, b) {\n    return 100 * b / (e[1] - e[0]);\n  }\n  function A(e, b) {\n    if (b >= e.d.slice(-1)[0]) return 100;\n    for (var a = 1, c, f, d; b >= e.d[a];) a++;\n    c = e.d[a - 1];\n    f = e.d[a];\n    d = e.c[a - 1];\n    c = [c, f];\n    return d + u(c, 0 > c[0] ? b + Math.abs(c[0]) : b - c[0]) / (100 / (e.c[a] - d));\n  }\n  function a(e, b) {\n    if (100 <= b) return e.d.slice(-1)[0];\n    for (var a = 1, c, f, d; b >= e.c[a];) a++;\n    c = e.d[a - 1];\n    f = e.d[a];\n    d = e.c[a - 1];\n    c = [c, f];\n    return 100 / (e.c[a] - d) * (b - d) * (c[1] - c[0]) / 100 + c[0];\n  }\n  function h(a, b) {\n    for (var c = 1, g; (a.dir ? 100 - b : b) >= a.c[c];) c++;\n    if (a.m) return g = a.c[c - 1], c = a.c[c], b - g > (c - g) / 2 ? c : g;\n    a.h[c - 1] ? (g = a.h[c - 1], c = a.c[c - 1] + Math.round((b - a.c[c - 1]) / g) * g) : c = b;\n    return c;\n  }\n  function d(a, b) {\n    if (!m(b)) throw Error(\"noUiSlider: 'step' is not numeric.\");\n    a.h[0] = b;\n  }\n  function n(a, b) {\n    if (\"object\" !== _typeof(b) || c.isArray(b)) throw Error(\"noUiSlider: 'range' is not an object.\");\n    if (void 0 === b.min || void 0 === b.max) throw Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");\n    c.each(b, function (b, g) {\n      var d;\n      \"number\" === typeof g && (g = [g]);\n      if (!c.isArray(g)) throw Error(\"noUiSlider: 'range' contains invalid value.\");\n      d = \"min\" === b ? 0 : \"max\" === b ? 100 : parseFloat(b);\n      if (!m(d) || !m(g[0])) throw Error(\"noUiSlider: 'range' value isn't numeric.\");\n      a.c.push(d);\n      a.d.push(g[0]);\n      d ? a.h.push(isNaN(g[1]) ? !1 : g[1]) : isNaN(g[1]) || (a.h[0] = g[1]);\n    });\n    c.each(a.h, function (b, c) {\n      if (!c) return !0;\n      a.h[b] = u([a.d[b], a.d[b + 1]], c) / (100 / (a.c[b + 1] - a.c[b]));\n    });\n  }\n  function E(a, b) {\n    \"number\" === typeof b && (b = [b]);\n    if (!c.isArray(b) || !b.length || 2 < b.length) throw Error(\"noUiSlider: 'start' option is incorrect.\");\n    a.b = b.length;\n    a.start = b;\n  }\n  function I(a, b) {\n    a.m = b;\n    if (\"boolean\" !== typeof b) throw Error(\"noUiSlider: 'snap' option must be a boolean.\");\n  }\n  function J(a, b) {\n    if (\"lower\" === b && 1 === a.b) a.i = 1;else if (\"upper\" === b && 1 === a.b) a.i = 2;else if (!0 === b && 2 === a.b) a.i = 3;else if (!1 === b) a.i = 0;else throw Error(\"noUiSlider: 'connect' option doesn't match handle count.\");\n  }\n  function D(a, b) {\n    switch (b) {\n      case \"horizontal\":\n        a.k = 0;\n        break;\n      case \"vertical\":\n        a.k = 1;\n        break;\n      default:\n        throw Error(\"noUiSlider: 'orientation' option is invalid.\");\n    }\n  }\n  function K(a, b) {\n    if (2 < a.c.length) throw Error(\"noUiSlider: 'margin' option is only supported on linear sliders.\");\n    a.margin = u(a.d, b);\n    if (!m(b)) throw Error(\"noUiSlider: 'margin' option must be numeric.\");\n  }\n  function L(a, b) {\n    switch (b) {\n      case \"ltr\":\n        a.dir = 0;\n        break;\n      case \"rtl\":\n        a.dir = 1;\n        a.i = [0, 2, 1, 3][a.i];\n        break;\n      default:\n        throw Error(\"noUiSlider: 'direction' option was not recognized.\");\n    }\n  }\n  function M(a, b) {\n    if (\"string\" !== typeof b) throw Error(\"noUiSlider: 'behaviour' must be a string containing options.\");\n    var c = 0 <= b.indexOf(\"snap\");\n    a.n = {\n      s: 0 <= b.indexOf(\"tap\") || c,\n      extend: 0 <= b.indexOf(\"extend\"),\n      v: 0 <= b.indexOf(\"drag\"),\n      fixed: 0 <= b.indexOf(\"fixed\"),\n      m: c\n    };\n  }\n  function N(a, b, d) {\n    a.o = [b.lower, b.upper];\n    a.g = b.format;\n    c.each(a.o, function (a, e) {\n      if (!c.isArray(e)) throw Error(\"noUiSlider: 'serialization.\" + (a ? \"upper\" : \"lower\") + \"' must be an array.\");\n      c.each(e, function () {\n        if (!(this instanceof c.Link)) throw Error(\"noUiSlider: 'serialization.\" + (a ? \"upper\" : \"lower\") + \"' can only contain Link instances.\");\n        this.I(a);\n        this.J(d);\n        this.q(b.format);\n      });\n    });\n    a.dir && 1 < a.b && a.o.reverse();\n  }\n  function O(a, b) {\n    var f = {\n        c: [],\n        d: [],\n        h: [!1],\n        margin: 0\n      },\n      g;\n    g = {\n      step: {\n        e: !1,\n        f: d\n      },\n      start: {\n        e: !0,\n        f: E\n      },\n      connect: {\n        e: !0,\n        f: J\n      },\n      direction: {\n        e: !0,\n        f: L\n      },\n      range: {\n        e: !0,\n        f: n\n      },\n      snap: {\n        e: !1,\n        f: I\n      },\n      orientation: {\n        e: !1,\n        f: D\n      },\n      margin: {\n        e: !1,\n        f: K\n      },\n      behaviour: {\n        e: !0,\n        f: M\n      },\n      serialization: {\n        e: !0,\n        f: N\n      }\n    };\n    a = c.extend({\n      connect: !1,\n      direction: \"ltr\",\n      behaviour: \"tap\",\n      orientation: \"horizontal\"\n    }, a);\n    a.serialization = c.extend({\n      lower: [],\n      upper: [],\n      format: {}\n    }, a.serialization);\n    c.each(g, function (c, d) {\n      if (void 0 === a[c]) {\n        if (d.e) throw Error(\"noUiSlider: '\" + c + \"' is required.\");\n        return !0;\n      }\n      d.f(f, a[c], b);\n    });\n    f.style = f.k ? \"top\" : \"left\";\n    return f;\n  }\n  function P(a, b) {\n    var d = c(\"<div><div/></div>\").addClass(f[2]),\n      g = [\"-lower\", \"-upper\"];\n    a.dir && g.reverse();\n    d.children().addClass(f[3] + \" \" + f[3] + g[b]);\n    return d;\n  }\n  function Q(a, b) {\n    b.j && (b = new c.Link({\n      target: c(b.j).clone().appendTo(a),\n      method: b.method,\n      format: b.g\n    }, !0));\n    return b;\n  }\n  function R(a, b) {\n    var d,\n      f = [];\n    for (d = 0; d < a.b; d++) {\n      var k = f,\n        h = d,\n        m = a.o[d],\n        n = b[d].children(),\n        r = a.g,\n        s = void 0,\n        v = [],\n        s = new c.Link({}, !0);\n      s.q(r);\n      v.push(s);\n      for (s = 0; s < m.length; s++) v.push(Q(n, m[s]));\n      k[h] = v;\n    }\n    return f;\n  }\n  function S(a, b, c) {\n    switch (a) {\n      case 1:\n        b.addClass(f[7]);\n        c[0].addClass(f[6]);\n        break;\n      case 3:\n        c[1].addClass(f[6]);\n      case 2:\n        c[0].addClass(f[7]);\n      case 0:\n        b.addClass(f[6]);\n    }\n  }\n  function T(a, b) {\n    var c,\n      d = [];\n    for (c = 0; c < a.b; c++) d.push(P(a, c).appendTo(b));\n    return d;\n  }\n  function U(a, b) {\n    b.addClass([f[0], f[8 + a.dir], f[4 + a.k]].join(\" \"));\n    return c(\"<div/>\").appendTo(b).addClass(f[1]);\n  }\n  function V(d, b, m) {\n    function g() {\n      return t[[\"width\", \"height\"][b.k]]();\n    }\n    function n(a) {\n      var b,\n        c = [q.val()];\n      for (b = 0; b < a.length; b++) q.trigger(a[b], c);\n    }\n    function u(d, p, e) {\n      var g = d[0] !== l[0][0] ? 1 : 0,\n        H = x[0] + b.margin,\n        k = x[1] - b.margin;\n      e && 1 < l.length && (p = g ? Math.max(p, H) : Math.min(p, k));\n      100 > p && (p = h(b, p));\n      p = Math.max(Math.min(parseFloat(p.toFixed(7)), 100), 0);\n      if (p === x[g]) return 1 === l.length ? !1 : p === H || p === k ? 0 : !1;\n      d.css(b.style, p + \"%\");\n      d.is(\":first-child\") && d.toggleClass(f[17], 50 < p);\n      x[g] = p;\n      b.dir && (p = 100 - p);\n      c(y[g]).each(function () {\n        this.write(a(b, p), d.children(), q);\n      });\n      return !0;\n    }\n    function B(a, b, c) {\n      c || k(q, f[14]);\n      u(a, b, !1);\n      n([\"slide\", \"set\", \"change\"]);\n    }\n    function w(a, c, d, e) {\n      a = a.replace(/\\s/g, \".nui \") + \".nui\";\n      c.on(a, function (a) {\n        var c = q.attr(\"disabled\");\n        if (q.hasClass(f[14]) || void 0 !== c && null !== c) return !1;\n        a.preventDefault();\n        var c = 0 === a.type.indexOf(\"touch\"),\n          p = 0 === a.type.indexOf(\"mouse\"),\n          F = 0 === a.type.indexOf(\"pointer\"),\n          g,\n          k,\n          l = a;\n        0 === a.type.indexOf(\"MSPointer\") && (F = !0);\n        a.originalEvent && (a = a.originalEvent);\n        c && (g = a.changedTouches[0].pageX, k = a.changedTouches[0].pageY);\n        if (p || F) F || void 0 !== window.pageXOffset || (window.pageXOffset = document.documentElement.scrollLeft, window.pageYOffset = document.documentElement.scrollTop), g = a.clientX + window.pageXOffset, k = a.clientY + window.pageYOffset;\n        l.C = [g, k];\n        l.cursor = p;\n        a = l;\n        a.l = a.C[b.k];\n        d(a, e);\n      });\n    }\n    function C(a, c) {\n      var b = c.b || l,\n        d,\n        e = !1,\n        e = 100 * (a.l - c.start) / g(),\n        f = b[0][0] !== l[0][0] ? 1 : 0;\n      var k = c.D;\n      d = e + k[0];\n      e += k[1];\n      1 < b.length ? (0 > d && (e += Math.abs(d)), 100 < e && (d -= e - 100), d = [Math.max(Math.min(d, 100), 0), Math.max(Math.min(e, 100), 0)]) : d = [d, e];\n      e = u(b[0], d[f], 1 === b.length);\n      1 < b.length && (e = u(b[1], d[f ? 0 : 1], !1) || e);\n      e && n([\"slide\"]);\n    }\n    function s(a) {\n      c(\".\" + f[15]).removeClass(f[15]);\n      a.cursor && c(\"body\").css(\"cursor\", \"\").off(\".nui\");\n      G.off(\".nui\");\n      q.removeClass(f[12]);\n      n([\"set\", \"change\"]);\n    }\n    function v(a, b) {\n      1 === b.b.length && b.b[0].children().addClass(f[15]);\n      a.stopPropagation();\n      w(z.move, G, C, {\n        start: a.l,\n        b: b.b,\n        D: [x[0], x[l.length - 1]]\n      });\n      w(z.end, G, s, null);\n      a.cursor && (c(\"body\").css(\"cursor\", c(a.target).css(\"cursor\")), 1 < l.length && q.addClass(f[12]), c(\"body\").on(\"selectstart.nui\", !1));\n    }\n    function D(a) {\n      var d = a.l,\n        e = 0;\n      a.stopPropagation();\n      c.each(l, function () {\n        e += this.offset()[b.style];\n      });\n      e = d < e / 2 || 1 === l.length ? 0 : 1;\n      d -= t.offset()[b.style];\n      d = 100 * d / g();\n      B(l[e], d, b.n.m);\n      b.n.m && v(a, {\n        b: [l[e]]\n      });\n    }\n    function E(a) {\n      var c = (a = a.l < t.offset()[b.style]) ? 0 : 100;\n      a = a ? 0 : l.length - 1;\n      B(l[a], c, !1);\n    }\n    var q = c(d),\n      x = [-1, -1],\n      t,\n      y,\n      l;\n    if (q.hasClass(f[0])) throw Error(\"Slider was already initialized.\");\n    t = U(b, q);\n    l = T(b, t);\n    y = R(b, l);\n    S(b.i, q, l);\n    (function (a) {\n      var b;\n      if (!a.fixed) for (b = 0; b < l.length; b++) w(z.start, l[b].children(), v, {\n        b: [l[b]]\n      });\n      a.s && w(z.start, t, D, {\n        b: l\n      });\n      a.extend && (q.addClass(f[16]), a.s && w(z.start, q, E, {\n        b: l\n      }));\n      a.v && (b = t.find(\".\" + f[7]).addClass(f[10]), a.fixed && (b = b.add(t.children().not(b).children())), w(z.start, b, v, {\n        b: l\n      }));\n    })(b.n);\n    d.vSet = function () {\n      var a = Array.prototype.slice.call(arguments, 0),\n        d,\n        e,\n        g,\n        h,\n        m,\n        s,\n        t = r(a[0]);\n      \"object\" === _typeof(a[1]) ? (d = a[1].set, e = a[1].link, g = a[1].update, h = a[1].animate) : !0 === a[1] && (d = !0);\n      b.dir && 1 < b.b && t.reverse();\n      h && k(q, f[14]);\n      a = 1 < l.length ? 3 : 1;\n      1 === t.length && (a = 1);\n      for (m = 0; m < a; m++) h = e || y[m % 2][0], h = h.A(t[m % 2]), !1 !== h && (h = A(b, h), b.dir && (h = 100 - h), !0 !== u(l[m % 2], h, !0) && c(y[m % 2]).each(function (a) {\n        if (!a) return s = this.u, !0;\n        this.write(s, l[m % 2].children(), q, g);\n      }));\n      !0 === d && n([\"set\"]);\n      return this;\n    };\n    d.vGet = function () {\n      var a,\n        c = [];\n      for (a = 0; a < b.b; a++) c[a] = y[a][0].F;\n      return 1 === c.length ? c[0] : b.dir ? c.reverse() : c;\n    };\n    d.destroy = function () {\n      c.each(y, function () {\n        c.each(this, function () {\n          this.target && this.target.off(\".nui\");\n        });\n      });\n      c(this).off(\".nui\").removeClass(f.join(\" \")).empty();\n      return m;\n    };\n    q.val(b.start);\n  }\n  function W(a) {\n    if (!this.length) throw Error(\"noUiSlider: Can't initialize slider on empty selection.\");\n    var b = O(a, this);\n    return this.each(function () {\n      V(this, b, a);\n    });\n  }\n  function X(a) {\n    return this.each(function () {\n      var b = c(this).val(),\n        d = this.destroy(),\n        f = c.extend({}, d, a);\n      c(this).noUiSlider(f);\n      d.start === f.start && c(this).val(b);\n    });\n  }\n  function B() {\n    return this[0][arguments.length ? \"vSet\" : \"vGet\"].apply(this[0], arguments);\n  }\n  var G = c(document),\n    C = c.fn.val,\n    z = window.navigator.pointerEnabled ? {\n      start: \"pointerdown\",\n      move: \"pointermove\",\n      end: \"pointerup\"\n    } : window.navigator.msPointerEnabled ? {\n      start: \"MSPointerDown\",\n      move: \"MSPointerMove\",\n      end: \"MSPointerUp\"\n    } : {\n      start: \"mousedown touchstart\",\n      move: \"mousemove touchmove\",\n      end: \"mouseup touchend\"\n    },\n    f = \"noUi-target noUi-base noUi-origin noUi-handle noUi-horizontal noUi-vertical noUi-background noUi-connect noUi-ltr noUi-rtl noUi-dragable  noUi-state-drag  noUi-state-tap noUi-active noUi-extended noUi-stacking\".split(\" \");\n  c.fn.val = function () {\n    var a = arguments,\n      b = c(this[0]);\n    return arguments.length ? this.each(function () {\n      (c(this).hasClass(f[0]) ? B : C).apply(c(this), a);\n    }) : (b.hasClass(f[0]) ? B : C).call(b);\n  };\n  c.noUiSlider = {\n    Link: c.Link\n  };\n  c.fn.noUiSlider = function (a, b) {\n    return (b ? X : W).call(this, a);\n  };\n})(window.jQuery || window.Zepto);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/nouislider.min.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/perfect-scrollbar.jquery.min.js":
/*!*************************************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/perfect-scrollbar.jquery.min.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var require;var require;var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/* perfect-scrollbar v0.6.13 */\n!function t(e, n, r) {\n  function o(i, s) {\n    if (!n[i]) {\n      if (!e[i]) {\n        var a = \"function\" == typeof require && require;\n        if (!s && a) return require(i, !0);\n        if (l) return l(i, !0);\n        var c = new Error(\"Cannot find module '\" + i + \"'\");\n        throw c.code = \"MODULE_NOT_FOUND\", c;\n      }\n      var u = n[i] = {\n        exports: {}\n      };\n      e[i][0].call(u.exports, function (t) {\n        var n = e[i][1][t];\n        return o(n ? n : t);\n      }, u, u.exports, t, e, n, r);\n    }\n    return n[i].exports;\n  }\n  for (var l = \"function\" == typeof require && require, i = 0; i < r.length; i++) o(r[i]);\n  return o;\n}({\n  1: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t) {\n      t.fn.perfectScrollbar = function (t) {\n        return this.each(function () {\n          if (\"object\" == _typeof(t) || \"undefined\" == typeof t) {\n            var e = t;\n            l.get(this) || o.initialize(this, e);\n          } else {\n            var n = t;\n            \"update\" === n ? o.update(this) : \"destroy\" === n && o.destroy(this);\n          }\n        });\n      };\n    }\n    var o = t(\"../main\"),\n      l = t(\"../plugin/instances\");\n    if (true) !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (r),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else { var i; }\n    e.exports = r;\n  }, {\n    \"../main\": 7,\n    \"../plugin/instances\": 18\n  }],\n  2: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t, e) {\n      var n = t.className.split(\" \");\n      n.indexOf(e) < 0 && n.push(e), t.className = n.join(\" \");\n    }\n    function o(t, e) {\n      var n = t.className.split(\" \"),\n        r = n.indexOf(e);\n      r >= 0 && n.splice(r, 1), t.className = n.join(\" \");\n    }\n    n.add = function (t, e) {\n      t.classList ? t.classList.add(e) : r(t, e);\n    }, n.remove = function (t, e) {\n      t.classList ? t.classList.remove(e) : o(t, e);\n    }, n.list = function (t) {\n      return t.classList ? Array.prototype.slice.apply(t.classList) : t.className.split(\" \");\n    };\n  }, {}],\n  3: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t, e) {\n      return window.getComputedStyle(t)[e];\n    }\n    function o(t, e, n) {\n      return \"number\" == typeof n && (n = n.toString() + \"px\"), t.style[e] = n, t;\n    }\n    function l(t, e) {\n      for (var n in e) {\n        var r = e[n];\n        \"number\" == typeof r && (r = r.toString() + \"px\"), t.style[n] = r;\n      }\n      return t;\n    }\n    var i = {};\n    i.e = function (t, e) {\n      var n = document.createElement(t);\n      return n.className = e, n;\n    }, i.appendTo = function (t, e) {\n      return e.appendChild(t), t;\n    }, i.css = function (t, e, n) {\n      return \"object\" == _typeof(e) ? l(t, e) : \"undefined\" == typeof n ? r(t, e) : o(t, e, n);\n    }, i.matches = function (t, e) {\n      return \"undefined\" != typeof t.matches ? t.matches(e) : \"undefined\" != typeof t.matchesSelector ? t.matchesSelector(e) : \"undefined\" != typeof t.webkitMatchesSelector ? t.webkitMatchesSelector(e) : \"undefined\" != typeof t.mozMatchesSelector ? t.mozMatchesSelector(e) : \"undefined\" != typeof t.msMatchesSelector ? t.msMatchesSelector(e) : void 0;\n    }, i.remove = function (t) {\n      \"undefined\" != typeof t.remove ? t.remove() : t.parentNode && t.parentNode.removeChild(t);\n    }, i.queryChildren = function (t, e) {\n      return Array.prototype.filter.call(t.childNodes, function (t) {\n        return i.matches(t, e);\n      });\n    }, e.exports = i;\n  }, {}],\n  4: [function (t, e, n) {\n    \"use strict\";\n\n    var r = function r(t) {\n      this.element = t, this.events = {};\n    };\n    r.prototype.bind = function (t, e) {\n      \"undefined\" == typeof this.events[t] && (this.events[t] = []), this.events[t].push(e), this.element.addEventListener(t, e, !1);\n    }, r.prototype.unbind = function (t, e) {\n      var n = \"undefined\" != typeof e;\n      this.events[t] = this.events[t].filter(function (r) {\n        return !(!n || r === e) || (this.element.removeEventListener(t, r, !1), !1);\n      }, this);\n    }, r.prototype.unbindAll = function () {\n      for (var t in this.events) this.unbind(t);\n    };\n    var o = function o() {\n      this.eventElements = [];\n    };\n    o.prototype.eventElement = function (t) {\n      var e = this.eventElements.filter(function (e) {\n        return e.element === t;\n      })[0];\n      return \"undefined\" == typeof e && (e = new r(t), this.eventElements.push(e)), e;\n    }, o.prototype.bind = function (t, e, n) {\n      this.eventElement(t).bind(e, n);\n    }, o.prototype.unbind = function (t, e, n) {\n      this.eventElement(t).unbind(e, n);\n    }, o.prototype.unbindAll = function () {\n      for (var t = 0; t < this.eventElements.length; t++) this.eventElements[t].unbindAll();\n    }, o.prototype.once = function (t, e, n) {\n      var r = this.eventElement(t),\n        o = function o(t) {\n          r.unbind(e, o), n(t);\n        };\n      r.bind(e, o);\n    }, e.exports = o;\n  }, {}],\n  5: [function (t, e, n) {\n    \"use strict\";\n\n    e.exports = function () {\n      function t() {\n        return Math.floor(65536 * (1 + Math.random())).toString(16).substring(1);\n      }\n      return function () {\n        return t() + t() + \"-\" + t() + \"-\" + t() + \"-\" + t() + \"-\" + t() + t() + t();\n      };\n    }();\n  }, {}],\n  6: [function (t, e, n) {\n    \"use strict\";\n\n    var r = t(\"./class\"),\n      o = t(\"./dom\"),\n      l = n.toInt = function (t) {\n        return parseInt(t, 10) || 0;\n      },\n      i = n.clone = function (t) {\n        if (t) {\n          if (t.constructor === Array) return t.map(i);\n          if (\"object\" == _typeof(t)) {\n            var e = {};\n            for (var n in t) e[n] = i(t[n]);\n            return e;\n          }\n          return t;\n        }\n        return null;\n      };\n    n.extend = function (t, e) {\n      var n = i(t);\n      for (var r in e) n[r] = i(e[r]);\n      return n;\n    }, n.isEditable = function (t) {\n      return o.matches(t, \"input,[contenteditable]\") || o.matches(t, \"select,[contenteditable]\") || o.matches(t, \"textarea,[contenteditable]\") || o.matches(t, \"button,[contenteditable]\");\n    }, n.removePsClasses = function (t) {\n      for (var e = r.list(t), n = 0; n < e.length; n++) {\n        var o = e[n];\n        0 === o.indexOf(\"ps-\") && r.remove(t, o);\n      }\n    }, n.outerWidth = function (t) {\n      return l(o.css(t, \"width\")) + l(o.css(t, \"paddingLeft\")) + l(o.css(t, \"paddingRight\")) + l(o.css(t, \"borderLeftWidth\")) + l(o.css(t, \"borderRightWidth\"));\n    }, n.startScrolling = function (t, e) {\n      r.add(t, \"ps-in-scrolling\"), \"undefined\" != typeof e ? r.add(t, \"ps-\" + e) : (r.add(t, \"ps-x\"), r.add(t, \"ps-y\"));\n    }, n.stopScrolling = function (t, e) {\n      r.remove(t, \"ps-in-scrolling\"), \"undefined\" != typeof e ? r.remove(t, \"ps-\" + e) : (r.remove(t, \"ps-x\"), r.remove(t, \"ps-y\"));\n    }, n.env = {\n      isWebKit: \"WebkitAppearance\" in document.documentElement.style,\n      supportsTouch: \"ontouchstart\" in window || window.DocumentTouch && document instanceof window.DocumentTouch,\n      supportsIePointer: null !== window.navigator.msMaxTouchPoints\n    };\n  }, {\n    \"./class\": 2,\n    \"./dom\": 3\n  }],\n  7: [function (t, e, n) {\n    \"use strict\";\n\n    var r = t(\"./plugin/destroy\"),\n      o = t(\"./plugin/initialize\"),\n      l = t(\"./plugin/update\");\n    e.exports = {\n      initialize: o,\n      update: l,\n      destroy: r\n    };\n  }, {\n    \"./plugin/destroy\": 9,\n    \"./plugin/initialize\": 17,\n    \"./plugin/update\": 21\n  }],\n  8: [function (t, e, n) {\n    \"use strict\";\n\n    e.exports = {\n      handlers: [\"click-rail\", \"drag-scrollbar\", \"keyboard\", \"wheel\", \"touch\"],\n      maxScrollbarLength: null,\n      minScrollbarLength: null,\n      scrollXMarginOffset: 0,\n      scrollYMarginOffset: 0,\n      suppressScrollX: !1,\n      suppressScrollY: !1,\n      swipePropagation: !0,\n      useBothWheelAxes: !1,\n      wheelPropagation: !1,\n      wheelSpeed: 1,\n      theme: \"default\"\n    };\n  }, {}],\n  9: [function (t, e, n) {\n    \"use strict\";\n\n    var r = t(\"../lib/helper\"),\n      o = t(\"../lib/dom\"),\n      l = t(\"./instances\");\n    e.exports = function (t) {\n      var e = l.get(t);\n      e && (e.event.unbindAll(), o.remove(e.scrollbarX), o.remove(e.scrollbarY), o.remove(e.scrollbarXRail), o.remove(e.scrollbarYRail), r.removePsClasses(t), l.remove(t));\n    };\n  }, {\n    \"../lib/dom\": 3,\n    \"../lib/helper\": 6,\n    \"./instances\": 18\n  }],\n  10: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t, e) {\n      function n(t) {\n        return t.getBoundingClientRect();\n      }\n      var r = function r(t) {\n        t.stopPropagation();\n      };\n      e.event.bind(e.scrollbarY, \"click\", r), e.event.bind(e.scrollbarYRail, \"click\", function (r) {\n        var o = r.pageY - window.pageYOffset - n(e.scrollbarYRail).top,\n          s = o > e.scrollbarYTop ? 1 : -1;\n        i(t, \"top\", t.scrollTop + s * e.containerHeight), l(t), r.stopPropagation();\n      }), e.event.bind(e.scrollbarX, \"click\", r), e.event.bind(e.scrollbarXRail, \"click\", function (r) {\n        var o = r.pageX - window.pageXOffset - n(e.scrollbarXRail).left,\n          s = o > e.scrollbarXLeft ? 1 : -1;\n        i(t, \"left\", t.scrollLeft + s * e.containerWidth), l(t), r.stopPropagation();\n      });\n    }\n    var o = t(\"../instances\"),\n      l = t(\"../update-geometry\"),\n      i = t(\"../update-scroll\");\n    e.exports = function (t) {\n      var e = o.get(t);\n      r(t, e);\n    };\n  }, {\n    \"../instances\": 18,\n    \"../update-geometry\": 19,\n    \"../update-scroll\": 20\n  }],\n  11: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t, e) {\n      function n(n) {\n        var o = r + n * e.railXRatio,\n          i = Math.max(0, e.scrollbarXRail.getBoundingClientRect().left) + e.railXRatio * (e.railXWidth - e.scrollbarXWidth);\n        o < 0 ? e.scrollbarXLeft = 0 : o > i ? e.scrollbarXLeft = i : e.scrollbarXLeft = o;\n        var s = l.toInt(e.scrollbarXLeft * (e.contentWidth - e.containerWidth) / (e.containerWidth - e.railXRatio * e.scrollbarXWidth)) - e.negativeScrollAdjustment;\n        c(t, \"left\", s);\n      }\n      var r = null,\n        o = null,\n        s = function s(e) {\n          n(e.pageX - o), a(t), e.stopPropagation(), e.preventDefault();\n        },\n        u = function u() {\n          l.stopScrolling(t, \"x\"), e.event.unbind(e.ownerDocument, \"mousemove\", s);\n        };\n      e.event.bind(e.scrollbarX, \"mousedown\", function (n) {\n        o = n.pageX, r = l.toInt(i.css(e.scrollbarX, \"left\")) * e.railXRatio, l.startScrolling(t, \"x\"), e.event.bind(e.ownerDocument, \"mousemove\", s), e.event.once(e.ownerDocument, \"mouseup\", u), n.stopPropagation(), n.preventDefault();\n      });\n    }\n    function o(t, e) {\n      function n(n) {\n        var o = r + n * e.railYRatio,\n          i = Math.max(0, e.scrollbarYRail.getBoundingClientRect().top) + e.railYRatio * (e.railYHeight - e.scrollbarYHeight);\n        o < 0 ? e.scrollbarYTop = 0 : o > i ? e.scrollbarYTop = i : e.scrollbarYTop = o;\n        var s = l.toInt(e.scrollbarYTop * (e.contentHeight - e.containerHeight) / (e.containerHeight - e.railYRatio * e.scrollbarYHeight));\n        c(t, \"top\", s);\n      }\n      var r = null,\n        o = null,\n        s = function s(e) {\n          n(e.pageY - o), a(t), e.stopPropagation(), e.preventDefault();\n        },\n        u = function u() {\n          l.stopScrolling(t, \"y\"), e.event.unbind(e.ownerDocument, \"mousemove\", s);\n        };\n      e.event.bind(e.scrollbarY, \"mousedown\", function (n) {\n        o = n.pageY, r = l.toInt(i.css(e.scrollbarY, \"top\")) * e.railYRatio, l.startScrolling(t, \"y\"), e.event.bind(e.ownerDocument, \"mousemove\", s), e.event.once(e.ownerDocument, \"mouseup\", u), n.stopPropagation(), n.preventDefault();\n      });\n    }\n    var l = t(\"../../lib/helper\"),\n      i = t(\"../../lib/dom\"),\n      s = t(\"../instances\"),\n      a = t(\"../update-geometry\"),\n      c = t(\"../update-scroll\");\n    e.exports = function (t) {\n      var e = s.get(t);\n      r(t, e), o(t, e);\n    };\n  }, {\n    \"../../lib/dom\": 3,\n    \"../../lib/helper\": 6,\n    \"../instances\": 18,\n    \"../update-geometry\": 19,\n    \"../update-scroll\": 20\n  }],\n  12: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t, e) {\n      function n(n, r) {\n        var o = t.scrollTop;\n        if (0 === n) {\n          if (!e.scrollbarYActive) return !1;\n          if (0 === o && r > 0 || o >= e.contentHeight - e.containerHeight && r < 0) return !e.settings.wheelPropagation;\n        }\n        var l = t.scrollLeft;\n        if (0 === r) {\n          if (!e.scrollbarXActive) return !1;\n          if (0 === l && n < 0 || l >= e.contentWidth - e.containerWidth && n > 0) return !e.settings.wheelPropagation;\n        }\n        return !0;\n      }\n      var r = !1;\n      e.event.bind(t, \"mouseenter\", function () {\n        r = !0;\n      }), e.event.bind(t, \"mouseleave\", function () {\n        r = !1;\n      });\n      var i = !1;\n      e.event.bind(e.ownerDocument, \"keydown\", function (c) {\n        if (!(c.isDefaultPrevented && c.isDefaultPrevented() || c.defaultPrevented)) {\n          var u = l.matches(e.scrollbarX, \":focus\") || l.matches(e.scrollbarY, \":focus\");\n          if (r || u) {\n            var d = document.activeElement ? document.activeElement : e.ownerDocument.activeElement;\n            if (d) {\n              if (\"IFRAME\" === d.tagName) d = d.contentDocument.activeElement;else for (; d.shadowRoot;) d = d.shadowRoot.activeElement;\n              if (o.isEditable(d)) return;\n            }\n            var p = 0,\n              f = 0;\n            switch (c.which) {\n              case 37:\n                p = c.metaKey ? -e.contentWidth : c.altKey ? -e.containerWidth : -30;\n                break;\n              case 38:\n                f = c.metaKey ? e.contentHeight : c.altKey ? e.containerHeight : 30;\n                break;\n              case 39:\n                p = c.metaKey ? e.contentWidth : c.altKey ? e.containerWidth : 30;\n                break;\n              case 40:\n                f = c.metaKey ? -e.contentHeight : c.altKey ? -e.containerHeight : -30;\n                break;\n              case 33:\n                f = 90;\n                break;\n              case 32:\n                f = c.shiftKey ? 90 : -90;\n                break;\n              case 34:\n                f = -90;\n                break;\n              case 35:\n                f = c.ctrlKey ? -e.contentHeight : -e.containerHeight;\n                break;\n              case 36:\n                f = c.ctrlKey ? t.scrollTop : e.containerHeight;\n                break;\n              default:\n                return;\n            }\n            a(t, \"top\", t.scrollTop - f), a(t, \"left\", t.scrollLeft + p), s(t), i = n(p, f), i && c.preventDefault();\n          }\n        }\n      });\n    }\n    var o = t(\"../../lib/helper\"),\n      l = t(\"../../lib/dom\"),\n      i = t(\"../instances\"),\n      s = t(\"../update-geometry\"),\n      a = t(\"../update-scroll\");\n    e.exports = function (t) {\n      var e = i.get(t);\n      r(t, e);\n    };\n  }, {\n    \"../../lib/dom\": 3,\n    \"../../lib/helper\": 6,\n    \"../instances\": 18,\n    \"../update-geometry\": 19,\n    \"../update-scroll\": 20\n  }],\n  13: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t, e) {\n      function n(n, r) {\n        var o = t.scrollTop;\n        if (0 === n) {\n          if (!e.scrollbarYActive) return !1;\n          if (0 === o && r > 0 || o >= e.contentHeight - e.containerHeight && r < 0) return !e.settings.wheelPropagation;\n        }\n        var l = t.scrollLeft;\n        if (0 === r) {\n          if (!e.scrollbarXActive) return !1;\n          if (0 === l && n < 0 || l >= e.contentWidth - e.containerWidth && n > 0) return !e.settings.wheelPropagation;\n        }\n        return !0;\n      }\n      function r(t) {\n        var e = t.deltaX,\n          n = -1 * t.deltaY;\n        return \"undefined\" != typeof e && \"undefined\" != typeof n || (e = -1 * t.wheelDeltaX / 6, n = t.wheelDeltaY / 6), t.deltaMode && 1 === t.deltaMode && (e *= 10, n *= 10), e !== e && n !== n && (e = 0, n = t.wheelDelta), t.shiftKey ? [-n, -e] : [e, n];\n      }\n      function o(e, n) {\n        var r = t.querySelector(\"textarea:hover, select[multiple]:hover, .ps-child:hover\");\n        if (r) {\n          if (!window.getComputedStyle(r).overflow.match(/(scroll|auto)/)) return !1;\n          var o = r.scrollHeight - r.clientHeight;\n          if (o > 0 && !(0 === r.scrollTop && n > 0 || r.scrollTop === o && n < 0)) return !0;\n          var l = r.scrollLeft - r.clientWidth;\n          if (l > 0 && !(0 === r.scrollLeft && e < 0 || r.scrollLeft === l && e > 0)) return !0;\n        }\n        return !1;\n      }\n      function s(s) {\n        var c = r(s),\n          u = c[0],\n          d = c[1];\n        o(u, d) || (a = !1, e.settings.useBothWheelAxes ? e.scrollbarYActive && !e.scrollbarXActive ? (d ? i(t, \"top\", t.scrollTop - d * e.settings.wheelSpeed) : i(t, \"top\", t.scrollTop + u * e.settings.wheelSpeed), a = !0) : e.scrollbarXActive && !e.scrollbarYActive && (u ? i(t, \"left\", t.scrollLeft + u * e.settings.wheelSpeed) : i(t, \"left\", t.scrollLeft - d * e.settings.wheelSpeed), a = !0) : (i(t, \"top\", t.scrollTop - d * e.settings.wheelSpeed), i(t, \"left\", t.scrollLeft + u * e.settings.wheelSpeed)), l(t), a = a || n(u, d), a && (s.stopPropagation(), s.preventDefault()));\n      }\n      var a = !1;\n      \"undefined\" != typeof window.onwheel ? e.event.bind(t, \"wheel\", s) : \"undefined\" != typeof window.onmousewheel && e.event.bind(t, \"mousewheel\", s);\n    }\n    var o = t(\"../instances\"),\n      l = t(\"../update-geometry\"),\n      i = t(\"../update-scroll\");\n    e.exports = function (t) {\n      var e = o.get(t);\n      r(t, e);\n    };\n  }, {\n    \"../instances\": 18,\n    \"../update-geometry\": 19,\n    \"../update-scroll\": 20\n  }],\n  14: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t, e) {\n      e.event.bind(t, \"scroll\", function () {\n        l(t);\n      });\n    }\n    var o = t(\"../instances\"),\n      l = t(\"../update-geometry\");\n    e.exports = function (t) {\n      var e = o.get(t);\n      r(t, e);\n    };\n  }, {\n    \"../instances\": 18,\n    \"../update-geometry\": 19\n  }],\n  15: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t, e) {\n      function n() {\n        var t = window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : \"\";\n        return 0 === t.toString().length ? null : t.getRangeAt(0).commonAncestorContainer;\n      }\n      function r() {\n        c || (c = setInterval(function () {\n          return l.get(t) ? (s(t, \"top\", t.scrollTop + u.top), s(t, \"left\", t.scrollLeft + u.left), void i(t)) : void clearInterval(c);\n        }, 50));\n      }\n      function a() {\n        c && (clearInterval(c), c = null), o.stopScrolling(t);\n      }\n      var c = null,\n        u = {\n          top: 0,\n          left: 0\n        },\n        d = !1;\n      e.event.bind(e.ownerDocument, \"selectionchange\", function () {\n        t.contains(n()) ? d = !0 : (d = !1, a());\n      }), e.event.bind(window, \"mouseup\", function () {\n        d && (d = !1, a());\n      }), e.event.bind(window, \"keyup\", function () {\n        d && (d = !1, a());\n      }), e.event.bind(window, \"mousemove\", function (e) {\n        if (d) {\n          var n = {\n              x: e.pageX,\n              y: e.pageY\n            },\n            l = {\n              left: t.offsetLeft,\n              right: t.offsetLeft + t.offsetWidth,\n              top: t.offsetTop,\n              bottom: t.offsetTop + t.offsetHeight\n            };\n          n.x < l.left + 3 ? (u.left = -5, o.startScrolling(t, \"x\")) : n.x > l.right - 3 ? (u.left = 5, o.startScrolling(t, \"x\")) : u.left = 0, n.y < l.top + 3 ? (l.top + 3 - n.y < 5 ? u.top = -5 : u.top = -20, o.startScrolling(t, \"y\")) : n.y > l.bottom - 3 ? (n.y - l.bottom + 3 < 5 ? u.top = 5 : u.top = 20, o.startScrolling(t, \"y\")) : u.top = 0, 0 === u.top && 0 === u.left ? a() : r();\n        }\n      });\n    }\n    var o = t(\"../../lib/helper\"),\n      l = t(\"../instances\"),\n      i = t(\"../update-geometry\"),\n      s = t(\"../update-scroll\");\n    e.exports = function (t) {\n      var e = l.get(t);\n      r(t, e);\n    };\n  }, {\n    \"../../lib/helper\": 6,\n    \"../instances\": 18,\n    \"../update-geometry\": 19,\n    \"../update-scroll\": 20\n  }],\n  16: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t, e, n, r) {\n      function o(n, r) {\n        var o = t.scrollTop,\n          l = t.scrollLeft,\n          i = Math.abs(n),\n          s = Math.abs(r);\n        if (s > i) {\n          if (r < 0 && o === e.contentHeight - e.containerHeight || r > 0 && 0 === o) return !e.settings.swipePropagation;\n        } else if (i > s && (n < 0 && l === e.contentWidth - e.containerWidth || n > 0 && 0 === l)) return !e.settings.swipePropagation;\n        return !0;\n      }\n      function a(e, n) {\n        s(t, \"top\", t.scrollTop - n), s(t, \"left\", t.scrollLeft - e), i(t);\n      }\n      function c() {\n        w = !0;\n      }\n      function u() {\n        w = !1;\n      }\n      function d(t) {\n        return t.targetTouches ? t.targetTouches[0] : t;\n      }\n      function p(t) {\n        return !(!t.targetTouches || 1 !== t.targetTouches.length) || !(!t.pointerType || \"mouse\" === t.pointerType || t.pointerType === t.MSPOINTER_TYPE_MOUSE);\n      }\n      function f(t) {\n        if (p(t)) {\n          Y = !0;\n          var e = d(t);\n          g.pageX = e.pageX, g.pageY = e.pageY, v = new Date().getTime(), null !== y && clearInterval(y), t.stopPropagation();\n        }\n      }\n      function h(t) {\n        if (!Y && e.settings.swipePropagation && f(t), !w && Y && p(t)) {\n          var n = d(t),\n            r = {\n              pageX: n.pageX,\n              pageY: n.pageY\n            },\n            l = r.pageX - g.pageX,\n            i = r.pageY - g.pageY;\n          a(l, i), g = r;\n          var s = new Date().getTime(),\n            c = s - v;\n          c > 0 && (m.x = l / c, m.y = i / c, v = s), o(l, i) && (t.stopPropagation(), t.preventDefault());\n        }\n      }\n      function b() {\n        !w && Y && (Y = !1, clearInterval(y), y = setInterval(function () {\n          return l.get(t) && (m.x || m.y) ? Math.abs(m.x) < .01 && Math.abs(m.y) < .01 ? void clearInterval(y) : (a(30 * m.x, 30 * m.y), m.x *= .8, void (m.y *= .8)) : void clearInterval(y);\n        }, 10));\n      }\n      var g = {},\n        v = 0,\n        m = {},\n        y = null,\n        w = !1,\n        Y = !1;\n      n && (e.event.bind(window, \"touchstart\", c), e.event.bind(window, \"touchend\", u), e.event.bind(t, \"touchstart\", f), e.event.bind(t, \"touchmove\", h), e.event.bind(t, \"touchend\", b)), r && (window.PointerEvent ? (e.event.bind(window, \"pointerdown\", c), e.event.bind(window, \"pointerup\", u), e.event.bind(t, \"pointerdown\", f), e.event.bind(t, \"pointermove\", h), e.event.bind(t, \"pointerup\", b)) : window.MSPointerEvent && (e.event.bind(window, \"MSPointerDown\", c), e.event.bind(window, \"MSPointerUp\", u), e.event.bind(t, \"MSPointerDown\", f), e.event.bind(t, \"MSPointerMove\", h), e.event.bind(t, \"MSPointerUp\", b)));\n    }\n    var o = t(\"../../lib/helper\"),\n      l = t(\"../instances\"),\n      i = t(\"../update-geometry\"),\n      s = t(\"../update-scroll\");\n    e.exports = function (t) {\n      if (o.env.supportsTouch || o.env.supportsIePointer) {\n        var e = l.get(t);\n        r(t, e, o.env.supportsTouch, o.env.supportsIePointer);\n      }\n    };\n  }, {\n    \"../../lib/helper\": 6,\n    \"../instances\": 18,\n    \"../update-geometry\": 19,\n    \"../update-scroll\": 20\n  }],\n  17: [function (t, e, n) {\n    \"use strict\";\n\n    var r = t(\"../lib/helper\"),\n      o = t(\"../lib/class\"),\n      l = t(\"./instances\"),\n      i = t(\"./update-geometry\"),\n      s = {\n        \"click-rail\": t(\"./handler/click-rail\"),\n        \"drag-scrollbar\": t(\"./handler/drag-scrollbar\"),\n        keyboard: t(\"./handler/keyboard\"),\n        wheel: t(\"./handler/mouse-wheel\"),\n        touch: t(\"./handler/touch\"),\n        selection: t(\"./handler/selection\")\n      },\n      a = t(\"./handler/native-scroll\");\n    e.exports = function (t, e) {\n      e = \"object\" == _typeof(e) ? e : {}, o.add(t, \"ps-container\");\n      var n = l.add(t);\n      n.settings = r.extend(n.settings, e), o.add(t, \"ps-theme-\" + n.settings.theme), n.settings.handlers.forEach(function (e) {\n        s[e](t);\n      }), a(t), i(t);\n    };\n  }, {\n    \"../lib/class\": 2,\n    \"../lib/helper\": 6,\n    \"./handler/click-rail\": 10,\n    \"./handler/drag-scrollbar\": 11,\n    \"./handler/keyboard\": 12,\n    \"./handler/mouse-wheel\": 13,\n    \"./handler/native-scroll\": 14,\n    \"./handler/selection\": 15,\n    \"./handler/touch\": 16,\n    \"./instances\": 18,\n    \"./update-geometry\": 19\n  }],\n  18: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t) {\n      function e() {\n        a.add(t, \"ps-focus\");\n      }\n      function n() {\n        a.remove(t, \"ps-focus\");\n      }\n      var r = this;\n      r.settings = s.clone(c), r.containerWidth = null, r.containerHeight = null, r.contentWidth = null, r.contentHeight = null, r.isRtl = \"rtl\" === u.css(t, \"direction\"), r.isNegativeScroll = function () {\n        var e = t.scrollLeft,\n          n = null;\n        return t.scrollLeft = -1, n = t.scrollLeft < 0, t.scrollLeft = e, n;\n      }(), r.negativeScrollAdjustment = r.isNegativeScroll ? t.scrollWidth - t.clientWidth : 0, r.event = new d(), r.ownerDocument = t.ownerDocument || document, r.scrollbarXRail = u.appendTo(u.e(\"div\", \"ps-scrollbar-x-rail\"), t), r.scrollbarX = u.appendTo(u.e(\"div\", \"ps-scrollbar-x\"), r.scrollbarXRail), r.scrollbarX.setAttribute(\"tabindex\", 0), r.event.bind(r.scrollbarX, \"focus\", e), r.event.bind(r.scrollbarX, \"blur\", n), r.scrollbarXActive = null, r.scrollbarXWidth = null, r.scrollbarXLeft = null, r.scrollbarXBottom = s.toInt(u.css(r.scrollbarXRail, \"bottom\")), r.isScrollbarXUsingBottom = r.scrollbarXBottom === r.scrollbarXBottom, r.scrollbarXTop = r.isScrollbarXUsingBottom ? null : s.toInt(u.css(r.scrollbarXRail, \"top\")), r.railBorderXWidth = s.toInt(u.css(r.scrollbarXRail, \"borderLeftWidth\")) + s.toInt(u.css(r.scrollbarXRail, \"borderRightWidth\")), u.css(r.scrollbarXRail, \"display\", \"block\"), r.railXMarginWidth = s.toInt(u.css(r.scrollbarXRail, \"marginLeft\")) + s.toInt(u.css(r.scrollbarXRail, \"marginRight\")), u.css(r.scrollbarXRail, \"display\", \"\"), r.railXWidth = null, r.railXRatio = null, r.scrollbarYRail = u.appendTo(u.e(\"div\", \"ps-scrollbar-y-rail\"), t), r.scrollbarY = u.appendTo(u.e(\"div\", \"ps-scrollbar-y\"), r.scrollbarYRail), r.scrollbarY.setAttribute(\"tabindex\", 0), r.event.bind(r.scrollbarY, \"focus\", e), r.event.bind(r.scrollbarY, \"blur\", n), r.scrollbarYActive = null, r.scrollbarYHeight = null, r.scrollbarYTop = null, r.scrollbarYRight = s.toInt(u.css(r.scrollbarYRail, \"right\")), r.isScrollbarYUsingRight = r.scrollbarYRight === r.scrollbarYRight, r.scrollbarYLeft = r.isScrollbarYUsingRight ? null : s.toInt(u.css(r.scrollbarYRail, \"left\")), r.scrollbarYOuterWidth = r.isRtl ? s.outerWidth(r.scrollbarY) : null, r.railBorderYWidth = s.toInt(u.css(r.scrollbarYRail, \"borderTopWidth\")) + s.toInt(u.css(r.scrollbarYRail, \"borderBottomWidth\")), u.css(r.scrollbarYRail, \"display\", \"block\"), r.railYMarginHeight = s.toInt(u.css(r.scrollbarYRail, \"marginTop\")) + s.toInt(u.css(r.scrollbarYRail, \"marginBottom\")), u.css(r.scrollbarYRail, \"display\", \"\"), r.railYHeight = null, r.railYRatio = null;\n    }\n    function o(t) {\n      return t.getAttribute(\"data-ps-id\");\n    }\n    function l(t, e) {\n      t.setAttribute(\"data-ps-id\", e);\n    }\n    function i(t) {\n      t.removeAttribute(\"data-ps-id\");\n    }\n    var s = t(\"../lib/helper\"),\n      a = t(\"../lib/class\"),\n      c = t(\"./default-setting\"),\n      u = t(\"../lib/dom\"),\n      d = t(\"../lib/event-manager\"),\n      p = t(\"../lib/guid\"),\n      f = {};\n    n.add = function (t) {\n      var e = p();\n      return l(t, e), f[e] = new r(t), f[e];\n    }, n.remove = function (t) {\n      delete f[o(t)], i(t);\n    }, n.get = function (t) {\n      return f[o(t)];\n    };\n  }, {\n    \"../lib/class\": 2,\n    \"../lib/dom\": 3,\n    \"../lib/event-manager\": 4,\n    \"../lib/guid\": 5,\n    \"../lib/helper\": 6,\n    \"./default-setting\": 8\n  }],\n  19: [function (t, e, n) {\n    \"use strict\";\n\n    function r(t, e) {\n      return t.settings.minScrollbarLength && (e = Math.max(e, t.settings.minScrollbarLength)), t.settings.maxScrollbarLength && (e = Math.min(e, t.settings.maxScrollbarLength)), e;\n    }\n    function o(t, e) {\n      var n = {\n        width: e.railXWidth\n      };\n      e.isRtl ? n.left = e.negativeScrollAdjustment + t.scrollLeft + e.containerWidth - e.contentWidth : n.left = t.scrollLeft, e.isScrollbarXUsingBottom ? n.bottom = e.scrollbarXBottom - t.scrollTop : n.top = e.scrollbarXTop + t.scrollTop, s.css(e.scrollbarXRail, n);\n      var r = {\n        top: t.scrollTop,\n        height: e.railYHeight\n      };\n      e.isScrollbarYUsingRight ? e.isRtl ? r.right = e.contentWidth - (e.negativeScrollAdjustment + t.scrollLeft) - e.scrollbarYRight - e.scrollbarYOuterWidth : r.right = e.scrollbarYRight - t.scrollLeft : e.isRtl ? r.left = e.negativeScrollAdjustment + t.scrollLeft + 2 * e.containerWidth - e.contentWidth - e.scrollbarYLeft - e.scrollbarYOuterWidth : r.left = e.scrollbarYLeft + t.scrollLeft, s.css(e.scrollbarYRail, r), s.css(e.scrollbarX, {\n        left: e.scrollbarXLeft,\n        width: e.scrollbarXWidth - e.railBorderXWidth\n      }), s.css(e.scrollbarY, {\n        top: e.scrollbarYTop,\n        height: e.scrollbarYHeight - e.railBorderYWidth\n      });\n    }\n    var l = t(\"../lib/helper\"),\n      i = t(\"../lib/class\"),\n      s = t(\"../lib/dom\"),\n      a = t(\"./instances\"),\n      c = t(\"./update-scroll\");\n    e.exports = function (t) {\n      var e = a.get(t);\n      e.containerWidth = t.clientWidth, e.containerHeight = t.clientHeight, e.contentWidth = t.scrollWidth, e.contentHeight = t.scrollHeight;\n      var n;\n      t.contains(e.scrollbarXRail) || (n = s.queryChildren(t, \".ps-scrollbar-x-rail\"), n.length > 0 && n.forEach(function (t) {\n        s.remove(t);\n      }), s.appendTo(e.scrollbarXRail, t)), t.contains(e.scrollbarYRail) || (n = s.queryChildren(t, \".ps-scrollbar-y-rail\"), n.length > 0 && n.forEach(function (t) {\n        s.remove(t);\n      }), s.appendTo(e.scrollbarYRail, t)), !e.settings.suppressScrollX && e.containerWidth + e.settings.scrollXMarginOffset < e.contentWidth ? (e.scrollbarXActive = !0, e.railXWidth = e.containerWidth - e.railXMarginWidth, e.railXRatio = e.containerWidth / e.railXWidth, e.scrollbarXWidth = r(e, l.toInt(e.railXWidth * e.containerWidth / e.contentWidth)), e.scrollbarXLeft = l.toInt((e.negativeScrollAdjustment + t.scrollLeft) * (e.railXWidth - e.scrollbarXWidth) / (e.contentWidth - e.containerWidth))) : e.scrollbarXActive = !1, !e.settings.suppressScrollY && e.containerHeight + e.settings.scrollYMarginOffset < e.contentHeight ? (e.scrollbarYActive = !0, e.railYHeight = e.containerHeight - e.railYMarginHeight, e.railYRatio = e.containerHeight / e.railYHeight, e.scrollbarYHeight = r(e, l.toInt(e.railYHeight * e.containerHeight / e.contentHeight)), e.scrollbarYTop = l.toInt(t.scrollTop * (e.railYHeight - e.scrollbarYHeight) / (e.contentHeight - e.containerHeight))) : e.scrollbarYActive = !1, e.scrollbarXLeft >= e.railXWidth - e.scrollbarXWidth && (e.scrollbarXLeft = e.railXWidth - e.scrollbarXWidth), e.scrollbarYTop >= e.railYHeight - e.scrollbarYHeight && (e.scrollbarYTop = e.railYHeight - e.scrollbarYHeight), o(t, e), e.scrollbarXActive ? i.add(t, \"ps-active-x\") : (i.remove(t, \"ps-active-x\"), e.scrollbarXWidth = 0, e.scrollbarXLeft = 0, c(t, \"left\", 0)), e.scrollbarYActive ? i.add(t, \"ps-active-y\") : (i.remove(t, \"ps-active-y\"), e.scrollbarYHeight = 0, e.scrollbarYTop = 0, c(t, \"top\", 0));\n    };\n  }, {\n    \"../lib/class\": 2,\n    \"../lib/dom\": 3,\n    \"../lib/helper\": 6,\n    \"./instances\": 18,\n    \"./update-scroll\": 20\n  }],\n  20: [function (t, e, n) {\n    \"use strict\";\n\n    var r,\n      o,\n      l = t(\"./instances\"),\n      i = function i(t) {\n        var e = document.createEvent(\"Event\");\n        return e.initEvent(t, !0, !0), e;\n      };\n    e.exports = function (t, e, n) {\n      if (\"undefined\" == typeof t) throw \"You must provide an element to the update-scroll function\";\n      if (\"undefined\" == typeof e) throw \"You must provide an axis to the update-scroll function\";\n      if (\"undefined\" == typeof n) throw \"You must provide a value to the update-scroll function\";\n      \"top\" === e && n <= 0 && (t.scrollTop = n = 0, t.dispatchEvent(i(\"ps-y-reach-start\"))), \"left\" === e && n <= 0 && (t.scrollLeft = n = 0, t.dispatchEvent(i(\"ps-x-reach-start\")));\n      var s = l.get(t);\n      \"top\" === e && n >= s.contentHeight - s.containerHeight && (n = s.contentHeight - s.containerHeight, n - t.scrollTop <= 1 ? n = t.scrollTop : t.scrollTop = n, t.dispatchEvent(i(\"ps-y-reach-end\"))), \"left\" === e && n >= s.contentWidth - s.containerWidth && (n = s.contentWidth - s.containerWidth, n - t.scrollLeft <= 1 ? n = t.scrollLeft : t.scrollLeft = n, t.dispatchEvent(i(\"ps-x-reach-end\"))), r || (r = t.scrollTop), o || (o = t.scrollLeft), \"top\" === e && n < r && t.dispatchEvent(i(\"ps-scroll-up\")), \"top\" === e && n > r && t.dispatchEvent(i(\"ps-scroll-down\")), \"left\" === e && n < o && t.dispatchEvent(i(\"ps-scroll-left\")), \"left\" === e && n > o && t.dispatchEvent(i(\"ps-scroll-right\")), \"top\" === e && (t.scrollTop = r = n, t.dispatchEvent(i(\"ps-scroll-y\"))), \"left\" === e && (t.scrollLeft = o = n, t.dispatchEvent(i(\"ps-scroll-x\")));\n    };\n  }, {\n    \"./instances\": 18\n  }],\n  21: [function (t, e, n) {\n    \"use strict\";\n\n    var r = t(\"../lib/helper\"),\n      o = t(\"../lib/dom\"),\n      l = t(\"./instances\"),\n      i = t(\"./update-geometry\"),\n      s = t(\"./update-scroll\");\n    e.exports = function (t) {\n      var e = l.get(t);\n      e && (e.negativeScrollAdjustment = e.isNegativeScroll ? t.scrollWidth - t.clientWidth : 0, o.css(e.scrollbarXRail, \"display\", \"block\"), o.css(e.scrollbarYRail, \"display\", \"block\"), e.railXMarginWidth = r.toInt(o.css(e.scrollbarXRail, \"marginLeft\")) + r.toInt(o.css(e.scrollbarXRail, \"marginRight\")), e.railYMarginHeight = r.toInt(o.css(e.scrollbarYRail, \"marginTop\")) + r.toInt(o.css(e.scrollbarYRail, \"marginBottom\")), o.css(e.scrollbarXRail, \"display\", \"none\"), o.css(e.scrollbarYRail, \"display\", \"none\"), i(t), s(t, \"top\", t.scrollTop), s(t, \"left\", t.scrollLeft), o.css(e.scrollbarXRail, \"display\", \"\"), o.css(e.scrollbarYRail, \"display\", \"\"));\n    };\n  }, {\n    \"../lib/dom\": 3,\n    \"../lib/helper\": 6,\n    \"./instances\": 18,\n    \"./update-geometry\": 19,\n    \"./update-scroll\": 20\n  }]\n}, {}, [1]);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/perfect-scrollbar.jquery.min.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/player.min.js":
/*!*******************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/player.min.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n!function (t, e) {\n   true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (e),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;\n}(this, function () {\n  \"use strict\";\n\n  var t = {};\n  return t.hasClass = function (t, e) {\n    return new RegExp(\"(\\\\s|^)\" + e + \"(\\\\s|$)\").test(t.attr(\"class\"));\n  }, t.addClass = function (e, s) {\n    !t.hasClass(e, s) && e.attr(\"class\", (e.getAttribute(\"class\") ? e.getAttribute(\"class\") + \" \" : \"\") + s);\n  }, t.removeClass = function (e, s) {\n    var a = e.attr(\"class\").replace(new RegExp(\"(\\\\s|^)\" + s + \"(\\\\s|$)\", \"g\"), \"$2\");\n    t.hasClass(e, s) && e.attr(\"class\", a);\n  }, t.toggleClass = function (e, s) {\n    t[t.hasClass(e, s) ? \"removeClass\" : \"addClass\"](e, s);\n  }, t.className = function (t, e) {\n    t.attr(\"class\", e), console.log(\"className\", t);\n  }, t;\n}), function (t) {\n  var e = {\n    cursorPoint: function cursorPoint(t, s) {\n      e.settings.pt.x = t.clientX, e.settings.pt.y = t.clientY;\n      var a = s.find(\"svg\").attr(\"id\");\n      return a = document.getElementById(a), e.settings.pt.matrixTransform(a.getScreenCTM().inverse());\n    },\n    angle: function angle(t, e) {\n      var s = e - 50,\n        a = t - 50,\n        r = Math.atan2(s, a);\n      return r *= 180 / Math.PI, r += 90, 0 > r && (r = 360 + r), r;\n    },\n    setGraphValue: function setGraphValue(s, a, r) {\n      var n = r.find(e.settings.audioObj),\n        i = e.settings.pc,\n        o = i - parseFloat(a / n[0].duration * i, 10);\n      t(s).css(\"strokeDashoffset\", o), 0 === a && (t(s).addClass(s, \"done\"), s === t(e.settings.progress) && t(s).attr(\"class\", \"ended\"));\n    },\n    reportPosition: function reportPosition(t, s) {\n      var a = t.find(e.settings.progress);\n      t.find(e.settings.audioObj);\n      e.setGraphValue(a, s.currentTime, t);\n    },\n    stopAllSounds: function stopAllSounds() {\n      document.addEventListener(\"play\", function (e) {\n        for (var s = document.getElementsByTagName(\"audio\"), a = 0, r = s.length; r > a; a++) s[a] != e.target && s[a].pause(), s[a] != e.target && t(s[a]).parent(\"div\").find(\".playing\").attr(\"class\", \"paused\");\n      }, !0);\n    },\n    settings: {},\n    init: function init(s) {\n      var a = ['<svg viewBox=\"0 0 100 100\" id=\"playable\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"34\" data-play=\"playable\" class=\"not-started playable\">', '<g class=\"shape\">', '<circle class=\"progress-track\" cx=\"50\" cy=\"50\" r=\"47.45\" stroke=\"#becce1\" stroke-opacity=\"0.25\" stroke-linecap=\"round\" fill=\"none\" stroke-width=\"5\"/>', '<circle class=\"precache-bar\" cx=\"50\" cy=\"50\" r=\"47.45\" stroke=\"#302F32\" stroke-opacity=\"0.25\" stroke-linecap=\"round\" fill=\"none\" stroke-width=\"5\" transform=\"rotate(-90 50 50)\"/>', '<circle class=\"progress-bar\" cx=\"50\" cy=\"50\" r=\"47.45\" stroke=\"#009EF8\" stroke-opacity=\"1\" stroke-linecap=\"round\" fill=\"none\" stroke-width=\"5\" transform=\"rotate(-90 50 50)\"/>', \"</g>\", '<circle class=\"controls\" cx=\"50\" cy=\"50\" r=\"45\" stroke=\"none\" fill=\"#000000\" opacity=\"0.0\" pointer-events=\"all\"/>', '<g class=\"control pause\">', '<line x1=\"40\" y1=\"35\" x2=\"40\" y2=\"65\" stroke=\"#000000\" fill=\"none\" stroke-width=\"8\" stroke-linecap=\"round\"/>', '<line x1=\"60\" y1=\"35\" x2=\"60\" y2=\"65\" stroke=\"#000000\" fill=\"none\" stroke-width=\"8\" stroke-linecap=\"round\"/>', \"</g>\", '<g class=\"control play\">', '<polygon points=\"45,35 65,50 45,65\" fill=\"#009EF8\" stroke-width=\"0\"></polygon>', \"</g>\", '<g class=\"control stop\">', '<rect x=\"35\" y=\"35\" width=\"30\" height=\"30\" stroke=\"#000000\" fill=\"none\" stroke-width=\"1\"/>', \"</g>\", \"</svg>\"];\n      a = a.join(\" \"), t.each(this, function (e, s) {\n        var r = t(this).find(\"audio\");\n        r.attr(\"id\", \"audio\" + e), a = a.replace('width=\"34\"', 'width=\"' + r.data(\"size\") + '\"'), a = a.replace('height=\"34\"', 'height=\"' + r.data(\"size\") + '\"'), a = a.replace('id=\"playable\"', 'id=\"playable' + e + '\"'), t(this).append(a);\n      });\n      var r = t(this).find(\"svg\").attr(\"id\");\n      r = document.getElementById(r), e.defaults = {\n        \"this\": this,\n        thisSelector: this.selector.toString(),\n        playObj: \"playable\",\n        progress: \".progress-bar\",\n        precache: \".precache-bar\",\n        audioObj: \"audio\",\n        controlsObj: \".controls\",\n        pt: r.createSVGPoint(),\n        pc: 298.1371428256714\n      }, lunar = {}, e.settings = t.extend({}, e.defaults, s), t(e.settings.controlsObj).on(\"click\", function (s) {\n        var a = t(s.currentTarget).closest(t(e.settings.thisSelector)),\n          r = {\n            el: a,\n            activeAudio: a.find(e.settings.audioObj),\n            playObj: a.find(\"[data-play]\"),\n            precache: a.find(e.settings.precache)\n          };\n        switch (r[\"class\"] = r.playObj.attr(\"class\"), r[\"class\"].replace(\"playable\", \"\").trim()) {\n          case \"not-started\":\n            e.stopAllSounds(), r.activeAudio[0].play();\n            var n = document.getElementById(r.activeAudio.attr(\"id\"));\n            n.addEventListener(\"timeupdate\", function (t) {\n              e.reportPosition(a, n);\n            }), r.playObj.attr(\"class\", \"playing\");\n            break;\n          case \"playing\":\n            r.playObj.attr(\"class\", \"playable paused\"), r.activeAudio[0].pause(), t(n).off(\"timeupdate\");\n            break;\n          case \"paused\":\n            r.playObj.attr(\"class\", \"playable playing\"), r.activeAudio[0].play();\n            break;\n          case \"ended\":\n            r.playObj.attr(\"class\", \"not-started playable\"), r.activeAudio.off(\"timeupdate\", e.reportPosition);\n        }\n      }), t(e.defaults.audioObj).on(\"progress\", function (s) {\n        if (this.buffered.length > 0) {\n          var a = this.buffered.end(this.buffered.length - 1),\n            r = t(s.currentTarget).parent().find(e.settings.precache),\n            n = t(this).closest(t(e.settings.thisSelector));\n          e.setGraphValue(r, a, n);\n        }\n      });\n    }\n  };\n  t.fn.mediaPlayer = function (s) {\n    return e[s] ? e[s].apply(this, Array.prototype.slice.call(arguments, 1)) : \"object\" != _typeof(s) && s ? void t.error(\"Method \" + s + \" does not exist on jQuery.mediaPlayer\") : e.init.apply(this, arguments);\n  };\n}(jQuery);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/player.min.js?");

/***/ }),

/***/ "./buyercall/assets/scripts/vendor/sweetalert2.js":
/*!********************************************************!*\
  !*** ./buyercall/assets/scripts/vendor/sweetalert2.js ***!
  \********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*!\n * sweetalert2 v5.3.5\n * Released under the MIT License.\n */\n(function (global, factory) {\n  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() :  true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;\n})(this, function () {\n  'use strict';\n\n  var swalPrefix = 'swal2-';\n  var prefix = function prefix(items) {\n    var result = {};\n    for (var i in items) {\n      result[items[i]] = swalPrefix + items[i];\n    }\n    return result;\n  };\n  var swalClasses = prefix(['container', 'in', 'iosfix', 'modal', 'overlay', 'fade', 'show', 'hide', 'noanimation', 'close', 'content', 'spacer', 'confirm', 'cancel', 'icon', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea', 'inputerror', 'validationerror', 'progresssteps', 'activeprogressstep', 'progresscircle', 'progressline', 'loading', 'styled']);\n  var iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);\n  var defaultParams = {\n    title: '',\n    text: '',\n    html: '',\n    type: null,\n    customClass: '',\n    animation: true,\n    allowOutsideClick: true,\n    allowEscapeKey: true,\n    showConfirmButton: true,\n    showCancelButton: false,\n    preConfirm: null,\n    confirmButtonText: 'OK',\n    confirmButtonColor: '#3085d6',\n    confirmButtonClass: null,\n    cancelButtonText: 'Cancel',\n    cancelButtonColor: '#aaa',\n    cancelButtonClass: null,\n    buttonsStyling: true,\n    reverseButtons: false,\n    focusCancel: false,\n    showCloseButton: false,\n    showLoaderOnConfirm: false,\n    imageUrl: null,\n    imageWidth: null,\n    imageHeight: null,\n    imageClass: null,\n    timer: null,\n    width: 500,\n    padding: 20,\n    background: '#fff',\n    input: null,\n    inputPlaceholder: '',\n    inputValue: '',\n    inputOptions: {},\n    inputAutoTrim: true,\n    inputClass: null,\n    inputAttributes: {},\n    inputValidator: null,\n    progressSteps: [],\n    currentProgressStep: null,\n    progressStepsDistance: '40px',\n    onOpen: null,\n    onClose: null\n  };\n  var sweetHTML = '<div class=\"' + swalClasses.modal + '\" style=\"display: none\" tabIndex=\"-1\">' + '<ul class=\"' + swalClasses.progresssteps + '\"></ul>' + '<div class=\"' + swalClasses.icon + ' ' + iconTypes.error + '\">' + '<span class=\"x-mark\"><span class=\"line left\"></span><span class=\"line right\"></span></span>' + '</div>' + '<div class=\"' + swalClasses.icon + ' ' + iconTypes.question + '\">?</div>' + '<div class=\"' + swalClasses.icon + ' ' + iconTypes.warning + '\">!</div>' + '<div class=\"' + swalClasses.icon + ' ' + iconTypes.info + '\">i</div>' + '<div class=\"' + swalClasses.icon + ' ' + iconTypes.success + '\">' + '<span class=\"line tip\"></span> <span class=\"line long\"></span>' + '<div class=\"placeholder\"></div> <div class=\"fix\"></div>' + '</div>' + '<img class=\"' + swalClasses.image + '\">' + '<h2></h2>' + '<div class=\"' + swalClasses.content + '\"></div>' + '<input class=\"' + swalClasses.input + '\">' + '<input type=\"file\" class=\"' + swalClasses.file + '\">' + '<div class=\"' + swalClasses.range + '\">' + '<output></output>' + '<input type=\"range\">' + '</div>' + '<select class=\"' + swalClasses.select + '\"></select>' + '<div class=\"' + swalClasses.radio + '\"></div>' + '<label for=\"' + swalClasses.checkbox + '\" class=\"' + swalClasses.checkbox + '\">' + '<input type=\"checkbox\">' + '</label>' + '<textarea class=\"' + swalClasses.textarea + '\"></textarea>' + '<div class=\"' + swalClasses.validationerror + '\"></div>' + '<hr class=\"' + swalClasses.spacer + '\">' + '<button type=\"button\" class=\"' + swalClasses.confirm + '\">OK</button>' + '<button type=\"button\" class=\"' + swalClasses.cancel + '\">Cancel</button>' + '<span class=\"' + swalClasses.close + '\">&times;</span>' + '</div>';\n  var sweetContainer;\n  var existingSweetContainers = document.getElementsByClassName(swalClasses.container);\n  if (existingSweetContainers.length) {\n    sweetContainer = existingSweetContainers[0];\n  } else {\n    sweetContainer = document.createElement('div');\n    sweetContainer.className = swalClasses.container;\n    sweetContainer.innerHTML = sweetHTML;\n  }\n  var extend = function extend(a, b) {\n    for (var key in b) {\n      if (b.hasOwnProperty(key)) {\n        a[key] = b[key];\n      }\n    }\n    return a;\n  };\n\n  /*\n   * Set hover, active and focus-states for buttons (source: http://www.sitepoint.com/javascript-generate-lighter-darker-color)\n   */\n  var colorLuminance = function colorLuminance(hex, lum) {\n    // Validate hex string\n    hex = String(hex).replace(/[^0-9a-f]/gi, '');\n    if (hex.length < 6) {\n      hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n    }\n    lum = lum || 0;\n\n    // Convert to decimal and change luminosity\n    var rgb = '#';\n    for (var i = 0; i < 3; i++) {\n      var c = parseInt(hex.substr(i * 2, 2), 16);\n      c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16);\n      rgb += ('00' + c).substr(c.length);\n    }\n    return rgb;\n  };\n\n  // Remember state in cases where opening and handling a modal will fiddle with it.\n  var states = {\n    previousWindowKeyDown: null,\n    previousActiveElement: null,\n    previousBodyPadding: null\n  };\n\n  /*\n   * Add modal + overlay to DOM\n   */\n  var init = function init() {\n    if (typeof document === 'undefined') {\n      console.error('SweetAlert2 requires document to initialize');\n      return;\n    } else if (document.getElementsByClassName(swalClasses.container).length) {\n      return;\n    }\n    document.body.appendChild(sweetContainer);\n    var modal = getModal();\n    var input = getChildByClass(modal, swalClasses.input);\n    var file = getChildByClass(modal, swalClasses.file);\n    var range = modal.querySelector('.' + swalClasses.range + ' input');\n    var select = getChildByClass(modal, swalClasses.select);\n    var checkbox = modal.querySelector('.' + swalClasses.checkbox + ' input');\n    var textarea = getChildByClass(modal, swalClasses.textarea);\n    input.oninput = function () {\n      sweetAlert.resetValidationError();\n    };\n    input.onkeyup = function (event) {\n      event.stopPropagation();\n      if (event.keyCode === 13) {\n        sweetAlert.clickConfirm();\n      }\n    };\n    file.onchange = function () {\n      sweetAlert.resetValidationError();\n    };\n    range.oninput = function () {\n      sweetAlert.resetValidationError();\n      range.previousSibling.value = range.value;\n    };\n    range.onchange = function () {\n      sweetAlert.resetValidationError();\n      range.previousSibling.value = range.value;\n    };\n    select.onchange = function () {\n      sweetAlert.resetValidationError();\n    };\n    checkbox.onchange = function () {\n      sweetAlert.resetValidationError();\n    };\n    textarea.oninput = function () {\n      sweetAlert.resetValidationError();\n    };\n    return modal;\n  };\n\n  /*\n   * Manipulate DOM\n   */\n  var elementByClass = function elementByClass(className) {\n    return sweetContainer.querySelector('.' + className);\n  };\n  var getModal = function getModal() {\n    return document.body.querySelector('.' + swalClasses.modal) || init();\n  };\n  var getIcons = function getIcons() {\n    var modal = getModal();\n    return modal.querySelectorAll('.' + swalClasses.icon);\n  };\n  var getSpacer = function getSpacer() {\n    return elementByClass(swalClasses.spacer);\n  };\n  var getProgressSteps = function getProgressSteps() {\n    return elementByClass(swalClasses.progresssteps);\n  };\n  var getValidationError = function getValidationError() {\n    return elementByClass(swalClasses.validationerror);\n  };\n  var getConfirmButton = function getConfirmButton() {\n    return elementByClass(swalClasses.confirm);\n  };\n  var getCancelButton = function getCancelButton() {\n    return elementByClass(swalClasses.cancel);\n  };\n  var getCloseButton = function getCloseButton() {\n    return elementByClass(swalClasses.close);\n  };\n  var getFocusableElements = function getFocusableElements(focusCancel) {\n    var buttons = [getConfirmButton(), getCancelButton()];\n    if (focusCancel) {\n      buttons.reverse();\n    }\n    return buttons.concat(Array.prototype.slice.call(getModal().querySelectorAll('button:not([class^=' + swalPrefix + ']), input:not([type=hidden]), textarea, select')));\n  };\n  var hasClass = function hasClass(elem, className) {\n    return elem.classList.contains(className);\n  };\n  var focusInput = function focusInput(input) {\n    input.focus();\n\n    // place cursor at end of text in text input\n    if (input.type !== 'file') {\n      // http://stackoverflow.com/a/2345915/1331425\n      var val = input.value;\n      input.value = '';\n      input.value = val;\n    }\n  };\n  var addClass = function addClass(elem, className) {\n    if (!elem || !className) {\n      return;\n    }\n    var classes = className.split(/\\s+/);\n    classes.forEach(function (className) {\n      elem.classList.add(className);\n    });\n  };\n  var removeClass = function removeClass(elem, className) {\n    if (!elem || !className) {\n      return;\n    }\n    var classes = className.split(/\\s+/);\n    classes.forEach(function (className) {\n      elem.classList.remove(className);\n    });\n  };\n  var getChildByClass = function getChildByClass(elem, className) {\n    for (var i = 0; i < elem.childNodes.length; i++) {\n      if (hasClass(elem.childNodes[i], className)) {\n        return elem.childNodes[i];\n      }\n    }\n  };\n  var show = function show(elem, display) {\n    if (!display) {\n      display = 'block';\n    }\n    elem.style.opacity = '';\n    elem.style.display = display;\n  };\n  var hide = function hide(elem) {\n    elem.style.opacity = '';\n    elem.style.display = 'none';\n  };\n  var empty = function empty(elem) {\n    while (elem.firstChild) {\n      elem.removeChild(elem.firstChild);\n    }\n  };\n\n  // borrowed from jqeury $(elem).is(':visible') implementation\n  var isVisible = function isVisible(elem) {\n    return elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length;\n  };\n  var removeStyleProperty = function removeStyleProperty(elem, property) {\n    if (elem.style.removeProperty) {\n      elem.style.removeProperty(property);\n    } else {\n      elem.style.removeAttribute(property);\n    }\n  };\n  var fireClick = function fireClick(node) {\n    // Taken from http://www.nonobtrusive.com/2011/11/29/programatically-fire-crossbrowser-click-event-with-javascript/\n    // Then fixed for today's Chrome browser.\n    if (typeof MouseEvent === 'function') {\n      // Up-to-date approach\n      var mevt = new MouseEvent('click', {\n        view: window,\n        bubbles: false,\n        cancelable: true\n      });\n      node.dispatchEvent(mevt);\n    } else if (document.createEvent) {\n      // Fallback\n      var evt = document.createEvent('MouseEvents');\n      evt.initEvent('click', false, false);\n      node.dispatchEvent(evt);\n    } else if (document.createEventObject) {\n      node.fireEvent('onclick');\n    } else if (typeof node.onclick === 'function') {\n      node.onclick();\n    }\n  };\n  var stopEventPropagation = function stopEventPropagation(e) {\n    // In particular, make sure the space bar doesn't scroll the main window.\n    if (typeof e.stopPropagation === 'function') {\n      e.stopPropagation();\n      e.preventDefault();\n    } else if (window.event && window.event.hasOwnProperty('cancelBubble')) {\n      window.event.cancelBubble = true;\n    }\n  };\n  var animationEndEvent = function () {\n    var testEl = document.createElement('div');\n    var transEndEventNames = {\n      'WebkitAnimation': 'webkitAnimationEnd',\n      'OAnimation': 'oAnimationEnd oanimationend',\n      'msAnimation': 'MSAnimationEnd',\n      'animation': 'animationend'\n    };\n    for (var i in transEndEventNames) {\n      if (transEndEventNames.hasOwnProperty(i) && testEl.style[i] !== undefined) {\n        return transEndEventNames[i];\n      }\n    }\n    return false;\n  }();\n\n  // Reset the page to its previous state\n  var resetPrevState = function resetPrevState() {\n    var modal = getModal();\n    window.onkeydown = states.previousWindowKeyDown;\n    if (states.previousActiveElement && states.previousActiveElement.focus) {\n      states.previousActiveElement.focus();\n    }\n    clearTimeout(modal.timeout);\n  };\n\n  // Measure width of scrollbar\n  // https://github.com/twbs/bootstrap/blob/master/js/modal.js#L279-L286\n  var measureScrollbar = function measureScrollbar() {\n    var scrollDiv = document.createElement('div');\n    scrollDiv.style.width = '50px';\n    scrollDiv.style.height = '50px';\n    scrollDiv.style.overflow = 'scroll';\n    document.body.appendChild(scrollDiv);\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n    document.body.removeChild(scrollDiv);\n    return scrollbarWidth;\n  };\n\n  // JavaScript Debounce Function\n  // https://davidwalsh.name/javascript-debounce-function\n  var debounce = function debounce(func, wait, immediate) {\n    var timeout;\n    return function () {\n      var context = this;\n      var args = arguments;\n      var later = function later() {\n        timeout = null;\n        if (!immediate) func.apply(context, args);\n      };\n      var callNow = immediate && !timeout;\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n      if (callNow) func.apply(context, args);\n    };\n  };\n  var modalParams = extend({}, defaultParams);\n  var queue = [];\n  var swal2Observer;\n\n  /*\n   * Set type, text and actions on modal\n   */\n  var setParameters = function setParameters(params) {\n    var modal = getModal();\n    for (var param in params) {\n      if (!defaultParams.hasOwnProperty(param) && param !== 'extraParams') {\n        console.warn('SweetAlert2: Unknown parameter \"' + param + '\"');\n      }\n    }\n\n    // set modal width and margin-left\n    modal.style.width = typeof params.width === 'number' ? params.width + 'px' : params.width;\n    modal.style.padding = params.padding + 'px';\n    modal.style.background = params.background;\n    var $title = modal.querySelector('h2');\n    var $content = modal.querySelector('.' + swalClasses.content);\n    var $confirmBtn = getConfirmButton();\n    var $cancelBtn = getCancelButton();\n    var $closeButton = modal.querySelector('.' + swalClasses.close);\n\n    // Title\n    $title.innerHTML = params.title.split('\\n').join('<br>');\n\n    // Content\n    var i;\n    if (params.text || params.html) {\n      if (_typeof(params.html) === 'object') {\n        $content.innerHTML = '';\n        if (0 in params.html) {\n          for (i = 0; (i in params.html); i++) {\n            $content.appendChild(params.html[i].cloneNode(true));\n          }\n        } else {\n          $content.appendChild(params.html.cloneNode(true));\n        }\n      } else {\n        $content.innerHTML = params.html || params.text.split('\\n').join('<br>');\n      }\n      show($content);\n    } else {\n      hide($content);\n    }\n\n    // Close button\n    if (params.showCloseButton) {\n      show($closeButton);\n    } else {\n      hide($closeButton);\n    }\n\n    // Custom Class\n    modal.className = swalClasses.modal;\n    if (params.customClass) {\n      addClass(modal, params.customClass);\n    }\n\n    // Progress steps\n    var progressStepsContainer = getProgressSteps();\n    var currentProgressStep = parseInt(params.currentProgressStep === null ? sweetAlert.getQueueStep() : params.currentProgressStep, 10);\n    if (params.progressSteps.length) {\n      show(progressStepsContainer);\n      empty(progressStepsContainer);\n      if (currentProgressStep >= params.progressSteps.length) {\n        console.warn('SweetAlert2: Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');\n      }\n      params.progressSteps.forEach(function (step, index) {\n        var circle = document.createElement('li');\n        addClass(circle, swalClasses.progresscircle);\n        circle.innerHTML = step;\n        if (index === currentProgressStep) {\n          addClass(circle, swalClasses.activeprogressstep);\n        }\n        progressStepsContainer.appendChild(circle);\n        if (index !== params.progressSteps.length - 1) {\n          var line = document.createElement('li');\n          addClass(line, swalClasses.progressline);\n          line.style.width = params.progressStepsDistance;\n          progressStepsContainer.appendChild(line);\n        }\n      });\n    } else {\n      hide(progressStepsContainer);\n    }\n\n    // Icon\n    var icons = getIcons();\n    for (i = 0; i < icons.length; i++) {\n      hide(icons[i]);\n    }\n    if (params.type) {\n      var validType = false;\n      for (var iconType in iconTypes) {\n        if (params.type === iconType) {\n          validType = true;\n          break;\n        }\n      }\n      if (!validType) {\n        console.error('SweetAlert2: Unknown alert type: ' + params.type);\n        return false;\n      }\n      var $icon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes[params.type]);\n      show($icon);\n\n      // Animate icon\n      switch (params.type) {\n        case 'success':\n          addClass($icon, 'animate');\n          addClass($icon.querySelector('.tip'), 'animate-success-tip');\n          addClass($icon.querySelector('.long'), 'animate-success-long');\n          break;\n        case 'error':\n          addClass($icon, 'animate-error-icon');\n          addClass($icon.querySelector('.x-mark'), 'animate-x-mark');\n          break;\n        case 'warning':\n          addClass($icon, 'pulse-warning');\n          break;\n        default:\n          break;\n      }\n    }\n\n    // Custom image\n    var $customImage = modal.querySelector('.' + swalClasses.image);\n    if (params.imageUrl) {\n      $customImage.setAttribute('src', params.imageUrl);\n      show($customImage);\n      if (params.imageWidth) {\n        $customImage.setAttribute('width', params.imageWidth);\n      } else {\n        $customImage.removeAttribute('width');\n      }\n      if (params.imageHeight) {\n        $customImage.setAttribute('height', params.imageHeight);\n      } else {\n        $customImage.removeAttribute('height');\n      }\n      $customImage.className = swalClasses.image;\n      if (params.imageClass) {\n        addClass($customImage, params.imageClass);\n      }\n    } else {\n      hide($customImage);\n    }\n\n    // Cancel button\n    if (params.showCancelButton) {\n      $cancelBtn.style.display = 'inline-block';\n    } else {\n      hide($cancelBtn);\n    }\n\n    // Confirm button\n    if (params.showConfirmButton) {\n      removeStyleProperty($confirmBtn, 'display');\n    } else {\n      hide($confirmBtn);\n    }\n\n    // Buttons spacer\n    var spacer = getSpacer();\n    if (!params.showConfirmButton && !params.showCancelButton) {\n      hide(spacer);\n    } else {\n      show(spacer);\n    }\n\n    // Edit text on cancel and confirm buttons\n    $confirmBtn.innerHTML = params.confirmButtonText;\n    $cancelBtn.innerHTML = params.cancelButtonText;\n\n    // Set buttons to selected background colors\n    if (params.buttonsStyling) {\n      $confirmBtn.style.backgroundColor = params.confirmButtonColor;\n      $cancelBtn.style.backgroundColor = params.cancelButtonColor;\n    }\n\n    // Add buttons custom classes\n    $confirmBtn.className = swalClasses.confirm;\n    addClass($confirmBtn, params.confirmButtonClass);\n    $cancelBtn.className = swalClasses.cancel;\n    addClass($cancelBtn, params.cancelButtonClass);\n\n    // Buttons styling\n    if (params.buttonsStyling) {\n      addClass($confirmBtn, swalClasses.styled);\n      addClass($cancelBtn, swalClasses.styled);\n    } else {\n      removeClass($confirmBtn, swalClasses.styled);\n      removeClass($cancelBtn, swalClasses.styled);\n      $confirmBtn.style.backgroundColor = $confirmBtn.style.borderLeftColor = $confirmBtn.style.borderRightColor = '';\n      $cancelBtn.style.backgroundColor = $cancelBtn.style.borderLeftColor = $cancelBtn.style.borderRightColor = '';\n    }\n\n    // CSS animation\n    if (params.animation === true) {\n      removeClass(modal, swalClasses.noanimation);\n    } else {\n      addClass(modal, swalClasses.noanimation);\n    }\n  };\n\n  /*\n   * Animations\n   */\n  var openModal = function openModal(animation, onComplete) {\n    var modal = getModal();\n    if (animation) {\n      addClass(modal, swalClasses.show);\n      addClass(sweetContainer, swalClasses.fade);\n      removeClass(modal, swalClasses.hide);\n    } else {\n      removeClass(modal, swalClasses.fade);\n    }\n    show(modal);\n\n    // scrolling is 'hidden' until animation is done, after that 'auto'\n    sweetContainer.style.overflowY = 'hidden';\n    if (animationEndEvent && !hasClass(modal, swalClasses.noanimation)) {\n      modal.addEventListener(animationEndEvent, function swalCloseEventFinished() {\n        modal.removeEventListener(animationEndEvent, swalCloseEventFinished);\n        sweetContainer.style.overflowY = 'auto';\n      });\n    } else {\n      sweetContainer.style.overflowY = 'auto';\n    }\n    addClass(sweetContainer, swalClasses[\"in\"]);\n    addClass(document.body, swalClasses[\"in\"]);\n    fixScrollbar();\n    iOSfix();\n    states.previousActiveElement = document.activeElement;\n    if (onComplete !== null && typeof onComplete === 'function') {\n      onComplete.call(this, modal);\n    }\n  };\n  function fixScrollbar() {\n    // for queues, do not do this more than once\n    if (states.previousBodyPadding !== null) {\n      return;\n    }\n    // if the body has overflow\n    if (document.body.scrollHeight > window.innerHeight) {\n      // add padding so the content doesn't shift after removal of scrollbar\n      states.previousBodyPadding = document.body.style.paddingRight;\n      document.body.style.paddingRight = measureScrollbar() + 'px';\n    }\n  }\n  function undoScrollbar() {\n    if (states.previousBodyPadding !== null) {\n      document.body.style.paddingRight = states.previousBodyPadding;\n      states.previousBodyPadding = null;\n    }\n  }\n\n  // Fix iOS scrolling http://stackoverflow.com/q/39626302/1331425\n  function iOSfix() {\n    var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n    if (iOS && !hasClass(document.body, swalClasses.iosfix)) {\n      var offset = document.body.scrollTop;\n      document.body.style.top = offset * -1 + 'px';\n      addClass(document.body, swalClasses.iosfix);\n    }\n  }\n  function undoIOSfix() {\n    if (hasClass(document.body, swalClasses.iosfix)) {\n      var offset = parseInt(document.body.style.top, 10);\n      removeClass(document.body, swalClasses.iosfix);\n      document.body.scrollTop = offset * -1;\n    }\n  }\n  function modalDependant() {\n    if (arguments[0] === undefined) {\n      console.error('SweetAlert2 expects at least 1 attribute!');\n      return false;\n    }\n    var params = extend({}, modalParams);\n    switch (_typeof(arguments[0])) {\n      case 'string':\n        params.title = arguments[0];\n        params.text = arguments[1] || '';\n        params.type = arguments[2] || '';\n        break;\n      case 'object':\n        extend(params, arguments[0]);\n        params.extraParams = arguments[0].extraParams;\n        if (params.input === 'email' && params.inputValidator === null) {\n          params.inputValidator = function (email) {\n            return new Promise(function (resolve, reject) {\n              var emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/;\n              if (emailRegex.test(email)) {\n                resolve();\n              } else {\n                reject('Invalid email address');\n              }\n            });\n          };\n        }\n        break;\n      default:\n        console.error('SweetAlert2: Unexpected type of argument! Expected \"string\" or \"object\", got ' + _typeof(arguments[0]));\n        return false;\n    }\n    setParameters(params);\n\n    // Modal interactions\n    var modal = getModal();\n    return new Promise(function (resolve, reject) {\n      // Close on timer\n      if (params.timer) {\n        modal.timeout = setTimeout(function () {\n          sweetAlert.closeModal(params.onClose);\n          reject('timer');\n        }, params.timer);\n      }\n\n      // Get input element by specified type or, if type isn't specified, by params.input\n      var getInput = function getInput(inputType) {\n        inputType = inputType || params.input;\n        switch (inputType) {\n          case 'select':\n          case 'textarea':\n          case 'file':\n            return getChildByClass(modal, swalClasses[inputType]);\n          case 'checkbox':\n            return modal.querySelector('.' + swalClasses.checkbox + ' input');\n          case 'radio':\n            return modal.querySelector('.' + swalClasses.radio + ' input:checked') || modal.querySelector('.' + swalClasses.radio + ' input:first-child');\n          case 'range':\n            return modal.querySelector('.' + swalClasses.range + ' input');\n          default:\n            return getChildByClass(modal, swalClasses.input);\n        }\n      };\n\n      // Get the value of the modal input\n      var getInputValue = function getInputValue() {\n        var input = getInput();\n        if (!input) {\n          return null;\n        }\n        switch (params.input) {\n          case 'checkbox':\n            return input.checked ? 1 : 0;\n          case 'radio':\n            return input.checked ? input.value : null;\n          case 'file':\n            return input.files.length ? input.files[0] : null;\n          default:\n            return params.inputAutoTrim ? input.value.trim() : input.value;\n        }\n      };\n\n      // input autofocus\n      if (params.input) {\n        setTimeout(function () {\n          var input = getInput();\n          if (input) {\n            focusInput(input);\n          }\n        }, 0);\n      }\n      var confirm = function confirm(value) {\n        if (params.showLoaderOnConfirm) {\n          sweetAlert.showLoading();\n        }\n        if (params.preConfirm) {\n          params.preConfirm(value, params.extraParams).then(function (preConfirmValue) {\n            sweetAlert.closeModal(params.onClose);\n            resolve(preConfirmValue || value);\n          }, function (error) {\n            sweetAlert.hideLoading();\n            if (error) {\n              sweetAlert.showValidationError(error);\n            }\n          });\n        } else {\n          sweetAlert.closeModal(params.onClose);\n          resolve(value);\n        }\n      };\n\n      // Mouse interactions\n      var onButtonEvent = function onButtonEvent(event) {\n        var e = event || window.event;\n        var target = e.target || e.srcElement;\n        var confirmBtn = getConfirmButton();\n        var cancelBtn = getCancelButton();\n        var targetedConfirm = confirmBtn === target || confirmBtn.contains(target);\n        var targetedCancel = cancelBtn === target || cancelBtn.contains(target);\n        switch (e.type) {\n          case 'mouseover':\n          case 'mouseup':\n            if (params.buttonsStyling) {\n              if (targetedConfirm) {\n                confirmBtn.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.1);\n              } else if (targetedCancel) {\n                cancelBtn.style.backgroundColor = colorLuminance(params.cancelButtonColor, -0.1);\n              }\n            }\n            break;\n          case 'mouseout':\n            if (params.buttonsStyling) {\n              if (targetedConfirm) {\n                confirmBtn.style.backgroundColor = params.confirmButtonColor;\n              } else if (targetedCancel) {\n                cancelBtn.style.backgroundColor = params.cancelButtonColor;\n              }\n            }\n            break;\n          case 'mousedown':\n            if (params.buttonsStyling) {\n              if (targetedConfirm) {\n                confirmBtn.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.2);\n              } else if (targetedCancel) {\n                cancelBtn.style.backgroundColor = colorLuminance(params.cancelButtonColor, -0.2);\n              }\n            }\n            break;\n          case 'click':\n            // Clicked 'confirm'\n            if (targetedConfirm && sweetAlert.isVisible()) {\n              if (params.input) {\n                var inputValue = getInputValue();\n                if (params.inputValidator) {\n                  sweetAlert.disableInput();\n                  params.inputValidator(inputValue, params.extraParams).then(function () {\n                    sweetAlert.enableInput();\n                    confirm(inputValue);\n                  }, function (error) {\n                    sweetAlert.enableInput();\n                    if (error) {\n                      sweetAlert.showValidationError(error);\n                    }\n                  });\n                } else {\n                  confirm(inputValue);\n                }\n              } else {\n                confirm(true);\n              }\n\n              // Clicked 'cancel'\n            } else if (targetedCancel && sweetAlert.isVisible()) {\n              sweetAlert.closeModal(params.onClose);\n              reject('cancel');\n            }\n            break;\n          default:\n        }\n      };\n      var $buttons = modal.querySelectorAll('button');\n      var i;\n      for (i = 0; i < $buttons.length; i++) {\n        $buttons[i].onclick = onButtonEvent;\n        $buttons[i].onmouseover = onButtonEvent;\n        $buttons[i].onmouseout = onButtonEvent;\n        $buttons[i].onmousedown = onButtonEvent;\n      }\n\n      // Closing modal by close button\n      getCloseButton().onclick = function () {\n        sweetAlert.closeModal(params.onClose);\n        reject('close');\n      };\n\n      // Closing modal by overlay click\n      sweetContainer.onclick = function (e) {\n        if (e.target !== sweetContainer) {\n          return;\n        }\n        if (params.allowOutsideClick) {\n          sweetAlert.closeModal(params.onClose);\n          reject('overlay');\n        }\n      };\n      var $confirmButton = getConfirmButton();\n      var $cancelButton = getCancelButton();\n\n      // Reverse buttons if neede d\n      if (params.reverseButtons) {\n        $confirmButton.parentNode.insertBefore($cancelButton, $confirmButton);\n      } else {\n        $confirmButton.parentNode.insertBefore($confirmButton, $cancelButton);\n      }\n\n      // Focus handling\n      function setFocus(index, increment) {\n        var focusableElements = getFocusableElements(params.focusCancel);\n        // search for visible elements and select the next possible match\n        for (var i = 0; i < focusableElements.length; i++) {\n          index = index + increment;\n\n          // rollover to first item\n          if (index === focusableElements.length) {\n            index = 0;\n\n            // go to last item\n          } else if (index === -1) {\n            index = focusableElements.length - 1;\n          }\n\n          // determine if element is visible\n          var el = focusableElements[index];\n          if (isVisible(el)) {\n            return el.focus();\n          }\n        }\n      }\n      function handleKeyDown(event) {\n        var e = event || window.event;\n        var keyCode = e.keyCode || e.which;\n        if ([9, 13, 32, 27].indexOf(keyCode) === -1) {\n          // Don't do work on keys we don't care about.\n          return;\n        }\n        var $targetElement = e.target || e.srcElement;\n        var focusableElements = getFocusableElements(params.focusCancel);\n        var btnIndex = -1; // Find the button - note, this is a nodelist, not an array.\n        for (var i = 0; i < focusableElements.length; i++) {\n          if ($targetElement === focusableElements[i]) {\n            btnIndex = i;\n            break;\n          }\n        }\n\n        // TAB\n        if (keyCode === 9) {\n          if (!e.shiftKey) {\n            // Cycle to the next button\n            setFocus(btnIndex, 1);\n          } else {\n            // Cycle to the prev button\n            setFocus(btnIndex, -1);\n          }\n          stopEventPropagation(e);\n        } else {\n          if (keyCode === 13 || keyCode === 32) {\n            if (btnIndex === -1) {\n              // ENTER/SPACE clicked outside of a button.\n              if (params.focusCancel) {\n                fireClick($cancelButton, e);\n              } else {\n                fireClick($confirmButton, e);\n              }\n            }\n          } else if (keyCode === 27 && params.allowEscapeKey === true) {\n            sweetAlert.closeModal(params.onClose);\n            reject('esc');\n          }\n        }\n      }\n      states.previousWindowKeyDown = window.onkeydown;\n      window.onkeydown = handleKeyDown;\n\n      // Loading state\n      if (params.buttonsStyling) {\n        $confirmButton.style.borderLeftColor = params.confirmButtonColor;\n        $confirmButton.style.borderRightColor = params.confirmButtonColor;\n      }\n\n      /**\n       * Show spinner instead of Confirm button and disable Cancel button\n       */\n      sweetAlert.showLoading = sweetAlert.enableLoading = function () {\n        show(getSpacer());\n        show($confirmButton, 'inline-block');\n        addClass($confirmButton, swalClasses.loading);\n        addClass(modal, swalClasses.loading);\n        $confirmButton.disabled = true;\n        $cancelButton.disabled = true;\n      };\n\n      /**\n       * Show spinner instead of Confirm button and disable Cancel button\n       */\n      sweetAlert.hideLoading = sweetAlert.disableLoading = function () {\n        if (!params.showConfirmButton) {\n          hide($confirmButton);\n          if (!params.showCancelButton) {\n            hide(getSpacer());\n          }\n        }\n        removeClass($confirmButton, swalClasses.loading);\n        removeClass(modal, swalClasses.loading);\n        $confirmButton.disabled = false;\n        $cancelButton.disabled = false;\n      };\n      sweetAlert.enableButtons = function () {\n        $confirmButton.disabled = false;\n        $cancelButton.disabled = false;\n      };\n      sweetAlert.disableButtons = function () {\n        $confirmButton.disabled = true;\n        $cancelButton.disabled = true;\n      };\n      sweetAlert.enableConfirmButton = function () {\n        $confirmButton.disabled = false;\n      };\n      sweetAlert.disableConfirmButton = function () {\n        $confirmButton.disabled = true;\n      };\n      sweetAlert.enableInput = function () {\n        var input = getInput();\n        if (!input) {\n          return false;\n        }\n        if (input.type === 'radio') {\n          var radiosContainer = input.parentNode.parentNode;\n          var radios = radiosContainer.querySelectorAll('input');\n          for (var i = 0; i < radios.length; i++) {\n            radios[i].disabled = false;\n          }\n        } else {\n          input.disabled = false;\n        }\n      };\n      sweetAlert.disableInput = function () {\n        var input = getInput();\n        if (!input) {\n          return false;\n        }\n        if (input && input.type === 'radio') {\n          var radiosContainer = input.parentNode.parentNode;\n          var radios = radiosContainer.querySelectorAll('input');\n          for (var i = 0; i < radios.length; i++) {\n            radios[i].disabled = true;\n          }\n        } else {\n          input.disabled = true;\n        }\n      };\n\n      // Set modal min-height to disable scrolling inside the modal\n      sweetAlert.recalculateHeight = debounce(function () {\n        var modal = getModal();\n        var prevState = modal.style.display;\n        modal.style.minHeight = '';\n        show(modal);\n        modal.style.minHeight = modal.scrollHeight + 1 + 'px';\n        modal.style.display = prevState;\n      }, 50);\n\n      // Show block with validation error\n      sweetAlert.showValidationError = function (error) {\n        var validationError = getValidationError();\n        validationError.innerHTML = error;\n        show(validationError);\n        var input = getInput();\n        focusInput(input);\n        addClass(input, swalClasses.inputerror);\n      };\n\n      // Hide block with validation error\n      sweetAlert.resetValidationError = function () {\n        var validationError = getValidationError();\n        hide(validationError);\n        sweetAlert.recalculateHeight();\n        var input = getInput();\n        if (input) {\n          removeClass(input, swalClasses.inputerror);\n        }\n      };\n      sweetAlert.getProgressSteps = function () {\n        return params.progressSteps;\n      };\n      sweetAlert.setProgressSteps = function (progressSteps) {\n        params.progressSteps = progressSteps;\n        setParameters(params);\n      };\n      sweetAlert.showProgressSteps = function () {\n        show(getProgressSteps());\n      };\n      sweetAlert.hideProgressSteps = function () {\n        hide(getProgressSteps());\n      };\n      sweetAlert.enableButtons();\n      sweetAlert.hideLoading();\n      sweetAlert.resetValidationError();\n\n      // inputs\n      var inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];\n      var input;\n      for (i = 0; i < inputTypes.length; i++) {\n        var inputClass = swalClasses[inputTypes[i]];\n        var inputContainer = getChildByClass(modal, inputClass);\n        input = getInput(inputTypes[i]);\n\n        // set attributes\n        if (input) {\n          for (var j in input.attributes) {\n            if (input.attributes.hasOwnProperty(j)) {\n              var attrName = input.attributes[j].name;\n              if (attrName !== 'type' && attrName !== 'value') {\n                input.removeAttribute(attrName);\n              }\n            }\n          }\n          for (var attr in params.inputAttributes) {\n            input.setAttribute(attr, params.inputAttributes[attr]);\n          }\n        }\n\n        // set class\n        inputContainer.className = inputClass;\n        if (params.inputClass) {\n          addClass(inputContainer, params.inputClass);\n        }\n        hide(inputContainer);\n      }\n      var populateInputOptions;\n      switch (params.input) {\n        case 'text':\n        case 'email':\n        case 'password':\n        case 'number':\n        case 'tel':\n          input = getChildByClass(modal, swalClasses.input);\n          input.value = params.inputValue;\n          input.placeholder = params.inputPlaceholder;\n          input.type = params.input;\n          show(input);\n          break;\n        case 'file':\n          input = getChildByClass(modal, swalClasses.file);\n          input.placeholder = params.inputPlaceholder;\n          input.type = params.input;\n          show(input);\n          break;\n        case 'range':\n          var range = getChildByClass(modal, swalClasses.range);\n          var rangeInput = range.querySelector('input');\n          var rangeOutput = range.querySelector('output');\n          rangeInput.value = params.inputValue;\n          rangeInput.type = params.input;\n          rangeOutput.value = params.inputValue;\n          show(range);\n          break;\n        case 'select':\n          var select = getChildByClass(modal, swalClasses.select);\n          select.innerHTML = '';\n          if (params.inputPlaceholder) {\n            var placeholder = document.createElement('option');\n            placeholder.innerHTML = params.inputPlaceholder;\n            placeholder.value = '';\n            placeholder.disabled = true;\n            placeholder.selected = true;\n            select.appendChild(placeholder);\n          }\n          populateInputOptions = function populateInputOptions(inputOptions) {\n            for (var optionValue in inputOptions) {\n              var option = document.createElement('option');\n              option.value = optionValue;\n              option.innerHTML = inputOptions[optionValue];\n              if (params.inputValue === optionValue) {\n                option.selected = true;\n              }\n              select.appendChild(option);\n            }\n            show(select);\n            select.focus();\n          };\n          break;\n        case 'radio':\n          var radio = getChildByClass(modal, swalClasses.radio);\n          radio.innerHTML = '';\n          populateInputOptions = function populateInputOptions(inputOptions) {\n            for (var radioValue in inputOptions) {\n              var id = 1;\n              var radioInput = document.createElement('input');\n              var radioLabel = document.createElement('label');\n              var radioLabelSpan = document.createElement('span');\n              radioInput.type = 'radio';\n              radioInput.name = swalClasses.radio;\n              radioInput.value = radioValue;\n              radioInput.id = swalClasses.radio + '-' + id++;\n              if (params.inputValue === radioValue) {\n                radioInput.checked = true;\n              }\n              radioLabelSpan.innerHTML = inputOptions[radioValue];\n              radioLabel.appendChild(radioInput);\n              radioLabel.appendChild(radioLabelSpan);\n              radioLabel[\"for\"] = radioInput.id;\n              radio.appendChild(radioLabel);\n            }\n            show(radio);\n            var radios = radio.querySelectorAll('input');\n            if (radios.length) {\n              radios[0].focus();\n            }\n          };\n          break;\n        case 'checkbox':\n          var checkbox = getChildByClass(modal, swalClasses.checkbox);\n          var checkboxInput = getInput('checkbox');\n          checkboxInput.type = 'checkbox';\n          checkboxInput.value = 1;\n          checkboxInput.id = swalClasses.checkbox;\n          checkboxInput.checked = Boolean(params.inputValue);\n          var label = checkbox.getElementsByTagName('span');\n          if (label.length) {\n            checkbox.removeChild(label[0]);\n          }\n          label = document.createElement('span');\n          label.innerHTML = params.inputPlaceholder;\n          checkbox.appendChild(label);\n          show(checkbox);\n          break;\n        case 'textarea':\n          var textarea = getChildByClass(modal, swalClasses.textarea);\n          textarea.value = params.inputValue;\n          textarea.placeholder = params.inputPlaceholder;\n          show(textarea);\n          break;\n        case null:\n          break;\n        default:\n          console.error('SweetAlert2: Unexpected type of input! Expected \"text\" or \"email\" or \"password\", \"select\", \"checkbox\", \"textarea\" or \"file\", got \"' + params.input + '\"');\n          break;\n      }\n      if (params.input === 'select' || params.input === 'radio') {\n        if (params.inputOptions instanceof Promise) {\n          sweetAlert.showLoading();\n          params.inputOptions.then(function (inputOptions) {\n            sweetAlert.hideLoading();\n            populateInputOptions(inputOptions);\n          });\n        } else if (_typeof(params.inputOptions) === 'object') {\n          populateInputOptions(params.inputOptions);\n        } else {\n          console.error('SweetAlert2: Unexpected type of inputOptions! Expected object or Promise, got ' + _typeof(params.inputOptions));\n        }\n      }\n      openModal(params.animation, params.onOpen);\n\n      // Focus the first element (input or button)\n      setFocus(-1, 1);\n\n      // fix scroll\n      sweetContainer.scrollTop = 0;\n\n      // Observe changes inside the modal and adjust height\n      if (typeof MutationObserver !== 'undefined' && !swal2Observer) {\n        swal2Observer = new MutationObserver(sweetAlert.recalculateHeight);\n        swal2Observer.observe(modal, {\n          childList: true,\n          characterData: true,\n          subtree: true\n        });\n      }\n    });\n  }\n\n  // SweetAlert function\n  function sweetAlert() {\n    // Copy arguments to the local args variable\n    var args = arguments;\n    if (sweetAlert.isVisible()) {\n      sweetAlert.close();\n    }\n    return modalDependant.apply(this, args);\n  }\n\n  /*\n   * Global function to determine if swal2 modal is visible\n   */\n  sweetAlert.isVisible = function () {\n    var modal = getModal();\n    return isVisible(modal);\n  };\n\n  /*\n   * Global function for chaining sweetAlert modals\n   */\n  sweetAlert.queue = function (steps) {\n    queue = steps;\n    var modal = getModal();\n    var resetQueue = function resetQueue() {\n      queue = [];\n      modal.removeAttribute('data-queue-step');\n    };\n    return new Promise(function (resolve, reject) {\n      (function step(i, callback) {\n        if (i < queue.length) {\n          modal.setAttribute('data-queue-step', i);\n          sweetAlert(queue[i]).then(function () {\n            step(i + 1, callback);\n          }, function (dismiss) {\n            resetQueue();\n            reject(dismiss);\n          });\n        } else {\n          resetQueue();\n          resolve();\n        }\n      })(0);\n    });\n  };\n\n  /*\n   * Global function for getting the index of current modal in queue\n   */\n  sweetAlert.getQueueStep = function () {\n    return getModal().getAttribute('data-queue-step');\n  };\n\n  /*\n   * Global function for inserting a modal to the queue\n   */\n  sweetAlert.insertQueueStep = function (step, index) {\n    if (index && index < queue.length) {\n      return queue.splice(index, 0, step);\n    }\n    return queue.push(step);\n  };\n\n  /*\n   * Global function for deleting a modal from the queue\n   */\n  sweetAlert.deleteQueueStep = function (index) {\n    if (typeof queue[index] !== 'undefined') {\n      queue.splice(index, 1);\n    }\n  };\n\n  /*\n   * Global function to close sweetAlert\n   */\n  sweetAlert.close = sweetAlert.closeModal = function (onComplete) {\n    var modal = getModal();\n    removeClass(modal, swalClasses.show);\n    addClass(modal, swalClasses.hide);\n\n    // Reset icon animations\n    var $successIcon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes.success);\n    removeClass($successIcon, 'animate');\n    removeClass($successIcon.querySelector('.tip'), 'animate-success-tip');\n    removeClass($successIcon.querySelector('.long'), 'animate-success-long');\n    var $errorIcon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes.error);\n    removeClass($errorIcon, 'animate-error-icon');\n    removeClass($errorIcon.querySelector('.x-mark'), 'animate-x-mark');\n    var $warningIcon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes.warning);\n    removeClass($warningIcon, 'pulse-warning');\n    resetPrevState();\n    var hideModalAndResetState = function hideModalAndResetState() {\n      hide(modal);\n      modal.style.minHeight = '';\n      removeClass(sweetContainer, swalClasses[\"in\"]);\n      removeClass(document.body, swalClasses[\"in\"]);\n      undoScrollbar();\n      undoIOSfix();\n    };\n\n    // If animation is supported, animate\n    if (animationEndEvent && !hasClass(modal, swalClasses.noanimation)) {\n      modal.addEventListener(animationEndEvent, function swalCloseEventFinished() {\n        modal.removeEventListener(animationEndEvent, swalCloseEventFinished);\n        if (hasClass(modal, swalClasses.hide)) {\n          hideModalAndResetState();\n        }\n      });\n    } else {\n      // Otherwise, hide immediately\n      hideModalAndResetState();\n    }\n    if (onComplete !== null && typeof onComplete === 'function') {\n      onComplete.call(this, modal);\n    }\n  };\n\n  /*\n   * Global function to click 'Confirm' button\n   */\n  sweetAlert.clickConfirm = function () {\n    getConfirmButton().click();\n  };\n\n  /*\n   * Global function to click 'Cancel' button\n   */\n  sweetAlert.clickCancel = function () {\n    getCancelButton().click();\n  };\n\n  /**\n   * Set default params for each popup\n   * @param {Object} userParams\n   */\n  sweetAlert.setDefaults = function (userParams) {\n    if (!userParams) {\n      throw new Error('userParams is required');\n    }\n    if (_typeof(userParams) !== 'object') {\n      throw new Error('userParams has to be a object');\n    }\n    extend(modalParams, userParams);\n  };\n\n  /**\n   * Reset default params for each popup\n   */\n  sweetAlert.resetDefaults = function () {\n    modalParams = extend({}, defaultParams);\n  };\n  sweetAlert.noop = function () {};\n  sweetAlert.version = '5.3.5';\n  if (typeof Promise === 'function') {\n    Promise.prototype.done = Promise.prototype.done || function () {\n      // eslint-disable-line\n      return this[\"catch\"](function () {\n        // Catch promise rejections silently.\n        // https://github.com/limonte/sweetalert2/issues/177\n      });\n    };\n  } else {\n    console.warn('SweetAlert2: Please inlude Promise polyfill BEFORE including sweetalert2.js if IE10+ support needed.');\n  }\n  return sweetAlert;\n});\nif (window.Sweetalert2) window.sweetAlert = window.swal = window.Sweetalert2;\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/sweetalert2.js?");

/***/ }),

/***/ "./node_modules/bootstrap/dist/js/npm.js":
/*!***********************************************!*\
  !*** ./node_modules/bootstrap/dist/js/npm.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n__webpack_require__(/*! ../../js/transition.js */ \"./node_modules/bootstrap/js/transition.js\")\n__webpack_require__(/*! ../../js/alert.js */ \"./node_modules/bootstrap/js/alert.js\")\n__webpack_require__(/*! ../../js/button.js */ \"./node_modules/bootstrap/js/button.js\")\n__webpack_require__(/*! ../../js/carousel.js */ \"./node_modules/bootstrap/js/carousel.js\")\n__webpack_require__(/*! ../../js/collapse.js */ \"./node_modules/bootstrap/js/collapse.js\")\n__webpack_require__(/*! ../../js/dropdown.js */ \"./node_modules/bootstrap/js/dropdown.js\")\n__webpack_require__(/*! ../../js/modal.js */ \"./node_modules/bootstrap/js/modal.js\")\n__webpack_require__(/*! ../../js/tooltip.js */ \"./node_modules/bootstrap/js/tooltip.js\")\n__webpack_require__(/*! ../../js/popover.js */ \"./node_modules/bootstrap/js/popover.js\")\n__webpack_require__(/*! ../../js/scrollspy.js */ \"./node_modules/bootstrap/js/scrollspy.js\")\n__webpack_require__(/*! ../../js/tab.js */ \"./node_modules/bootstrap/js/tab.js\")\n__webpack_require__(/*! ../../js/affix.js */ \"./node_modules/bootstrap/js/affix.js\")\n\n//# sourceURL=webpack:///./node_modules/bootstrap/dist/js/npm.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/affix.js":
/*!********************************************!*\
  !*** ./node_modules/bootstrap/js/affix.js ***!
  \********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 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    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n    this.$target = 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.4.1'\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\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/affix.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/alert.js":
/*!********************************************!*\
  !*** ./node_modules/bootstrap/js/alert.js ***!
  \********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 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.4.1'\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    selector    = selector === '#' ? [] : selector\n    var $parent = $(document).find(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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/alert.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/button.js":
/*!*********************************************!*\
  !*** ./node_modules/bootstrap/js/button.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 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.4.1'\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).prop(d, true)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d).prop(d, false)\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).closest('.btn')\n      Plugin.call($btn, 'toggle')\n      if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n        e.preventDefault()\n        // The target component still receive the focus\n        if ($btn.is('input,button')) $btn.trigger('focus')\n        else $btn.find('input:visible,button:visible').first().trigger('focus')\n      }\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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/button.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/carousel.js":
/*!***********************************************!*\
  !*** ./node_modules/bootstrap/js/carousel.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 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.4.1'\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      if (typeof $next === 'object' && $next.length) {\n        $next[0].offsetWidth // force reflow\n      }\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 $this   = $(this)\n    var href    = $this.attr('href')\n    if (href) {\n      href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n    }\n\n    var target  = $this.attr('data-target') || href\n    var $target = $(document).find(target)\n\n    if (!$target.hasClass('carousel')) return\n\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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/carousel.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/collapse.js":
/*!***********************************************!*\
  !*** ./node_modules/bootstrap/js/collapse.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\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.4.1'\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 $(document).find(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 $(document).find(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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/collapse.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/dropdown.js":
/*!***********************************************!*\
  !*** ./node_modules/bootstrap/js/dropdown.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 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.4.1'\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 !== '#' ? $(document).find(selector) : null\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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/dropdown.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/modal.js":
/*!********************************************!*\
  !*** ./node_modules/bootstrap/js/modal.js ***!
  \********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 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    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\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.4.1'\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 (document !== e.target &&\n          this.$element[0] !== e.target &&\n          !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    var scrollbarWidth = this.scrollbarWidth\n    if (this.bodyIsOverflowing) {\n      this.$body.css('padding-right', bodyPad + scrollbarWidth)\n      $(this.fixedContent).each(function (index, element) {\n        var actualPadding = element.style.paddingRight\n        var calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n      })\n    }\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n    $(this.fixedContent).each(function (index, element) {\n      var padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\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') ||\n      (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n    var $target = $(document).find(target)\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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/modal.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/popover.js":
/*!**********************************************!*\
  !*** ./node_modules/bootstrap/js/popover.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 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.4.1'\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    if (this.options.html) {\n      var typeContent = typeof content\n\n      if (this.options.sanitize) {\n        title = this.sanitizeHtml(title)\n\n        if (typeContent === 'string') {\n          content = this.sanitizeHtml(content)\n        }\n      }\n\n      $tip.find('.popover-title').html(title)\n      $tip.find('.popover-content').children().detach().end()[\n        typeContent === 'string' ? 'html' : 'append'\n      ](content)\n    } else {\n      $tip.find('.popover-title').text(title)\n      $tip.find('.popover-content').children().detach().end().text(content)\n    }\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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/popover.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/scrollspy.js":
/*!************************************************!*\
  !*** ./node_modules/bootstrap/js/scrollspy.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 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.4.1'\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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/scrollspy.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/tab.js":
/*!******************************************!*\
  !*** ./node_modules/bootstrap/js/tab.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 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.4.1'\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 = $(document).find(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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/tab.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/tooltip.js":
/*!**********************************************!*\
  !*** ./node_modules/bootstrap/js/tooltip.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n  'use strict';\n\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n  var uriAttrs = [\n    'background',\n    'cite',\n    'href',\n    'itemtype',\n    'longdesc',\n    'poster',\n    'src',\n    'xlink:href'\n  ]\n\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  }\n\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase()\n\n    if ($.inArray(attrName, allowedAttributeList) !== -1) {\n      if ($.inArray(attrName, uriAttrs) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n      }\n\n      return true\n    }\n\n    var regExp = $(allowedAttributeList).filter(function (index, value) {\n      return value instanceof RegExp\n    })\n\n    // Check if a regular expression validates the attribute.\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml)\n    }\n\n    // IE 8 and below don't support createHTMLDocument\n    if (!document.implementation || !document.implementation.createHTMLDocument) {\n      return unsafeHtml\n    }\n\n    var createdDocument = document.implementation.createHTMLDocument('sanitization')\n    createdDocument.body.innerHTML = unsafeHtml\n\n    var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n    var elements = $(createdDocument.body).find('*')\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var el = elements[i]\n      var elName = el.nodeName.toLowerCase()\n\n      if ($.inArray(elName, whitelistKeys) === -1) {\n        el.parentNode.removeChild(el)\n\n        continue\n      }\n\n      var attributeList = $.map(el.attributes, function (el) { return el })\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n      for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n          el.removeAttribute(attributeList[j].nodeName)\n        }\n      }\n    }\n\n    return createdDocument.body.innerHTML\n  }\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.4.1'\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    sanitize : true,\n    sanitizeFn : null,\n    whiteList : DefaultWhitelist\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 && $(document).find($.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    var dataAttributes = this.$element.data()\n\n    for (var dataAttr in dataAttributes) {\n      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n        delete dataAttributes[dataAttr]\n      }\n    }\n\n    options = $.extend({}, this.getDefaults(), dataAttributes, 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    if (options.sanitize) {\n      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\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($(document).find(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    if (this.options.html) {\n      if (this.options.sanitize) {\n        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n      }\n\n      $tip.find('.tooltip-inner').html(title)\n    } else {\n      $tip.find('.tooltip-inner').text(title)\n    }\n\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      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n        that.$element\n          .removeAttr('aria-describedby')\n          .trigger('hidden.bs.' + that.type)\n      }\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 isSvg = window.SVGElement && el instanceof window.SVGElement\n    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n    // See https://github.com/twbs/bootstrap/issues/20280\n    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $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      that.$element = null\n    })\n  }\n\n  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/tooltip.js?");

/***/ }),

/***/ "./node_modules/bootstrap/js/transition.js":
/*!*************************************************!*\
  !*** ./node_modules/bootstrap/js/transition.js ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 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: https://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  // https://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\n//# sourceURL=webpack:///./node_modules/bootstrap/js/transition.js?");

/***/ }),

/***/ "./node_modules/moment/locale sync recursive en|es":
/*!***********************************************!*\
  !*** ./node_modules/moment/locale sync en|es ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var map = {\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive en|es\";\n\n//# sourceURL=webpack:///./node_modules/moment/locale_sync_en%7Ces?");

/***/ }),

/***/ "./node_modules/moment/locale/en-au.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-au.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enAu = moment.defineLocale('en-au', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enAu;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-au.js?");

/***/ }),

/***/ "./node_modules/moment/locale/en-ca.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-ca.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enCa = moment.defineLocale('en-ca', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'YYYY-MM-DD',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY h:mm A',\n            LLLL: 'dddd, MMMM D, YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enCa;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-ca.js?");

/***/ }),

/***/ "./node_modules/moment/locale/en-gb.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-gb.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enGb = moment.defineLocale('en-gb', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enGb;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-gb.js?");

/***/ }),

/***/ "./node_modules/moment/locale/en-ie.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-ie.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIe = moment.defineLocale('en-ie', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enIe;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-ie.js?");

/***/ }),

/***/ "./node_modules/moment/locale/en-il.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-il.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIl = moment.defineLocale('en-il', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enIl;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-il.js?");

/***/ }),

/***/ "./node_modules/moment/locale/en-in.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-in.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIn = moment.defineLocale('en-in', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return enIn;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-in.js?");

/***/ }),

/***/ "./node_modules/moment/locale/en-nz.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-nz.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enNz = moment.defineLocale('en-nz', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enNz;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-nz.js?");

/***/ }),

/***/ "./node_modules/moment/locale/en-sg.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/en-sg.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enSg = moment.defineLocale('en-sg', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enSg;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-sg.js?");

/***/ }),

/***/ "./node_modules/moment/locale/es-do.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/es-do.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return esDo;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/es-do.js?");

/***/ }),

/***/ "./node_modules/moment/locale/es-mx.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/es-mx.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esMx = moment.defineLocale('es-mx', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return esMx;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/es-mx.js?");

/***/ }),

/***/ "./node_modules/moment/locale/es-us.js":
/*!*********************************************!*\
  !*** ./node_modules/moment/locale/es-us.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esUs = moment.defineLocale('es-us', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'MM/DD/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return esUs;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/es-us.js?");

/***/ }),

/***/ "./node_modules/moment/locale/es.js":
/*!******************************************!*\
  !*** ./node_modules/moment/locale/es.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n    true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n   undefined\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return es;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/es.js?");

/***/ }),

/***/ "./node_modules/moment/moment.js":
/*!***************************************!*\
  !*** ./node_modules/moment/moment.js ***!
  \***************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n     true ? module.exports = factory() :\n    undefined\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        return name.match('^[^/\\\\\\\\]*$') != null;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                __webpack_require__(\"./node_modules/moment/locale sync recursive en|es\")(\"./\" + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.4';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack:///./node_modules/moment/moment.js?");

/***/ }),

/***/ "./node_modules/webpack/buildin/module.js":
/*!***********************************!*\
  !*** (webpack)/buildin/module.js ***!
  \***********************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n//# sourceURL=webpack:///(webpack)/buildin/module.js?");

/***/ }),

/***/ 23:
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** multi bootstrap moment ./buyercall/assets/scripts/vendor/jquery-ui.min.js ./buyercall/assets/scripts/vendor/material.min.js ./buyercall/assets/scripts/vendor/perfect-scrollbar.jquery.min.js ./buyercall/assets/scripts/vendor/chartist.min.js ./buyercall/assets/scripts/vendor/jquery.bootstrap-wizard.js ./buyercall/assets/scripts/vendor/gsdk-bootstrap-wizard.js ./buyercall/assets/scripts/vendor/jquery.select-bootstrap.js ./buyercall/assets/scripts/vendor/bootstrap-notify.js ./buyercall/assets/scripts/vendor/bootstrap-colorpicker.js ./buyercall/assets/scripts/vendor/bootstrap-datetimepicker.js ./buyercall/assets/scripts/vendor/fullcalendar.min.js ./buyercall/assets/scripts/vendor/jasny-bootstrap.min.js ./buyercall/assets/scripts/vendor/jquery-jvectormap.js ./buyercall/assets/scripts/vendor/jquery.tagsinput.js ./buyercall/assets/scripts/vendor/jquery.auto-complete.js ./buyercall/assets/scripts/vendor/sweetalert2.js ./buyercall/assets/scripts/vendor/nouislider.min.js ./buyercall/assets/scripts/vendor/material-dashboard.js ./buyercall/assets/scripts/vendor/player.min.js ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("__webpack_require__(/*! bootstrap */\"./node_modules/bootstrap/dist/js/npm.js\");\n__webpack_require__(/*! moment */\"./node_modules/moment/moment.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/jquery-ui.min.js */\"./buyercall/assets/scripts/vendor/jquery-ui.min.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/material.min.js */\"./buyercall/assets/scripts/vendor/material.min.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/perfect-scrollbar.jquery.min.js */\"./buyercall/assets/scripts/vendor/perfect-scrollbar.jquery.min.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/chartist.min.js */\"./buyercall/assets/scripts/vendor/chartist.min.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/jquery.bootstrap-wizard.js */\"./buyercall/assets/scripts/vendor/jquery.bootstrap-wizard.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/gsdk-bootstrap-wizard.js */\"./buyercall/assets/scripts/vendor/gsdk-bootstrap-wizard.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/jquery.select-bootstrap.js */\"./buyercall/assets/scripts/vendor/jquery.select-bootstrap.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/bootstrap-notify.js */\"./buyercall/assets/scripts/vendor/bootstrap-notify.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/bootstrap-colorpicker.js */\"./buyercall/assets/scripts/vendor/bootstrap-colorpicker.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/bootstrap-datetimepicker.js */\"./buyercall/assets/scripts/vendor/bootstrap-datetimepicker.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/fullcalendar.min.js */\"./buyercall/assets/scripts/vendor/fullcalendar.min.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/jasny-bootstrap.min.js */\"./buyercall/assets/scripts/vendor/jasny-bootstrap.min.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/jquery-jvectormap.js */\"./buyercall/assets/scripts/vendor/jquery-jvectormap.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/jquery.tagsinput.js */\"./buyercall/assets/scripts/vendor/jquery.tagsinput.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/jquery.auto-complete.js */\"./buyercall/assets/scripts/vendor/jquery.auto-complete.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/sweetalert2.js */\"./buyercall/assets/scripts/vendor/sweetalert2.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/nouislider.min.js */\"./buyercall/assets/scripts/vendor/nouislider.min.js\");\n__webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/material-dashboard.js */\"./buyercall/assets/scripts/vendor/material-dashboard.js\");\nmodule.exports = __webpack_require__(/*! /home/arjun/projects/buyercall_forms/buyercall/buyercall/assets/scripts/vendor/player.min.js */\"./buyercall/assets/scripts/vendor/player.min.js\");\n\n\n//# sourceURL=webpack:///multi_bootstrap_moment_./buyercall/assets/scripts/vendor/jquery-ui.min.js_./buyercall/assets/scripts/vendor/material.min.js_./buyercall/assets/scripts/vendor/perfect-scrollbar.jquery.min.js_./buyercall/assets/scripts/vendor/chartist.min.js_./buyercall/assets/scripts/vendor/jquery.bootstrap-wizard.js_./buyercall/assets/scripts/vendor/gsdk-bootstrap-wizard.js_./buyercall/assets/scripts/vendor/jquery.select-bootstrap.js_./buyercall/assets/scripts/vendor/bootstrap-notify.js_./buyercall/assets/scripts/vendor/bootstrap-colorpicker.js_./buyercall/assets/scripts/vendor/bootstrap-datetimepicker.js_./buyercall/assets/scripts/vendor/fullcalendar.min.js_./buyercall/assets/scripts/vendor/jasny-bootstrap.min.js_./buyercall/assets/scripts/vendor/jquery-jvectormap.js_./buyercall/assets/scripts/vendor/jquery.tagsinput.js_./buyercall/assets/scripts/vendor/jquery.auto-complete.js_./buyercall/assets/scripts/vendor/sweetalert2.js_./buyercall/assets/scripts/vendor/nouislider.min.js_./buyercall/assets/scripts/vendor/material-dashboard.js_./buyercall/assets/scripts/vendor/player.min.js?");

/***/ }),

/***/ "jquery":
/*!*************************!*\
  !*** external "jQuery" ***!
  \*************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = jQuery;\n\n//# sourceURL=webpack:///external_%22jQuery%22?");

/***/ })

/******/ });