heartbeat-monitor/.next/server/vendor-chunks/recharts.js
OpenClaw Bot 9568bd81d1 Complete UI/UX redesign with modern dashboard aesthetics
- Applied dark OLED theme with slate color palette
- Added Fira Code/Inter typography for technical look
- Implemented glassmorphism cards with gradient accents
- Added smooth area charts with gradient fills
- Improved stats cards with glow effects
- Added tabbed navigation (Dashboard/Settings)
- Enhanced modal designs with better spacing
- Added custom scrollbar styling
- Implemented responsive grid layout
- Added hover animations and micro-interactions
- Improved accessibility with focus states
2026-02-18 12:06:39 -06:00

645 lines
2.1 MiB

"use strict";
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
exports.id = "vendor-chunks/recharts";
exports.ids = ["vendor-chunks/recharts"];
exports.modules = {
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/Bar.js":
/*!****************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/Bar.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Bar: () => (/* binding */ Bar)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var react_smooth__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-smooth */ \"(ssr)/./node_modules/react-smooth/es6/index.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isEqual */ \"(ssr)/./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _ErrorBar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ErrorBar */ \"(ssr)/./node_modules/recharts/es6/cartesian/ErrorBar.js\");\n/* harmony import */ var _component_Cell__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../component/Cell */ \"(ssr)/./node_modules/recharts/es6/component/Cell.js\");\n/* harmony import */ var _component_LabelList__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../component/LabelList */ \"(ssr)/./node_modules/recharts/es6/component/LabelList.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_Global__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _util_BarUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/BarUtils */ \"(ssr)/./node_modules/recharts/es6/util/BarUtils.js\");\nvar _excluded = [\n \"value\",\n \"background\"\n];\nvar _Bar;\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Render a group of bar\n */ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Bar = /*#__PURE__*/ function(_PureComponent) {\n function Bar() {\n var _this;\n _classCallCheck(this, Bar);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Bar, [].concat(args));\n _defineProperty(_this, \"state\", {\n isAnimationFinished: false\n });\n _defineProperty(_this, \"id\", (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.uniqueId)('recharts-bar-'));\n _defineProperty(_this, \"handleAnimationEnd\", function() {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n });\n _defineProperty(_this, \"handleAnimationStart\", function() {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (onAnimationStart) {\n onAnimationStart();\n }\n });\n return _this;\n }\n _inherits(Bar, _PureComponent);\n return _createClass(Bar, [\n {\n key: \"renderRectanglesStatically\",\n value: function renderRectanglesStatically(data) {\n var _this2 = this;\n var _this$props = this.props, shape = _this$props.shape, dataKey = _this$props.dataKey, activeIndex = _this$props.activeIndex, activeBar = _this$props.activeBar;\n var baseProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__.filterProps)(this.props, false);\n return data && data.map(function(entry, i) {\n var isActive = i === activeIndex;\n var option = isActive ? activeBar : shape;\n var props = _objectSpread(_objectSpread(_objectSpread({}, baseProps), entry), {}, {\n isActive: isActive,\n option: option,\n index: i,\n dataKey: dataKey,\n onAnimationStart: _this2.handleAnimationStart,\n onAnimationEnd: _this2.handleAnimationEnd\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_6__.Layer, _extends({\n className: \"recharts-bar-rectangle\"\n }, (0,_util_types__WEBPACK_IMPORTED_MODULE_7__.adaptEventsOfChild)(_this2.props, entry, i), {\n // https://github.com/recharts/recharts/issues/5415\n // eslint-disable-next-line react/no-array-index-key\n key: \"rectangle-\".concat(entry === null || entry === void 0 ? void 0 : entry.x, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.y, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.value, \"-\").concat(i)\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_util_BarUtils__WEBPACK_IMPORTED_MODULE_8__.BarRectangle, props));\n });\n }\n },\n {\n key: \"renderRectanglesWithAnimation\",\n value: function renderRectanglesWithAnimation() {\n var _this3 = this;\n var _this$props2 = this.props, data = _this$props2.data, layout = _this$props2.layout, isAnimationActive = _this$props2.isAnimationActive, animationBegin = _this$props2.animationBegin, animationDuration = _this$props2.animationDuration, animationEasing = _this$props2.animationEasing, animationId = _this$props2.animationId;\n var prevData = this.state.prevData;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"bar-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function(_ref) {\n var t = _ref.t;\n var stepData = data.map(function(entry, index) {\n var prev = prevData && prevData[index];\n if (prev) {\n var interpolatorX = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(prev.x, entry.x);\n var interpolatorY = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(prev.y, entry.y);\n var interpolatorWidth = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(prev.width, entry.width);\n var interpolatorHeight = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(prev.height, entry.height);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t),\n width: interpolatorWidth(t),\n height: interpolatorHeight(t)\n });\n }\n if (layout === 'horizontal') {\n var _interpolatorHeight = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(0, entry.height);\n var h = _interpolatorHeight(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n y: entry.y + entry.height - h,\n height: h\n });\n }\n var interpolator = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(0, entry.width);\n var w = interpolator(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n width: w\n });\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_6__.Layer, null, _this3.renderRectanglesStatically(stepData));\n });\n }\n },\n {\n key: \"renderRectangles\",\n value: function renderRectangles() {\n var _this$props3 = this.props, data = _this$props3.data, isAnimationActive = _this$props3.isAnimationActive;\n var prevData = this.state.prevData;\n if (isAnimationActive && data && data.length && (!prevData || !lodash_isEqual__WEBPACK_IMPORTED_MODULE_2___default()(prevData, data))) {\n return this.renderRectanglesWithAnimation();\n }\n return this.renderRectanglesStatically(data);\n }\n },\n {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this4 = this;\n var _this$props4 = this.props, data = _this$props4.data, dataKey = _this$props4.dataKey, activeIndex = _this$props4.activeIndex;\n var backgroundProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__.filterProps)(this.props.background, false);\n return data.map(function(entry, i) {\n var value = entry.value, background = entry.background, rest = _objectWithoutProperties(entry, _excluded);\n if (!background) {\n return null;\n }\n var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, rest), {}, {\n fill: '#eee'\n }, background), backgroundProps), (0,_util_types__WEBPACK_IMPORTED_MODULE_7__.adaptEventsOfChild)(_this4.props, entry, i)), {}, {\n onAnimationStart: _this4.handleAnimationStart,\n onAnimationEnd: _this4.handleAnimationEnd,\n dataKey: dataKey,\n index: i,\n className: 'recharts-bar-background-rectangle'\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_util_BarUtils__WEBPACK_IMPORTED_MODULE_8__.BarRectangle, _extends({\n key: \"background-bar-\".concat(i),\n option: _this4.props.background,\n isActive: i === activeIndex\n }, props));\n });\n }\n },\n {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props5 = this.props, data = _this$props5.data, xAxis = _this$props5.xAxis, yAxis = _this$props5.yAxis, layout = _this$props5.layout, children = _this$props5.children;\n var errorBarItems = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__.findAllByType)(children, _ErrorBar__WEBPACK_IMPORTED_MODULE_10__.ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n /**\n * if the value coming from `getComposedData` is an array then this is a stacked bar chart.\n * arr[1] represents end value of the bar since the data is in the form of [startValue, endValue].\n * */ var value = Array.isArray(dataPoint.value) ? dataPoint.value[1] : dataPoint.value;\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: value,\n errorVal: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getValueByDataKey)(dataPoint, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_6__.Layer, errorBarProps, errorBarItems.map(function(item) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(item, {\n key: \"error-bar-\".concat(clipPathId, \"-\").concat(item.props.dataKey),\n data: data,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n offset: offset,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props, hide = _this$props6.hide, data = _this$props6.data, className = _this$props6.className, xAxis = _this$props6.xAxis, yAxis = _this$props6.yAxis, left = _this$props6.left, top = _this$props6.top, width = _this$props6.width, height = _this$props6.height, isAnimationActive = _this$props6.isAnimationActive, background = _this$props6.background, id = _this$props6.id;\n if (hide || !data || !data.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('recharts-bar', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = lodash_isNil__WEBPACK_IMPORTED_MODULE_3___default()(id) ? this.id : id;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_6__.Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"defs\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n }))) : null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_6__.Layer, {\n className: \"recharts-bar-rectangles\",\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && _component_LabelList__WEBPACK_IMPORTED_MODULE_12__.LabelList.renderCallByParent(this.props, data));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curData: nextProps.data,\n prevData: prevState.curData\n };\n }\n if (nextProps.data !== prevState.curData) {\n return {\n curData: nextProps.data\n };\n }\n return null;\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_Bar = Bar;\n_defineProperty(Bar, \"displayName\", 'Bar');\n_defineProperty(Bar, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'rect',\n minPointSize: 0,\n hide: false,\n data: [],\n layout: 'vertical',\n activeBar: false,\n isAnimationActive: !_util_Global__WEBPACK_IMPORTED_MODULE_13__.Global.isSsr,\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'ease'\n});\n/**\n * Compose the data of each group\n * @param {Object} props Props for the component\n * @param {Object} item An instance of Bar\n * @param {Array} barPosition The offset and size of each bar\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {Array} stackedData The stacked data of a bar item\n * @return{Array} Composed data\n */ _defineProperty(Bar, \"getComposedData\", function(_ref2) {\n var props = _ref2.props, item = _ref2.item, barPosition = _ref2.barPosition, bandSize = _ref2.bandSize, xAxis = _ref2.xAxis, yAxis = _ref2.yAxis, xAxisTicks = _ref2.xAxisTicks, yAxisTicks = _ref2.yAxisTicks, stackedData = _ref2.stackedData, dataStartIndex = _ref2.dataStartIndex, displayedData = _ref2.displayedData, offset = _ref2.offset;\n var pos = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.findPositionOfBar)(barPosition, item);\n if (!pos) {\n return null;\n }\n var layout = props.layout;\n var itemDefaultProps = item.type.defaultProps;\n var itemProps = itemDefaultProps !== undefined ? _objectSpread(_objectSpread({}, itemDefaultProps), item.props) : item.props;\n var dataKey = itemProps.dataKey, children = itemProps.children, minPointSizeProp = itemProps.minPointSize;\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n var baseValue = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBaseValueOfBar)({\n numericAxis: numericAxis\n });\n var cells = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__.findAllByType)(children, _component_Cell__WEBPACK_IMPORTED_MODULE_14__.Cell);\n var rects = displayedData.map(function(entry, index) {\n var value, x, y, width, height, background;\n if (stackedData) {\n value = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.truncateByDomain)(stackedData[dataStartIndex + index], stackedDomain);\n } else {\n value = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getValueByDataKey)(entry, dataKey);\n if (!Array.isArray(value)) {\n value = [\n baseValue,\n value\n ];\n }\n }\n var minPointSize = (0,_util_BarUtils__WEBPACK_IMPORTED_MODULE_8__.minPointSizeCallback)(minPointSizeProp, _Bar.defaultProps.minPointSize)(value[1], index);\n if (layout === 'horizontal') {\n var _ref4;\n var _ref3 = [\n yAxis.scale(value[0]),\n yAxis.scale(value[1])\n ], baseValueScale = _ref3[0], currentValueScale = _ref3[1];\n x = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getCateCoordinateOfBar)({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n y = (_ref4 = currentValueScale !== null && currentValueScale !== void 0 ? currentValueScale : baseValueScale) !== null && _ref4 !== void 0 ? _ref4 : undefined;\n width = pos.size;\n var computedHeight = baseValueScale - currentValueScale;\n height = Number.isNaN(computedHeight) ? 0 : computedHeight;\n background = {\n x: x,\n y: yAxis.y,\n width: width,\n height: yAxis.height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n var delta = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.mathSign)(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n y -= delta;\n height += delta;\n }\n } else {\n var _ref5 = [\n xAxis.scale(value[0]),\n xAxis.scale(value[1])\n ], _baseValueScale = _ref5[0], _currentValueScale = _ref5[1];\n x = _baseValueScale;\n y = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getCateCoordinateOfBar)({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n width = _currentValueScale - _baseValueScale;\n height = pos.size;\n background = {\n x: xAxis.x,\n y: y,\n width: xAxis.width,\n height: height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n var _delta = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.mathSign)(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n width += _delta;\n }\n }\n return _objectSpread(_objectSpread(_objectSpread({}, entry), {}, {\n x: x,\n y: y,\n width: width,\n height: height,\n value: stackedData ? value : value[1],\n payload: entry,\n background: background\n }, cells && cells[index] && cells[index].props), {}, {\n tooltipPayload: [\n (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTooltipItem)(item, entry)\n ],\n tooltipPosition: {\n x: x + width / 2,\n y: y + height / 2\n }\n });\n });\n return _objectSpread({\n data: rects,\n layout: layout\n }, offset);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9CYXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUlBLFlBQVk7SUFBQztJQUFTO0NBQWE7QUFDdkMsSUFBSUM7QUFDSixTQUFTQyxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0sseUJBQXlCQyxNQUFNLEVBQUVDLFFBQVE7SUFBSSxJQUFJRCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUUsU0FBU0MsOEJBQThCSCxRQUFRQztJQUFXLElBQUlHLEtBQUtDO0lBQUcsSUFBSUMsT0FBT0MscUJBQXFCLEVBQUU7UUFBRSxJQUFJQyxtQkFBbUJGLE9BQU9DLHFCQUFxQixDQUFDUDtRQUFTLElBQUtLLElBQUksR0FBR0EsSUFBSUcsaUJBQWlCQyxNQUFNLEVBQUVKLElBQUs7WUFBRUQsTUFBTUksZ0JBQWdCLENBQUNILEVBQUU7WUFBRSxJQUFJSixTQUFTUyxPQUFPLENBQUNOLFFBQVEsR0FBRztZQUFVLElBQUksQ0FBQ0UsT0FBT1IsU0FBUyxDQUFDYSxvQkFBb0IsQ0FBQ0MsSUFBSSxDQUFDWixRQUFRSSxNQUFNO1lBQVVGLE1BQU0sQ0FBQ0UsSUFBSSxHQUFHSixNQUFNLENBQUNJLElBQUk7UUFBRTtJQUFFO0lBQUUsT0FBT0Y7QUFBUTtBQUMzZSxTQUFTQyw4QkFBOEJILE1BQU0sRUFBRUMsUUFBUTtJQUFJLElBQUlELFVBQVUsTUFBTSxPQUFPLENB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QUFRO2dCQUNmdkIsR0FBR0EsSUFBSXlCLFNBQVM7WUFDbEI7UUFDRjtJQUNGO0lBQ0EsT0FBTzlILGNBQWM7UUFDbkJtRixNQUFNb0g7UUFDTjlGLFFBQVFBO0lBQ1YsR0FBRzJDO0FBQ0wiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9CYXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9leGNsdWRlZCA9IFtcInZhbHVlXCIsIFwiYmFja2dyb3VuZFwiXTtcbnZhciBfQmFyO1xuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgUmVuZGVyIGEgZ3JvdXAgb2YgYmFyXG4gKi9cbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgQW5pbWF0ZSBmcm9tICdyZWFjdC1zbW9vdGgnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBFcnJvckJhciB9IGZyb20gJy4vRXJyb3JCYXInO1xuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJy4uL2NvbXBvbmVudC9DZWxsJztcbmltcG9ydCB7IExhYmVsTGlzdCB9IGZyb20gJy4uL2NvbXBvbmVudC9MYWJlbExpc3QnO1xuaW1wb3J0IHsgdW5pcXVlSWQsIG1hdGhTaWduLCBpbnRlcnBvbGF0ZU51bWJlciB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IGZpbHRlclByb3BzLCBmaW5kQWxsQnlUeXBlIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4uL3V0aWwvR2xvYmFsJztcbmltcG9ydCB7IGdldENhdGVDb29yZGluYXRlT2ZCYXIsIGdldFZhbHVlQnlEYXRhS2V5LCB0cnVuY2F0ZUJ5RG9tYWluLCBnZXRCYXNlVmFsdWVPZkJhciwgZmluZFBvc2l0aW9uT2ZCYXIsIGdldFRvb2x0aXBJdGVtIH0gZnJvbSAnLi4vdXRpbC9DaGFydFV0aWxzJztcbmltcG9ydCB7IGFkYXB0RXZlbnRzT2ZDaGlsZCB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgQmFyUmVjdGFuZ2xlLCBtaW5Qb2ludFNpemVDYWxsYmFjayB9IGZyb20gJy4uL3V0aWwvQmFyVXRpbHMnO1xuZXhwb3J0IHZhciBCYXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIEJhcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJhcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9jYWxsU3VwZXIodGhpcywgQmFyLCBbXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJzdGF0ZVwiLCB7XG4gICAgICBpc0FuaW1hdGlvbkZpbmlzaGVkOiBmYWxzZVxuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJpZFwiLCB1bmlxdWVJZCgncmVjaGFydHMtYmFyLScpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlQW5pbWF0aW9uRW5kXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBvbkFuaW1hdGlvbkVuZCA9IF90aGlzLnByb3BzLm9uQW5pbWF0aW9uRW5kO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc0FuaW1hdGlvbkZpbmlzaGVkOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGlmIChvbkFuaW1hdGlvbkVuZCkge1xuICAgICAgICBvbkFuaW1hdGlvbkVuZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVBbmltYXRpb25TdGFydFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgb25BbmltYXRpb25TdGFydCA9IF90aGlzLnByb3BzLm9uQW5pbWF0aW9uU3RhcnQ7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzQW5pbWF0aW9uRmluaXNoZWQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIGlmIChvbkFuaW1hdGlvblN0YXJ0KSB7XG4gICAgICAgIG9uQW5pbWF0aW9uU3RhcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2luaGVyaXRzKEJhciwgX1B1cmVDb21wb25lbnQpO1xuICByZXR1cm4gX2NyZWF0ZUNsYXNzKEJhciwgW3tcbiAgICBrZXk6IFwicmVuZGVyUmVjdGFuZ2xlc1N0YXRpY2FsbHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUmVjdGFuZ2xlc1N0YXRpY2FsbHkoZGF0YSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBzaGFwZSA9IF90aGlzJHByb3BzLnNoYXBlLFxuICAgICAgICBkYXRhS2V5ID0gX3RoaXMkcHJvcHMuZGF0YUtleSxcbiAgICAgICAgYWN0aXZlSW5kZXggPSBfdGhpcyRwcm9wcy5hY3RpdmVJbmRleCxcbiAgICAgICAgYWN0aXZlQmFyID0gX3RoaXMkcHJvcHMuYWN0aXZlQmFyO1xuICAgICAgdmFyIGJhc2VQcm9wcyA9IGZpbHRlclByb3BzKHRoaXMucHJvcHMsIGZhbHNlKTtcbiAgICAgIHJldHVybiBkYXRhICYmIGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaSkge1xuICAgICAgICB2YXIgaXNBY3RpdmUgPSBpID09PSBhY3RpdmVJbmRleDtcbiAgICAgICAgdmFyIG9wdGlvbiA9IGlzQWN0aXZlID8gYWN0aXZlQmFyIDogc2hhcGU7XG4gICAgICAgIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBiYXNlUHJvcHMpLCBlbnRyeSksIHt9LCB7XG4gICAgICAgICAgaXNBY3RpdmU6IGlzQWN0aXZlLFxuICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgIGRhdGFLZXk6IGRhdGFLZXksXG4gICAgICAgICAgb25BbmltYXRpb25TdGFydDogX3RoaXMyLmhhbmRsZUFuaW1hdGlvblN0YXJ0LFxuICAgICAgICAgIG9uQW5pbWF0aW9uRW5kOiBfdGhpczIuaGFuZGxlQW5pbWF0aW9uRW5kXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIF9leHRlbmRzKHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtYmFyLXJlY3RhbmdsZVwiXG4gICAgICAgIH0sIGFkYXB0RXZlbnRzT2ZDaGlsZChfdGhpczIucHJvcHMsIGVudHJ5LCBpKSwge1xuICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWNoYXJ0cy9yZWNoYXJ0cy9pc3N1ZXMvNTQxNVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICBrZXk6IFwicmVjdGFuZ2xlLVwiLmNvbmNhdChlbnRyeSA9PT0gbnVsbCB8fCBlbnRyeSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW50cnkueCwgXCItXCIpLmNvbmNhdChlbnRyeSA9PT0gbnVsbCB8fCBlbnRyeSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW50cnkueSwgXCItXCIpLmNvbmNhdChlbnRyeSA9PT0gbnVsbCB8fCBlbnRyeSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW50cnkudmFsdWUsIFwiLVwiKS5jb25jYXQoaSlcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEJhclJlY3RhbmdsZSwgcHJvcHMpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJSZWN0YW5nbGVzV2l0aEFuaW1hdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJSZWN0YW5nbGVzV2l0aEFuaW1hdGlvbigpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczIuZGF0YSxcbiAgICAgICAgbGF5b3V0ID0gX3RoaXMkcHJvcHMyLmxheW91dCxcbiAgICAgICAgaXNBbmltYXRpb25BY3RpdmUgPSBfdGhpcyRwcm9wczIuaXNBbmltYXRpb25BY3RpdmUsXG4gICAgICAgIGFuaW1hdGlvbkJlZ2luID0gX3RoaXMkcHJvcHMyLmFuaW1hdGlvbkJlZ2luLFxuICAgICAgICBhbmltYXRpb25EdXJhdGlvbiA9IF90aGlzJHByb3BzMi5hbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgYW5pbWF0aW9uRWFzaW5nID0gX3RoaXMkcHJvcHMyLmFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgYW5pbWF0aW9uSWQgPSBfdGhpcyRwcm9wczIuYW5pbWF0aW9uSWQ7XG4gICAgICB2YXIgcHJldkRhdGEgPSB0aGlzLnN0YXRlLnByZXZEYXRhO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEFuaW1hdGUsIHtcbiAgICAgICAgYmVnaW46IGFuaW1hdGlvbkJlZ2luLFxuICAgICAgICBkdXJhdGlvbjogYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgIGlzQWN0aXZlOiBpc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgICAgZWFzaW5nOiBhbmltYXRpb25FYXNpbmcsXG4gICAgICAgIGZyb206IHtcbiAgICAgICAgICB0OiAwXG4gICAgICAgIH0sXG4gICAgICAgIHRvOiB7XG4gICAgICAgICAgdDogMVxuICAgICAgICB9LFxuICAgICAgICBrZXk6IFwiYmFyLVwiLmNvbmNhdChhbmltYXRpb25JZCksXG4gICAgICAgIG9uQW5pbWF0aW9uRW5kOiB0aGlzLmhhbmRsZUFuaW1hdGlvbkVuZCxcbiAgICAgICAgb25BbmltYXRpb25TdGFydDogdGhpcy5oYW5kbGVBbmltYXRpb25TdGFydFxuICAgICAgfSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIHQgPSBfcmVmLnQ7XG4gICAgICAgIHZhciBzdGVwRGF0YSA9IGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICAgICAgICB2YXIgcHJldiA9IHByZXZEYXRhICYmIHByZXZEYXRhW2luZGV4XTtcbiAgICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgdmFyIGludGVycG9sYXRvclggPSBpbnRlcnBvbGF0ZU51bWJlcihwcmV2LngsIGVudHJ5LngpO1xuICAgICAgICAgICAgdmFyIGludGVycG9sYXRvclkgPSBpbnRlcnBvbGF0ZU51bWJlcihwcmV2LnksIGVudHJ5LnkpO1xuICAgICAgICAgICAgdmFyIGludGVycG9sYXRvcldpZHRoID0gaW50ZXJwb2xhdGVOdW1iZXIocHJldi53aWR0aCwgZW50cnkud2lkdGgpO1xuICAgICAgICAgICAgdmFyIGludGVycG9sYXRvckhlaWdodCA9IGludGVycG9sYXRlTnVtYmVyKHByZXYuaGVpZ2h0LCBlbnRyeS5oZWlnaHQpO1xuICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICAgICAgICB4OiBpbnRlcnBvbGF0b3JYKHQpLFxuICAgICAgICAgICAgICB5OiBpbnRlcnBvbGF0b3JZKHQpLFxuICAgICAgICAgICAgICB3aWR0aDogaW50ZXJwb2xhdG9yV2lkdGgodCksXG4gICAgICAgICAgICAgIGhlaWdodDogaW50ZXJwb2xhdG9ySGVpZ2h0KHQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICB2YXIgX2ludGVycG9sYXRvckhlaWdodCA9IGludGVycG9sYXRlTnVtYmVyKDAsIGVudHJ5LmhlaWdodCk7XG4gICAgICAgICAgICB2YXIgaCA9IF9pbnRlcnBvbGF0b3JIZWlnaHQodCk7XG4gICAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgICAgICAgIHk6IGVudHJ5LnkgKyBlbnRyeS5oZWlnaHQgLSBoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaW50ZXJwb2xhdG9yID0gaW50ZXJwb2xhdGVOdW1iZXIoMCwgZW50cnkud2lkdGgpO1xuICAgICAgICAgIHZhciB3ID0gaW50ZXJwb2xhdG9yKHQpO1xuICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGVudHJ5KSwge30sIHtcbiAgICAgICAgICAgIHdpZHRoOiB3XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIG51bGwsIF90aGlzMy5yZW5kZXJSZWN0YW5nbGVzU3RhdGljYWxseShzdGVwRGF0YSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclJlY3RhbmdsZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUmVjdGFuZ2xlcygpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSB0aGlzLnByb3BzLFxuICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHMzLmRhdGEsXG4gICAgICAgIGlzQW5pbWF0aW9uQWN0aXZlID0gX3RoaXMkcHJvcHMzLmlzQW5pbWF0aW9uQWN0aXZlO1xuICAgICAgdmFyIHByZXZEYXRhID0gdGhpcy5zdGF0ZS5wcmV2RGF0YTtcbiAgICAgIGlmIChpc0FuaW1hdGlvbkFjdGl2ZSAmJiBkYXRhICYmIGRhdGEubGVuZ3RoICYmICghcHJldkRhdGEgfHwgIWlzRXF1YWwocHJldkRhdGEsIGRhdGEpKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJSZWN0YW5nbGVzV2l0aEFuaW1hdGlvbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyUmVjdGFuZ2xlc1N0YXRpY2FsbHkoZGF0YSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckJhY2tncm91bmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQmFja2dyb3VuZCgpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczQuZGF0YSxcbiAgICAgICAgZGF0YUtleSA9IF90aGlzJHByb3BzNC5kYXRhS2V5LFxuICAgICAgICBhY3RpdmVJbmRleCA9IF90aGlzJHByb3BzNC5hY3RpdmVJbmRleDtcbiAgICAgIHZhciBiYWNrZ3JvdW5kUHJvcHMgPSBmaWx0ZXJQcm9wcyh0aGlzLnByb3BzLmJhY2tncm91bmQsIGZhbHNlKTtcbiAgICAgIHJldHVybiBkYXRhLm1hcChmdW5jdGlvbiAoZW50cnksIGkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gZW50cnkudmFsdWUsXG4gICAgICAgICAgYmFja2dyb3VuZCA9IGVudHJ5LmJhY2tncm91bmQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlbnRyeSwgX2V4Y2x1ZGVkKTtcbiAgICAgICAgaWYgKCFiYWNrZ3JvdW5kKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0KSwge30sIHtcbiAgICAgICAgICBmaWxsOiAnI2VlZSdcbiAgICAgICAgfSwgYmFja2dyb3VuZCksIGJhY2tncm91bmRQcm9wcyksIGFkYXB0RXZlbnRzT2ZDaGlsZChfdGhpczQucHJvcHMsIGVudHJ5LCBpKSksIHt9LCB7XG4gICAgICAgICAgb25BbmltYXRpb25TdGFydDogX3RoaXM0LmhhbmRsZUFuaW1hdGlvblN0YXJ0LFxuICAgICAgICAgIG9uQW5pbWF0aW9uRW5kOiBfdGhpczQuaGFuZGxlQW5pbWF0aW9uRW5kLFxuICAgICAgICAgIGRhdGFLZXk6IGRhdGFLZXksXG4gICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVjaGFydHMtYmFyLWJhY2tncm91bmQtcmVjdGFuZ2xlJ1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEJhclJlY3RhbmdsZSwgX2V4dGVuZHMoe1xuICAgICAgICAgIGtleTogXCJiYWNrZ3JvdW5kLWJhci1cIi5jb25jYXQoaSksXG4gICAgICAgICAgb3B0aW9uOiBfdGhpczQucHJvcHMuYmFja2dyb3VuZCxcbiAgICAgICAgICBpc0FjdGl2ZTogaSA9PT0gYWN0aXZlSW5kZXhcbiAgICAgICAgfSwgcHJvcHMpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJFcnJvckJhclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJFcnJvckJhcihuZWVkQ2xpcCwgY2xpcFBhdGhJZCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMuaXNBbmltYXRpb25BY3RpdmUgJiYgIXRoaXMuc3RhdGUuaXNBbmltYXRpb25GaW5pc2hlZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBfdGhpcyRwcm9wczUgPSB0aGlzLnByb3BzLFxuICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHM1LmRhdGEsXG4gICAgICAgIHhBeGlzID0gX3RoaXMkcHJvcHM1LnhBeGlzLFxuICAgICAgICB5QXhpcyA9IF90aGlzJHByb3BzNS55QXhpcyxcbiAgICAgICAgbGF5b3V0ID0gX3RoaXMkcHJvcHM1LmxheW91dCxcbiAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczUuY2hpbGRyZW47XG4gICAgICB2YXIgZXJyb3JCYXJJdGVtcyA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIEVycm9yQmFyKTtcbiAgICAgIGlmICghZXJyb3JCYXJJdGVtcykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBvZmZzZXQgPSBsYXlvdXQgPT09ICd2ZXJ0aWNhbCcgPyBkYXRhWzBdLmhlaWdodCAvIDIgOiBkYXRhWzBdLndpZHRoIC8gMjtcbiAgICAgIHZhciBkYXRhUG9pbnRGb3JtYXR0ZXIgPSBmdW5jdGlvbiBkYXRhUG9pbnRGb3JtYXR0ZXIoZGF0YVBvaW50LCBkYXRhS2V5KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBpZiB0aGUgdmFsdWUgY29taW5nIGZyb20gYGdldENvbXBvc2VkRGF0YWAgaXMgYW4gYXJyYXkgdGhlbiB0aGlzIGlzIGEgc3RhY2tlZCBiYXIgY2hhcnQuXG4gICAgICAgICAqIGFyclsxXSByZXByZXNlbnRzIGVuZCB2YWx1ZSBvZiB0aGUgYmFyIHNpbmNlIHRoZSBkYXRhIGlzIGluIHRoZSBmb3JtIG9mIFtzdGFydFZhbHVlLCBlbmRWYWx1ZV0uXG4gICAgICAgICAqICovXG4gICAgICAgIHZhciB2YWx1ZSA9IEFycmF5LmlzQXJyYXkoZGF0YVBvaW50LnZhbHVlKSA/IGRhdGFQb2ludC52YWx1ZVsxXSA6IGRhdGFQb2ludC52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiBkYXRhUG9pbnQueCxcbiAgICAgICAgICB5OiBkYXRhUG9pbnQueSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgZXJyb3JWYWw6IGdldFZhbHVlQnlEYXRhS2V5KGRhdGFQb2ludCwgZGF0YUtleSlcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICB2YXIgZXJyb3JCYXJQcm9wcyA9IHtcbiAgICAgICAgY2xpcFBhdGg6IG5lZWRDbGlwID8gXCJ1cmwoI2NsaXBQYXRoLVwiLmNvbmNhdChjbGlwUGF0aElkLCBcIilcIikgOiBudWxsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCBlcnJvckJhclByb3BzLCBlcnJvckJhckl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChpdGVtLCB7XG4gICAgICAgICAga2V5OiBcImVycm9yLWJhci1cIi5jb25jYXQoY2xpcFBhdGhJZCwgXCItXCIpLmNvbmNhdChpdGVtLnByb3BzLmRhdGFLZXkpLFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgeEF4aXM6IHhBeGlzLFxuICAgICAgICAgIHlBeGlzOiB5QXhpcyxcbiAgICAgICAgICBsYXlvdXQ6IGxheW91dCxcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICBkYXRhUG9pbnRGb3JtYXR0ZXI6IGRhdGFQb2ludEZvcm1hdHRlclxuICAgICAgICB9KTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczYgPSB0aGlzLnByb3BzLFxuICAgICAgICBoaWRlID0gX3RoaXMkcHJvcHM2LmhpZGUsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczYuZGF0YSxcbiAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM2LmNsYXNzTmFtZSxcbiAgICAgICAgeEF4aXMgPSBfdGhpcyRwcm9wczYueEF4aXMsXG4gICAgICAgIHlBeGlzID0gX3RoaXMkcHJvcHM2LnlBeGlzLFxuICAgICAgICBsZWZ0ID0gX3RoaXMkcHJvcHM2LmxlZnQsXG4gICAgICAgIHRvcCA9IF90aGlzJHByb3BzNi50b3AsXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHM2LndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczYuaGVpZ2h0LFxuICAgICAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IF90aGlzJHByb3BzNi5pc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgICAgYmFja2dyb3VuZCA9IF90aGlzJHByb3BzNi5iYWNrZ3JvdW5kLFxuICAgICAgICBpZCA9IF90aGlzJHByb3BzNi5pZDtcbiAgICAgIGlmIChoaWRlIHx8ICFkYXRhIHx8ICFkYXRhLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBpc0FuaW1hdGlvbkZpbmlzaGVkID0gdGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkO1xuICAgICAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1iYXInLCBjbGFzc05hbWUpO1xuICAgICAgdmFyIG5lZWRDbGlwWCA9IHhBeGlzICYmIHhBeGlzLmFsbG93RGF0YU92ZXJmbG93O1xuICAgICAgdmFyIG5lZWRDbGlwWSA9IHlBeGlzICYmIHlBeGlzLmFsbG93RGF0YU92ZXJmbG93O1xuICAgICAgdmFyIG5lZWRDbGlwID0gbmVlZENsaXBYIHx8IG5lZWRDbGlwWTtcbiAgICAgIHZhciBjbGlwUGF0aElkID0gaXNOaWwoaWQpID8gdGhpcy5pZCA6IGlkO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzc1xuICAgICAgfSwgbmVlZENsaXBYIHx8IG5lZWRDbGlwWSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVmc1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNsaXBQYXRoXCIsIHtcbiAgICAgICAgaWQ6IFwiY2xpcFBhdGgtXCIuY29uY2F0KGNsaXBQYXRoSWQpXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgICAgICB4OiBuZWVkQ2xpcFggPyBsZWZ0IDogbGVmdCAtIHdpZHRoIC8gMixcbiAgICAgICAgeTogbmVlZENsaXBZID8gdG9wIDogdG9wIC0gaGVpZ2h0IC8gMixcbiAgICAgICAgd2lkdGg6IG5lZWRDbGlwWCA/IHdpZHRoIDogd2lkdGggKiAyLFxuICAgICAgICBoZWlnaHQ6IG5lZWRDbGlwWSA/IGhlaWdodCA6IGhlaWdodCAqIDJcbiAgICAgIH0pKSkgOiBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtYmFyLXJlY3RhbmdsZXNcIixcbiAgICAgICAgY2xpcFBhdGg6IG5lZWRDbGlwID8gXCJ1cmwoI2NsaXBQYXRoLVwiLmNvbmNhdChjbGlwUGF0aElkLCBcIilcIikgOiBudWxsXG4gICAgICB9LCBiYWNrZ3JvdW5kID8gdGhpcy5yZW5kZXJCYWNrZ3JvdW5kKCkgOiBudWxsLCB0aGlzLnJlbmRlclJlY3RhbmdsZXMoKSksIHRoaXMucmVuZGVyRXJyb3JCYXIobmVlZENsaXAsIGNsaXBQYXRoSWQpLCAoIWlzQW5pbWF0aW9uQWN0aXZlIHx8IGlzQW5pbWF0aW9uRmluaXNoZWQpICYmIExhYmVsTGlzdC5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcywgZGF0YSkpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgIGlmIChuZXh0UHJvcHMuYW5pbWF0aW9uSWQgIT09IHByZXZTdGF0ZS5wcmV2QW5pbWF0aW9uSWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcmV2QW5pbWF0aW9uSWQ6IG5leHRQcm9wcy5hbmltYXRpb25JZCxcbiAgICAgICAgICBjdXJEYXRhOiBuZXh0UHJvcHMuZGF0YSxcbiAgICAgICAgICBwcmV2RGF0YTogcHJldlN0YXRlLmN1ckRhdGFcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0UHJvcHMuZGF0YSAhPT0gcHJldlN0YXRlLmN1ckRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjdXJEYXRhOiBuZXh0UHJvcHMuZGF0YVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XSk7XG59KFB1cmVDb21wb25lbnQpO1xuX0JhciA9IEJhcjtcbl9kZWZpbmVQcm9wZXJ0eShCYXIsIFwiZGlzcGxheU5hbWVcIiwgJ0JhcicpO1xuX2RlZmluZVByb3BlcnR5KEJhciwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICB4QXhpc0lkOiAwLFxuICB5QXhpc0lkOiAwLFxuICBsZWdlbmRUeXBlOiAncmVjdCcsXG4gIG1pblBvaW50U2l6ZTogMCxcbiAgaGlkZTogZmFsc2UsXG4gIGRhdGE6IFtdLFxuICBsYXlvdXQ6ICd2ZXJ0aWNhbCcsXG4gIGFjdGl2ZUJhcjogZmFsc2UsXG4gIGlzQW5pbWF0aW9uQWN0aXZlOiAhR2xvYmFsLmlzU3NyLFxuICBhbmltYXRpb25CZWdpbjogMCxcbiAgYW5pbWF0aW9uRHVyYXRpb246IDQwMCxcbiAgYW5pbWF0aW9uRWFzaW5nOiAnZWFzZSdcbn0pO1xuLyoqXG4gKiBDb21wb3NlIHRoZSBkYXRhIG9mIGVhY2ggZ3JvdXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyBQcm9wcyBmb3IgdGhlIGNvbXBvbmVudFxuICogQHBhcmFtIHtPYmplY3R9IGl0ZW0gICAgICAgIEFuIGluc3RhbmNlIG9mIEJhclxuICogQHBhcmFtIHtBcnJheX0gYmFyUG9zaXRpb24gIFRoZSBvZmZzZXQgYW5kIHNpemUgb2YgZWFjaCBiYXJcbiAqIEBwYXJhbSB7T2JqZWN0fSB4QXhpcyAgICAgICBUaGUgY29uZmlndXJhdGlvbiBvZiB4LWF4aXNcbiAqIEBwYXJhbSB7T2JqZWN0fSB5QXhpcyAgICAgICBUaGUgY29uZmlndXJhdGlvbiBvZiB5LWF4aXNcbiAqIEBwYXJhbSB7QXJyYXl9IHN0YWNrZWREYXRhICBUaGUgc3RhY2tlZCBkYXRhIG9mIGEgYmFyIGl0ZW1cbiAqIEByZXR1cm57QXJyYXl9IENvbXBvc2VkIGRhdGFcbiAqL1xuX2RlZmluZVByb3BlcnR5KEJhciwgXCJnZXRDb21wb3NlZERhdGFcIiwgZnVuY3Rpb24gKF9yZWYyKSB7XG4gIHZhciBwcm9wcyA9IF9yZWYyLnByb3BzLFxuICAgIGl0ZW0gPSBfcmVmMi5pdGVtLFxuICAgIGJhclBvc2l0aW9uID0gX3JlZjIuYmFyUG9zaXRpb24sXG4gICAgYmFuZFNpemUgPSBfcmVmMi5iYW5kU2l6ZSxcbiAgICB4QXhpcyA9IF9yZWYyLnhBeGlzLFxuICAgIHlBeGlzID0gX3JlZjIueUF4aXMsXG4gICAgeEF4aXNUaWNrcyA9IF9yZWYyLnhBeGlzVGlja3MsXG4gICAgeUF4aXNUaWNrcyA9IF9yZWYyLnlBeGlzVGlja3MsXG4gICAgc3RhY2tlZERhdGEgPSBfcmVmMi5zdGFja2VkRGF0YSxcbiAgICBkYXRhU3RhcnRJbmRleCA9IF9yZWYyLmRhdGFTdGFydEluZGV4LFxuICAgIGRpc3BsYXllZERhdGEgPSBfcmVmMi5kaXNwbGF5ZWREYXRhLFxuICAgIG9mZnNldCA9IF9yZWYyLm9mZnNldDtcbiAgdmFyIHBvcyA9IGZpbmRQb3NpdGlvbk9mQmFyKGJhclBvc2l0aW9uLCBpdGVtKTtcbiAgaWYgKCFwb3MpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgbGF5b3V0ID0gcHJvcHMubGF5b3V0O1xuICB2YXIgaXRlbURlZmF1bHRQcm9wcyA9IGl0ZW0udHlwZS5kZWZhdWx0UHJvcHM7XG4gIHZhciBpdGVtUHJvcHMgPSBpdGVtRGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW1EZWZhdWx0UHJvcHMpLCBpdGVtLnByb3BzKSA6IGl0ZW0ucHJvcHM7XG4gIHZhciBkYXRhS2V5ID0gaXRlbVByb3BzLmRhdGFLZXksXG4gICAgY2hpbGRyZW4gPSBpdGVtUHJvcHMuY2hpbGRyZW4sXG4gICAgbWluUG9pbnRTaXplUHJvcCA9IGl0ZW1Qcm9wcy5taW5Qb2ludFNpemU7XG4gIHZhciBudW1lcmljQXhpcyA9IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8geUF4aXMgOiB4QXhpcztcbiAgdmFyIHN0YWNrZWREb21haW4gPSBzdGFja2VkRGF0YSA/IG51bWVyaWNBeGlzLnNjYWxlLmRvbWFpbigpIDogbnVsbDtcbiAgdmFyIGJhc2VWYWx1ZSA9IGdldEJhc2VWYWx1ZU9mQmFyKHtcbiAgICBudW1lcmljQXhpczogbnVtZXJpY0F4aXNcbiAgfSk7XG4gIHZhciBjZWxscyA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIENlbGwpO1xuICB2YXIgcmVjdHMgPSBkaXNwbGF5ZWREYXRhLm1hcChmdW5jdGlvbiAoZW50cnksIGluZGV4KSB7XG4gICAgdmFyIHZhbHVlLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBiYWNrZ3JvdW5kO1xuICAgIGlmIChzdGFja2VkRGF0YSkge1xuICAgICAgdmFsdWUgPSB0cnVuY2F0ZUJ5RG9tYWluKHN0YWNrZWREYXRhW2RhdGFTdGFydEluZGV4ICsgaW5kZXhdLCBzdGFja2VkRG9tYWluKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwgZGF0YUtleSk7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gW2Jhc2VWYWx1ZSwgdmFsdWVdO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbWluUG9pbnRTaXplID0gbWluUG9pbnRTaXplQ2FsbGJhY2sobWluUG9pbnRTaXplUHJvcCwgX0Jhci5kZWZhdWx0UHJvcHMubWluUG9pbnRTaXplKSh2YWx1ZVsxXSwgaW5kZXgpO1xuICAgIGlmIChsYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgdmFyIF9yZWY0O1xuICAgICAgdmFyIF9yZWYzID0gW3lBeGlzLnNjYWxlKHZhbHVlWzBdKSwgeUF4aXMuc2NhbGUodmFsdWVbMV0pXSxcbiAgICAgICAgYmFzZVZhbHVlU2NhbGUgPSBfcmVmM1swXSxcbiAgICAgICAgY3VycmVudFZhbHVlU2NhbGUgPSBfcmVmM1sxXTtcbiAgICAgIHggPSBnZXRDYXRlQ29vcmRpbmF0ZU9mQmFyKHtcbiAgICAgICAgYXhpczogeEF4aXMsXG4gICAgICAgIHRpY2tzOiB4QXhpc1RpY2tzLFxuICAgICAgICBiYW5kU2l6ZTogYmFuZFNpemUsXG4gICAgICAgIG9mZnNldDogcG9zLm9mZnNldCxcbiAgICAgICAgZW50cnk6IGVudHJ5LFxuICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgIH0pO1xuICAgICAgeSA9IChfcmVmNCA9IGN1cnJlbnRWYWx1ZVNjYWxlICE9PSBudWxsICYmIGN1cnJlbnRWYWx1ZVNjYWxlICE9PSB2b2lkIDAgPyBjdXJyZW50VmFsdWVTY2FsZSA6IGJhc2VWYWx1ZVNjYWxlKSAhPT0gbnVsbCAmJiBfcmVmNCAhPT0gdm9pZCAwID8gX3JlZjQgOiB1bmRlZmluZWQ7XG4gICAgICB3aWR0aCA9IHBvcy5zaXplO1xuICAgICAgdmFyIGNvbXB1dGVkSGVpZ2h0ID0gYmFzZVZhbHVlU2NhbGUgLSBjdXJyZW50VmFsdWVTY2FsZTtcbiAgICAgIGhlaWdodCA9IE51bWJlci5pc05hTihjb21wdXRlZEhlaWdodCkgPyAwIDogY29tcHV0ZWRIZWlnaHQ7XG4gICAgICBiYWNrZ3JvdW5kID0ge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5QXhpcy55LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogeUF4aXMuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgaWYgKE1hdGguYWJzKG1pblBvaW50U2l6ZSkgPiAwICYmIE1hdGguYWJzKGhlaWdodCkgPCBNYXRoLmFicyhtaW5Qb2ludFNpemUpKSB7XG4gICAgICAgIHZhciBkZWx0YSA9IG1hdGhTaWduKGhlaWdodCB8fCBtaW5Qb2ludFNpemUpICogKE1hdGguYWJzKG1pblBvaW50U2l6ZSkgLSBNYXRoLmFicyhoZWlnaHQpKTtcbiAgICAgICAgeSAtPSBkZWx0YTtcbiAgICAgICAgaGVpZ2h0ICs9IGRlbHRhO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX3JlZjUgPSBbeEF4aXMuc2NhbGUodmFsdWVbMF0pLCB4QXhpcy5zY2FsZSh2YWx1ZVsxXSldLFxuICAgICAgICBfYmFzZVZhbHVlU2NhbGUgPSBfcmVmNVswXSxcbiAgICAgICAgX2N1cnJlbnRWYWx1ZVNjYWxlID0gX3JlZjVbMV07XG4gICAgICB4ID0gX2Jhc2VWYWx1ZVNjYWxlO1xuICAgICAgeSA9IGdldENhdGVDb29yZGluYXRlT2ZCYXIoe1xuICAgICAgICBheGlzOiB5QXhpcyxcbiAgICAgICAgdGlja3M6IHlBeGlzVGlja3MsXG4gICAgICAgIGJhbmRTaXplOiBiYW5kU2l6ZSxcbiAgICAgICAgb2Zmc2V0OiBwb3Mub2Zmc2V0LFxuICAgICAgICBlbnRyeTogZW50cnksXG4gICAgICAgIGluZGV4OiBpbmRleFxuICAgICAgfSk7XG4gICAgICB3aWR0aCA9IF9jdXJyZW50VmFsdWVTY2FsZSAtIF9iYXNlVmFsdWVTY2FsZTtcbiAgICAgIGhlaWdodCA9IHBvcy5zaXplO1xuICAgICAgYmFja2dyb3VuZCA9IHtcbiAgICAgICAgeDogeEF4aXMueCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHhBeGlzLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICAgIGlmIChNYXRoLmFicyhtaW5Qb2ludFNpemUpID4gMCAmJiBNYXRoLmFicyh3aWR0aCkgPCBNYXRoLmFicyhtaW5Qb2ludFNpemUpKSB7XG4gICAgICAgIHZhciBfZGVsdGEgPSBtYXRoU2lnbih3aWR0aCB8fCBtaW5Qb2ludFNpemUpICogKE1hdGguYWJzKG1pblBvaW50U2l6ZSkgLSBNYXRoLmFicyh3aWR0aCkpO1xuICAgICAgICB3aWR0aCArPSBfZGVsdGE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgeDogeCxcbiAgICAgIHk6IHksXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHZhbHVlOiBzdGFja2VkRGF0YSA/IHZhbHVlIDogdmFsdWVbMV0sXG4gICAgICBwYXlsb2FkOiBlbnRyeSxcbiAgICAgIGJhY2tncm91bmQ6IGJhY2tncm91bmRcbiAgICB9LCBjZWxscyAmJiBjZWxsc1tpbmRleF0gJiYgY2VsbHNbaW5kZXhdLnByb3BzKSwge30sIHtcbiAgICAgIHRvb2x0aXBQYXlsb2FkOiBbZ2V0VG9vbHRpcEl0ZW0oaXRlbSwgZW50cnkpXSxcbiAgICAgIHRvb2x0aXBQb3NpdGlvbjoge1xuICAgICAgICB4OiB4ICsgd2lkdGggLyAyLFxuICAgICAgICB5OiB5ICsgaGVpZ2h0IC8gMlxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGRhdGE6IHJlY3RzLFxuICAgIGxheW91dDogbGF5b3V0XG4gIH0sIG9mZnNldCk7XG59KTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX0JhciIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsInNvdXJjZSIsImV4Y2x1ZGVkIiwidGFyZ2V0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJrZXkiLCJpIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsImxlbmd0aCIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImNhbGwiLCJoYXNPd25Qcm9wZXJ0eSIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsImFyZ3VtZW50cyIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsImNsc3giLCJBbmltYXRlIiwiaXNFcXVhbCIsImlzTmlsIiwiTGF5ZXIiLCJFcnJvckJhciIsIkNlbGwiLCJMYWJlbExpc3QiLCJ1bmlxdWVJZCIsIm1hdGhTaWduIiwiaW50ZXJwb2xhdGVOdW1iZXIiLCJmaWx0ZXJQcm9wcyIsImZpbmRBbGxCeVR5cGUiLCJHbG9iYWwiLCJnZXRDYXRlQ29vcmRpbmF0ZU9mQmFyIiwiZ2V0VmFsdWVCeURhdGFLZXkiLCJ0cnVuY2F0ZUJ5RG9tYWluIiwiZ2V0QmFzZVZhbHVlT2ZCYXIiLCJmaW5kUG9zaXRpb25PZkJhciIsImdldFRvb2x0aXBJdGVtIiwiYWRhcHRFdmVudHNPZkNoaWxkIiwiQmFyUmVjdGFuZ2xlIiwibWluUG9pbnRTaXplQ2FsbGJhY2siLCJCYXIiLCJfUHVyZUNvbXBvbmVudCIsIl90aGlzIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJpc0FuaW1hdGlvbkZpbmlzaGVkIiwib25BbmltYXRpb25FbmQiLCJzZXRTdGF0ZSIsIm9uQW5pbWF0aW9uU3RhcnQiLCJyZW5kZXJSZWN0YW5nbGVzU3RhdGljYWxseSIsImRhdGEiLCJfdGhpczIiLCJfdGhpcyRwcm9wcyIsInNoYXBlIiwiZGF0YUtleSIsImFjdGl2ZUluZGV4IiwiYWN0aXZlQmFyIiwiYmFzZVByb3BzIiwibWFwIiwiZW50cnkiLCJpc0FjdGl2ZSIsIm9wdGlvbiIsImluZGV4IiwiaGFuZGxlQW5pbWF0aW9uU3RhcnQiLCJoYW5kbGVBbmltYXRpb25FbmQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwieCIsInkiLCJyZW5kZXJSZWN0YW5nbGVzV2l0aEFuaW1hdGlvbiIsIl90aGlzMyIsIl90aGlzJHByb3BzMiIsImxheW91dCIsImlzQW5pbWF0aW9uQWN0aXZlIiwiYW5pbWF0aW9uQmVnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkVhc2luZyIsImFuaW1hdGlvbklkIiwicHJldkRhdGEiLCJzdGF0ZSIsImJlZ2luIiwiZHVyYXRpb24iLCJlYXNpbmciLCJmcm9tIiwidG8iLCJfcmVmIiwic3RlcERhdGEiLCJwcmV2IiwiaW50ZXJwb2xhdG9yWCIsImludGVycG9sYXRvclkiLCJpbnRlcnBvbGF0b3JXaWR0aCIsIndpZHRoIiwiaW50ZXJwb2xhdG9ySGVpZ2h0IiwiaGVpZ2h0IiwiX2ludGVycG9sYXRvckhlaWdodCIsImgiLCJpbnRlcnBvbGF0b3IiLCJ3IiwicmVuZGVyUmVjdGFuZ2xlcyIsIl90aGlzJHByb3BzMyIsInJlbmRlckJhY2tncm91bmQiLCJfdGhpczQiLCJfdGhpcyRwcm9wczQiLCJiYWNrZ3JvdW5kUHJvcHMiLCJiYWNrZ3JvdW5kIiwicmVzdCIsImZpbGwiLCJyZW5kZXJFcnJvckJhciIsIm5lZWRDbGlwIiwiY2xpcFBhdGhJZCIsIl90aGlzJHByb3BzNSIsInhBeGlzIiwieUF4aXMiLCJjaGlsZHJlbiIsImVycm9yQmFySXRlbXMiLCJvZmZzZXQiLCJkYXRhUG9pbnRGb3JtYXR0ZXIiLCJkYXRhUG9pbnQiLCJpc0FycmF5IiwiZXJyb3JWYWwiLCJlcnJvckJhclByb3BzIiwiY2xpcFBhdGgiLCJpdGVtIiwiY2xvbmVFbGVtZW50IiwicmVuZGVyIiwiX3RoaXMkcHJvcHM2IiwiaGlkZSIsImxlZnQiLCJ0b3AiLCJpZCIsImxheWVyQ2xhc3MiLCJuZWVkQ2xpcFgiLCJhbGxvd0RhdGFPdmVyZmxvdyIsIm5lZWRDbGlwWSIsInJlbmRlckNhbGxCeVBhcmVudCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIm5leHRQcm9wcyIsInByZXZTdGF0ZSIsInByZXZBbmltYXRpb25JZCIsImN1ckRhdGEiLCJ4QXhpc0lkIiwieUF4aXNJZCIsImxlZ2VuZFR5cGUiLCJtaW5Qb2ludFNpemUiLCJpc1NzciIsIl9yZWYyIiwiYmFyUG9zaXRpb24iLCJiYW5kU2l6ZSIsInhBeGlzVGlja3MiLCJ5QXhpc1RpY2tzIiwic3RhY2tlZERhdGEiLCJkYXRhU3RhcnRJbmRleCIsImRpc3BsYXllZERhdGEiLCJwb3MiLCJpdGVtRGVmYXVsdFByb3BzIiwidHlwZSIsImRlZmF1bHRQcm9wcyIsIml0ZW1Qcm9wcyIsInVuZGVmaW5lZCIsIm1pblBvaW50U2l6ZVByb3AiLCJudW1lcmljQXhpcyIsInN0YWNrZWREb21haW4iLCJzY2FsZSIsImRvbWFpbiIsImJhc2VWYWx1ZSIsImNlbGxzIiwicmVjdHMiLCJfcmVmNCIsIl9yZWYzIiwiYmFzZVZhbHVlU2NhbGUiLCJjdXJyZW50VmFsdWVTY2FsZSIsImF4aXMiLCJ0aWNrcyIsInNpemUiLCJjb21wdXRlZEhlaWdodCIsImlzTmFOIiwiTWF0aCIsImFicyIsImRlbHRhIiwiX3JlZjUiLCJfYmFzZVZhbHVlU2NhbGUiLCJfY3VycmVudFZhbHVlU2NhbGUiLCJfZGVsdGEiLCJwYXlsb2FkIiwidG9vbHRpcFBheWxvYWQiLCJ0b29sdGlwUG9zaXRpb24iXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/Bar.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/Brush.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/Brush.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Brush: () => (/* binding */ Brush)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! victory-vendor/d3-scale */ \"(ssr)/./node_modules/victory-vendor/es/d3-scale.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/range */ \"(ssr)/./node_modules/lodash/range.js\");\n/* harmony import */ var lodash_range__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_range__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_Text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../component/Text */ \"(ssr)/./node_modules/recharts/es6/component/Text.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_CssPrefixUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/CssPrefixUtils */ \"(ssr)/./node_modules/recharts/es6/util/CssPrefixUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Brush\n */ \n\n\n\n\n\n\n\n\n\n\nvar createScale = function createScale(_ref) {\n var data = _ref.data, startIndex = _ref.startIndex, endIndex = _ref.endIndex, x = _ref.x, width = _ref.width, travellerWidth = _ref.travellerWidth;\n if (!data || !data.length) {\n return {};\n }\n var len = data.length;\n var scale = (0,victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_2__.scalePoint)().domain(lodash_range__WEBPACK_IMPORTED_MODULE_4___default()(0, len)).range([\n x,\n x + width - travellerWidth\n ]);\n var scaleValues = scale.domain().map(function(entry) {\n return scale(entry);\n });\n return {\n isTextActive: false,\n isSlideMoving: false,\n isTravellerMoving: false,\n isTravellerFocused: false,\n startX: scale(startIndex),\n endX: scale(endIndex),\n scale: scale,\n scaleValues: scaleValues\n };\n};\nvar isTouch = function isTouch(e) {\n return e.changedTouches && !!e.changedTouches.length;\n};\nvar Brush = /*#__PURE__*/ function(_PureComponent) {\n function Brush(props) {\n var _this;\n _classCallCheck(this, Brush);\n _this = _callSuper(this, Brush, [\n props\n ]);\n _defineProperty(_this, \"handleDrag\", function(e) {\n if (_this.leaveTimer) {\n clearTimeout(_this.leaveTimer);\n _this.leaveTimer = null;\n }\n if (_this.state.isTravellerMoving) {\n _this.handleTravellerMove(e);\n } else if (_this.state.isSlideMoving) {\n _this.handleSlideDrag(e);\n }\n });\n _defineProperty(_this, \"handleTouchMove\", function(e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleDrag(e.changedTouches[0]);\n }\n });\n _defineProperty(_this, \"handleDragEnd\", function() {\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: false\n }, function() {\n var _this$props = _this.props, endIndex = _this$props.endIndex, onDragEnd = _this$props.onDragEnd, startIndex = _this$props.startIndex;\n onDragEnd === null || onDragEnd === void 0 || onDragEnd({\n endIndex: endIndex,\n startIndex: startIndex\n });\n });\n _this.detachDragEndListener();\n });\n _defineProperty(_this, \"handleLeaveWrapper\", function() {\n if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n }\n });\n _defineProperty(_this, \"handleEnterSlideOrTraveller\", function() {\n _this.setState({\n isTextActive: true\n });\n });\n _defineProperty(_this, \"handleLeaveSlideOrTraveller\", function() {\n _this.setState({\n isTextActive: false\n });\n });\n _defineProperty(_this, \"handleSlideDragStart\", function(e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX\n });\n _this.attachDragEndListener();\n });\n _this.travellerDragStartHandlers = {\n startX: _this.handleTravellerDragStart.bind(_this, 'startX'),\n endX: _this.handleTravellerDragStart.bind(_this, 'endX')\n };\n _this.state = {};\n return _this;\n }\n _inherits(Brush, _PureComponent);\n return _createClass(Brush, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n this.detachDragEndListener();\n }\n },\n {\n key: \"getIndex\",\n value: function getIndex(_ref2) {\n var startX = _ref2.startX, endX = _ref2.endX;\n var scaleValues = this.state.scaleValues;\n var _this$props2 = this.props, gap = _this$props2.gap, data = _this$props2.data;\n var lastIndex = data.length - 1;\n var min = Math.min(startX, endX);\n var max = Math.max(startX, endX);\n var minIndex = Brush.getIndexInRange(scaleValues, min);\n var maxIndex = Brush.getIndexInRange(scaleValues, max);\n return {\n startIndex: minIndex - minIndex % gap,\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n };\n }\n },\n {\n key: \"getTextOfTick\",\n value: function getTextOfTick(index) {\n var _this$props3 = this.props, data = _this$props3.data, tickFormatter = _this$props3.tickFormatter, dataKey = _this$props3.dataKey;\n var text = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_5__.getValueByDataKey)(data[index], dataKey, index);\n return lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(tickFormatter) ? tickFormatter(text, index) : text;\n }\n },\n {\n key: \"attachDragEndListener\",\n value: function attachDragEndListener() {\n window.addEventListener('mouseup', this.handleDragEnd, true);\n window.addEventListener('touchend', this.handleDragEnd, true);\n window.addEventListener('mousemove', this.handleDrag, true);\n }\n },\n {\n key: \"detachDragEndListener\",\n value: function detachDragEndListener() {\n window.removeEventListener('mouseup', this.handleDragEnd, true);\n window.removeEventListener('touchend', this.handleDragEnd, true);\n window.removeEventListener('mousemove', this.handleDrag, true);\n }\n },\n {\n key: \"handleSlideDrag\",\n value: function handleSlideDrag(e) {\n var _this$state = this.state, slideMoveStartX = _this$state.slideMoveStartX, startX = _this$state.startX, endX = _this$state.endX;\n var _this$props4 = this.props, x = _this$props4.x, width = _this$props4.width, travellerWidth = _this$props4.travellerWidth, startIndex = _this$props4.startIndex, endIndex = _this$props4.endIndex, onChange = _this$props4.onChange;\n var delta = e.pageX - slideMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n } else if (delta < 0) {\n delta = Math.max(delta, x - startX, x - endX);\n }\n var newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta\n });\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX\n });\n }\n },\n {\n key: \"handleTravellerDragStart\",\n value: function handleTravellerDragStart(id, e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX\n });\n this.attachDragEndListener();\n }\n },\n {\n key: \"handleTravellerMove\",\n value: function handleTravellerMove(e) {\n var _this$state2 = this.state, brushMoveStartX = _this$state2.brushMoveStartX, movingTravellerId = _this$state2.movingTravellerId, endX = _this$state2.endX, startX = _this$state2.startX;\n var prevValue = this.state[movingTravellerId];\n var _this$props5 = this.props, x = _this$props5.x, width = _this$props5.width, travellerWidth = _this$props5.travellerWidth, onChange = _this$props5.onChange, gap = _this$props5.gap, data = _this$props5.data;\n var params = {\n startX: this.state.startX,\n endX: this.state.endX\n };\n var delta = e.pageX - brushMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - prevValue);\n } else if (delta < 0) {\n delta = Math.max(delta, x - prevValue);\n }\n params[movingTravellerId] = prevValue + delta;\n var newIndex = this.getIndex(params);\n var startIndex = newIndex.startIndex, endIndex = newIndex.endIndex;\n var isFullGap = function isFullGap() {\n var lastIndex = data.length - 1;\n if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n return true;\n }\n return false;\n };\n this.setState(_defineProperty(_defineProperty({}, movingTravellerId, prevValue + delta), \"brushMoveStartX\", e.pageX), function() {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n });\n }\n },\n {\n key: \"handleTravellerMoveKeyboard\",\n value: function handleTravellerMoveKeyboard(direction, id) {\n var _this2 = this;\n // scaleValues are a list of coordinates. For example: [65, 250, 435, 620, 805, 990].\n var _this$state3 = this.state, scaleValues = _this$state3.scaleValues, startX = _this$state3.startX, endX = _this$state3.endX;\n // currentScaleValue refers to which coordinate the current traveller should be placed at.\n var currentScaleValue = this.state[id];\n var currentIndex = scaleValues.indexOf(currentScaleValue);\n if (currentIndex === -1) {\n return;\n }\n var newIndex = currentIndex + direction;\n if (newIndex === -1 || newIndex >= scaleValues.length) {\n return;\n }\n var newScaleValue = scaleValues[newIndex];\n // Prevent travellers from being on top of each other or overlapping\n if (id === 'startX' && newScaleValue >= endX || id === 'endX' && newScaleValue <= startX) {\n return;\n }\n this.setState(_defineProperty({}, id, newScaleValue), function() {\n _this2.props.onChange(_this2.getIndex({\n startX: _this2.state.startX,\n endX: _this2.state.endX\n }));\n });\n }\n },\n {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this$props6 = this.props, x = _this$props6.x, y = _this$props6.y, width = _this$props6.width, height = _this$props6.height, fill = _this$props6.fill, stroke = _this$props6.stroke;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n stroke: stroke,\n fill: fill,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n },\n {\n key: \"renderPanorama\",\n value: function renderPanorama() {\n var _this$props7 = this.props, x = _this$props7.x, y = _this$props7.y, width = _this$props7.width, height = _this$props7.height, data = _this$props7.data, children = _this$props7.children, padding = _this$props7.padding;\n var chartElement = react__WEBPACK_IMPORTED_MODULE_0__.Children.only(children);\n if (!chartElement) {\n return null;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(chartElement, {\n x: x,\n y: y,\n width: width,\n height: height,\n margin: padding,\n compact: true,\n data: data\n });\n }\n },\n {\n key: \"renderTravellerLayer\",\n value: function renderTravellerLayer(travellerX, id) {\n var _data$startIndex, _data$endIndex, _this3 = this;\n var _this$props8 = this.props, y = _this$props8.y, travellerWidth = _this$props8.travellerWidth, height = _this$props8.height, traveller = _this$props8.traveller, ariaLabel = _this$props8.ariaLabel, data = _this$props8.data, startIndex = _this$props8.startIndex, endIndex = _this$props8.endIndex;\n var x = Math.max(travellerX, this.props.x);\n var travellerProps = _objectSpread(_objectSpread({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(this.props, false)), {}, {\n x: x,\n y: y,\n width: travellerWidth,\n height: height\n });\n var ariaLabelBrush = ariaLabel || \"Min value: \".concat((_data$startIndex = data[startIndex]) === null || _data$startIndex === void 0 ? void 0 : _data$startIndex.name, \", Max value: \").concat((_data$endIndex = data[endIndex]) === null || _data$endIndex === void 0 ? void 0 : _data$endIndex.name);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n tabIndex: 0,\n role: \"slider\",\n \"aria-label\": ariaLabelBrush,\n \"aria-valuenow\": travellerX,\n className: \"recharts-brush-traveller\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.travellerDragStartHandlers[id],\n onTouchStart: this.travellerDragStartHandlers[id],\n onKeyDown: function onKeyDown(e) {\n if (![\n 'ArrowLeft',\n 'ArrowRight'\n ].includes(e.key)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n _this3.handleTravellerMoveKeyboard(e.key === 'ArrowRight' ? 1 : -1, id);\n },\n onFocus: function onFocus() {\n _this3.setState({\n isTravellerFocused: true\n });\n },\n onBlur: function onBlur() {\n _this3.setState({\n isTravellerFocused: false\n });\n },\n style: {\n cursor: 'col-resize'\n }\n }, Brush.renderTraveller(traveller, travellerProps));\n }\n },\n {\n key: \"renderSlide\",\n value: function renderSlide(startX, endX) {\n var _this$props9 = this.props, y = _this$props9.y, height = _this$props9.height, stroke = _this$props9.stroke, travellerWidth = _this$props9.travellerWidth;\n var x = Math.min(startX, endX) + travellerWidth;\n var width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n className: \"recharts-brush-slide\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.handleSlideDragStart,\n onTouchStart: this.handleSlideDragStart,\n style: {\n cursor: 'move'\n },\n stroke: \"none\",\n fill: stroke,\n fillOpacity: 0.2,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n },\n {\n key: \"renderText\",\n value: function renderText() {\n var _this$props10 = this.props, startIndex = _this$props10.startIndex, endIndex = _this$props10.endIndex, y = _this$props10.y, height = _this$props10.height, travellerWidth = _this$props10.travellerWidth, stroke = _this$props10.stroke;\n var _this$state4 = this.state, startX = _this$state4.startX, endX = _this$state4.endX;\n var offset = 5;\n var attrs = {\n pointerEvents: 'none',\n fill: stroke\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n className: \"recharts-brush-texts\"\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Text__WEBPACK_IMPORTED_MODULE_8__.Text, _extends({\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: Math.min(startX, endX) - offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(startIndex)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Text__WEBPACK_IMPORTED_MODULE_8__.Text, _extends({\n textAnchor: \"start\",\n verticalAnchor: \"middle\",\n x: Math.max(startX, endX) + travellerWidth + offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(endIndex)));\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this$props11 = this.props, data = _this$props11.data, className = _this$props11.className, children = _this$props11.children, x = _this$props11.x, y = _this$props11.y, width = _this$props11.width, height = _this$props11.height, alwaysShowText = _this$props11.alwaysShowText;\n var _this$state5 = this.state, startX = _this$state5.startX, endX = _this$state5.endX, isTextActive = _this$state5.isTextActive, isSlideMoving = _this$state5.isSlideMoving, isTravellerMoving = _this$state5.isTravellerMoving, isTravellerFocused = _this$state5.isTravellerFocused;\n if (!data || !data.length || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_9__.isNumber)(x) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_9__.isNumber)(y) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_9__.isNumber)(width) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_9__.isNumber)(height) || width <= 0 || height <= 0) {\n return null;\n }\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('recharts-brush', className);\n var isPanoramic = react__WEBPACK_IMPORTED_MODULE_0___default().Children.count(children) === 1;\n var style = (0,_util_CssPrefixUtils__WEBPACK_IMPORTED_MODULE_10__.generatePrefixStyle)('userSelect', 'none');\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n className: layerClass,\n onMouseLeave: this.handleLeaveWrapper,\n onTouchMove: this.handleTouchMove,\n style: style\n }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTravellerLayer(startX, 'startX'), this.renderTravellerLayer(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || isTravellerFocused || alwaysShowText) && this.renderText());\n }\n }\n ], [\n {\n key: \"renderDefaultTraveller\",\n value: function renderDefaultTraveller(props) {\n var x = props.x, y = props.y, width = props.width, height = props.height, stroke = props.stroke;\n var lineY = Math.floor(y + height / 2) - 1;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n fill: stroke,\n stroke: \"none\"\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", {\n x1: x + 1,\n y1: lineY,\n x2: x + width - 1,\n y2: lineY,\n fill: \"none\",\n stroke: \"#fff\"\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", {\n x1: x + 1,\n y1: lineY + 2,\n x2: x + width - 1,\n y2: lineY + 2,\n fill: \"none\",\n stroke: \"#fff\"\n }));\n }\n },\n {\n key: \"renderTraveller\",\n value: function renderTraveller(option, props) {\n var rectangle;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n rectangle = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(option)) {\n rectangle = option(props);\n } else {\n rectangle = Brush.renderDefaultTraveller(props);\n }\n return rectangle;\n }\n },\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var data = nextProps.data, width = nextProps.width, x = nextProps.x, travellerWidth = nextProps.travellerWidth, updateId = nextProps.updateId, startIndex = nextProps.startIndex, endIndex = nextProps.endIndex;\n if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n return _objectSpread({\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width\n }, data && data.length ? createScale({\n data: data,\n width: width,\n x: x,\n travellerWidth: travellerWidth,\n startIndex: startIndex,\n endIndex: endIndex\n }) : {\n scale: null,\n scaleValues: null\n });\n }\n if (prevState.scale && (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)) {\n prevState.scale.range([\n x,\n x + width - travellerWidth\n ]);\n var scaleValues = prevState.scale.domain().map(function(entry) {\n return prevState.scale(entry);\n });\n return {\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width,\n startX: prevState.scale(nextProps.startIndex),\n endX: prevState.scale(nextProps.endIndex),\n scaleValues: scaleValues\n };\n }\n return null;\n }\n },\n {\n key: \"getIndexInRange\",\n value: function getIndexInRange(valueRange, x) {\n var len = valueRange.length;\n var start = 0;\n var end = len - 1;\n while(end - start > 1){\n var middle = Math.floor((start + end) / 2);\n if (valueRange[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n return x >= valueRange[end] ? end : start;\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(Brush, \"displayName\", 'Brush');\n_defineProperty(Brush, \"defaultProps\", {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: '#fff',\n stroke: '#666',\n padding: {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n },\n leaveTimeOut: 1000,\n alwaysShowText: false\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9CcnVzaC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlmLE9BQU9nQixJQUFJLENBQUNIO0lBQUksSUFBSWIsT0FBT2lCLHFCQUFxQixFQUFFO1FBQUUsSUFBSXZCLElBQUlNLE9BQU9pQixxQkFBcUIsQ0FBQ0o7UUFBSUMsS0FBTXBCLENBQUFBLElBQUlBLEVBQUV3QixNQUFNLENBQUMsU0FBVUosQ0FBQztZQUFJLE9BQU9kLE9BQU9tQix3QkFBd0IsQ0FBQ04sR0FBR0MsR0FBR00sVUFBVTtRQUFFLEVBQUMsR0FBSUwsRUFBRU0sSUFBSSxDQUFDVixLQUFLLENBQUNJLEdBQUdyQjtJQUFJO0lBQUUsT0FBT3FCO0FBQUc7QUFDOVAsU0FBU08sY0FBY1QsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVCxVQUFVQyxNQUFNLEVBQUVRLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFWLFNBQVMsQ0FBQ1MsRUFBRSxHQUFHVCxTQUFTLENBQUNTLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUVosT0FBT2UsSUFBSSxDQUFDLEdBQUdRLE9BQU8sQ0FBQyxTQUFVVCxDQUFDO1lBQUlVLGdCQUFnQlgsR0FBR0MsR0FBR0MsQ0FBQyxDQUFDRCxFQUFFO1FBQUcsS0FBS2QsT0FBT3lCLHlCQUF5QixHQUFHekIsT0FBTzBCLGdCQUFnQixDQUFDYixHQUFHYixPQUFPeUIseUJBQXlCLENBQUNWLE1BQU1ILFFBQVFaLE9BQU9lLElBQUlRLE9BQU8sQ0FBQyxTQUFVVCxDQUFDO1lBQUlkLE9BQU8yQixjQUFjLENBQUNkLEdBQUdDLEdBQUdkLE9BQU9tQix3QkFBd0IsQ0FBQ0osR0FBR0Q7UUFBSztJQUFJO0lBQUUsT0FBT0Q7QUFBRztBQUN0YixTQUFTZSxnQkFBZ0JDLFFBQVEsRUFBRUMsV0FBVztJQUFJLElBQUksQ0FBRUQsQ0FBQUEsb0JBQW9CQyxXQUFVLEdBQUk7UUFBRSxNQUFNLElBQUlDLFVBQVU7SUFBc0M7QUFBRTtBQUN4SixTQUFTQyxrQkFBa0I3QixNQUFNLEVBQUU4QixLQUFLO0lBQUksSUFBSyxJQUFJN0IsSUFBSSxHQUFHQSxJQUFJNkIsTUFBTTNCLE1BQU0sRUFBRUYsSUFBSztRQUFFLElBQUk4QixhQUFhRCxLQUFLLENBQUM3QixFQUFFO1FBQUU4QixXQUFXZCxVQUFVLEdBQUdjLFdBQVdkLFVBQVUsSUFBSTtRQUFPYyxXQUFXQyxZQUFZLEdBQUc7UUFBTSxJQUFJLFdBQVdELFlBQVlBLFdBQVdFLFFBQVEsR0FBRztRQUFNcEMsT0FBTzJCLGNBQWMsQ0FBQ3hCLFFBQVFrQyxlQUFlSCxXQUFXMUIsR0FBRyxHQUFHMEI7SUFBYTtBQUFFO0FBQzVVLFNBQVNJLGFBQWFSLFdBQVcsRUFBRVMsVUFBVSxFQUFFQyxXQUFXO0lBQUksSUFBSUQsWUFBWVAsa0JBQWtCRixZQUFZaEMsU0FBUyxFQUFFeUM7SUFBYSxJQUFJQyxhQUFhUixrQkFBa0JGLGFBQWFVO0lBQWN4QyxPQUFPMkIsY0FBYyxDQUFDRyxhQUFhLGFBQWE7UUFBRU0sVUFBVTtJQUFNO0lBQUksT0FBT047QUFBYTtBQUM1UixTQUFTVyxXQUFXMUIsQ0FBQyxFQUFFckIsQ0FBQyxFQUFFbUIsQ0FBQztJQUFJLE9BQU9uQixJQUFJZ0QsZ0JBQWdCaEQsSUFBSWlELDJCQUEyQjVCLEdBQUc2Qiw4QkFBOEJDLFFBQVFDLFNBQVMsQ0FBQ3BELEdBQUdtQixLQUFLLEVBQUUsRUFBRTZCLGdCQUFnQjNCLEdBQUdsQixXQUFXLElBQUlILEVBQUVpQixLQUFLLENBQUNJLEdBQUdGO0FBQUs7QUFDMU0sU0FBUzhCLDJCQUEyQkksSUFBSSxFQUFFckMsSUFBSTtJQUFJLElBQUlBLFFBQVNqQixDQUFBQSxRQUFRaUIsVUFBVSxZQUFZLE9BQU9BLFNBQVMsVUFBUyxHQUFJO1FBQUUsT0FBT0E7SUFBTSxPQUFPLElBQUlBLFNBQVMsS0FBSyxHQUFHO1FBQUUsTUFBTSxJQUFJcUIsVUFBVTtJQUE2RDtJQUFFLE9BQU9pQix1QkFBdUJEO0FBQU87QUFDL1IsU0FBU0MsdUJBQXVCRCxJQUFJO0lBQUksSUFBSUEsU0FBUyxLQUFLLEdBQUc7UUFBRSxNQUFNLElBQUlFLGVBQWU7SUFBOEQ7SUFBRSxPQUFPRjtBQUFNO0FBQ3JLLFNBQVNIO0lBQThCLElBQUk7UUFBRSxJQUFJN0IsSUFBSSxDQUFDbUMsUUFBUXBELFNBQVMsQ0FBQ3FELE9BQU8sQ0FBQ3pDLElBQUksQ0FBQ21DLFFBQVFDLFNBQVMsQ0FBQ0ksU0FBUyxFQUFFLEVBQUUsWUFBYTtJQUFLLEVBQUUsT0FBT25DLEdBQUcsQ0FBQztJQUFFLE9BQU8sQ0FBQzZCLDRCQUE0QixTQUFTQTtRQUE4QixPQUFPLENBQUMsQ0FBQzdCO0lBQUc7QUFBTTtBQUNsUCxTQUFTMkIsZ0JBQWdCaEQsQ0FBQztJQUFJZ0Qsa0JBQWtCMUMsT0FBT29ELGNBQWMsR0FBR3BELE9BQU9xRCxjQUFjLENBQUNuRCxJQUFJLEtBQUssU0FBU3dDLGdCQUFnQmhELENBQUM7UUFBSSxPQUFPQSxFQUFFNEQsU0FBUyxJQUFJdEQsT0FBT3FELGNBQWMsQ0FBQzNEO0lBQUk7SUFBRyxPQUFPZ0QsZ0JBQWdCaEQ7QUFBSTtBQUNuTixTQUFTNkQsVUFBVUMsUUFBUSxFQUFFQyxVQUFVO0lBQUksSUFBSSxPQUFPQSxlQUFlLGNBQWNBLGVBQWUsTUFBTTtRQUFFLE1BQU0sSUFBSTFCLFVBQVU7SUFBdUQ7SUFBRXlCLFNBQVMxRCxTQUFTLEdBQUdFLE9BQU8wRCxNQUFNLENBQUNELGNBQWNBLFdBQVczRCxTQUFTLEVBQUU7UUFBRUQsYUFBYTtZQUFFOEQsT0FBT0g7WUFBVXBCLFVBQVU7WUFBTUQsY0FBYztRQUFLO0lBQUU7SUFBSW5DLE9BQU8yQixjQUFjLENBQUM2QixVQUFVLGFBQWE7UUFBRXBCLFVBQVU7SUFBTTtJQUFJLElBQUlxQixZQUFZRyxnQkFBZ0JKLFVBQVVDO0FBQWE7QUFDbmMsU0FBU0csZ0JBQWdCbEUsQ0FBQyxFQUFFbUUsQ0FBQztJQUFJRCxrQkFBa0I1RCxPQUFPb0QsY0FBYyxHQUFHcEQsT0FBT29ELGNBQWMsQ0FBQ2xELElBQUksS0FBSyxTQUFTMEQsZ0JBQWdCbEUsQ0FBQyxFQUFFbUUsQ0FBQztRQUFJbkUsRUFBRTRELFNBQVMsR0FBR087UUFBRyxPQUFPbkU7SUFBRztJQUFHLE9BQU9rRSxnQkFBZ0JsRSxHQUFHbUU7QUFBSTtBQUN2TSxTQUFTckMsZ0JBQWdCc0MsR0FBRyxFQUFFdEQsR0FBRyxFQUFFbUQsS0FBSztJQUFJbkQsTUFBTTZCLGVBQWU3QjtJQUFNLElBQUlBLE9BQU9zRCxLQUFLO1FBQUU5RCxPQUFPMkIsY0FBYyxDQUFDbUMsS0FBS3RELEtBQUs7WUFBRW1ELE9BQU9BO1lBQU92QyxZQUFZO1lBQU1lLGNBQWM7WUFBTUMsVUFBVTtRQUFLO0lBQUksT0FBTztRQUFFMEIsR0FBRyxDQUFDdEQsSUFBSSxHQUFHbUQ7SUFBTztJQUFFLE9BQU9HO0FBQUs7QUFDM08sU0FBU3pCLGVBQWV0QixDQUFDO0lBQUksSUFBSVgsSUFBSTJELGFBQWFoRCxHQUFHO0lBQVcsT0FBTyxZQUFZdEIsUUFBUVcsS0FBS0EsSUFBSUEsSUFBSTtBQUFJO0FBQzVHLFNBQVMyRCxhQUFhaEQsQ0FBQyxFQUFFRCxDQUFDO0lBQUksSUFBSSxZQUFZckIsUUFBUXNCLE1BQU0sQ0FBQ0EsR0FBRyxPQUFPQTtJQUFHLElBQUlGLElBQUlFLENBQUMsQ0FBQ3BCLE9BQU9xRSxXQUFXLENBQUM7SUFBRSxJQUFJLEtBQUssTUFBTW5ELEdBQUc7UUFBRSxJQUFJVCxJQUFJUyxFQUFFSCxJQUFJLENBQUNLLEdBQUdELEtBQUs7UUFBWSxJQUFJLFlBQVlyQixRQUFRVyxJQUFJLE9BQU9BO1FBQUcsTUFBTSxJQUFJMkIsVUFBVTtJQUFpRDtJQUFFLE9BQU8sQ0FBQyxhQUFhakIsSUFBSW1ELFNBQVNDLE1BQUssRUFBR25EO0FBQUk7QUFDM1Q7O0NBRUMsR0FDc0Q7QUFDL0I7QUFDNkI7QUFDVjtBQUNWO0FBQ1U7QUFDRjtBQUNjO0FBQ1Y7QUFDZ0I7QUFDWjtBQUNqRCxJQUFJaUUsY0FBYyxTQUFTQSxZQUFZQyxJQUFJO0lBQ3pDLElBQUlDLE9BQU9ELEtBQUtDLElBQUksRUFDbEJDLGFBQWFGLEtBQUtFLFVBQVUsRUFDNUJDLFdBQVdILEtBQUtHLFFBQVEsRUFDeEJDLElBQUlKLEtBQUtJLENBQUMsRUFDVkMsUUFBUUwsS0FBS0ssS0FBSyxFQUNsQkMsaUJBQWlCTixLQUFLTSxjQUFjO0lBQ3RDLElBQUksQ0FBQ0wsUUFBUSxDQUFDQSxLQUFLNUUsTUFBTSxFQUFFO1FBQ3pCLE9BQU8sQ0FBQztJQUNWO0lBQ0EsSUFBSWtGLE1BQU1OLEtBQUs1RSxNQUFNO0lBQ3JCLElBQUltRixRQUFRbEIsbUVBQVVBLEdBQUdtQixNQUFNLENBQUNqQixtREFBS0EsQ0FBQyxHQUFHZSxNQUFNZixLQUFLLENBQUM7UUFBQ1k7UUFBR0EsSUFBSUMsUUFBUUM7S0FBZTtJQUNwRixJQUFJSSxjQUFjRixNQUFNQyxNQUFNLEdBQUdFLEdBQUcsQ0FBQyxTQUFVQyxLQUFLO1FBQ2xELE9BQU9KLE1BQU1JO0lBQ2Y7SUFDQSxPQUFPO1FBQ0xDLGNBQWM7UUFDZEMsZUFBZTtRQUNmQyxtQkFBbUI7UUFDbkJDLG9CQUFvQjtRQUNwQkMsUUFBUVQsTUFBTU47UUFDZGdCLE1BQU1WLE1BQU1MO1FBQ1pLLE9BQU9BO1FBQ1BFLGFBQWFBO0lBQ2Y7QUFDRjtBQUNBLElBQUlTLFVBQVUsU0FBU0EsUUFBUXZGLENBQUM7SUFDOUIsT0FBT0EsRUFBRXdGLGNBQWMsSUFBSSxDQUFDLENBQUN4RixFQUFFd0YsY0FBYyxDQUFDL0YsTUFBTTtBQUN0RDtBQUNPLElBQUlnRyxRQUFRLFdBQVcsR0FBRSxTQUFVQyxjQUFjO0lBQ3RELFNBQVNELE1BQU1yRSxLQUFLO1FBQ2xCLElBQUl1RTtRQUNKNUUsZ0JBQWdCLElBQUksRUFBRTBFO1FBQ3RCRSxRQUFRL0QsV0FBVyxJQUFJLEVBQUU2RCxPQUFPO1lBQUNyRTtTQUFNO1FBQ3ZDVCxnQkFBZ0JnRixPQUFPLGNBQWMsU0FBVTNGLENBQUM7WUFDOUMsSUFBSTJGLE1BQU1DLFVBQVUsRUFBRTtnQkFDcEJDLGFBQWFGLE1BQU1DLFVBQVU7Z0JBQzdCRCxNQUFNQyxVQUFVLEdBQUc7WUFDckI7WUFDQSxJQUFJRCxNQUFNRyxLQUFLLENBQUNYLGlCQUFpQixFQUFFO2dCQUNqQ1EsTUFBTUksbUJBQW1CLENBQUMvRjtZQUM1QixPQUFPLElBQUkyRixNQUFNRyxLQUFLLENBQUNaLGFBQWEsRUFBRTtnQkFDcENTLE1BQU1LLGVBQWUsQ0FBQ2hHO1lBQ3hCO1FBQ0Y7UUFDQVcsZ0JBQWdCZ0YsT0FBTyxtQkFBbUIsU0FBVTNGLENBQUM7WUFDbkQsSUFBSUEsRUFBRXdGLGNBQWMsSUFBSSxRQUFReEYsRUFBRXdGLGNBQWMsQ0FBQy9GLE1BQU0sR0FBRyxHQUFHO2dCQUMzRGtHLE1BQU1NLFVBQVUsQ0FBQ2pHLEVBQUV3RixjQUFjLENBQUMsRUFBRTtZQUN0QztRQUNGO1FBQ0E3RSxnQkFBZ0JnRixPQUFPLGlCQUFpQjtZQUN0Q0EsTUFBTU8sUUFBUSxDQUFDO2dCQUNiZixtQkFBbUI7Z0JBQ25CRCxlQUFlO1lBQ2pCLEdBQUc7Z0JBQ0QsSUFBSWlCLGNBQWNSLE1BQU12RSxLQUFLLEVBQzNCbUQsV0FBVzRCLFlBQVk1QixRQUFRLEVBQy9CNkIsWUFBWUQsWUFBWUMsU0FBUyxFQUNqQzlCLGFBQWE2QixZQUFZN0IsVUFBVTtnQkFDckM4QixjQUFjLFFBQVFBLGNBQWMsS0FBSyxLQUFLQSxVQUFVO29CQUN0RDdCLFVBQVVBO29CQUNWRCxZQUFZQTtnQkFDZDtZQUNGO1lBQ0FxQixNQUFNVSxxQkFBcUI7UUFDN0I7UUFDQTFGLGdCQUFnQmdGLE9BQU8sc0JBQXNCO1lBQzNDLElBQUlBLE1BQU1HLEtBQUssQ0FBQ1gsaUJBQWlCLElBQUlRLE1BQU1HLEtBQUssQ0FBQ1osYUFBYSxFQUFFO2dCQUM5RFMsTUFBTUMsVUFBVSxHQUFHVSxPQUFPQyxVQUFVLENBQUNaLE1BQU1hLGFBQWEsRUFBRWIsTUFBTXZFLEtBQUssQ0FBQ3FGLFlBQVk7WUFDcEY7UUFDRjtRQUNBOUYsZ0JBQWdCZ0YsT0FBTywrQkFBK0I7WUFDcERBLE1BQU1PLFFBQVEsQ0FBQztnQkFDYmpCLGNBQWM7WUFDaEI7UUFDRjtRQUNBdEUsZ0JBQWdCZ0YsT0FBTywrQkFBK0I7WUFDcERBLE1BQU1PLFFBQVEsQ0FBQztnQkFDYmpCLGNBQWM7WUFDaEI7UUFDRjtRQUNBdEUsZ0JBQWdCZ0YsT0FBTyx3QkFBd0IsU0FBVTNGLENBQUM7WUFDeEQsSUFBSTBHLFFBQVFuQixRQUFRdkYsS0FBS0EsRUFBRXdGLGNBQWMsQ0FBQyxFQUFFLEdBQUd4RjtZQUMvQzJGLE1BQU1PLFFBQVEsQ0FBQztnQkFDYmYsbUJBQW1CO2dCQUNuQkQsZUFBZTtnQkFDZnlCLGlCQUFpQkQsTUFBTUUsS0FBSztZQUM5QjtZQUNBakIsTUFBTWtCLHFCQUFxQjtRQUM3QjtRQUNBbEIsTUFBTW1CLDBCQUEwQixHQUFHO1lBQ2pDekIsUUFBUU0sTUFBTW9CLHdCQUF3QixDQUFDMUgsSUFBSSxDQUFDc0csT0FBTztZQUNuREwsTUFBTUssTUFBTW9CLHdCQUF3QixDQUFDMUgsSUFBSSxDQUFDc0csT0FBTztRQUNuRDtRQUNBQSxNQUFNRyxLQUFLLEdBQUcsQ0FBQztRQUNmLE9BQU9IO0lBQ1Q7SUFDQWpELFVBQVUrQyxPQUFPQztJQUNqQixPQUFPakUsYUFBYWdFLE9BQU87UUFBQztZQUMxQjlGLEtBQUs7WUFDTG1ELE9BQU8sU0FBU2tFO2dCQUNkLElBQUksSUFBSSxDQUFDcEIsVUFBVSxFQUFFO29CQUNuQkMsYUFBYSxJQUFJLENBQUNELFVBQVU7b0JBQzVCLElBQUksQ0FBQ0EsVUFBVSxHQUFHO2dCQUNwQjtnQkFDQSxJQUFJLENBQUNTLHFCQUFxQjtZQUM1QjtRQUNGO1FBQUc7WUFDRDFHLEtBQUs7WUFDTG1ELE9BQU8sU0FBU21FLFNBQVNDLEtBQUs7Z0JBQzVCLElBQUk3QixTQUFTNkIsTUFBTTdCLE1BQU0sRUFDdkJDLE9BQU80QixNQUFNNUIsSUFBSTtnQkFDbkIsSUFBSVIsY0FBYyxJQUFJLENBQUNnQixLQUFLLENBQUNoQixXQUFXO2dCQUN4QyxJQUFJcUMsZUFBZSxJQUFJLENBQUMvRixLQUFLLEVBQzNCZ0csTUFBTUQsYUFBYUMsR0FBRyxFQUN0Qi9DLE9BQU84QyxhQUFhOUMsSUFBSTtnQkFDMUIsSUFBSWdELFlBQVloRCxLQUFLNUUsTUFBTSxHQUFHO2dCQUM5QixJQUFJNkgsTUFBTUMsS0FBS0QsR0FBRyxDQUFDakMsUUFBUUM7Z0JBQzNCLElBQUlrQyxNQUFNRCxLQUFLQyxHQUFHLENBQUNuQyxRQUFRQztnQkFDM0IsSUFBSW1DLFdBQVdoQyxNQUFNaUMsZUFBZSxDQUFDNUMsYUFBYXdDO2dCQUNsRCxJQUFJSyxXQUFXbEMsTUFBTWlDLGVBQWUsQ0FBQzVDLGFBQWEwQztnQkFDbEQsT0FBTztvQkFDTGxELFlBQVltRCxXQUFXQSxXQUFXTDtvQkFDbEM3QyxVQUFVb0QsYUFBYU4sWUFBWUEsWUFBWU0sV0FBV0EsV0FBV1A7Z0JBQ3ZFO1lBQ0Y7UUFDRjtRQUFHO1lBQ0R6SCxLQUFLO1lBQ0xtRCxPQUFPLFNBQVM4RSxjQUFjQyxLQUFLO2dCQUNqQyxJQUFJQyxlQUFlLElBQUksQ0FBQzFHLEtBQUssRUFDM0JpRCxPQUFPeUQsYUFBYXpELElBQUksRUFDeEIwRCxnQkFBZ0JELGFBQWFDLGFBQWEsRUFDMUNDLFVBQVVGLGFBQWFFLE9BQU87Z0JBQ2hDLElBQUlDLE9BQU9sRSxtRUFBaUJBLENBQUNNLElBQUksQ0FBQ3dELE1BQU0sRUFBRUcsU0FBU0g7Z0JBQ25ELE9BQU9sRSx3REFBVUEsQ0FBQ29FLGlCQUFpQkEsY0FBY0UsTUFBTUosU0FBU0k7WUFDbEU7UUFDRjtRQUFHO1lBQ0R0SSxLQUFLO1lBQ0xtRCxPQUFPLFNBQVMrRDtnQkFDZFAsT0FBTzRCLGdCQUFnQixDQUFDLFdBQVcsSUFBSSxDQUFDMUIsYUFBYSxFQUFFO2dCQUN2REYsT0FBTzRCLGdCQUFnQixDQUFDLFlBQVksSUFBSSxDQUFDMUIsYUFBYSxFQUFFO2dCQUN4REYsT0FBTzRCLGdCQUFnQixDQUFDLGFBQWEsSUFBSSxDQUFDakMsVUFBVSxFQUFFO1lBQ3hEO1FBQ0Y7UUFBRztZQUNEdEcsS0FBSztZQUNMbUQsT0FBTyxTQUFTdUQ7Z0JBQ2RDLE9BQU82QixtQkFBbUIsQ0FBQyxXQUFXLElBQUksQ0FBQzNCLGFBQWEsRUFBRTtnQkFDMURGLE9BQU82QixtQkFBbUIsQ0FBQyxZQUFZLElBQUksQ0FBQzNCLGFBQWEsRUFBRTtnQkFDM0RGLE9BQU82QixtQkFBbUIsQ0FBQyxhQUFhLElBQUksQ0FBQ2xDLFVBQVUsRUFBRTtZQUMzRDtRQUNGO1FBQUc7WUFDRHRHLEtBQUs7WUFDTG1ELE9BQU8sU0FBU2tELGdCQUFnQmhHLENBQUM7Z0JBQy9CLElBQUlvSSxjQUFjLElBQUksQ0FBQ3RDLEtBQUssRUFDMUJhLGtCQUFrQnlCLFlBQVl6QixlQUFlLEVBQzdDdEIsU0FBUytDLFlBQVkvQyxNQUFNLEVBQzNCQyxPQUFPOEMsWUFBWTlDLElBQUk7Z0JBQ3pCLElBQUkrQyxlQUFlLElBQUksQ0FBQ2pILEtBQUssRUFDM0JvRCxJQUFJNkQsYUFBYTdELENBQUMsRUFDbEJDLFFBQVE0RCxhQUFhNUQsS0FBSyxFQUMxQkMsaUJBQWlCMkQsYUFBYTNELGNBQWMsRUFDNUNKLGFBQWErRCxhQUFhL0QsVUFBVSxFQUNwQ0MsV0FBVzhELGFBQWE5RCxRQUFRLEVBQ2hDK0QsV0FBV0QsYUFBYUMsUUFBUTtnQkFDbEMsSUFBSUMsUUFBUXZJLEVBQUU0RyxLQUFLLEdBQUdEO2dCQUN0QixJQUFJNEIsUUFBUSxHQUFHO29CQUNiQSxRQUFRaEIsS0FBS0QsR0FBRyxDQUFDaUIsT0FBTy9ELElBQUlDLFFBQVFDLGlCQUFpQlksTUFBTWQsSUFBSUMsUUFBUUMsaUJBQWlCVztnQkFDMUYsT0FBTyxJQUFJa0QsUUFBUSxHQUFHO29CQUNwQkEsUUFBUWhCLEtBQUtDLEdBQUcsQ0FBQ2UsT0FBTy9ELElBQUlhLFFBQVFiLElBQUljO2dCQUMxQztnQkFDQSxJQUFJa0QsV0FBVyxJQUFJLENBQUN2QixRQUFRLENBQUM7b0JBQzNCNUIsUUFBUUEsU0FBU2tEO29CQUNqQmpELE1BQU1BLE9BQU9pRDtnQkFDZjtnQkFDQSxJQUFJLENBQUNDLFNBQVNsRSxVQUFVLEtBQUtBLGNBQWNrRSxTQUFTakUsUUFBUSxLQUFLQSxRQUFPLEtBQU0rRCxVQUFVO29CQUN0RkEsU0FBU0U7Z0JBQ1g7Z0JBQ0EsSUFBSSxDQUFDdEMsUUFBUSxDQUFDO29CQUNaYixRQUFRQSxTQUFTa0Q7b0JBQ2pCakQsTUFBTUEsT0FBT2lEO29CQUNiNUIsaUJBQWlCM0csRUFBRTRHLEtBQUs7Z0JBQzFCO1lBQ0Y7UUFDRjtRQUFHO1lBQ0RqSCxLQUFLO1lBQ0xtRCxPQUFPLFNBQVNpRSx5QkFBeUIwQixFQUFFLEVBQUV6SSxDQUFDO2dCQUM1QyxJQUFJMEcsUUFBUW5CLFFBQVF2RixLQUFLQSxFQUFFd0YsY0FBYyxDQUFDLEVBQUUsR0FBR3hGO2dCQUMvQyxJQUFJLENBQUNrRyxRQUFRLENBQUM7b0JBQ1poQixlQUFlO29CQUNmQyxtQkFBbUI7b0JBQ25CdUQsbUJBQW1CRDtvQkFDbkJFLGlCQUFpQmpDLE1BQU1FLEtBQUs7Z0JBQzlCO2dCQUNBLElBQUksQ0FBQ0MscUJBQXFCO1lBQzVCO1FBQ0Y7UUFBRztZQUNEbEgsS0FBSztZQUNMbUQsT0FBTyxTQUFTaUQsb0JBQW9CL0YsQ0FBQztnQkFDbkMsSUFBSTRJLGVBQWUsSUFBSSxDQUFDOUMsS0FBSyxFQUMzQjZDLGtCQUFrQkMsYUFBYUQsZUFBZSxFQUM5Q0Qsb0JBQW9CRSxhQUFhRixpQkFBaUIsRUFDbERwRCxPQUFPc0QsYUFBYXRELElBQUksRUFDeEJELFNBQVN1RCxhQUFhdkQsTUFBTTtnQkFDOUIsSUFBSXdELFlBQVksSUFBSSxDQUFDL0MsS0FBSyxDQUFDNEMsa0JBQWtCO2dCQUM3QyxJQUFJSSxlQUFlLElBQUksQ0FBQzFILEtBQUssRUFDM0JvRCxJQUFJc0UsYUFBYXRFLENBQUMsRUFDbEJDLFFBQVFxRSxhQUFhckUsS0FBSyxFQUMxQkMsaUJBQWlCb0UsYUFBYXBFLGNBQWMsRUFDNUM0RCxXQUFXUSxhQUFhUixRQUFRLEVBQ2hDbEIsTUFBTTBCLGFBQWExQixHQUFHLEVBQ3RCL0MsT0FBT3lFLGFBQWF6RSxJQUFJO2dCQUMxQixJQUFJMEUsU0FBUztvQkFDWDFELFFBQVEsSUFBSSxDQUFDUyxLQUFLLENBQUNULE1BQU07b0JBQ3pCQyxNQUFNLElBQUksQ0FBQ1EsS0FBSyxDQUFDUixJQUFJO2dCQUN2QjtnQkFDQSxJQUFJaUQsUUFBUXZJLEVBQUU0RyxLQUFLLEdBQUcrQjtnQkFDdEIsSUFBSUosUUFBUSxHQUFHO29CQUNiQSxRQUFRaEIsS0FBS0QsR0FBRyxDQUFDaUIsT0FBTy9ELElBQUlDLFFBQVFDLGlCQUFpQm1FO2dCQUN2RCxPQUFPLElBQUlOLFFBQVEsR0FBRztvQkFDcEJBLFFBQVFoQixLQUFLQyxHQUFHLENBQUNlLE9BQU8vRCxJQUFJcUU7Z0JBQzlCO2dCQUNBRSxNQUFNLENBQUNMLGtCQUFrQixHQUFHRyxZQUFZTjtnQkFDeEMsSUFBSUMsV0FBVyxJQUFJLENBQUN2QixRQUFRLENBQUM4QjtnQkFDN0IsSUFBSXpFLGFBQWFrRSxTQUFTbEUsVUFBVSxFQUNsQ0MsV0FBV2lFLFNBQVNqRSxRQUFRO2dCQUM5QixJQUFJeUUsWUFBWSxTQUFTQTtvQkFDdkIsSUFBSTNCLFlBQVloRCxLQUFLNUUsTUFBTSxHQUFHO29CQUM5QixJQUFJaUosc0JBQXNCLFlBQWFwRCxDQUFBQSxPQUFPRCxTQUFTZixhQUFhOEMsUUFBUSxJQUFJN0MsV0FBVzZDLFFBQVEsTUFBTTlCLE9BQU9ELFVBQVVkLGFBQWE4QyxhQUFhcUIsc0JBQXNCLFVBQVdwRCxDQUFBQSxPQUFPRCxTQUFTZCxXQUFXNkMsUUFBUSxJQUFJOUMsYUFBYThDLFFBQVEsTUFBTTlCLE9BQU9ELFVBQVVkLGFBQWE4QyxXQUFXO3dCQUM5UixPQUFPO29CQUNUO29CQUNBLE9BQU87Z0JBQ1Q7Z0JBQ0EsSUFBSSxDQUFDbkIsUUFBUSxDQUFDdkYsZ0JBQWdCQSxnQkFBZ0IsQ0FBQyxHQUFHK0gsbUJBQW1CRyxZQUFZTixRQUFRLG1CQUFtQnZJLEVBQUU0RyxLQUFLLEdBQUc7b0JBQ3BILElBQUkwQixVQUFVO3dCQUNaLElBQUlVLGFBQWE7NEJBQ2ZWLFNBQVNFO3dCQUNYO29CQUNGO2dCQUNGO1lBQ0Y7UUFDRjtRQUFHO1lBQ0Q3SSxLQUFLO1lBQ0xtRCxPQUFPLFNBQVNtRyw0QkFBNEJDLFNBQVMsRUFBRVQsRUFBRTtnQkFDdkQsSUFBSVUsU0FBUyxJQUFJO2dCQUNqQixxRkFBcUY7Z0JBQ3JGLElBQUlDLGVBQWUsSUFBSSxDQUFDdEQsS0FBSyxFQUMzQmhCLGNBQWNzRSxhQUFhdEUsV0FBVyxFQUN0Q08sU0FBUytELGFBQWEvRCxNQUFNLEVBQzVCQyxPQUFPOEQsYUFBYTlELElBQUk7Z0JBQzFCLDBGQUEwRjtnQkFDMUYsSUFBSStELG9CQUFvQixJQUFJLENBQUN2RCxLQUFLLENBQUMyQyxHQUFHO2dCQUN0QyxJQUFJYSxlQUFleEUsWUFBWXlFLE9BQU8sQ0FBQ0Y7Z0JBQ3ZDLElBQUlDLGlCQUFpQixDQUFDLEdBQUc7b0JBQ3ZCO2dCQUNGO2dCQUNBLElBQUlkLFdBQVdjLGVBQWVKO2dCQUM5QixJQUFJVixhQUFhLENBQUMsS0FBS0EsWUFBWTFELFlBQVlyRixNQUFNLEVBQUU7b0JBQ3JEO2dCQUNGO2dCQUNBLElBQUkrSixnQkFBZ0IxRSxXQUFXLENBQUMwRCxTQUFTO2dCQUV6QyxvRUFBb0U7Z0JBQ3BFLElBQUlDLE9BQU8sWUFBWWUsaUJBQWlCbEUsUUFBUW1ELE9BQU8sVUFBVWUsaUJBQWlCbkUsUUFBUTtvQkFDeEY7Z0JBQ0Y7Z0JBQ0EsSUFBSSxDQUFDYSxRQUFRLENBQUN2RixnQkFBZ0IsQ0FBQyxHQUFHOEgsSUFBSWUsZ0JBQWdCO29CQUNwREwsT0FBTy9ILEtBQUssQ0FBQ2tILFFBQVEsQ0FBQ2EsT0FBT2xDLFFBQVEsQ0FBQzt3QkFDcEM1QixRQUFROEQsT0FBT3JELEtBQUssQ0FBQ1QsTUFBTTt3QkFDM0JDLE1BQU02RCxPQUFPckQsS0FBSyxDQUFDUixJQUFJO29CQUN6QjtnQkFDRjtZQUNGO1FBQ0Y7UUFBRztZQUNEM0YsS0FBSztZQUNMbUQsT0FBTyxTQUFTMkc7Z0JBQ2QsSUFBSUMsZUFBZSxJQUFJLENBQUN0SSxLQUFLLEVBQzNCb0QsSUFBSWtGLGFBQWFsRixDQUFDLEVBQ2xCbUYsSUFBSUQsYUFBYUMsQ0FBQyxFQUNsQmxGLFFBQVFpRixhQUFhakYsS0FBSyxFQUMxQm1GLFNBQVNGLGFBQWFFLE1BQU0sRUFDNUJDLE9BQU9ILGFBQWFHLElBQUksRUFDeEJDLFNBQVNKLGFBQWFJLE1BQU07Z0JBQzlCLE9BQU8sV0FBVyxHQUFFeEcsMERBQW1CLENBQUMsUUFBUTtvQkFDOUN3RyxRQUFRQTtvQkFDUkQsTUFBTUE7b0JBQ05yRixHQUFHQTtvQkFDSG1GLEdBQUdBO29CQUNIbEYsT0FBT0E7b0JBQ1BtRixRQUFRQTtnQkFDVjtZQUNGO1FBQ0Y7UUFBRztZQUNEakssS0FBSztZQUNMbUQsT0FBTyxTQUFTa0g7Z0JBQ2QsSUFBSUMsZUFBZSxJQUFJLENBQUM3SSxLQUFLLEVBQzNCb0QsSUFBSXlGLGFBQWF6RixDQUFDLEVBQ2xCbUYsSUFBSU0sYUFBYU4sQ0FBQyxFQUNsQmxGLFFBQVF3RixhQUFheEYsS0FBSyxFQUMxQm1GLFNBQVNLLGFBQWFMLE1BQU0sRUFDNUJ2RixPQUFPNEYsYUFBYTVGLElBQUksRUFDeEI2RixXQUFXRCxhQUFhQyxRQUFRLEVBQ2hDQyxVQUFVRixhQUFhRSxPQUFPO2dCQUNoQyxJQUFJQyxlQUFlNUcsMkNBQVFBLENBQUM2RyxJQUFJLENBQUNIO2dCQUNqQyxJQUFJLENBQUNFLGNBQWM7b0JBQ2pCLE9BQU87Z0JBQ1Q7Z0JBQ0EsT0FBTyxXQUFXLEdBQUU5Ryx5REFBa0IsQ0FBQzhHLGNBQWM7b0JBQ25ENUYsR0FBR0E7b0JBQ0htRixHQUFHQTtvQkFDSGxGLE9BQU9BO29CQUNQbUYsUUFBUUE7b0JBQ1JXLFFBQVFKO29CQUNSSyxTQUFTO29CQUNUbkcsTUFBTUE7Z0JBQ1I7WUFDRjtRQUNGO1FBQUc7WUFDRDFFLEtBQUs7WUFDTG1ELE9BQU8sU0FBUzJILHFCQUFxQkMsVUFBVSxFQUFFakMsRUFBRTtnQkFDakQsSUFBSWtDLGtCQUNGQyxnQkFDQUMsU0FBUyxJQUFJO2dCQUNmLElBQUlDLGVBQWUsSUFBSSxDQUFDMUosS0FBSyxFQUMzQnVJLElBQUltQixhQUFhbkIsQ0FBQyxFQUNsQmpGLGlCQUFpQm9HLGFBQWFwRyxjQUFjLEVBQzVDa0YsU0FBU2tCLGFBQWFsQixNQUFNLEVBQzVCbUIsWUFBWUQsYUFBYUMsU0FBUyxFQUNsQ0MsWUFBWUYsYUFBYUUsU0FBUyxFQUNsQzNHLE9BQU95RyxhQUFhekcsSUFBSSxFQUN4QkMsYUFBYXdHLGFBQWF4RyxVQUFVLEVBQ3BDQyxXQUFXdUcsYUFBYXZHLFFBQVE7Z0JBQ2xDLElBQUlDLElBQUkrQyxLQUFLQyxHQUFHLENBQUNrRCxZQUFZLElBQUksQ0FBQ3RKLEtBQUssQ0FBQ29ELENBQUM7Z0JBQ3pDLElBQUl5RyxpQkFBaUJ4SyxjQUFjQSxjQUFjLENBQUMsR0FBR3lELDZEQUFXQSxDQUFDLElBQUksQ0FBQzlDLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRztvQkFDeEZvRCxHQUFHQTtvQkFDSG1GLEdBQUdBO29CQUNIbEYsT0FBT0M7b0JBQ1BrRixRQUFRQTtnQkFDVjtnQkFDQSxJQUFJc0IsaUJBQWlCRixhQUFhLGNBQWNHLE1BQU0sQ0FBQyxDQUFDUixtQkFBbUJ0RyxJQUFJLENBQUNDLFdBQVcsTUFBTSxRQUFRcUcscUJBQXFCLEtBQUssSUFBSSxLQUFLLElBQUlBLGlCQUFpQlMsSUFBSSxFQUFFLGlCQUFpQkQsTUFBTSxDQUFDLENBQUNQLGlCQUFpQnZHLElBQUksQ0FBQ0UsU0FBUyxNQUFNLFFBQVFxRyxtQkFBbUIsS0FBSyxJQUFJLEtBQUssSUFBSUEsZUFBZVEsSUFBSTtnQkFDclMsT0FBTyxXQUFXLEdBQUU5SCwwREFBbUIsQ0FBQ08sbURBQUtBLEVBQUU7b0JBQzdDd0gsVUFBVTtvQkFDVkMsTUFBTTtvQkFDTixjQUFjSjtvQkFDZCxpQkFBaUJSO29CQUNqQmEsV0FBVztvQkFDWEMsY0FBYyxJQUFJLENBQUNDLDJCQUEyQjtvQkFDOUNDLGNBQWMsSUFBSSxDQUFDQywyQkFBMkI7b0JBQzlDQyxhQUFhLElBQUksQ0FBQzlFLDBCQUEwQixDQUFDMkIsR0FBRztvQkFDaERvRCxjQUFjLElBQUksQ0FBQy9FLDBCQUEwQixDQUFDMkIsR0FBRztvQkFDakRxRCxXQUFXLFNBQVNBLFVBQVU5TCxDQUFDO3dCQUM3QixJQUFJLENBQUM7NEJBQUM7NEJBQWE7eUJBQWEsQ0FBQytMLFFBQVEsQ0FBQy9MLEVBQUVMLEdBQUcsR0FBRzs0QkFDaEQ7d0JBQ0Y7d0JBQ0FLLEVBQUVnTSxjQUFjO3dCQUNoQmhNLEVBQUVpTSxlQUFlO3dCQUNqQnBCLE9BQU81QiwyQkFBMkIsQ0FBQ2pKLEVBQUVMLEdBQUcsS0FBSyxlQUFlLElBQUksQ0FBQyxHQUFHOEk7b0JBQ3RFO29CQUNBeUQsU0FBUyxTQUFTQTt3QkFDaEJyQixPQUFPM0UsUUFBUSxDQUFDOzRCQUNkZCxvQkFBb0I7d0JBQ3RCO29CQUNGO29CQUNBK0csUUFBUSxTQUFTQTt3QkFDZnRCLE9BQU8zRSxRQUFRLENBQUM7NEJBQ2RkLG9CQUFvQjt3QkFDdEI7b0JBQ0Y7b0JBQ0FnSCxPQUFPO3dCQUNMQyxRQUFRO29CQUNWO2dCQUNGLEdBQUc1RyxNQUFNNkcsZUFBZSxDQUFDdkIsV0FBV0U7WUFDdEM7UUFDRjtRQUFHO1lBQ0R0TCxLQUFLO1lBQ0xtRCxPQUFPLFNBQVN5SixZQUFZbEgsTUFBTSxFQUFFQyxJQUFJO2dCQUN0QyxJQUFJa0gsZUFBZSxJQUFJLENBQUNwTCxLQUFLLEVBQzNCdUksSUFBSTZDLGFBQWE3QyxDQUFDLEVBQ2xCQyxTQUFTNEMsYUFBYTVDLE1BQU0sRUFDNUJFLFNBQVMwQyxhQUFhMUMsTUFBTSxFQUM1QnBGLGlCQUFpQjhILGFBQWE5SCxjQUFjO2dCQUM5QyxJQUFJRixJQUFJK0MsS0FBS0QsR0FBRyxDQUFDakMsUUFBUUMsUUFBUVo7Z0JBQ2pDLElBQUlELFFBQVE4QyxLQUFLQyxHQUFHLENBQUNELEtBQUtrRixHQUFHLENBQUNuSCxPQUFPRCxVQUFVWCxnQkFBZ0I7Z0JBQy9ELE9BQU8sV0FBVyxHQUFFcEIsMERBQW1CLENBQUMsUUFBUTtvQkFDOUNpSSxXQUFXO29CQUNYQyxjQUFjLElBQUksQ0FBQ0MsMkJBQTJCO29CQUM5Q0MsY0FBYyxJQUFJLENBQUNDLDJCQUEyQjtvQkFDOUNDLGFBQWEsSUFBSSxDQUFDYyxvQkFBb0I7b0JBQ3RDYixjQUFjLElBQUksQ0FBQ2Esb0JBQW9CO29CQUN2Q04sT0FBTzt3QkFDTEMsUUFBUTtvQkFDVjtvQkFDQXZDLFFBQVE7b0JBQ1JELE1BQU1DO29CQUNONkMsYUFBYTtvQkFDYm5JLEdBQUdBO29CQUNIbUYsR0FBR0E7b0JBQ0hsRixPQUFPQTtvQkFDUG1GLFFBQVFBO2dCQUNWO1lBQ0Y7UUFDRjtRQUFHO1lBQ0RqSyxLQUFLO1lBQ0xtRCxPQUFPLFNBQVM4SjtnQkFDZCxJQUFJQyxnQkFBZ0IsSUFBSSxDQUFDekwsS0FBSyxFQUM1QmtELGFBQWF1SSxjQUFjdkksVUFBVSxFQUNyQ0MsV0FBV3NJLGNBQWN0SSxRQUFRLEVBQ2pDb0YsSUFBSWtELGNBQWNsRCxDQUFDLEVBQ25CQyxTQUFTaUQsY0FBY2pELE1BQU0sRUFDN0JsRixpQkFBaUJtSSxjQUFjbkksY0FBYyxFQUM3Q29GLFNBQVMrQyxjQUFjL0MsTUFBTTtnQkFDL0IsSUFBSWdELGVBQWUsSUFBSSxDQUFDaEgsS0FBSyxFQUMzQlQsU0FBU3lILGFBQWF6SCxNQUFNLEVBQzVCQyxPQUFPd0gsYUFBYXhILElBQUk7Z0JBQzFCLElBQUl5SCxTQUFTO2dCQUNiLElBQUlDLFFBQVE7b0JBQ1ZDLGVBQWU7b0JBQ2ZwRCxNQUFNQztnQkFDUjtnQkFDQSxPQUFPLFdBQVcsR0FBRXhHLDBEQUFtQixDQUFDTyxtREFBS0EsRUFBRTtvQkFDN0MwSCxXQUFXO2dCQUNiLEdBQUcsV0FBVyxHQUFFakksMERBQW1CLENBQUNRLGlEQUFJQSxFQUFFNUUsU0FBUztvQkFDakRnTyxZQUFZO29CQUNaQyxnQkFBZ0I7b0JBQ2hCM0ksR0FBRytDLEtBQUtELEdBQUcsQ0FBQ2pDLFFBQVFDLFFBQVF5SDtvQkFDNUJwRCxHQUFHQSxJQUFJQyxTQUFTO2dCQUNsQixHQUFHb0QsUUFBUSxJQUFJLENBQUNwRixhQUFhLENBQUN0RCxjQUFjLFdBQVcsR0FBRWhCLDBEQUFtQixDQUFDUSxpREFBSUEsRUFBRTVFLFNBQVM7b0JBQzFGZ08sWUFBWTtvQkFDWkMsZ0JBQWdCO29CQUNoQjNJLEdBQUcrQyxLQUFLQyxHQUFHLENBQUNuQyxRQUFRQyxRQUFRWixpQkFBaUJxSTtvQkFDN0NwRCxHQUFHQSxJQUFJQyxTQUFTO2dCQUNsQixHQUFHb0QsUUFBUSxJQUFJLENBQUNwRixhQUFhLENBQUNyRDtZQUNoQztRQUNGO1FBQUc7WUFDRDVFLEtBQUs7WUFDTG1ELE9BQU8sU0FBU3NLO2dCQUNkLElBQUlDLGdCQUFnQixJQUFJLENBQUNqTSxLQUFLLEVBQzVCaUQsT0FBT2dKLGNBQWNoSixJQUFJLEVBQ3pCa0gsWUFBWThCLGNBQWM5QixTQUFTLEVBQ25DckIsV0FBV21ELGNBQWNuRCxRQUFRLEVBQ2pDMUYsSUFBSTZJLGNBQWM3SSxDQUFDLEVBQ25CbUYsSUFBSTBELGNBQWMxRCxDQUFDLEVBQ25CbEYsUUFBUTRJLGNBQWM1SSxLQUFLLEVBQzNCbUYsU0FBU3lELGNBQWN6RCxNQUFNLEVBQzdCMEQsaUJBQWlCRCxjQUFjQyxjQUFjO2dCQUMvQyxJQUFJQyxlQUFlLElBQUksQ0FBQ3pILEtBQUssRUFDM0JULFNBQVNrSSxhQUFhbEksTUFBTSxFQUM1QkMsT0FBT2lJLGFBQWFqSSxJQUFJLEVBQ3hCTCxlQUFlc0ksYUFBYXRJLFlBQVksRUFDeENDLGdCQUFnQnFJLGFBQWFySSxhQUFhLEVBQzFDQyxvQkFBb0JvSSxhQUFhcEksaUJBQWlCLEVBQ2xEQyxxQkFBcUJtSSxhQUFhbkksa0JBQWtCO2dCQUN0RCxJQUFJLENBQUNmLFFBQVEsQ0FBQ0EsS0FBSzVFLE1BQU0sSUFBSSxDQUFDdUUseURBQVFBLENBQUNRLE1BQU0sQ0FBQ1IseURBQVFBLENBQUMyRixNQUFNLENBQUMzRix5REFBUUEsQ0FBQ1MsVUFBVSxDQUFDVCx5REFBUUEsQ0FBQzRGLFdBQVduRixTQUFTLEtBQUttRixVQUFVLEdBQUc7b0JBQy9ILE9BQU87Z0JBQ1Q7Z0JBQ0EsSUFBSTRELGFBQWEvSixnREFBSUEsQ0FBQyxrQkFBa0I4SDtnQkFDeEMsSUFBSWtDLGNBQWNuSyxxREFBYyxDQUFDb0ssS0FBSyxDQUFDeEQsY0FBYztnQkFDckQsSUFBSWtDLFFBQVFuSSwwRUFBbUJBLENBQUMsY0FBYztnQkFDOUMsT0FBTyxXQUFXLEdBQUVYLDBEQUFtQixDQUFDTyxtREFBS0EsRUFBRTtvQkFDN0MwSCxXQUFXaUM7b0JBQ1g5QixjQUFjLElBQUksQ0FBQ2lDLGtCQUFrQjtvQkFDckNDLGFBQWEsSUFBSSxDQUFDQyxlQUFlO29CQUNqQ3pCLE9BQU9BO2dCQUNULEdBQUcsSUFBSSxDQUFDM0MsZ0JBQWdCLElBQUlnRSxlQUFlLElBQUksQ0FBQ3pELGNBQWMsSUFBSSxJQUFJLENBQUN1QyxXQUFXLENBQUNsSCxRQUFRQyxPQUFPLElBQUksQ0FBQ21GLG9CQUFvQixDQUFDcEYsUUFBUSxXQUFXLElBQUksQ0FBQ29GLG9CQUFvQixDQUFDbkYsTUFBTSxTQUFTLENBQUNMLGdCQUFnQkMsaUJBQWlCQyxxQkFBcUJDLHNCQUFzQmtJLGNBQWEsS0FBTSxJQUFJLENBQUNWLFVBQVU7WUFDelM7UUFDRjtLQUFFLEVBQUU7UUFBQztZQUNIak4sS0FBSztZQUNMbUQsT0FBTyxTQUFTZ0wsdUJBQXVCMU0sS0FBSztnQkFDMUMsSUFBSW9ELElBQUlwRCxNQUFNb0QsQ0FBQyxFQUNibUYsSUFBSXZJLE1BQU11SSxDQUFDLEVBQ1hsRixRQUFRckQsTUFBTXFELEtBQUssRUFDbkJtRixTQUFTeEksTUFBTXdJLE1BQU0sRUFDckJFLFNBQVMxSSxNQUFNMEksTUFBTTtnQkFDdkIsSUFBSWlFLFFBQVF4RyxLQUFLeUcsS0FBSyxDQUFDckUsSUFBSUMsU0FBUyxLQUFLO2dCQUN6QyxPQUFPLFdBQVcsR0FBRXRHLDBEQUFtQixDQUFDQSx1REFBYyxFQUFFLE1BQU0sV0FBVyxHQUFFQSwwREFBbUIsQ0FBQyxRQUFRO29CQUNyR2tCLEdBQUdBO29CQUNIbUYsR0FBR0E7b0JBQ0hsRixPQUFPQTtvQkFDUG1GLFFBQVFBO29CQUNSQyxNQUFNQztvQkFDTkEsUUFBUTtnQkFDVixJQUFJLFdBQVcsR0FBRXhHLDBEQUFtQixDQUFDLFFBQVE7b0JBQzNDNEssSUFBSTFKLElBQUk7b0JBQ1IySixJQUFJSjtvQkFDSkssSUFBSTVKLElBQUlDLFFBQVE7b0JBQ2hCNEosSUFBSU47b0JBQ0psRSxNQUFNO29CQUNOQyxRQUFRO2dCQUNWLElBQUksV0FBVyxHQUFFeEcsMERBQW1CLENBQUMsUUFBUTtvQkFDM0M0SyxJQUFJMUosSUFBSTtvQkFDUjJKLElBQUlKLFFBQVE7b0JBQ1pLLElBQUk1SixJQUFJQyxRQUFRO29CQUNoQjRKLElBQUlOLFFBQVE7b0JBQ1psRSxNQUFNO29CQUNOQyxRQUFRO2dCQUNWO1lBQ0Y7UUFDRjtRQUFHO1lBQ0RuSyxLQUFLO1lBQ0xtRCxPQUFPLFNBQVN3SixnQkFBZ0JnQyxNQUFNLEVBQUVsTixLQUFLO2dCQUMzQyxJQUFJbU47Z0JBQ0osSUFBSyxXQUFXLEdBQUVqTCwyREFBb0IsQ0FBQ2dMLFNBQVM7b0JBQzlDQyxZQUFZLFdBQVcsR0FBRWpMLHlEQUFrQixDQUFDZ0wsUUFBUWxOO2dCQUN0RCxPQUFPLElBQUl1Qyx3REFBVUEsQ0FBQzJLLFNBQVM7b0JBQzdCQyxZQUFZRCxPQUFPbE47Z0JBQ3JCLE9BQU87b0JBQ0xtTixZQUFZOUksTUFBTXFJLHNCQUFzQixDQUFDMU07Z0JBQzNDO2dCQUNBLE9BQU9tTjtZQUNUO1FBQ0Y7UUFBRztZQUNENU8sS0FBSztZQUNMbUQsT0FBTyxTQUFTMkwseUJBQXlCQyxTQUFTLEVBQUVDLFNBQVM7Z0JBQzNELElBQUl0SyxPQUFPcUssVUFBVXJLLElBQUksRUFDdkJJLFFBQVFpSyxVQUFVakssS0FBSyxFQUN2QkQsSUFBSWtLLFVBQVVsSyxDQUFDLEVBQ2ZFLGlCQUFpQmdLLFVBQVVoSyxjQUFjLEVBQ3pDa0ssV0FBV0YsVUFBVUUsUUFBUSxFQUM3QnRLLGFBQWFvSyxVQUFVcEssVUFBVSxFQUNqQ0MsV0FBV21LLFVBQVVuSyxRQUFRO2dCQUMvQixJQUFJRixTQUFTc0ssVUFBVUUsUUFBUSxJQUFJRCxhQUFhRCxVQUFVRyxZQUFZLEVBQUU7b0JBQ3RFLE9BQU9yTyxjQUFjO3dCQUNuQm9PLFVBQVV4Szt3QkFDVjBLLG9CQUFvQnJLO3dCQUNwQm9LLGNBQWNGO3dCQUNkSSxPQUFPeEs7d0JBQ1B5SyxXQUFXeEs7b0JBQ2IsR0FBR0osUUFBUUEsS0FBSzVFLE1BQU0sR0FBRzBFLFlBQVk7d0JBQ25DRSxNQUFNQTt3QkFDTkksT0FBT0E7d0JBQ1BELEdBQUdBO3dCQUNIRSxnQkFBZ0JBO3dCQUNoQkosWUFBWUE7d0JBQ1pDLFVBQVVBO29CQUNaLEtBQUs7d0JBQ0hLLE9BQU87d0JBQ1BFLGFBQWE7b0JBQ2Y7Z0JBQ0Y7Z0JBQ0EsSUFBSTZKLFVBQVUvSixLQUFLLElBQUtILENBQUFBLFVBQVVrSyxVQUFVTSxTQUFTLElBQUl6SyxNQUFNbUssVUFBVUssS0FBSyxJQUFJdEssbUJBQW1CaUssVUFBVUksa0JBQWtCLEdBQUc7b0JBQ2xJSixVQUFVL0osS0FBSyxDQUFDaEIsS0FBSyxDQUFDO3dCQUFDWTt3QkFBR0EsSUFBSUMsUUFBUUM7cUJBQWU7b0JBQ3JELElBQUlJLGNBQWM2SixVQUFVL0osS0FBSyxDQUFDQyxNQUFNLEdBQUdFLEdBQUcsQ0FBQyxTQUFVQyxLQUFLO3dCQUM1RCxPQUFPMkosVUFBVS9KLEtBQUssQ0FBQ0k7b0JBQ3pCO29CQUNBLE9BQU87d0JBQ0w2SixVQUFVeEs7d0JBQ1YwSyxvQkFBb0JySzt3QkFDcEJvSyxjQUFjRjt3QkFDZEksT0FBT3hLO3dCQUNQeUssV0FBV3hLO3dCQUNYWSxRQUFRc0osVUFBVS9KLEtBQUssQ0FBQzhKLFVBQVVwSyxVQUFVO3dCQUM1Q2dCLE1BQU1xSixVQUFVL0osS0FBSyxDQUFDOEosVUFBVW5LLFFBQVE7d0JBQ3hDTyxhQUFhQTtvQkFDZjtnQkFDRjtnQkFDQSxPQUFPO1lBQ1Q7UUFDRjtRQUFHO1lBQ0RuRixLQUFLO1lBQ0xtRCxPQUFPLFNBQVM0RSxnQkFBZ0J3SCxVQUFVLEVBQUUxSyxDQUFDO2dCQUMzQyxJQUFJRyxNQUFNdUssV0FBV3pQLE1BQU07Z0JBQzNCLElBQUkwUCxRQUFRO2dCQUNaLElBQUlDLE1BQU16SyxNQUFNO2dCQUNoQixNQUFPeUssTUFBTUQsUUFBUSxFQUFHO29CQUN0QixJQUFJRSxTQUFTOUgsS0FBS3lHLEtBQUssQ0FBQyxDQUFDbUIsUUFBUUMsR0FBRSxJQUFLO29CQUN4QyxJQUFJRixVQUFVLENBQUNHLE9BQU8sR0FBRzdLLEdBQUc7d0JBQzFCNEssTUFBTUM7b0JBQ1IsT0FBTzt3QkFDTEYsUUFBUUU7b0JBQ1Y7Z0JBQ0Y7Z0JBQ0EsT0FBTzdLLEtBQUswSyxVQUFVLENBQUNFLElBQUksR0FBR0EsTUFBTUQ7WUFDdEM7UUFDRjtLQUFFO0FBQ0osRUFBRTVMLGdEQUFhQSxFQUFFO0FBQ2pCNUMsZ0JBQWdCOEUsT0FBTyxlQUFlO0FBQ3RDOUUsZ0JBQWdCOEUsT0FBTyxnQkFBZ0I7SUFDckNtRSxRQUFRO0lBQ1JsRixnQkFBZ0I7SUFDaEIwQyxLQUFLO0lBQ0x5QyxNQUFNO0lBQ05DLFFBQVE7SUFDUkssU0FBUztRQUNQbUYsS0FBSztRQUNMQyxPQUFPO1FBQ1BDLFFBQVE7UUFDUkMsTUFBTTtJQUNSO0lBQ0FoSixjQUFjO0lBQ2Q2RyxnQkFBZ0I7QUFDbEIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9CcnVzaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IEJydXNoXG4gKi9cbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBDaGlsZHJlbiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgc2NhbGVQb2ludCB9IGZyb20gJ3ZpY3RvcnktdmVuZG9yL2QzLXNjYWxlJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCByYW5nZSBmcm9tICdsb2Rhc2gvcmFuZ2UnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4uL2NvbXBvbmVudC9UZXh0JztcbmltcG9ydCB7IGdldFZhbHVlQnlEYXRhS2V5IH0gZnJvbSAnLi4vdXRpbC9DaGFydFV0aWxzJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVQcmVmaXhTdHlsZSB9IGZyb20gJy4uL3V0aWwvQ3NzUHJlZml4VXRpbHMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xudmFyIGNyZWF0ZVNjYWxlID0gZnVuY3Rpb24gY3JlYXRlU2NhbGUoX3JlZikge1xuICB2YXIgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICBzdGFydEluZGV4ID0gX3JlZi5zdGFydEluZGV4LFxuICAgIGVuZEluZGV4ID0gX3JlZi5lbmRJbmRleCxcbiAgICB4ID0gX3JlZi54LFxuICAgIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICB0cmF2ZWxsZXJXaWR0aCA9IF9yZWYudHJhdmVsbGVyV2lkdGg7XG4gIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGgpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoO1xuICB2YXIgc2NhbGUgPSBzY2FsZVBvaW50KCkuZG9tYWluKHJhbmdlKDAsIGxlbikpLnJhbmdlKFt4LCB4ICsgd2lkdGggLSB0cmF2ZWxsZXJXaWR0aF0pO1xuICB2YXIgc2NhbGVWYWx1ZXMgPSBzY2FsZS5kb21haW4oKS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIHNjYWxlKGVudHJ5KTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaXNUZXh0QWN0aXZlOiBmYWxzZSxcbiAgICBpc1NsaWRlTW92aW5nOiBmYWxzZSxcbiAgICBpc1RyYXZlbGxlck1vdmluZzogZmFsc2UsXG4gICAgaXNUcmF2ZWxsZXJGb2N1c2VkOiBmYWxzZSxcbiAgICBzdGFydFg6IHNjYWxlKHN0YXJ0SW5kZXgpLFxuICAgIGVuZFg6IHNjYWxlKGVuZEluZGV4KSxcbiAgICBzY2FsZTogc2NhbGUsXG4gICAgc2NhbGVWYWx1ZXM6IHNjYWxlVmFsdWVzXG4gIH07XG59O1xudmFyIGlzVG91Y2ggPSBmdW5jdGlvbiBpc1RvdWNoKGUpIHtcbiAgcmV0dXJuIGUuY2hhbmdlZFRvdWNoZXMgJiYgISFlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aDtcbn07XG5leHBvcnQgdmFyIEJydXNoID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUHVyZUNvbXBvbmVudCkge1xuICBmdW5jdGlvbiBCcnVzaChwcm9wcykge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnJ1c2gpO1xuICAgIF90aGlzID0gX2NhbGxTdXBlcih0aGlzLCBCcnVzaCwgW3Byb3BzXSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZURyYWdcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChfdGhpcy5sZWF2ZVRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChfdGhpcy5sZWF2ZVRpbWVyKTtcbiAgICAgICAgX3RoaXMubGVhdmVUaW1lciA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoX3RoaXMuc3RhdGUuaXNUcmF2ZWxsZXJNb3ZpbmcpIHtcbiAgICAgICAgX3RoaXMuaGFuZGxlVHJhdmVsbGVyTW92ZShlKTtcbiAgICAgIH0gZWxzZSBpZiAoX3RoaXMuc3RhdGUuaXNTbGlkZU1vdmluZykge1xuICAgICAgICBfdGhpcy5oYW5kbGVTbGlkZURyYWcoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZVRvdWNoTW92ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKGUuY2hhbmdlZFRvdWNoZXMgIT0gbnVsbCAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgX3RoaXMuaGFuZGxlRHJhZyhlLmNoYW5nZWRUb3VjaGVzWzBdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlRHJhZ0VuZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzVHJhdmVsbGVyTW92aW5nOiBmYWxzZSxcbiAgICAgICAgaXNTbGlkZU1vdmluZzogZmFsc2VcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgZW5kSW5kZXggPSBfdGhpcyRwcm9wcy5lbmRJbmRleCxcbiAgICAgICAgICBvbkRyYWdFbmQgPSBfdGhpcyRwcm9wcy5vbkRyYWdFbmQsXG4gICAgICAgICAgc3RhcnRJbmRleCA9IF90aGlzJHByb3BzLnN0YXJ0SW5kZXg7XG4gICAgICAgIG9uRHJhZ0VuZCA9PT0gbnVsbCB8fCBvbkRyYWdFbmQgPT09IHZvaWQgMCB8fCBvbkRyYWdFbmQoe1xuICAgICAgICAgIGVuZEluZGV4OiBlbmRJbmRleCxcbiAgICAgICAgICBzdGFydEluZGV4OiBzdGFydEluZGV4XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfdGhpcy5kZXRhY2hEcmFnRW5kTGlzdGVuZXIoKTtcbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlTGVhdmVXcmFwcGVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5zdGF0ZS5pc1RyYXZlbGxlck1vdmluZyB8fCBfdGhpcy5zdGF0ZS5pc1NsaWRlTW92aW5nKSB7XG4gICAgICAgIF90aGlzLmxlYXZlVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChfdGhpcy5oYW5kbGVEcmFnRW5kLCBfdGhpcy5wcm9wcy5sZWF2ZVRpbWVPdXQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVFbnRlclNsaWRlT3JUcmF2ZWxsZXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc1RleHRBY3RpdmU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVMZWF2ZVNsaWRlT3JUcmF2ZWxsZXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc1RleHRBY3RpdmU6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlU2xpZGVEcmFnU3RhcnRcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBldmVudCA9IGlzVG91Y2goZSkgPyBlLmNoYW5nZWRUb3VjaGVzWzBdIDogZTtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNUcmF2ZWxsZXJNb3Zpbmc6IGZhbHNlLFxuICAgICAgICBpc1NsaWRlTW92aW5nOiB0cnVlLFxuICAgICAgICBzbGlkZU1vdmVTdGFydFg6IGV2ZW50LnBhZ2VYXG4gICAgICB9KTtcbiAgICAgIF90aGlzLmF0dGFjaERyYWdFbmRMaXN0ZW5lcigpO1xuICAgIH0pO1xuICAgIF90aGlzLnRyYXZlbGxlckRyYWdTdGFydEhhbmRsZXJzID0ge1xuICAgICAgc3RhcnRYOiBfdGhpcy5oYW5kbGVUcmF2ZWxsZXJEcmFnU3RhcnQuYmluZChfdGhpcywgJ3N0YXJ0WCcpLFxuICAgICAgZW5kWDogX3RoaXMuaGFuZGxlVHJhdmVsbGVyRHJhZ1N0YXJ0LmJpbmQoX3RoaXMsICdlbmRYJylcbiAgICB9O1xuICAgIF90aGlzLnN0YXRlID0ge307XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9pbmhlcml0cyhCcnVzaCwgX1B1cmVDb21wb25lbnQpO1xuICByZXR1cm4gX2NyZWF0ZUNsYXNzKEJydXNoLCBbe1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLmxlYXZlVGltZXIpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubGVhdmVUaW1lcik7XG4gICAgICAgIHRoaXMubGVhdmVUaW1lciA9IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLmRldGFjaERyYWdFbmRMaXN0ZW5lcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbmRleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbmRleChfcmVmMikge1xuICAgICAgdmFyIHN0YXJ0WCA9IF9yZWYyLnN0YXJ0WCxcbiAgICAgICAgZW5kWCA9IF9yZWYyLmVuZFg7XG4gICAgICB2YXIgc2NhbGVWYWx1ZXMgPSB0aGlzLnN0YXRlLnNjYWxlVmFsdWVzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGdhcCA9IF90aGlzJHByb3BzMi5nYXAsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczIuZGF0YTtcbiAgICAgIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gICAgICB2YXIgbWluID0gTWF0aC5taW4oc3RhcnRYLCBlbmRYKTtcbiAgICAgIHZhciBtYXggPSBNYXRoLm1heChzdGFydFgsIGVuZFgpO1xuICAgICAgdmFyIG1pbkluZGV4ID0gQnJ1c2guZ2V0SW5kZXhJblJhbmdlKHNjYWxlVmFsdWVzLCBtaW4pO1xuICAgICAgdmFyIG1heEluZGV4ID0gQnJ1c2guZ2V0SW5kZXhJblJhbmdlKHNjYWxlVmFsdWVzLCBtYXgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnRJbmRleDogbWluSW5kZXggLSBtaW5JbmRleCAlIGdhcCxcbiAgICAgICAgZW5kSW5kZXg6IG1heEluZGV4ID09PSBsYXN0SW5kZXggPyBsYXN0SW5kZXggOiBtYXhJbmRleCAtIG1heEluZGV4ICUgZ2FwXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRUZXh0T2ZUaWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRleHRPZlRpY2soaW5kZXgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSB0aGlzLnByb3BzLFxuICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHMzLmRhdGEsXG4gICAgICAgIHRpY2tGb3JtYXR0ZXIgPSBfdGhpcyRwcm9wczMudGlja0Zvcm1hdHRlcixcbiAgICAgICAgZGF0YUtleSA9IF90aGlzJHByb3BzMy5kYXRhS2V5O1xuICAgICAgdmFyIHRleHQgPSBnZXRWYWx1ZUJ5RGF0YUtleShkYXRhW2luZGV4XSwgZGF0YUtleSwgaW5kZXgpO1xuICAgICAgcmV0dXJuIGlzRnVuY3Rpb24odGlja0Zvcm1hdHRlcikgPyB0aWNrRm9ybWF0dGVyKHRleHQsIGluZGV4KSA6IHRleHQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImF0dGFjaERyYWdFbmRMaXN0ZW5lclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhdHRhY2hEcmFnRW5kTGlzdGVuZXIoKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuaGFuZGxlRHJhZ0VuZCwgdHJ1ZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLmhhbmRsZURyYWdFbmQsIHRydWUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFuZGxlRHJhZywgdHJ1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRldGFjaERyYWdFbmRMaXN0ZW5lclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXRhY2hEcmFnRW5kTGlzdGVuZXIoKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuaGFuZGxlRHJhZ0VuZCwgdHJ1ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLmhhbmRsZURyYWdFbmQsIHRydWUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFuZGxlRHJhZywgdHJ1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhbmRsZVNsaWRlRHJhZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVTbGlkZURyYWcoZSkge1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgc2xpZGVNb3ZlU3RhcnRYID0gX3RoaXMkc3RhdGUuc2xpZGVNb3ZlU3RhcnRYLFxuICAgICAgICBzdGFydFggPSBfdGhpcyRzdGF0ZS5zdGFydFgsXG4gICAgICAgIGVuZFggPSBfdGhpcyRzdGF0ZS5lbmRYO1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIHggPSBfdGhpcyRwcm9wczQueCxcbiAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczQud2lkdGgsXG4gICAgICAgIHRyYXZlbGxlcldpZHRoID0gX3RoaXMkcHJvcHM0LnRyYXZlbGxlcldpZHRoLFxuICAgICAgICBzdGFydEluZGV4ID0gX3RoaXMkcHJvcHM0LnN0YXJ0SW5kZXgsXG4gICAgICAgIGVuZEluZGV4ID0gX3RoaXMkcHJvcHM0LmVuZEluZGV4LFxuICAgICAgICBvbkNoYW5nZSA9IF90aGlzJHByb3BzNC5vbkNoYW5nZTtcbiAgICAgIHZhciBkZWx0YSA9IGUucGFnZVggLSBzbGlkZU1vdmVTdGFydFg7XG4gICAgICBpZiAoZGVsdGEgPiAwKSB7XG4gICAgICAgIGRlbHRhID0gTWF0aC5taW4oZGVsdGEsIHggKyB3aWR0aCAtIHRyYXZlbGxlcldpZHRoIC0gZW5kWCwgeCArIHdpZHRoIC0gdHJhdmVsbGVyV2lkdGggLSBzdGFydFgpO1xuICAgICAgfSBlbHNlIGlmIChkZWx0YSA8IDApIHtcbiAgICAgICAgZGVsdGEgPSBNYXRoLm1heChkZWx0YSwgeCAtIHN0YXJ0WCwgeCAtIGVuZFgpO1xuICAgICAgfVxuICAgICAgdmFyIG5ld0luZGV4ID0gdGhpcy5nZXRJbmRleCh7XG4gICAgICAgIHN0YXJ0WDogc3RhcnRYICsgZGVsdGEsXG4gICAgICAgIGVuZFg6IGVuZFggKyBkZWx0YVxuICAgICAgfSk7XG4gICAgICBpZiAoKG5ld0luZGV4LnN0YXJ0SW5kZXggIT09IHN0YXJ0SW5kZXggfHwgbmV3SW5kZXguZW5kSW5kZXggIT09IGVuZEluZGV4KSAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShuZXdJbmRleCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc3RhcnRYOiBzdGFydFggKyBkZWx0YSxcbiAgICAgICAgZW5kWDogZW5kWCArIGRlbHRhLFxuICAgICAgICBzbGlkZU1vdmVTdGFydFg6IGUucGFnZVhcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYW5kbGVUcmF2ZWxsZXJEcmFnU3RhcnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVHJhdmVsbGVyRHJhZ1N0YXJ0KGlkLCBlKSB7XG4gICAgICB2YXIgZXZlbnQgPSBpc1RvdWNoKGUpID8gZS5jaGFuZ2VkVG91Y2hlc1swXSA6IGU7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNTbGlkZU1vdmluZzogZmFsc2UsXG4gICAgICAgIGlzVHJhdmVsbGVyTW92aW5nOiB0cnVlLFxuICAgICAgICBtb3ZpbmdUcmF2ZWxsZXJJZDogaWQsXG4gICAgICAgIGJydXNoTW92ZVN0YXJ0WDogZXZlbnQucGFnZVhcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdHRhY2hEcmFnRW5kTGlzdGVuZXIoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFuZGxlVHJhdmVsbGVyTW92ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVUcmF2ZWxsZXJNb3ZlKGUpIHtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTIgPSB0aGlzLnN0YXRlLFxuICAgICAgICBicnVzaE1vdmVTdGFydFggPSBfdGhpcyRzdGF0ZTIuYnJ1c2hNb3ZlU3RhcnRYLFxuICAgICAgICBtb3ZpbmdUcmF2ZWxsZXJJZCA9IF90aGlzJHN0YXRlMi5tb3ZpbmdUcmF2ZWxsZXJJZCxcbiAgICAgICAgZW5kWCA9IF90aGlzJHN0YXRlMi5lbmRYLFxuICAgICAgICBzdGFydFggPSBfdGhpcyRzdGF0ZTIuc3RhcnRYO1xuICAgICAgdmFyIHByZXZWYWx1ZSA9IHRoaXMuc3RhdGVbbW92aW5nVHJhdmVsbGVySWRdO1xuICAgICAgdmFyIF90aGlzJHByb3BzNSA9IHRoaXMucHJvcHMsXG4gICAgICAgIHggPSBfdGhpcyRwcm9wczUueCxcbiAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczUud2lkdGgsXG4gICAgICAgIHRyYXZlbGxlcldpZHRoID0gX3RoaXMkcHJvcHM1LnRyYXZlbGxlcldpZHRoLFxuICAgICAgICBvbkNoYW5nZSA9IF90aGlzJHByb3BzNS5vbkNoYW5nZSxcbiAgICAgICAgZ2FwID0gX3RoaXMkcHJvcHM1LmdhcCxcbiAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzNS5kYXRhO1xuICAgICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgICAgc3RhcnRYOiB0aGlzLnN0YXRlLnN0YXJ0WCxcbiAgICAgICAgZW5kWDogdGhpcy5zdGF0ZS5lbmRYXG4gICAgICB9O1xuICAgICAgdmFyIGRlbHRhID0gZS5wYWdlWCAtIGJydXNoTW92ZVN0YXJ0WDtcbiAgICAgIGlmIChkZWx0YSA+IDApIHtcbiAgICAgICAgZGVsdGEgPSBNYXRoLm1pbihkZWx0YSwgeCArIHdpZHRoIC0gdHJhdmVsbGVyV2lkdGggLSBwcmV2VmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChkZWx0YSA8IDApIHtcbiAgICAgICAgZGVsdGEgPSBNYXRoLm1heChkZWx0YSwgeCAtIHByZXZWYWx1ZSk7XG4gICAgICB9XG4gICAgICBwYXJhbXNbbW92aW5nVHJhdmVsbGVySWRdID0gcHJldlZhbHVlICsgZGVsdGE7XG4gICAgICB2YXIgbmV3SW5kZXggPSB0aGlzLmdldEluZGV4KHBhcmFtcyk7XG4gICAgICB2YXIgc3RhcnRJbmRleCA9IG5ld0luZGV4LnN0YXJ0SW5kZXgsXG4gICAgICAgIGVuZEluZGV4ID0gbmV3SW5kZXguZW5kSW5kZXg7XG4gICAgICB2YXIgaXNGdWxsR2FwID0gZnVuY3Rpb24gaXNGdWxsR2FwKCkge1xuICAgICAgICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICAgICAgICBpZiAobW92aW5nVHJhdmVsbGVySWQgPT09ICdzdGFydFgnICYmIChlbmRYID4gc3RhcnRYID8gc3RhcnRJbmRleCAlIGdhcCA9PT0gMCA6IGVuZEluZGV4ICUgZ2FwID09PSAwKSB8fCBlbmRYIDwgc3RhcnRYICYmIGVuZEluZGV4ID09PSBsYXN0SW5kZXggfHwgbW92aW5nVHJhdmVsbGVySWQgPT09ICdlbmRYJyAmJiAoZW5kWCA+IHN0YXJ0WCA/IGVuZEluZGV4ICUgZ2FwID09PSAwIDogc3RhcnRJbmRleCAlIGdhcCA9PT0gMCkgfHwgZW5kWCA+IHN0YXJ0WCAmJiBlbmRJbmRleCA9PT0gbGFzdEluZGV4KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eSh7fSwgbW92aW5nVHJhdmVsbGVySWQsIHByZXZWYWx1ZSArIGRlbHRhKSwgXCJicnVzaE1vdmVTdGFydFhcIiwgZS5wYWdlWCksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgaWYgKGlzRnVsbEdhcCgpKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShuZXdJbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFuZGxlVHJhdmVsbGVyTW92ZUtleWJvYXJkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVRyYXZlbGxlck1vdmVLZXlib2FyZChkaXJlY3Rpb24sIGlkKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcbiAgICAgIC8vIHNjYWxlVmFsdWVzIGFyZSBhIGxpc3Qgb2YgY29vcmRpbmF0ZXMuIEZvciBleGFtcGxlOiBbNjUsIDI1MCwgNDM1LCA2MjAsIDgwNSwgOTkwXS5cbiAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzY2FsZVZhbHVlcyA9IF90aGlzJHN0YXRlMy5zY2FsZVZhbHVlcyxcbiAgICAgICAgc3RhcnRYID0gX3RoaXMkc3RhdGUzLnN0YXJ0WCxcbiAgICAgICAgZW5kWCA9IF90aGlzJHN0YXRlMy5lbmRYO1xuICAgICAgLy8gY3VycmVudFNjYWxlVmFsdWUgcmVmZXJzIHRvIHdoaWNoIGNvb3JkaW5hdGUgdGhlIGN1cnJlbnQgdHJhdmVsbGVyIHNob3VsZCBiZSBwbGFjZWQgYXQuXG4gICAgICB2YXIgY3VycmVudFNjYWxlVmFsdWUgPSB0aGlzLnN0YXRlW2lkXTtcbiAgICAgIHZhciBjdXJyZW50SW5kZXggPSBzY2FsZVZhbHVlcy5pbmRleE9mKGN1cnJlbnRTY2FsZVZhbHVlKTtcbiAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdJbmRleCA9IGN1cnJlbnRJbmRleCArIGRpcmVjdGlvbjtcbiAgICAgIGlmIChuZXdJbmRleCA9PT0gLTEgfHwgbmV3SW5kZXggPj0gc2NhbGVWYWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdTY2FsZVZhbHVlID0gc2NhbGVWYWx1ZXNbbmV3SW5kZXhdO1xuXG4gICAgICAvLyBQcmV2ZW50IHRyYXZlbGxlcnMgZnJvbSBiZWluZyBvbiB0b3Agb2YgZWFjaCBvdGhlciBvciBvdmVybGFwcGluZ1xuICAgICAgaWYgKGlkID09PSAnc3RhcnRYJyAmJiBuZXdTY2FsZVZhbHVlID49IGVuZFggfHwgaWQgPT09ICdlbmRYJyAmJiBuZXdTY2FsZVZhbHVlIDw9IHN0YXJ0WCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKF9kZWZpbmVQcm9wZXJ0eSh7fSwgaWQsIG5ld1NjYWxlVmFsdWUpLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5wcm9wcy5vbkNoYW5nZShfdGhpczIuZ2V0SW5kZXgoe1xuICAgICAgICAgIHN0YXJ0WDogX3RoaXMyLnN0YXRlLnN0YXJ0WCxcbiAgICAgICAgICBlbmRYOiBfdGhpczIuc3RhdGUuZW5kWFxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQmFja2dyb3VuZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJCYWNrZ3JvdW5kKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgIHggPSBfdGhpcyRwcm9wczYueCxcbiAgICAgICAgeSA9IF90aGlzJHByb3BzNi55LFxuICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzNi53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHM2LmhlaWdodCxcbiAgICAgICAgZmlsbCA9IF90aGlzJHByb3BzNi5maWxsLFxuICAgICAgICBzdHJva2UgPSBfdGhpcyRwcm9wczYuc3Ryb2tlO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7XG4gICAgICAgIHN0cm9rZTogc3Ryb2tlLFxuICAgICAgICBmaWxsOiBmaWxsLFxuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyUGFub3JhbWFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUGFub3JhbWEoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM3ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgeCA9IF90aGlzJHByb3BzNy54LFxuICAgICAgICB5ID0gX3RoaXMkcHJvcHM3LnksXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHM3LndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczcuaGVpZ2h0LFxuICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHM3LmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHM3LmNoaWxkcmVuLFxuICAgICAgICBwYWRkaW5nID0gX3RoaXMkcHJvcHM3LnBhZGRpbmc7XG4gICAgICB2YXIgY2hhcnRFbGVtZW50ID0gQ2hpbGRyZW4ub25seShjaGlsZHJlbik7XG4gICAgICBpZiAoIWNoYXJ0RWxlbWVudCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoYXJ0RWxlbWVudCwge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICBtYXJnaW46IHBhZGRpbmcsXG4gICAgICAgIGNvbXBhY3Q6IHRydWUsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJUcmF2ZWxsZXJMYXllclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJUcmF2ZWxsZXJMYXllcih0cmF2ZWxsZXJYLCBpZCkge1xuICAgICAgdmFyIF9kYXRhJHN0YXJ0SW5kZXgsXG4gICAgICAgIF9kYXRhJGVuZEluZGV4LFxuICAgICAgICBfdGhpczMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzOCA9IHRoaXMucHJvcHMsXG4gICAgICAgIHkgPSBfdGhpcyRwcm9wczgueSxcbiAgICAgICAgdHJhdmVsbGVyV2lkdGggPSBfdGhpcyRwcm9wczgudHJhdmVsbGVyV2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzOC5oZWlnaHQsXG4gICAgICAgIHRyYXZlbGxlciA9IF90aGlzJHByb3BzOC50cmF2ZWxsZXIsXG4gICAgICAgIGFyaWFMYWJlbCA9IF90aGlzJHByb3BzOC5hcmlhTGFiZWwsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczguZGF0YSxcbiAgICAgICAgc3RhcnRJbmRleCA9IF90aGlzJHByb3BzOC5zdGFydEluZGV4LFxuICAgICAgICBlbmRJbmRleCA9IF90aGlzJHByb3BzOC5lbmRJbmRleDtcbiAgICAgIHZhciB4ID0gTWF0aC5tYXgodHJhdmVsbGVyWCwgdGhpcy5wcm9wcy54KTtcbiAgICAgIHZhciB0cmF2ZWxsZXJQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyUHJvcHModGhpcy5wcm9wcywgZmFsc2UpKSwge30sIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHRyYXZlbGxlcldpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSk7XG4gICAgICB2YXIgYXJpYUxhYmVsQnJ1c2ggPSBhcmlhTGFiZWwgfHwgXCJNaW4gdmFsdWU6IFwiLmNvbmNhdCgoX2RhdGEkc3RhcnRJbmRleCA9IGRhdGFbc3RhcnRJbmRleF0pID09PSBudWxsIHx8IF9kYXRhJHN0YXJ0SW5kZXggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kYXRhJHN0YXJ0SW5kZXgubmFtZSwgXCIsIE1heCB2YWx1ZTogXCIpLmNvbmNhdCgoX2RhdGEkZW5kSW5kZXggPSBkYXRhW2VuZEluZGV4XSkgPT09IG51bGwgfHwgX2RhdGEkZW5kSW5kZXggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kYXRhJGVuZEluZGV4Lm5hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICByb2xlOiBcInNsaWRlclwiLFxuICAgICAgICBcImFyaWEtbGFiZWxcIjogYXJpYUxhYmVsQnJ1c2gsXG4gICAgICAgIFwiYXJpYS12YWx1ZW5vd1wiOiB0cmF2ZWxsZXJYLFxuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtYnJ1c2gtdHJhdmVsbGVyXCIsXG4gICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5oYW5kbGVFbnRlclNsaWRlT3JUcmF2ZWxsZXIsXG4gICAgICAgIG9uTW91c2VMZWF2ZTogdGhpcy5oYW5kbGVMZWF2ZVNsaWRlT3JUcmF2ZWxsZXIsXG4gICAgICAgIG9uTW91c2VEb3duOiB0aGlzLnRyYXZlbGxlckRyYWdTdGFydEhhbmRsZXJzW2lkXSxcbiAgICAgICAgb25Ub3VjaFN0YXJ0OiB0aGlzLnRyYXZlbGxlckRyYWdTdGFydEhhbmRsZXJzW2lkXSxcbiAgICAgICAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgICAgICAgIGlmICghWydBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCddLmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBfdGhpczMuaGFuZGxlVHJhdmVsbGVyTW92ZUtleWJvYXJkKGUua2V5ID09PSAnQXJyb3dSaWdodCcgPyAxIDogLTEsIGlkKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Gb2N1czogZnVuY3Rpb24gb25Gb2N1cygpIHtcbiAgICAgICAgICBfdGhpczMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgaXNUcmF2ZWxsZXJGb2N1c2VkOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQmx1cjogZnVuY3Rpb24gb25CbHVyKCkge1xuICAgICAgICAgIF90aGlzMy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBpc1RyYXZlbGxlckZvY3VzZWQ6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgY3Vyc29yOiAnY29sLXJlc2l6ZSdcbiAgICAgICAgfVxuICAgICAgfSwgQnJ1c2gucmVuZGVyVHJhdmVsbGVyKHRyYXZlbGxlciwgdHJhdmVsbGVyUHJvcHMpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyU2xpZGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyU2xpZGUoc3RhcnRYLCBlbmRYKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM5ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgeSA9IF90aGlzJHByb3BzOS55LFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczkuaGVpZ2h0LFxuICAgICAgICBzdHJva2UgPSBfdGhpcyRwcm9wczkuc3Ryb2tlLFxuICAgICAgICB0cmF2ZWxsZXJXaWR0aCA9IF90aGlzJHByb3BzOS50cmF2ZWxsZXJXaWR0aDtcbiAgICAgIHZhciB4ID0gTWF0aC5taW4oc3RhcnRYLCBlbmRYKSArIHRyYXZlbGxlcldpZHRoO1xuICAgICAgdmFyIHdpZHRoID0gTWF0aC5tYXgoTWF0aC5hYnMoZW5kWCAtIHN0YXJ0WCkgLSB0cmF2ZWxsZXJXaWR0aCwgMCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWJydXNoLXNsaWRlXCIsXG4gICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5oYW5kbGVFbnRlclNsaWRlT3JUcmF2ZWxsZXIsXG4gICAgICAgIG9uTW91c2VMZWF2ZTogdGhpcy5oYW5kbGVMZWF2ZVNsaWRlT3JUcmF2ZWxsZXIsXG4gICAgICAgIG9uTW91c2VEb3duOiB0aGlzLmhhbmRsZVNsaWRlRHJhZ1N0YXJ0LFxuICAgICAgICBvblRvdWNoU3RhcnQ6IHRoaXMuaGFuZGxlU2xpZGVEcmFnU3RhcnQsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgY3Vyc29yOiAnbW92ZSdcbiAgICAgICAgfSxcbiAgICAgICAgc3Ryb2tlOiBcIm5vbmVcIixcbiAgICAgICAgZmlsbDogc3Ryb2tlLFxuICAgICAgICBmaWxsT3BhY2l0eTogMC4yLFxuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyVGV4dFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJUZXh0KCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMTAgPSB0aGlzLnByb3BzLFxuICAgICAgICBzdGFydEluZGV4ID0gX3RoaXMkcHJvcHMxMC5zdGFydEluZGV4LFxuICAgICAgICBlbmRJbmRleCA9IF90aGlzJHByb3BzMTAuZW5kSW5kZXgsXG4gICAgICAgIHkgPSBfdGhpcyRwcm9wczEwLnksXG4gICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzMTAuaGVpZ2h0LFxuICAgICAgICB0cmF2ZWxsZXJXaWR0aCA9IF90aGlzJHByb3BzMTAudHJhdmVsbGVyV2lkdGgsXG4gICAgICAgIHN0cm9rZSA9IF90aGlzJHByb3BzMTAuc3Ryb2tlO1xuICAgICAgdmFyIF90aGlzJHN0YXRlNCA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHN0YXJ0WCA9IF90aGlzJHN0YXRlNC5zdGFydFgsXG4gICAgICAgIGVuZFggPSBfdGhpcyRzdGF0ZTQuZW5kWDtcbiAgICAgIHZhciBvZmZzZXQgPSA1O1xuICAgICAgdmFyIGF0dHJzID0ge1xuICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgIGZpbGw6IHN0cm9rZVxuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtYnJ1c2gtdGV4dHNcIlxuICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGV4dCwgX2V4dGVuZHMoe1xuICAgICAgICB0ZXh0QW5jaG9yOiBcImVuZFwiLFxuICAgICAgICB2ZXJ0aWNhbEFuY2hvcjogXCJtaWRkbGVcIixcbiAgICAgICAgeDogTWF0aC5taW4oc3RhcnRYLCBlbmRYKSAtIG9mZnNldCxcbiAgICAgICAgeTogeSArIGhlaWdodCAvIDJcbiAgICAgIH0sIGF0dHJzKSwgdGhpcy5nZXRUZXh0T2ZUaWNrKHN0YXJ0SW5kZXgpKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGV4dCwgX2V4dGVuZHMoe1xuICAgICAgICB0ZXh0QW5jaG9yOiBcInN0YXJ0XCIsXG4gICAgICAgIHZlcnRpY2FsQW5jaG9yOiBcIm1pZGRsZVwiLFxuICAgICAgICB4OiBNYXRoLm1heChzdGFydFgsIGVuZFgpICsgdHJhdmVsbGVyV2lkdGggKyBvZmZzZXQsXG4gICAgICAgIHk6IHkgKyBoZWlnaHQgLyAyXG4gICAgICB9LCBhdHRycyksIHRoaXMuZ2V0VGV4dE9mVGljayhlbmRJbmRleCkpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczExID0gdGhpcy5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzMTEuZGF0YSxcbiAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMxMS5jbGFzc05hbWUsXG4gICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMxMS5jaGlsZHJlbixcbiAgICAgICAgeCA9IF90aGlzJHByb3BzMTEueCxcbiAgICAgICAgeSA9IF90aGlzJHByb3BzMTEueSxcbiAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczExLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczExLmhlaWdodCxcbiAgICAgICAgYWx3YXlzU2hvd1RleHQgPSBfdGhpcyRwcm9wczExLmFsd2F5c1Nob3dUZXh0O1xuICAgICAgdmFyIF90aGlzJHN0YXRlNSA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHN0YXJ0WCA9IF90aGlzJHN0YXRlNS5zdGFydFgsXG4gICAgICAgIGVuZFggPSBfdGhpcyRzdGF0ZTUuZW5kWCxcbiAgICAgICAgaXNUZXh0QWN0aXZlID0gX3RoaXMkc3RhdGU1LmlzVGV4dEFjdGl2ZSxcbiAgICAgICAgaXNTbGlkZU1vdmluZyA9IF90aGlzJHN0YXRlNS5pc1NsaWRlTW92aW5nLFxuICAgICAgICBpc1RyYXZlbGxlck1vdmluZyA9IF90aGlzJHN0YXRlNS5pc1RyYXZlbGxlck1vdmluZyxcbiAgICAgICAgaXNUcmF2ZWxsZXJGb2N1c2VkID0gX3RoaXMkc3RhdGU1LmlzVHJhdmVsbGVyRm9jdXNlZDtcbiAgICAgIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGggfHwgIWlzTnVtYmVyKHgpIHx8ICFpc051bWJlcih5KSB8fCAhaXNOdW1iZXIod2lkdGgpIHx8ICFpc051bWJlcihoZWlnaHQpIHx8IHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgbGF5ZXJDbGFzcyA9IGNsc3goJ3JlY2hhcnRzLWJydXNoJywgY2xhc3NOYW1lKTtcbiAgICAgIHZhciBpc1Bhbm9yYW1pYyA9IFJlYWN0LkNoaWxkcmVuLmNvdW50KGNoaWxkcmVuKSA9PT0gMTtcbiAgICAgIHZhciBzdHlsZSA9IGdlbmVyYXRlUHJlZml4U3R5bGUoJ3VzZXJTZWxlY3QnLCAnbm9uZScpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzcyxcbiAgICAgICAgb25Nb3VzZUxlYXZlOiB0aGlzLmhhbmRsZUxlYXZlV3JhcHBlcixcbiAgICAgICAgb25Ub3VjaE1vdmU6IHRoaXMuaGFuZGxlVG91Y2hNb3ZlLFxuICAgICAgICBzdHlsZTogc3R5bGVcbiAgICAgIH0sIHRoaXMucmVuZGVyQmFja2dyb3VuZCgpLCBpc1Bhbm9yYW1pYyAmJiB0aGlzLnJlbmRlclBhbm9yYW1hKCksIHRoaXMucmVuZGVyU2xpZGUoc3RhcnRYLCBlbmRYKSwgdGhpcy5yZW5kZXJUcmF2ZWxsZXJMYXllcihzdGFydFgsICdzdGFydFgnKSwgdGhpcy5yZW5kZXJUcmF2ZWxsZXJMYXllcihlbmRYLCAnZW5kWCcpLCAoaXNUZXh0QWN0aXZlIHx8IGlzU2xpZGVNb3ZpbmcgfHwgaXNUcmF2ZWxsZXJNb3ZpbmcgfHwgaXNUcmF2ZWxsZXJGb2N1c2VkIHx8IGFsd2F5c1Nob3dUZXh0KSAmJiB0aGlzLnJlbmRlclRleHQoKSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwicmVuZGVyRGVmYXVsdFRyYXZlbGxlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJEZWZhdWx0VHJhdmVsbGVyKHByb3BzKSB7XG4gICAgICB2YXIgeCA9IHByb3BzLngsXG4gICAgICAgIHkgPSBwcm9wcy55LFxuICAgICAgICB3aWR0aCA9IHByb3BzLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgICAgIHN0cm9rZSA9IHByb3BzLnN0cm9rZTtcbiAgICAgIHZhciBsaW5lWSA9IE1hdGguZmxvb3IoeSArIGhlaWdodCAvIDIpIC0gMTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgZmlsbDogc3Ryb2tlLFxuICAgICAgICBzdHJva2U6IFwibm9uZVwiXG4gICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaW5lXCIsIHtcbiAgICAgICAgeDE6IHggKyAxLFxuICAgICAgICB5MTogbGluZVksXG4gICAgICAgIHgyOiB4ICsgd2lkdGggLSAxLFxuICAgICAgICB5MjogbGluZVksXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiI2ZmZlwiXG4gICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaW5lXCIsIHtcbiAgICAgICAgeDE6IHggKyAxLFxuICAgICAgICB5MTogbGluZVkgKyAyLFxuICAgICAgICB4MjogeCArIHdpZHRoIC0gMSxcbiAgICAgICAgeTI6IGxpbmVZICsgMixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCIjZmZmXCJcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyVHJhdmVsbGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclRyYXZlbGxlcihvcHRpb24sIHByb3BzKSB7XG4gICAgICB2YXIgcmVjdGFuZ2xlO1xuICAgICAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQob3B0aW9uKSkge1xuICAgICAgICByZWN0YW5nbGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKG9wdGlvbikpIHtcbiAgICAgICAgcmVjdGFuZ2xlID0gb3B0aW9uKHByb3BzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlY3RhbmdsZSA9IEJydXNoLnJlbmRlckRlZmF1bHRUcmF2ZWxsZXIocHJvcHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlY3RhbmdsZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgdmFyIGRhdGEgPSBuZXh0UHJvcHMuZGF0YSxcbiAgICAgICAgd2lkdGggPSBuZXh0UHJvcHMud2lkdGgsXG4gICAgICAgIHggPSBuZXh0UHJvcHMueCxcbiAgICAgICAgdHJhdmVsbGVyV2lkdGggPSBuZXh0UHJvcHMudHJhdmVsbGVyV2lkdGgsXG4gICAgICAgIHVwZGF0ZUlkID0gbmV4dFByb3BzLnVwZGF0ZUlkLFxuICAgICAgICBzdGFydEluZGV4ID0gbmV4dFByb3BzLnN0YXJ0SW5kZXgsXG4gICAgICAgIGVuZEluZGV4ID0gbmV4dFByb3BzLmVuZEluZGV4O1xuICAgICAgaWYgKGRhdGEgIT09IHByZXZTdGF0ZS5wcmV2RGF0YSB8fCB1cGRhdGVJZCAhPT0gcHJldlN0YXRlLnByZXZVcGRhdGVJZCkge1xuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgcHJldkRhdGE6IGRhdGEsXG4gICAgICAgICAgcHJldlRyYXZlbGxlcldpZHRoOiB0cmF2ZWxsZXJXaWR0aCxcbiAgICAgICAgICBwcmV2VXBkYXRlSWQ6IHVwZGF0ZUlkLFxuICAgICAgICAgIHByZXZYOiB4LFxuICAgICAgICAgIHByZXZXaWR0aDogd2lkdGhcbiAgICAgICAgfSwgZGF0YSAmJiBkYXRhLmxlbmd0aCA/IGNyZWF0ZVNjYWxlKHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHRyYXZlbGxlcldpZHRoOiB0cmF2ZWxsZXJXaWR0aCxcbiAgICAgICAgICBzdGFydEluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgIGVuZEluZGV4OiBlbmRJbmRleFxuICAgICAgICB9KSA6IHtcbiAgICAgICAgICBzY2FsZTogbnVsbCxcbiAgICAgICAgICBzY2FsZVZhbHVlczogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2U3RhdGUuc2NhbGUgJiYgKHdpZHRoICE9PSBwcmV2U3RhdGUucHJldldpZHRoIHx8IHggIT09IHByZXZTdGF0ZS5wcmV2WCB8fCB0cmF2ZWxsZXJXaWR0aCAhPT0gcHJldlN0YXRlLnByZXZUcmF2ZWxsZXJXaWR0aCkpIHtcbiAgICAgICAgcHJldlN0YXRlLnNjYWxlLnJhbmdlKFt4LCB4ICsgd2lkdGggLSB0cmF2ZWxsZXJXaWR0aF0pO1xuICAgICAgICB2YXIgc2NhbGVWYWx1ZXMgPSBwcmV2U3RhdGUuc2NhbGUuZG9tYWluKCkubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgIHJldHVybiBwcmV2U3RhdGUuc2NhbGUoZW50cnkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcmV2RGF0YTogZGF0YSxcbiAgICAgICAgICBwcmV2VHJhdmVsbGVyV2lkdGg6IHRyYXZlbGxlcldpZHRoLFxuICAgICAgICAgIHByZXZVcGRhdGVJZDogdXBkYXRlSWQsXG4gICAgICAgICAgcHJldlg6IHgsXG4gICAgICAgICAgcHJldldpZHRoOiB3aWR0aCxcbiAgICAgICAgICBzdGFydFg6IHByZXZTdGF0ZS5zY2FsZShuZXh0UHJvcHMuc3RhcnRJbmRleCksXG4gICAgICAgICAgZW5kWDogcHJldlN0YXRlLnNjYWxlKG5leHRQcm9wcy5lbmRJbmRleCksXG4gICAgICAgICAgc2NhbGVWYWx1ZXM6IHNjYWxlVmFsdWVzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW5kZXhJblJhbmdlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEluZGV4SW5SYW5nZSh2YWx1ZVJhbmdlLCB4KSB7XG4gICAgICB2YXIgbGVuID0gdmFsdWVSYW5nZS5sZW5ndGg7XG4gICAgICB2YXIgc3RhcnQgPSAwO1xuICAgICAgdmFyIGVuZCA9IGxlbiAtIDE7XG4gICAgICB3aGlsZSAoZW5kIC0gc3RhcnQgPiAxKSB7XG4gICAgICAgIHZhciBtaWRkbGUgPSBNYXRoLmZsb29yKChzdGFydCArIGVuZCkgLyAyKTtcbiAgICAgICAgaWYgKHZhbHVlUmFuZ2VbbWlkZGxlXSA+IHgpIHtcbiAgICAgICAgICBlbmQgPSBtaWRkbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhcnQgPSBtaWRkbGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB4ID49IHZhbHVlUmFuZ2VbZW5kXSA/IGVuZCA6IHN0YXJ0O1xuICAgIH1cbiAgfV0pO1xufShQdXJlQ29tcG9uZW50KTtcbl9kZWZpbmVQcm9wZXJ0eShCcnVzaCwgXCJkaXNwbGF5TmFtZVwiLCAnQnJ1c2gnKTtcbl9kZWZpbmVQcm9wZXJ0eShCcnVzaCwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBoZWlnaHQ6IDQwLFxuICB0cmF2ZWxsZXJXaWR0aDogNSxcbiAgZ2FwOiAxLFxuICBmaWxsOiAnI2ZmZicsXG4gIHN0cm9rZTogJyM2NjYnLFxuICBwYWRkaW5nOiB7XG4gICAgdG9wOiAxLFxuICAgIHJpZ2h0OiAxLFxuICAgIGJvdHRvbTogMSxcbiAgICBsZWZ0OiAxXG4gIH0sXG4gIGxlYXZlVGltZU91dDogMTAwMCxcbiAgYWx3YXlzU2hvd1RleHQ6IGZhbHNlXG59KTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIkNoaWxkcmVuIiwiY2xzeCIsInNjYWxlUG9pbnQiLCJpc0Z1bmN0aW9uIiwicmFuZ2UiLCJMYXllciIsIlRleHQiLCJnZXRWYWx1ZUJ5RGF0YUtleSIsImlzTnVtYmVyIiwiZ2VuZXJhdGVQcmVmaXhTdHlsZSIsImZpbHRlclByb3BzIiwiY3JlYXRlU2NhbGUiLCJfcmVmIiwiZGF0YSIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsIngiLCJ3aWR0aCIsInRyYXZlbGxlcldpZHRoIiwibGVuIiwic2NhbGUiLCJkb21haW4iLCJzY2FsZVZhbHVlcyIsIm1hcCIsImVudHJ5IiwiaXNUZXh0QWN0aXZlIiwiaXNTbGlkZU1vdmluZyIsImlzVHJhdmVsbGVyTW92aW5nIiwiaXNUcmF2ZWxsZXJGb2N1c2VkIiwic3RhcnRYIiwiZW5kWCIsImlzVG91Y2giLCJjaGFuZ2VkVG91Y2hlcyIsIkJydXNoIiwiX1B1cmVDb21wb25lbnQiLCJfdGhpcyIsImxlYXZlVGltZXIiLCJjbGVhclRpbWVvdXQiLCJzdGF0ZSIsImhhbmRsZVRyYXZlbGxlck1vdmUiLCJoYW5kbGVTbGlkZURyYWciLCJoYW5kbGVEcmFnIiwic2V0U3RhdGUiLCJfdGhpcyRwcm9wcyIsIm9uRHJhZ0VuZCIsImRldGFjaERyYWdFbmRMaXN0ZW5lciIsIndpbmRvdyIsInNldFRpbWVvdXQiLCJoYW5kbGVEcmFnRW5kIiwibGVhdmVUaW1lT3V0IiwiZXZlbnQiLCJzbGlkZU1vdmVTdGFydFgiLCJwYWdlWCIsImF0dGFjaERyYWdFbmRMaXN0ZW5lciIsInRyYXZlbGxlckRyYWdTdGFydEhhbmRsZXJzIiwiaGFuZGxlVHJhdmVsbGVyRHJhZ1N0YXJ0IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJnZXRJbmRleCIsIl9yZWYyIiwiX3RoaXMkcHJvcHMyIiwiZ2FwIiwibGFzdEluZGV4IiwibWluIiwiTWF0aCIsIm1heCIsIm1pbkluZGV4IiwiZ2V0SW5kZXhJblJhbmdlIiwibWF4SW5kZXgiLCJnZXRUZXh0T2ZUaWNrIiwiaW5kZXgiLCJfdGhpcyRwcm9wczMiLCJ0aWNrRm9ybWF0dGVyIiwiZGF0YUtleSIsInRleHQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl90aGlzJHN0YXRlIiwiX3RoaXMkcHJvcHM0Iiwib25DaGFuZ2UiLCJkZWx0YSIsIm5ld0luZGV4IiwiaWQiLCJtb3ZpbmdUcmF2ZWxsZXJJZCIsImJydXNoTW92ZVN0YXJ0WCIsIl90aGlzJHN0YXRlMiIsInByZXZWYWx1ZSIsIl90aGlzJHByb3BzNSIsInBhcmFtcyIsImlzRnVsbEdhcCIsImhhbmRsZVRyYXZlbGxlck1vdmVLZXlib2FyZCIsImRpcmVjdGlvbiIsIl90aGlzMiIsIl90aGlzJHN0YXRlMyIsImN1cnJlbnRTY2FsZVZhbHVlIiwiY3VycmVudEluZGV4IiwiaW5kZXhPZiIsIm5ld1NjYWxlVmFsdWUiLCJyZW5kZXJCYWNrZ3JvdW5kIiwiX3RoaXMkcHJvcHM2IiwieSIsImhlaWdodCIsImZpbGwiLCJzdHJva2UiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyUGFub3JhbWEiLCJfdGhpcyRwcm9wczciLCJjaGlsZHJlbiIsInBhZGRpbmciLCJjaGFydEVsZW1lbnQiLCJvbmx5IiwiY2xvbmVFbGVtZW50IiwibWFyZ2luIiwiY29tcGFjdCIsInJlbmRlclRyYXZlbGxlckxheWVyIiwidHJhdmVsbGVyWCIsIl9kYXRhJHN0YXJ0SW5kZXgiLCJfZGF0YSRlbmRJbmRleCIsIl90aGlzMyIsIl90aGlzJHByb3BzOCIsInRyYXZlbGxlciIsImFyaWFMYWJlbCIsInRyYXZlbGxlclByb3BzIiwiYXJpYUxhYmVsQnJ1c2giLCJjb25jYXQiLCJuYW1lIiwidGFiSW5kZXgiLCJyb2xlIiwiY2xhc3NOYW1lIiwib25Nb3VzZUVudGVyIiwiaGFuZGxlRW50ZXJTbGlkZU9yVHJhdmVsbGVyIiwib25Nb3VzZUxlYXZlIiwiaGFuZGxlTGVhdmVTbGlkZU9yVHJhdmVsbGVyIiwib25Nb3VzZURvd24iLCJvblRvdWNoU3RhcnQiLCJvbktleURvd24iLCJpbmNsdWRlcyIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwib25Gb2N1cyIsIm9uQmx1ciIsInN0eWxlIiwiY3Vyc29yIiwicmVuZGVyVHJhdmVsbGVyIiwicmVuZGVyU2xpZGUiLCJfdGhpcyRwcm9wczkiLCJhYnMiLCJoYW5kbGVTbGlkZURyYWdTdGFydCIsImZpbGxPcGFjaXR5IiwicmVuZGVyVGV4dCIsIl90aGlzJHByb3BzMTAiLCJfdGhpcyRzdGF0ZTQiLCJvZmZzZXQiLCJhdHRycyIsInBvaW50ZXJFdmVudHMiLCJ0ZXh0QW5jaG9yIiwidmVydGljYWxBbmNob3IiLCJyZW5kZXIiLCJfdGhpcyRwcm9wczExIiwiYWx3YXlzU2hvd1RleHQiLCJfdGhpcyRzdGF0ZTUiLCJsYXllckNsYXNzIiwiaXNQYW5vcmFtaWMiLCJjb3VudCIsImhhbmRsZUxlYXZlV3JhcHBlciIsIm9uVG91Y2hNb3ZlIiwiaGFuZGxlVG91Y2hNb3ZlIiwicmVuZGVyRGVmYXVsdFRyYXZlbGxlciIsImxpbmVZIiwiZmxvb3IiLCJGcmFnbWVudCIsIngxIiwieTEiLCJ4MiIsInkyIiwib3B0aW9uIiwicmVjdGFuZ2xlIiwiaXNWYWxpZEVsZW1lbnQiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJuZXh0UHJvcHMiLCJwcmV2U3RhdGUiLCJ1cGRhdGVJZCIsInByZXZEYXRhIiwicHJldlVwZGF0ZUlkIiwicHJldlRyYXZlbGxlcldpZHRoIiwicHJldlgiLCJwcmV2V2lkdGgiLCJ2YWx1ZVJhbmdlIiwic3RhcnQiLCJlbmQiLCJtaWRkbGUiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/Brush.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/CartesianAxis.js":
/*!**************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/CartesianAxis.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CartesianAxis: () => (/* binding */ CartesianAxis)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_ShallowEqual__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ShallowEqual */ \"(ssr)/./node_modules/recharts/es6/util/ShallowEqual.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_Text__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../component/Text */ \"(ssr)/./node_modules/recharts/es6/component/Text.js\");\n/* harmony import */ var _component_Label__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../component/Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _getTicks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getTicks */ \"(ssr)/./node_modules/recharts/es6/cartesian/getTicks.js\");\nvar _excluded = [\n \"viewBox\"\n], _excluded2 = [\n \"viewBox\"\n], _excluded3 = [\n \"ticks\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Cartesian Axis\n */ \n\n\n\n\n\n\n\n\n\n\n\n/** The orientation of the axis in correspondence to the chart */ /** A unit to be appended to a value */ /** The formatter function of tick */ var CartesianAxis = /*#__PURE__*/ function(_Component) {\n function CartesianAxis(props) {\n var _this;\n _classCallCheck(this, CartesianAxis);\n _this = _callSuper(this, CartesianAxis, [\n props\n ]);\n _this.state = {\n fontSize: '',\n letterSpacing: ''\n };\n return _this;\n }\n _inherits(CartesianAxis, _Component);\n return _createClass(CartesianAxis, [\n {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref, nextState) {\n var viewBox = _ref.viewBox, restProps = _objectWithoutProperties(_ref, _excluded);\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props, viewBoxOld = _this$props.viewBox, restPropsOld = _objectWithoutProperties(_this$props, _excluded2);\n return !(0,_util_ShallowEqual__WEBPACK_IMPORTED_MODULE_4__.shallowEqual)(viewBox, viewBoxOld) || !(0,_util_ShallowEqual__WEBPACK_IMPORTED_MODULE_4__.shallowEqual)(restProps, restPropsOld) || !(0,_util_ShallowEqual__WEBPACK_IMPORTED_MODULE_4__.shallowEqual)(nextState, this.state);\n }\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var htmlLayer = this.layerReference;\n if (!htmlLayer) return;\n var tick = htmlLayer.getElementsByClassName('recharts-cartesian-axis-tick-value')[0];\n if (tick) {\n this.setState({\n fontSize: window.getComputedStyle(tick).fontSize,\n letterSpacing: window.getComputedStyle(tick).letterSpacing\n });\n }\n }\n },\n {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props, x = _this$props2.x, y = _this$props2.y, width = _this$props2.width, height = _this$props2.height, orientation = _this$props2.orientation, tickSize = _this$props2.tickSize, mirror = _this$props2.mirror, tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(data.tickCoord) ? data.tickCoord : data.coordinate;\n switch(orientation){\n case 'top':\n x1 = x2 = data.coordinate;\n y2 = y + +!mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n case 'left':\n y1 = y2 = data.coordinate;\n x2 = x + +!mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n case 'right':\n y1 = y2 = data.coordinate;\n x2 = x + +mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n default:\n x1 = x2 = data.coordinate;\n y2 = y + +mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n },\n {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props, orientation = _this$props3.orientation, mirror = _this$props3.mirror;\n var textAnchor;\n switch(orientation){\n case 'left':\n textAnchor = mirror ? 'start' : 'end';\n break;\n case 'right':\n textAnchor = mirror ? 'end' : 'start';\n break;\n default:\n textAnchor = 'middle';\n break;\n }\n return textAnchor;\n }\n },\n {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props, orientation = _this$props4.orientation, mirror = _this$props4.mirror;\n var verticalAnchor = 'end';\n switch(orientation){\n case 'left':\n case 'right':\n verticalAnchor = 'middle';\n break;\n case 'top':\n verticalAnchor = mirror ? 'start' : 'end';\n break;\n default:\n verticalAnchor = mirror ? 'end' : 'start';\n break;\n }\n return verticalAnchor;\n }\n },\n {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props, x = _this$props5.x, y = _this$props5.y, width = _this$props5.width, height = _this$props5.height, orientation = _this$props5.orientation, mirror = _this$props5.mirror, axisLine = _this$props5.axisLine;\n var props = _objectSpread(_objectSpread(_objectSpread({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(this.props, false)), (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(axisLine, false)), {}, {\n fill: 'none'\n });\n if (orientation === 'top' || orientation === 'bottom') {\n var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({}, props, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('recharts-cartesian-axis-line', lodash_get__WEBPACK_IMPORTED_MODULE_2___default()(axisLine, 'className'))\n }));\n }\n },\n {\n key: \"renderTicks\",\n value: /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @param {string} fontSize Fontsize to consider for tick spacing\n * @param {string} letterSpacing Letterspacing to consider for tick spacing\n * @return {ReactComponent} renderedTicks\n */ function renderTicks(ticks, fontSize, letterSpacing) {\n var _this2 = this;\n var _this$props6 = this.props, tickLine = _this$props6.tickLine, stroke = _this$props6.stroke, tick = _this$props6.tick, tickFormatter = _this$props6.tickFormatter, unit = _this$props6.unit;\n var finalTicks = (0,_getTicks__WEBPACK_IMPORTED_MODULE_7__.getTicks)(_objectSpread(_objectSpread({}, this.props), {}, {\n ticks: ticks\n }), fontSize, letterSpacing);\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(this.props, false);\n var customTickProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(tick, false);\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(tickLine, false));\n var items = finalTicks.map(function(entry, i) {\n var _this2$getTickLineCoo = _this2.getTickLineCoord(entry), lineCoord = _this2$getTickLineCoo.line, tickCoord = _this2$getTickLineCoo.tick;\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), tickCoord), {}, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length,\n tickFormatter: tickFormatter\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_8__.Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(entry.value, \"-\").concat(entry.coordinate, \"-\").concat(entry.tickCoord)\n }, (0,_util_types__WEBPACK_IMPORTED_MODULE_9__.adaptEventsOfChild)(_this2.props, entry, i)), tickLine && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('recharts-cartesian-axis-tick-line', lodash_get__WEBPACK_IMPORTED_MODULE_2___default()(tickLine, 'className'))\n })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || '')));\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var _this$props7 = this.props, axisLine = _this$props7.axisLine, width = _this$props7.width, height = _this$props7.height, ticksGenerator = _this$props7.ticksGenerator, className = _this$props7.className, hide = _this$props7.hide;\n if (hide) {\n return null;\n }\n var _this$props8 = this.props, ticks = _this$props8.ticks, noTicksProps = _objectWithoutProperties(_this$props8, _excluded3);\n var finalTicks = ticks;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_8__.Layer, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('recharts-cartesian-axis', className),\n ref: function ref(_ref2) {\n _this3.layerReference = _ref2;\n }\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing), _component_Label__WEBPACK_IMPORTED_MODULE_10__.Label.renderCallByParent(this.props));\n }\n }\n ], [\n {\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n var combinedClassName = (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(props.className, 'recharts-cartesian-axis-tick-value');\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n tickItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, _objectSpread(_objectSpread({}, props), {}, {\n className: combinedClassName\n }));\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n tickItem = option(_objectSpread(_objectSpread({}, props), {}, {\n className: combinedClassName\n }));\n } else {\n tickItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Text__WEBPACK_IMPORTED_MODULE_11__.Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n_defineProperty(CartesianAxis, \"displayName\", 'CartesianAxis');\n_defineProperty(CartesianAxis, \"defaultProps\", {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [],\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9DYXJ0ZXNpYW5BeGlzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJQSxZQUFZO0lBQUM7Q0FBVSxFQUN6QkMsYUFBYTtJQUFDO0NBQVUsRUFDeEJDLGFBQWE7SUFBQztDQUFRO0FBQ3hCLFNBQVNDLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9GLFNBQVMsQ0FBQ1csY0FBYyxDQUFDQyxJQUFJLENBQUNILFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNZLEtBQUssQ0FBQyxJQUFJLEVBQUVOO0FBQVk7QUFDbFYsU0FBU08sUUFBUUMsQ0FBQyxFQUFFQyxDQUFDO0lBQUksSUFBSUMsSUFBSWYsT0FBT2dCLElBQUksQ0FBQ0g7SUFBSSxJQUFJYixPQUFPaUIscUJBQXFC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LFdBQVcsR0FBRXRFLDJEQUFvQixDQUFDd0csU0FBUztvQkFDOUNDLFdBQVcsV0FBVyxHQUFFekcseURBQWtCLENBQUN3RyxRQUFRM0osY0FBY0EsY0FBYyxDQUFDLEdBQUdpQixRQUFRLENBQUMsR0FBRzt3QkFDN0Z3RyxXQUFXb0M7b0JBQ2I7Z0JBQ0YsT0FBTyxJQUFJeEcsd0RBQVVBLENBQUNzRyxTQUFTO29CQUM3QkMsV0FBV0QsT0FBTzNKLGNBQWNBLGNBQWMsQ0FBQyxHQUFHaUIsUUFBUSxDQUFDLEdBQUc7d0JBQzVEd0csV0FBV29DO29CQUNiO2dCQUNGLE9BQU87b0JBQ0xELFdBQVcsV0FBVyxHQUFFekcsMERBQW1CLENBQUNPLGtEQUFJQSxFQUFFakYsU0FBUyxDQUFDLEdBQUd3QyxPQUFPO3dCQUNwRXdHLFdBQVc7b0JBQ2IsSUFBSTlFO2dCQUNOO2dCQUNBLE9BQU9pSDtZQUNUO1FBQ0Y7S0FBRTtBQUNKLEVBQUV4Ryw0Q0FBU0EsRUFBRTtBQUNibEQsZ0JBQWdCOEQsZUFBZSxlQUFlO0FBQzlDOUQsZ0JBQWdCOEQsZUFBZSxnQkFBZ0I7SUFDN0N5QixHQUFHO0lBQ0hDLEdBQUc7SUFDSEMsT0FBTztJQUNQQyxRQUFRO0lBQ1JuQixTQUFTO1FBQ1BnQixHQUFHO1FBQ0hDLEdBQUc7UUFDSEMsT0FBTztRQUNQQyxRQUFRO0lBQ1Y7SUFDQSwwQkFBMEI7SUFDMUJDLGFBQWE7SUFDYixZQUFZO0lBQ1o4QixPQUFPLEVBQUU7SUFDVEksUUFBUTtJQUNSRCxVQUFVO0lBQ1ZWLFVBQVU7SUFDVm5DLE1BQU07SUFDTmMsUUFBUTtJQUNSaUUsWUFBWTtJQUNaLDhCQUE4QjtJQUM5QmxFLFVBQVU7SUFDVkUsWUFBWTtJQUNaaUUsVUFBVTtBQUNaIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jYXJ0ZXNpYW4vQ2FydGVzaWFuQXhpcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1widmlld0JveFwiXSxcbiAgX2V4Y2x1ZGVkMiA9IFtcInZpZXdCb3hcIl0sXG4gIF9leGNsdWRlZDMgPSBbXCJ0aWNrc1wiXTtcbmZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IENhcnRlc2lhbiBBeGlzXG4gKi9cbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwgfSBmcm9tICcuLi91dGlsL1NoYWxsb3dFcXVhbCc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50L1RleHQnO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuLi9jb21wb25lbnQvTGFiZWwnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBhZGFwdEV2ZW50c09mQ2hpbGQgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmltcG9ydCB7IGdldFRpY2tzIH0gZnJvbSAnLi9nZXRUaWNrcyc7XG5cbi8qKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIGF4aXMgaW4gY29ycmVzcG9uZGVuY2UgdG8gdGhlIGNoYXJ0ICovXG5cbi8qKiBBIHVuaXQgdG8gYmUgYXBwZW5kZWQgdG8gYSB2YWx1ZSAqL1xuXG4vKiogVGhlIGZvcm1hdHRlciBmdW5jdGlvbiBvZiB0aWNrICovXG5cbmV4cG9ydCB2YXIgQ2FydGVzaWFuQXhpcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBmdW5jdGlvbiBDYXJ0ZXNpYW5BeGlzKHByb3BzKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYXJ0ZXNpYW5BeGlzKTtcbiAgICBfdGhpcyA9IF9jYWxsU3VwZXIodGhpcywgQ2FydGVzaWFuQXhpcywgW3Byb3BzXSk7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBmb250U2l6ZTogJycsXG4gICAgICBsZXR0ZXJTcGFjaW5nOiAnJ1xuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9pbmhlcml0cyhDYXJ0ZXNpYW5BeGlzLCBfQ29tcG9uZW50KTtcbiAgcmV0dXJuIF9jcmVhdGVDbGFzcyhDYXJ0ZXNpYW5BeGlzLCBbe1xuICAgIGtleTogXCJzaG91bGRDb21wb25lbnRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hvdWxkQ29tcG9uZW50VXBkYXRlKF9yZWYsIG5leHRTdGF0ZSkge1xuICAgICAgdmFyIHZpZXdCb3ggPSBfcmVmLnZpZXdCb3gsXG4gICAgICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuICAgICAgLy8gcHJvcHMudmlld0JveCBpcyBzb21ldGltZXMgZ2VuZXJhdGVkIGV2ZXJ5IHRpbWUgLVxuICAgICAgLy8gY2hlY2sgdGhhdCBzcGVjaWFsbHkgYXMgb2JqZWN0IGVxdWFsaXR5IGlzIGxpa2VseSB0byBmYWlsXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICB2aWV3Qm94T2xkID0gX3RoaXMkcHJvcHMudmlld0JveCxcbiAgICAgICAgcmVzdFByb3BzT2xkID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzLCBfZXhjbHVkZWQyKTtcbiAgICAgIHJldHVybiAhc2hhbGxvd0VxdWFsKHZpZXdCb3gsIHZpZXdCb3hPbGQpIHx8ICFzaGFsbG93RXF1YWwocmVzdFByb3BzLCByZXN0UHJvcHNPbGQpIHx8ICFzaGFsbG93RXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB2YXIgaHRtbExheWVyID0gdGhpcy5sYXllclJlZmVyZW5jZTtcbiAgICAgIGlmICghaHRtbExheWVyKSByZXR1cm47XG4gICAgICB2YXIgdGljayA9IGh0bWxMYXllci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyZWNoYXJ0cy1jYXJ0ZXNpYW4tYXhpcy10aWNrLXZhbHVlJylbMF07XG4gICAgICBpZiAodGljaykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBmb250U2l6ZTogd2luZG93LmdldENvbXB1dGVkU3R5bGUodGljaykuZm9udFNpemUsXG4gICAgICAgICAgbGV0dGVyU3BhY2luZzogd2luZG93LmdldENvbXB1dGVkU3R5bGUodGljaykubGV0dGVyU3BhY2luZ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgdGhlIGNvb3JkaW5hdGVzIG9mIGVuZHBvaW50cyBpbiB0aWNrc1xuICAgICAqIEBwYXJhbSAge09iamVjdH0gZGF0YSBUaGUgZGF0YSBvZiBhIHNpbXBsZSB0aWNrXG4gICAgICogQHJldHVybiB7T2JqZWN0fSAoeDEsIHkxKTogVGhlIGNvb3JkaW5hdGUgb2YgZW5kcG9pbnQgY2xvc2UgdG8gdGljayB0ZXh0XG4gICAgICogICh4MiwgeTIpOiBUaGUgY29vcmRpbmF0ZSBvZiBlbmRwb2ludCBjbG9zZSB0byBheGlzXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGlja0xpbmVDb29yZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUaWNrTGluZUNvb3JkKGRhdGEpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICB4ID0gX3RoaXMkcHJvcHMyLngsXG4gICAgICAgIHkgPSBfdGhpcyRwcm9wczIueSxcbiAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczIud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzMi5oZWlnaHQsXG4gICAgICAgIG9yaWVudGF0aW9uID0gX3RoaXMkcHJvcHMyLm9yaWVudGF0aW9uLFxuICAgICAgICB0aWNrU2l6ZSA9IF90aGlzJHByb3BzMi50aWNrU2l6ZSxcbiAgICAgICAgbWlycm9yID0gX3RoaXMkcHJvcHMyLm1pcnJvcixcbiAgICAgICAgdGlja01hcmdpbiA9IF90aGlzJHByb3BzMi50aWNrTWFyZ2luO1xuICAgICAgdmFyIHgxLCB4MiwgeTEsIHkyLCB0eCwgdHk7XG4gICAgICB2YXIgc2lnbiA9IG1pcnJvciA/IC0xIDogMTtcbiAgICAgIHZhciBmaW5hbFRpY2tTaXplID0gZGF0YS50aWNrU2l6ZSB8fCB0aWNrU2l6ZTtcbiAgICAgIHZhciB0aWNrQ29vcmQgPSBpc051bWJlcihkYXRhLnRpY2tDb29yZCkgPyBkYXRhLnRpY2tDb29yZCA6IGRhdGEuY29vcmRpbmF0ZTtcbiAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHtcbiAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICB4MSA9IHgyID0gZGF0YS5jb29yZGluYXRlO1xuICAgICAgICAgIHkyID0geSArICshbWlycm9yICogaGVpZ2h0O1xuICAgICAgICAgIHkxID0geTIgLSBzaWduICogZmluYWxUaWNrU2l6ZTtcbiAgICAgICAgICB0eSA9IHkxIC0gc2lnbiAqIHRpY2tNYXJnaW47XG4gICAgICAgICAgdHggPSB0aWNrQ29vcmQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIHkxID0geTIgPSBkYXRhLmNvb3JkaW5hdGU7XG4gICAgICAgICAgeDIgPSB4ICsgKyFtaXJyb3IgKiB3aWR0aDtcbiAgICAgICAgICB4MSA9IHgyIC0gc2lnbiAqIGZpbmFsVGlja1NpemU7XG4gICAgICAgICAgdHggPSB4MSAtIHNpZ24gKiB0aWNrTWFyZ2luO1xuICAgICAgICAgIHR5ID0gdGlja0Nvb3JkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgeTEgPSB5MiA9IGRhdGEuY29vcmRpbmF0ZTtcbiAgICAgICAgICB4MiA9IHggKyArbWlycm9yICogd2lkdGg7XG4gICAgICAgICAgeDEgPSB4MiArIHNpZ24gKiBmaW5hbFRpY2tTaXplO1xuICAgICAgICAgIHR4ID0geDEgKyBzaWduICogdGlja01hcmdpbjtcbiAgICAgICAgICB0eSA9IHRpY2tDb29yZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB4MSA9IHgyID0gZGF0YS5jb29yZGluYXRlO1xuICAgICAgICAgIHkyID0geSArICttaXJyb3IgKiBoZWlnaHQ7XG4gICAgICAgICAgeTEgPSB5MiArIHNpZ24gKiBmaW5hbFRpY2tTaXplO1xuICAgICAgICAgIHR5ID0geTEgKyBzaWduICogdGlja01hcmdpbjtcbiAgICAgICAgICB0eCA9IHRpY2tDb29yZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IHtcbiAgICAgICAgICB4MTogeDEsXG4gICAgICAgICAgeTE6IHkxLFxuICAgICAgICAgIHgyOiB4MixcbiAgICAgICAgICB5MjogeTJcbiAgICAgICAgfSxcbiAgICAgICAgdGljazoge1xuICAgICAgICAgIHg6IHR4LFxuICAgICAgICAgIHk6IHR5XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFRpY2tUZXh0QW5jaG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRpY2tUZXh0QW5jaG9yKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IHRoaXMucHJvcHMsXG4gICAgICAgIG9yaWVudGF0aW9uID0gX3RoaXMkcHJvcHMzLm9yaWVudGF0aW9uLFxuICAgICAgICBtaXJyb3IgPSBfdGhpcyRwcm9wczMubWlycm9yO1xuICAgICAgdmFyIHRleHRBbmNob3I7XG4gICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIHRleHRBbmNob3IgPSBtaXJyb3IgPyAnc3RhcnQnIDogJ2VuZCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICB0ZXh0QW5jaG9yID0gbWlycm9yID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRleHRBbmNob3IgPSAnbWlkZGxlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZXh0QW5jaG9yO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRUaWNrVmVydGljYWxBbmNob3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VGlja1ZlcnRpY2FsQW5jaG9yKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIG9yaWVudGF0aW9uID0gX3RoaXMkcHJvcHM0Lm9yaWVudGF0aW9uLFxuICAgICAgICBtaXJyb3IgPSBfdGhpcyRwcm9wczQubWlycm9yO1xuICAgICAgdmFyIHZlcnRpY2FsQW5jaG9yID0gJ2VuZCc7XG4gICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgdmVydGljYWxBbmNob3IgPSAnbWlkZGxlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICB2ZXJ0aWNhbEFuY2hvciA9IG1pcnJvciA/ICdzdGFydCcgOiAnZW5kJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB2ZXJ0aWNhbEFuY2hvciA9IG1pcnJvciA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiB2ZXJ0aWNhbEFuY2hvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQXhpc0xpbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQXhpc0xpbmUoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgeCA9IF90aGlzJHByb3BzNS54LFxuICAgICAgICB5ID0gX3RoaXMkcHJvcHM1LnksXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHM1LndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczUuaGVpZ2h0LFxuICAgICAgICBvcmllbnRhdGlvbiA9IF90aGlzJHByb3BzNS5vcmllbnRhdGlvbixcbiAgICAgICAgbWlycm9yID0gX3RoaXMkcHJvcHM1Lm1pcnJvcixcbiAgICAgICAgYXhpc0xpbmUgPSBfdGhpcyRwcm9wczUuYXhpc0xpbmU7XG4gICAgICB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyUHJvcHModGhpcy5wcm9wcywgZmFsc2UpKSwgZmlsdGVyUHJvcHMoYXhpc0xpbmUsIGZhbHNlKSksIHt9LCB7XG4gICAgICAgIGZpbGw6ICdub25lJ1xuICAgICAgfSk7XG4gICAgICBpZiAob3JpZW50YXRpb24gPT09ICd0b3AnIHx8IG9yaWVudGF0aW9uID09PSAnYm90dG9tJykge1xuICAgICAgICB2YXIgbmVlZEhlaWdodCA9ICsob3JpZW50YXRpb24gPT09ICd0b3AnICYmICFtaXJyb3IgfHwgb3JpZW50YXRpb24gPT09ICdib3R0b20nICYmIG1pcnJvcik7XG4gICAgICAgIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICAgICAgeDE6IHgsXG4gICAgICAgICAgeTE6IHkgKyBuZWVkSGVpZ2h0ICogaGVpZ2h0LFxuICAgICAgICAgIHgyOiB4ICsgd2lkdGgsXG4gICAgICAgICAgeTI6IHkgKyBuZWVkSGVpZ2h0ICogaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5lZWRXaWR0aCA9ICsob3JpZW50YXRpb24gPT09ICdsZWZ0JyAmJiAhbWlycm9yIHx8IG9yaWVudGF0aW9uID09PSAncmlnaHQnICYmIG1pcnJvcik7XG4gICAgICAgIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICAgICAgeDE6IHggKyBuZWVkV2lkdGggKiB3aWR0aCxcbiAgICAgICAgICB5MTogeSxcbiAgICAgICAgICB4MjogeCArIG5lZWRXaWR0aCAqIHdpZHRoLFxuICAgICAgICAgIHkyOiB5ICsgaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGluZVwiLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1jYXJ0ZXNpYW4tYXhpcy1saW5lJywgZ2V0KGF4aXNMaW5lLCAnY2xhc3NOYW1lJykpXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclRpY2tzXCIsXG4gICAgdmFsdWU6XG4gICAgLyoqXG4gICAgICogcmVuZGVyIHRoZSB0aWNrc1xuICAgICAqIEBwYXJhbSB7QXJyYXl9IHRpY2tzIFRoZSB0aWNrcyB0byBhY3R1YWxseSByZW5kZXIgKG92ZXJyaWRlcyB3aGF0IHdhcyBwYXNzZWQgaW4gcHJvcHMpXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZvbnRTaXplIEZvbnRzaXplIHRvIGNvbnNpZGVyIGZvciB0aWNrIHNwYWNpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGV0dGVyU3BhY2luZyBMZXR0ZXJzcGFjaW5nIHRvIGNvbnNpZGVyIGZvciB0aWNrIHNwYWNpbmdcbiAgICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gcmVuZGVyZWRUaWNrc1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlbmRlclRpY2tzKHRpY2tzLCBmb250U2l6ZSwgbGV0dGVyU3BhY2luZykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgdGlja0xpbmUgPSBfdGhpcyRwcm9wczYudGlja0xpbmUsXG4gICAgICAgIHN0cm9rZSA9IF90aGlzJHByb3BzNi5zdHJva2UsXG4gICAgICAgIHRpY2sgPSBfdGhpcyRwcm9wczYudGljayxcbiAgICAgICAgdGlja0Zvcm1hdHRlciA9IF90aGlzJHByb3BzNi50aWNrRm9ybWF0dGVyLFxuICAgICAgICB1bml0ID0gX3RoaXMkcHJvcHM2LnVuaXQ7XG4gICAgICB2YXIgZmluYWxUaWNrcyA9IGdldFRpY2tzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy5wcm9wcyksIHt9LCB7XG4gICAgICAgIHRpY2tzOiB0aWNrc1xuICAgICAgfSksIGZvbnRTaXplLCBsZXR0ZXJTcGFjaW5nKTtcbiAgICAgIHZhciB0ZXh0QW5jaG9yID0gdGhpcy5nZXRUaWNrVGV4dEFuY2hvcigpO1xuICAgICAgdmFyIHZlcnRpY2FsQW5jaG9yID0gdGhpcy5nZXRUaWNrVmVydGljYWxBbmNob3IoKTtcbiAgICAgIHZhciBheGlzUHJvcHMgPSBmaWx0ZXJQcm9wcyh0aGlzLnByb3BzLCBmYWxzZSk7XG4gICAgICB2YXIgY3VzdG9tVGlja1Byb3BzID0gZmlsdGVyUHJvcHModGljaywgZmFsc2UpO1xuICAgICAgdmFyIHRpY2tMaW5lUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXNQcm9wcyksIHt9LCB7XG4gICAgICAgIGZpbGw6ICdub25lJ1xuICAgICAgfSwgZmlsdGVyUHJvcHModGlja0xpbmUsIGZhbHNlKSk7XG4gICAgICB2YXIgaXRlbXMgPSBmaW5hbFRpY2tzLm1hcChmdW5jdGlvbiAoZW50cnksIGkpIHtcbiAgICAgICAgdmFyIF90aGlzMiRnZXRUaWNrTGluZUNvbyA9IF90aGlzMi5nZXRUaWNrTGluZUNvb3JkKGVudHJ5KSxcbiAgICAgICAgICBsaW5lQ29vcmQgPSBfdGhpczIkZ2V0VGlja0xpbmVDb28ubGluZSxcbiAgICAgICAgICB0aWNrQ29vcmQgPSBfdGhpczIkZ2V0VGlja0xpbmVDb28udGljaztcbiAgICAgICAgdmFyIHRpY2tQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIHRleHRBbmNob3I6IHRleHRBbmNob3IsXG4gICAgICAgICAgdmVydGljYWxBbmNob3I6IHZlcnRpY2FsQW5jaG9yXG4gICAgICAgIH0sIGF4aXNQcm9wcyksIHt9LCB7XG4gICAgICAgICAgc3Ryb2tlOiAnbm9uZScsXG4gICAgICAgICAgZmlsbDogc3Ryb2tlXG4gICAgICAgIH0sIGN1c3RvbVRpY2tQcm9wcyksIHRpY2tDb29yZCksIHt9LCB7XG4gICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgcGF5bG9hZDogZW50cnksXG4gICAgICAgICAgdmlzaWJsZVRpY2tzQ291bnQ6IGZpbmFsVGlja3MubGVuZ3RoLFxuICAgICAgICAgIHRpY2tGb3JtYXR0ZXI6IHRpY2tGb3JtYXR0ZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgX2V4dGVuZHMoe1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1jYXJ0ZXNpYW4tYXhpcy10aWNrXCIsXG4gICAgICAgICAga2V5OiBcInRpY2stXCIuY29uY2F0KGVudHJ5LnZhbHVlLCBcIi1cIikuY29uY2F0KGVudHJ5LmNvb3JkaW5hdGUsIFwiLVwiKS5jb25jYXQoZW50cnkudGlja0Nvb3JkKVxuICAgICAgICB9LCBhZGFwdEV2ZW50c09mQ2hpbGQoX3RoaXMyLnByb3BzLCBlbnRyeSwgaSkpLCB0aWNrTGluZSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwgX2V4dGVuZHMoe30sIHRpY2tMaW5lUHJvcHMsIGxpbmVDb29yZCwge1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtY2FydGVzaWFuLWF4aXMtdGljay1saW5lJywgZ2V0KHRpY2tMaW5lLCAnY2xhc3NOYW1lJykpXG4gICAgICAgIH0pKSwgdGljayAmJiBDYXJ0ZXNpYW5BeGlzLnJlbmRlclRpY2tJdGVtKHRpY2ssIHRpY2tQcm9wcywgXCJcIi5jb25jYXQoaXNGdW5jdGlvbih0aWNrRm9ybWF0dGVyKSA/IHRpY2tGb3JtYXR0ZXIoZW50cnkudmFsdWUsIGkpIDogZW50cnkudmFsdWUpLmNvbmNhdCh1bml0IHx8ICcnKSkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2tzXCJcbiAgICAgIH0sIGl0ZW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGF4aXNMaW5lID0gX3RoaXMkcHJvcHM3LmF4aXNMaW5lLFxuICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzNy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHM3LmhlaWdodCxcbiAgICAgICAgdGlja3NHZW5lcmF0b3IgPSBfdGhpcyRwcm9wczcudGlja3NHZW5lcmF0b3IsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNy5jbGFzc05hbWUsXG4gICAgICAgIGhpZGUgPSBfdGhpcyRwcm9wczcuaGlkZTtcbiAgICAgIGlmIChoaWRlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIF90aGlzJHByb3BzOCA9IHRoaXMucHJvcHMsXG4gICAgICAgIHRpY2tzID0gX3RoaXMkcHJvcHM4LnRpY2tzLFxuICAgICAgICBub1RpY2tzUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM4LCBfZXhjbHVkZWQzKTtcbiAgICAgIHZhciBmaW5hbFRpY2tzID0gdGlja3M7XG4gICAgICBpZiAoaXNGdW5jdGlvbih0aWNrc0dlbmVyYXRvcikpIHtcbiAgICAgICAgZmluYWxUaWNrcyA9IHRpY2tzICYmIHRpY2tzLmxlbmd0aCA+IDAgPyB0aWNrc0dlbmVyYXRvcih0aGlzLnByb3BzKSA6IHRpY2tzR2VuZXJhdG9yKG5vVGlja3NQcm9wcyk7XG4gICAgICB9XG4gICAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCB8fCAhZmluYWxUaWNrcyB8fCAhZmluYWxUaWNrcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1jYXJ0ZXNpYW4tYXhpcycsIGNsYXNzTmFtZSksXG4gICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKF9yZWYyKSB7XG4gICAgICAgICAgX3RoaXMzLmxheWVyUmVmZXJlbmNlID0gX3JlZjI7XG4gICAgICAgIH1cbiAgICAgIH0sIGF4aXNMaW5lICYmIHRoaXMucmVuZGVyQXhpc0xpbmUoKSwgdGhpcy5yZW5kZXJUaWNrcyhmaW5hbFRpY2tzLCB0aGlzLnN0YXRlLmZvbnRTaXplLCB0aGlzLnN0YXRlLmxldHRlclNwYWNpbmcpLCBMYWJlbC5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcykpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcInJlbmRlclRpY2tJdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclRpY2tJdGVtKG9wdGlvbiwgcHJvcHMsIHZhbHVlKSB7XG4gICAgICB2YXIgdGlja0l0ZW07XG4gICAgICB2YXIgY29tYmluZWRDbGFzc05hbWUgPSBjbHN4KHByb3BzLmNsYXNzTmFtZSwgJ3JlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2stdmFsdWUnKTtcbiAgICAgIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KG9wdGlvbikpIHtcbiAgICAgICAgdGlja0l0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjb21iaW5lZENsYXNzTmFtZVxuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgICAgICB0aWNrSXRlbSA9IG9wdGlvbihfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwge30sIHtcbiAgICAgICAgICBjbGFzc05hbWU6IGNvbWJpbmVkQ2xhc3NOYW1lXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRpY2tJdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGV4dCwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2stdmFsdWVcIlxuICAgICAgICB9KSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRpY2tJdGVtO1xuICAgIH1cbiAgfV0pO1xufShDb21wb25lbnQpO1xuX2RlZmluZVByb3BlcnR5KENhcnRlc2lhbkF4aXMsIFwiZGlzcGxheU5hbWVcIiwgJ0NhcnRlc2lhbkF4aXMnKTtcbl9kZWZpbmVQcm9wZXJ0eShDYXJ0ZXNpYW5BeGlzLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHg6IDAsXG4gIHk6IDAsXG4gIHdpZHRoOiAwLFxuICBoZWlnaHQ6IDAsXG4gIHZpZXdCb3g6IHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH0sXG4gIC8vIFRoZSBvcmllbnRhdGlvbiBvZiBheGlzXG4gIG9yaWVudGF0aW9uOiAnYm90dG9tJyxcbiAgLy8gVGhlIHRpY2tzXG4gIHRpY2tzOiBbXSxcbiAgc3Ryb2tlOiAnIzY2NicsXG4gIHRpY2tMaW5lOiB0cnVlLFxuICBheGlzTGluZTogdHJ1ZSxcbiAgdGljazogdHJ1ZSxcbiAgbWlycm9yOiBmYWxzZSxcbiAgbWluVGlja0dhcDogNSxcbiAgLy8gVGhlIHdpZHRoIG9yIGhlaWdodCBvZiB0aWNrXG4gIHRpY2tTaXplOiA2LFxuICB0aWNrTWFyZ2luOiAyLFxuICBpbnRlcnZhbDogJ3ByZXNlcnZlRW5kJ1xufSk7Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfZXhjbHVkZWQzIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJpc0Z1bmN0aW9uIiwiZ2V0IiwiY2xzeCIsInNoYWxsb3dFcXVhbCIsIkxheWVyIiwiVGV4dCIsIkxhYmVsIiwiaXNOdW1iZXIiLCJhZGFwdEV2ZW50c09mQ2hpbGQiLCJmaWx0ZXJQcm9wcyIsImdldFRpY2tzIiwiQ2FydGVzaWFuQXhpcyIsIl9Db21wb25lbnQiLCJfdGhpcyIsInN0YXRlIiwiZm9udFNpemUiLCJsZXR0ZXJTcGFjaW5nIiwic2hvdWxkQ29tcG9uZW50VXBkYXRlIiwiX3JlZiIsIm5leHRTdGF0ZSIsInZpZXdCb3giLCJyZXN0UHJvcHMiLCJfdGhpcyRwcm9wcyIsInZpZXdCb3hPbGQiLCJyZXN0UHJvcHNPbGQiLCJjb21wb25lbnREaWRNb3VudCIsImh0bWxMYXllciIsImxheWVyUmVmZXJlbmNlIiwidGljayIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJzZXRTdGF0ZSIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRUaWNrTGluZUNvb3JkIiwiZGF0YSIsIl90aGlzJHByb3BzMiIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJvcmllbnRhdGlvbiIsInRpY2tTaXplIiwibWlycm9yIiwidGlja01hcmdpbiIsIngxIiwieDIiLCJ5MSIsInkyIiwidHgiLCJ0eSIsInNpZ24iLCJmaW5hbFRpY2tTaXplIiwidGlja0Nvb3JkIiwiY29vcmRpbmF0ZSIsImxpbmUiLCJnZXRUaWNrVGV4dEFuY2hvciIsIl90aGlzJHByb3BzMyIsInRleHRBbmNob3IiLCJnZXRUaWNrVmVydGljYWxBbmNob3IiLCJfdGhpcyRwcm9wczQiLCJ2ZXJ0aWNhbEFuY2hvciIsInJlbmRlckF4aXNMaW5lIiwiX3RoaXMkcHJvcHM1IiwiYXhpc0xpbmUiLCJmaWxsIiwibmVlZEhlaWdodCIsIm5lZWRXaWR0aCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJyZW5kZXJUaWNrcyIsInRpY2tzIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHM2IiwidGlja0xpbmUiLCJzdHJva2UiLCJ0aWNrRm9ybWF0dGVyIiwidW5pdCIsImZpbmFsVGlja3MiLCJheGlzUHJvcHMiLCJjdXN0b21UaWNrUHJvcHMiLCJ0aWNrTGluZVByb3BzIiwiaXRlbXMiLCJtYXAiLCJlbnRyeSIsIl90aGlzMiRnZXRUaWNrTGluZUNvbyIsImxpbmVDb29yZCIsInRpY2tQcm9wcyIsImluZGV4IiwicGF5bG9hZCIsInZpc2libGVUaWNrc0NvdW50IiwiY29uY2F0IiwicmVuZGVyVGlja0l0ZW0iLCJyZW5kZXIiLCJfdGhpczMiLCJfdGhpcyRwcm9wczciLCJ0aWNrc0dlbmVyYXRvciIsImhpZGUiLCJfdGhpcyRwcm9wczgiLCJub1RpY2tzUHJvcHMiLCJyZWYiLCJfcmVmMiIsInJlbmRlckNhbGxCeVBhcmVudCIsIm9wdGlvbiIsInRpY2tJdGVtIiwiY29tYmluZWRDbGFzc05hbWUiLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCIsIm1pblRpY2tHYXAiLCJpbnRlcnZhbCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/CartesianAxis.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/ErrorBar.js":
/*!*********************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/ErrorBar.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ErrorBar: () => (/* binding */ ErrorBar)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tiny-invariant */ \"(ssr)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nvar _excluded = [\n \"offset\",\n \"layout\",\n \"width\",\n \"dataKey\",\n \"data\",\n \"dataPointFormatter\",\n \"xAxis\",\n \"yAxis\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Render a group of error bar\n */ \n\n\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nvar ErrorBar = /*#__PURE__*/ function(_React$Component) {\n function ErrorBar() {\n _classCallCheck(this, ErrorBar);\n return _callSuper(this, ErrorBar, arguments);\n }\n _inherits(ErrorBar, _React$Component);\n return _createClass(ErrorBar, [\n {\n key: \"render\",\n value: function render() {\n var _this$props = this.props, offset = _this$props.offset, layout = _this$props.layout, width = _this$props.width, dataKey = _this$props.dataKey, data = _this$props.data, dataPointFormatter = _this$props.dataPointFormatter, xAxis = _this$props.xAxis, yAxis = _this$props.yAxis, others = _objectWithoutProperties(_this$props, _excluded);\n var svgProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, false);\n !!(this.props.direction === 'x' && xAxis.type !== 'number') ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, 'ErrorBar requires Axis type property to be \"number\".') : 0 : void 0;\n var errorBars = data.map(function(entry) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey), x = _dataPointFormatter.x, y = _dataPointFormatter.y, value = _dataPointFormatter.value, errorVal = _dataPointFormatter.errorVal;\n if (!errorVal) {\n return null;\n }\n var lineCoordinates = [];\n var lowBound, highBound;\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\n } else {\n lowBound = highBound = errorVal;\n }\n if (layout === 'vertical') {\n // error bar for horizontal charts, the y is fixed, x is a range value\n var scale = xAxis.scale;\n var yMid = y + offset;\n var yMin = yMid + width;\n var yMax = yMid - width;\n var xMin = scale(value - lowBound);\n var xMax = scale(value + highBound);\n // the right line of |--|\n lineCoordinates.push({\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n });\n // the middle line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n });\n // the left line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n });\n } else if (layout === 'horizontal') {\n // error bar for horizontal charts, the x is fixed, y is a range value\n var _scale = yAxis.scale;\n var xMid = x + offset;\n var _xMin = xMid - width;\n var _xMax = xMid + width;\n var _yMin = _scale(value - lowBound);\n var _yMax = _scale(value + highBound);\n // the top line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMax,\n x2: _xMax,\n y2: _yMax\n });\n // the middle line\n lineCoordinates.push({\n x1: xMid,\n y1: _yMin,\n x2: xMid,\n y2: _yMax\n });\n // the bottom line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMin,\n x2: _xMax,\n y2: _yMin\n });\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_3__.Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(lineCoordinates.map(function(c) {\n return \"\".concat(c.x1, \"-\").concat(c.x2, \"-\").concat(c.y1, \"-\").concat(c.y2);\n }))\n }, svgProps), lineCoordinates.map(function(coordinates) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({}, coordinates, {\n key: \"line-\".concat(coordinates.x1, \"-\").concat(coordinates.x2, \"-\").concat(coordinates.y1, \"-\").concat(coordinates.y2)\n }));\n }));\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_3__.Layer, {\n className: \"recharts-errorBars\"\n }, errorBars);\n }\n }\n ]);\n}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));\n_defineProperty(ErrorBar, \"defaultProps\", {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal'\n});\n_defineProperty(ErrorBar, \"displayName\", 'ErrorBar');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9FcnJvckJhci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFJQSxZQUFZO0lBQUM7SUFBVTtJQUFVO0lBQVM7SUFBVztJQUFRO0lBQXNCO0lBQVM7Q0FBUTtBQUN4RyxTQUFTQyxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLGVBQWVDLEdBQUcsRUFBRVQsQ0FBQztJQUFJLE9BQU9VLGdCQUFnQkQsUUFBUUUsc0JBQXNCRixLQUFLVCxNQUFNWSw0QkFBNEJILEtBQUtULE1BQU1hO0FBQW9CO0FBQzdKLFNBQVNB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QUFPbUksTUFBTSxDQUFDdEIsZ0JBQWdCTixHQUFHLENBQUMsU0FBVTZCLENBQUM7NEJBQ2hELE9BQU8sR0FBR0QsTUFBTSxDQUFDQyxFQUFFYixFQUFFLEVBQUUsS0FBS1ksTUFBTSxDQUFDQyxFQUFFWCxFQUFFLEVBQUUsS0FBS1UsTUFBTSxDQUFDQyxFQUFFWixFQUFFLEVBQUUsS0FBS1csTUFBTSxDQUFDQyxFQUFFVixFQUFFO3dCQUM3RTtvQkFDRixHQUFHeEIsV0FBV1csZ0JBQWdCTixHQUFHLENBQUMsU0FBVThCLFdBQVc7d0JBQ3JELE9BQU8sV0FBVyxHQUFFcEQsMERBQW1CLENBQUMsUUFBUTFGLFNBQVMsQ0FBQyxHQUFHOEksYUFBYTs0QkFDeEVySSxLQUFLLFFBQVFtSSxNQUFNLENBQUNFLFlBQVlkLEVBQUUsRUFBRSxLQUFLWSxNQUFNLENBQUNFLFlBQVlaLEVBQUUsRUFBRSxLQUFLVSxNQUFNLENBQUNFLFlBQVliLEVBQUUsRUFBRSxLQUFLVyxNQUFNLENBQUNFLFlBQVlYLEVBQUU7d0JBQ3hIO29CQUNGO2dCQUNGO2dCQUNBLE9BQU8sV0FBVyxHQUFFekMsMERBQW1CLENBQUNFLG1EQUFLQSxFQUFFO29CQUM3QytDLFdBQVc7Z0JBQ2IsR0FBRzVCO1lBQ0w7UUFDRjtLQUFFO0FBQ0osRUFBRXJCLHdEQUFlLEVBQUU7QUFDbkJOLGdCQUFnQlUsVUFBVSxnQkFBZ0I7SUFDeENrRCxRQUFRO0lBQ1JDLGFBQWE7SUFDYjdDLE9BQU87SUFDUEYsUUFBUTtJQUNSQyxRQUFRO0FBQ1Y7QUFDQWYsZ0JBQWdCVSxVQUFVLGVBQWUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9FcnJvckJhci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wib2Zmc2V0XCIsIFwibGF5b3V0XCIsIFwid2lkdGhcIiwgXCJkYXRhS2V5XCIsIFwiZGF0YVwiLCBcImRhdGFQb2ludEZvcm1hdHRlclwiLCBcInhBeGlzXCIsIFwieUF4aXNcIl07XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIF9jYWxsU3VwZXIodCwgbywgZSkgeyByZXR1cm4gbyA9IF9nZXRQcm90b3R5cGVPZihvKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpID8gUmVmbGVjdC5jb25zdHJ1Y3QobywgZSB8fCBbXSwgX2dldFByb3RvdHlwZU9mKHQpLmNvbnN0cnVjdG9yKSA6IG8uYXBwbHkodCwgZSkpOyB9XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IGVsc2UgaWYgKGNhbGwgIT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgdHJ5IHsgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyB9IGNhdGNoICh0KSB7fSByZXR1cm4gKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyByZXR1cm4gISF0OyB9KSgpOyB9XG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBSZW5kZXIgYSBncm91cCBvZiBlcnJvciBiYXJcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSAndGlueS1pbnZhcmlhbnQnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3ByZWZlci1zdGF0ZWxlc3MtZnVuY3Rpb24gLS0gcmVxdWlyZXMgc3RhdGljIGRlZmF1bHRQcm9wc1xuZXhwb3J0IHZhciBFcnJvckJhciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBmdW5jdGlvbiBFcnJvckJhcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXJyb3JCYXIpO1xuICAgIHJldHVybiBfY2FsbFN1cGVyKHRoaXMsIEVycm9yQmFyLCBhcmd1bWVudHMpO1xuICB9XG4gIF9pbmhlcml0cyhFcnJvckJhciwgX1JlYWN0JENvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoRXJyb3JCYXIsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBvZmZzZXQgPSBfdGhpcyRwcm9wcy5vZmZzZXQsXG4gICAgICAgIGxheW91dCA9IF90aGlzJHByb3BzLmxheW91dCxcbiAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wcy53aWR0aCxcbiAgICAgICAgZGF0YUtleSA9IF90aGlzJHByb3BzLmRhdGFLZXksXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wcy5kYXRhLFxuICAgICAgICBkYXRhUG9pbnRGb3JtYXR0ZXIgPSBfdGhpcyRwcm9wcy5kYXRhUG9pbnRGb3JtYXR0ZXIsXG4gICAgICAgIHhBeGlzID0gX3RoaXMkcHJvcHMueEF4aXMsXG4gICAgICAgIHlBeGlzID0gX3RoaXMkcHJvcHMueUF4aXMsXG4gICAgICAgIG90aGVycyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgICAgIHZhciBzdmdQcm9wcyA9IGZpbHRlclByb3BzKG90aGVycywgZmFsc2UpO1xuICAgICAgISEodGhpcy5wcm9wcy5kaXJlY3Rpb24gPT09ICd4JyAmJiB4QXhpcy50eXBlICE9PSAnbnVtYmVyJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdFcnJvckJhciByZXF1aXJlcyBBeGlzIHR5cGUgcHJvcGVydHkgdG8gYmUgXCJudW1iZXJcIi4nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgICB2YXIgZXJyb3JCYXJzID0gZGF0YS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgIHZhciBfZGF0YVBvaW50Rm9ybWF0dGVyID0gZGF0YVBvaW50Rm9ybWF0dGVyKGVudHJ5LCBkYXRhS2V5KSxcbiAgICAgICAgICB4ID0gX2RhdGFQb2ludEZvcm1hdHRlci54LFxuICAgICAgICAgIHkgPSBfZGF0YVBvaW50Rm9ybWF0dGVyLnksXG4gICAgICAgICAgdmFsdWUgPSBfZGF0YVBvaW50Rm9ybWF0dGVyLnZhbHVlLFxuICAgICAgICAgIGVycm9yVmFsID0gX2RhdGFQb2ludEZvcm1hdHRlci5lcnJvclZhbDtcbiAgICAgICAgaWYgKCFlcnJvclZhbCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsaW5lQ29vcmRpbmF0ZXMgPSBbXTtcbiAgICAgICAgdmFyIGxvd0JvdW5kLCBoaWdoQm91bmQ7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yVmFsKSkge1xuICAgICAgICAgIHZhciBfZXJyb3JWYWwgPSBfc2xpY2VkVG9BcnJheShlcnJvclZhbCwgMik7XG4gICAgICAgICAgbG93Qm91bmQgPSBfZXJyb3JWYWxbMF07XG4gICAgICAgICAgaGlnaEJvdW5kID0gX2Vycm9yVmFsWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvd0JvdW5kID0gaGlnaEJvdW5kID0gZXJyb3JWYWw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgIC8vIGVycm9yIGJhciBmb3IgaG9yaXpvbnRhbCBjaGFydHMsIHRoZSB5IGlzIGZpeGVkLCB4IGlzIGEgcmFuZ2UgdmFsdWVcbiAgICAgICAgICB2YXIgc2NhbGUgPSB4QXhpcy5zY2FsZTtcbiAgICAgICAgICB2YXIgeU1pZCA9IHkgKyBvZmZzZXQ7XG4gICAgICAgICAgdmFyIHlNaW4gPSB5TWlkICsgd2lkdGg7XG4gICAgICAgICAgdmFyIHlNYXggPSB5TWlkIC0gd2lkdGg7XG4gICAgICAgICAgdmFyIHhNaW4gPSBzY2FsZSh2YWx1ZSAtIGxvd0JvdW5kKTtcbiAgICAgICAgICB2YXIgeE1heCA9IHNjYWxlKHZhbHVlICsgaGlnaEJvdW5kKTtcblxuICAgICAgICAgIC8vIHRoZSByaWdodCBsaW5lIG9mIHwtLXxcbiAgICAgICAgICBsaW5lQ29vcmRpbmF0ZXMucHVzaCh7XG4gICAgICAgICAgICB4MTogeE1heCxcbiAgICAgICAgICAgIHkxOiB5TWluLFxuICAgICAgICAgICAgeDI6IHhNYXgsXG4gICAgICAgICAgICB5MjogeU1heFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHRoZSBtaWRkbGUgbGluZSBvZiB8LS18XG4gICAgICAgICAgbGluZUNvb3JkaW5hdGVzLnB1c2goe1xuICAgICAgICAgICAgeDE6IHhNaW4sXG4gICAgICAgICAgICB5MTogeU1pZCxcbiAgICAgICAgICAgIHgyOiB4TWF4LFxuICAgICAgICAgICAgeTI6IHlNaWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyB0aGUgbGVmdCBsaW5lIG9mIHwtLXxcbiAgICAgICAgICBsaW5lQ29vcmRpbmF0ZXMucHVzaCh7XG4gICAgICAgICAgICB4MTogeE1pbixcbiAgICAgICAgICAgIHkxOiB5TWluLFxuICAgICAgICAgICAgeDI6IHhNaW4sXG4gICAgICAgICAgICB5MjogeU1heFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgLy8gZXJyb3IgYmFyIGZvciBob3Jpem9udGFsIGNoYXJ0cywgdGhlIHggaXMgZml4ZWQsIHkgaXMgYSByYW5nZSB2YWx1ZVxuICAgICAgICAgIHZhciBfc2NhbGUgPSB5QXhpcy5zY2FsZTtcbiAgICAgICAgICB2YXIgeE1pZCA9IHggKyBvZmZzZXQ7XG4gICAgICAgICAgdmFyIF94TWluID0geE1pZCAtIHdpZHRoO1xuICAgICAgICAgIHZhciBfeE1heCA9IHhNaWQgKyB3aWR0aDtcbiAgICAgICAgICB2YXIgX3lNaW4gPSBfc2NhbGUodmFsdWUgLSBsb3dCb3VuZCk7XG4gICAgICAgICAgdmFyIF95TWF4ID0gX3NjYWxlKHZhbHVlICsgaGlnaEJvdW5kKTtcblxuICAgICAgICAgIC8vIHRoZSB0b3AgbGluZVxuICAgICAgICAgIGxpbmVDb29yZGluYXRlcy5wdXNoKHtcbiAgICAgICAgICAgIHgxOiBfeE1pbixcbiAgICAgICAgICAgIHkxOiBfeU1heCxcbiAgICAgICAgICAgIHgyOiBfeE1heCxcbiAgICAgICAgICAgIHkyOiBfeU1heFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHRoZSBtaWRkbGUgbGluZVxuICAgICAgICAgIGxpbmVDb29yZGluYXRlcy5wdXNoKHtcbiAgICAgICAgICAgIHgxOiB4TWlkLFxuICAgICAgICAgICAgeTE6IF95TWluLFxuICAgICAgICAgICAgeDI6IHhNaWQsXG4gICAgICAgICAgICB5MjogX3lNYXhcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyB0aGUgYm90dG9tIGxpbmVcbiAgICAgICAgICBsaW5lQ29vcmRpbmF0ZXMucHVzaCh7XG4gICAgICAgICAgICB4MTogX3hNaW4sXG4gICAgICAgICAgICB5MTogX3lNaW4sXG4gICAgICAgICAgICB4MjogX3hNYXgsXG4gICAgICAgICAgICB5MjogX3lNaW5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIF9leHRlbmRzKHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtZXJyb3JCYXJcIixcbiAgICAgICAgICBrZXk6IFwiYmFyLVwiLmNvbmNhdChsaW5lQ29vcmRpbmF0ZXMubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQoYy54MSwgXCItXCIpLmNvbmNhdChjLngyLCBcIi1cIikuY29uY2F0KGMueTEsIFwiLVwiKS5jb25jYXQoYy55Mik7XG4gICAgICAgICAgfSkpXG4gICAgICAgIH0sIHN2Z1Byb3BzKSwgbGluZUNvb3JkaW5hdGVzLm1hcChmdW5jdGlvbiAoY29vcmRpbmF0ZXMpIHtcbiAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaW5lXCIsIF9leHRlbmRzKHt9LCBjb29yZGluYXRlcywge1xuICAgICAgICAgICAga2V5OiBcImxpbmUtXCIuY29uY2F0KGNvb3JkaW5hdGVzLngxLCBcIi1cIikuY29uY2F0KGNvb3JkaW5hdGVzLngyLCBcIi1cIikuY29uY2F0KGNvb3JkaW5hdGVzLnkxLCBcIi1cIikuY29uY2F0KGNvb3JkaW5hdGVzLnkyKVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWVycm9yQmFyc1wiXG4gICAgICB9LCBlcnJvckJhcnMpO1xuICAgIH1cbiAgfV0pO1xufShSZWFjdC5Db21wb25lbnQpO1xuX2RlZmluZVByb3BlcnR5KEVycm9yQmFyLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHN0cm9rZTogJ2JsYWNrJyxcbiAgc3Ryb2tlV2lkdGg6IDEuNSxcbiAgd2lkdGg6IDUsXG4gIG9mZnNldDogMCxcbiAgbGF5b3V0OiAnaG9yaXpvbnRhbCdcbn0pO1xuX2RlZmluZVByb3BlcnR5KEVycm9yQmFyLCBcImRpc3BsYXlOYW1lXCIsICdFcnJvckJhcicpOyJdLCJuYW1lcyI6WyJfZXhjbHVkZWQiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiciIsImwiLCJ0IiwiZSIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiaXNBcnJheSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJfZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIlJlYWN0IiwiaW52YXJpYW50IiwiTGF5ZXIiLCJmaWx0ZXJQcm9wcyIsIkVycm9yQmFyIiwiX1JlYWN0JENvbXBvbmVudCIsInJlbmRlciIsIl90aGlzJHByb3BzIiwib2Zmc2V0IiwibGF5b3V0Iiwid2lkdGgiLCJkYXRhS2V5IiwiZGF0YSIsImRhdGFQb2ludEZvcm1hdHRlciIsInhBeGlzIiwieUF4aXMiLCJvdGhlcnMiLCJzdmdQcm9wcyIsImRpcmVjdGlvbiIsInR5cGUiLCJwcm9jZXNzIiwiZXJyb3JCYXJzIiwibWFwIiwiZW50cnkiLCJfZGF0YVBvaW50Rm9ybWF0dGVyIiwieCIsInkiLCJlcnJvclZhbCIsImxpbmVDb29yZGluYXRlcyIsImxvd0JvdW5kIiwiaGlnaEJvdW5kIiwiX2Vycm9yVmFsIiwic2NhbGUiLCJ5TWlkIiwieU1pbiIsInlNYXgiLCJ4TWluIiwieE1heCIsIngxIiwieTEiLCJ4MiIsInkyIiwiX3NjYWxlIiwieE1pZCIsIl94TWluIiwiX3hNYXgiLCJfeU1pbiIsIl95TWF4IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbmNhdCIsImMiLCJjb29yZGluYXRlcyIsIkNvbXBvbmVudCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/ErrorBar.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/Line.js":
/*!*****************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/Line.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Line: () => (/* binding */ Line)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_smooth__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-smooth */ \"(ssr)/./node_modules/react-smooth/es6/index.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isEqual */ \"(ssr)/./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _shape_Curve__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../shape/Curve */ \"(ssr)/./node_modules/recharts/es6/shape/Curve.js\");\n/* harmony import */ var _shape_Dot__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../shape/Dot */ \"(ssr)/./node_modules/recharts/es6/shape/Dot.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_LabelList__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../component/LabelList */ \"(ssr)/./node_modules/recharts/es6/component/LabelList.js\");\n/* harmony import */ var _ErrorBar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ErrorBar */ \"(ssr)/./node_modules/recharts/es6/cartesian/ErrorBar.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_Global__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\nvar _excluded = [\n \"type\",\n \"layout\",\n \"connectNulls\",\n \"ref\"\n], _excluded2 = [\n \"key\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Line\n */ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Line = /*#__PURE__*/ function(_PureComponent) {\n function Line() {\n var _this;\n _classCallCheck(this, Line);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Line, [].concat(args));\n _defineProperty(_this, \"state\", {\n isAnimationFinished: true,\n totalLength: 0\n });\n _defineProperty(_this, \"generateSimpleStrokeDasharray\", function(totalLength, length) {\n return \"\".concat(length, \"px \").concat(totalLength - length, \"px\");\n });\n _defineProperty(_this, \"getStrokeDasharray\", function(length, totalLength, lines) {\n var lineLength = lines.reduce(function(pre, next) {\n return pre + next;\n });\n // if lineLength is 0 return the default when no strokeDasharray is provided\n if (!lineLength) {\n return _this.generateSimpleStrokeDasharray(totalLength, length);\n }\n var count = Math.floor(length / lineLength);\n var remainLength = length % lineLength;\n var restLength = totalLength - length;\n var remainLines = [];\n for(var i = 0, sum = 0; i < lines.length; sum += lines[i], ++i){\n if (sum + lines[i] > remainLength) {\n remainLines = [].concat(_toConsumableArray(lines.slice(0, i)), [\n remainLength - sum\n ]);\n break;\n }\n }\n var emptyLines = remainLines.length % 2 === 0 ? [\n 0,\n restLength\n ] : [\n restLength\n ];\n return [].concat(_toConsumableArray(Line.repeat(lines, count)), _toConsumableArray(remainLines), emptyLines).map(function(line) {\n return \"\".concat(line, \"px\");\n }).join(', ');\n });\n _defineProperty(_this, \"id\", (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.uniqueId)('recharts-line-'));\n _defineProperty(_this, \"pathRef\", function(node) {\n _this.mainCurve = node;\n });\n _defineProperty(_this, \"handleAnimationEnd\", function() {\n _this.setState({\n isAnimationFinished: true\n });\n if (_this.props.onAnimationEnd) {\n _this.props.onAnimationEnd();\n }\n });\n _defineProperty(_this, \"handleAnimationStart\", function() {\n _this.setState({\n isAnimationFinished: false\n });\n if (_this.props.onAnimationStart) {\n _this.props.onAnimationStart();\n }\n });\n return _this;\n }\n _inherits(Line, _PureComponent);\n return _createClass(Line, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!this.props.isAnimationActive) {\n return;\n }\n var totalLength = this.getTotalLength();\n this.setState({\n totalLength: totalLength\n });\n }\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (!this.props.isAnimationActive) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength !== this.state.totalLength) {\n this.setState({\n totalLength: totalLength\n });\n }\n }\n },\n {\n key: \"getTotalLength\",\n value: function getTotalLength() {\n var curveDom = this.mainCurve;\n try {\n return curveDom && curveDom.getTotalLength && curveDom.getTotalLength() || 0;\n } catch (err) {\n return 0;\n }\n }\n },\n {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props = this.props, points = _this$props.points, xAxis = _this$props.xAxis, yAxis = _this$props.yAxis, layout = _this$props.layout, children = _this$props.children;\n var errorBarItems = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.findAllByType)(children, _ErrorBar__WEBPACK_IMPORTED_MODULE_7__.ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_8__.getValueByDataKey)(dataPoint.payload, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, errorBarProps, errorBarItems.map(function(item) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(item, {\n key: \"bar-\".concat(item.props.dataKey),\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n },\n {\n key: \"renderDots\",\n value: function renderDots(needClip, clipDot, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props2 = this.props, dot = _this$props2.dot, points = _this$props2.points, dataKey = _this$props2.dataKey;\n var lineProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(this.props, false);\n var customDotProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(dot, true);\n var dots = points.map(function(entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, lineProps), customDotProps), {}, {\n index: i,\n cx: entry.x,\n cy: entry.y,\n value: entry.value,\n dataKey: dataKey,\n payload: entry.payload,\n points: points\n });\n return Line.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipDot ? '' : 'dots-').concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, _extends({\n className: \"recharts-line-dots\",\n key: \"dots\"\n }, dotsProps), dots);\n }\n },\n {\n key: \"renderCurveStatically\",\n value: function renderCurveStatically(points, needClip, clipPathId, props) {\n var _this$props3 = this.props, type = _this$props3.type, layout = _this$props3.layout, connectNulls = _this$props3.connectNulls, ref = _this$props3.ref, others = _objectWithoutProperties(_this$props3, _excluded);\n var curveProps = _objectSpread(_objectSpread(_objectSpread({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(others, true)), {}, {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null,\n points: points\n }, props), {}, {\n type: type,\n layout: layout,\n connectNulls: connectNulls\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Curve__WEBPACK_IMPORTED_MODULE_10__.Curve, _extends({}, curveProps, {\n pathRef: this.pathRef\n }));\n }\n },\n {\n key: \"renderCurveWithAnimation\",\n value: function renderCurveWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n var _this$props4 = this.props, points = _this$props4.points, strokeDasharray = _this$props4.strokeDasharray, isAnimationActive = _this$props4.isAnimationActive, animationBegin = _this$props4.animationBegin, animationDuration = _this$props4.animationDuration, animationEasing = _this$props4.animationEasing, animationId = _this$props4.animationId, animateNewValues = _this$props4.animateNewValues, width = _this$props4.width, height = _this$props4.height;\n var _this$state = this.state, prevPoints = _this$state.prevPoints, totalLength = _this$state.totalLength;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"line-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function(_ref) {\n var t = _ref.t;\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = points.map(function(entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.interpolateNumber)(prev.x, entry.x);\n var interpolatorY = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.interpolateNumber)(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n // magic number of faking previous x and y location\n if (animateNewValues) {\n var _interpolatorX = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.interpolateNumber)(width * 2, entry.x);\n var _interpolatorY = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.interpolateNumber)(height / 2, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: _interpolatorX(t),\n y: _interpolatorY(t)\n });\n }\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: entry.x,\n y: entry.y\n });\n });\n return _this2.renderCurveStatically(stepData, needClip, clipPathId);\n }\n var interpolator = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.interpolateNumber)(0, totalLength);\n var curLength = interpolator(t);\n var currentStrokeDasharray;\n if (strokeDasharray) {\n var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(function(num) {\n return parseFloat(num);\n });\n currentStrokeDasharray = _this2.getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = _this2.generateSimpleStrokeDasharray(totalLength, curLength);\n }\n return _this2.renderCurveStatically(points, needClip, clipPathId, {\n strokeDasharray: currentStrokeDasharray\n });\n });\n }\n },\n {\n key: \"renderCurve\",\n value: function renderCurve(needClip, clipPathId) {\n var _this$props5 = this.props, points = _this$props5.points, isAnimationActive = _this$props5.isAnimationActive;\n var _this$state2 = this.state, prevPoints = _this$state2.prevPoints, totalLength = _this$state2.totalLength;\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !lodash_isEqual__WEBPACK_IMPORTED_MODULE_3___default()(prevPoints, points))) {\n return this.renderCurveWithAnimation(needClip, clipPathId);\n }\n return this.renderCurveStatically(points, needClip, clipPathId);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _filterProps;\n var _this$props6 = this.props, hide = _this$props6.hide, dot = _this$props6.dot, points = _this$props6.points, className = _this$props6.className, xAxis = _this$props6.xAxis, yAxis = _this$props6.yAxis, top = _this$props6.top, left = _this$props6.left, width = _this$props6.width, height = _this$props6.height, isAnimationActive = _this$props6.isAnimationActive, id = _this$props6.id;\n if (hide || !points || !points.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])('recharts-line', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = lodash_isNil__WEBPACK_IMPORTED_MODULE_2___default()(id) ? this.id : id;\n var _ref2 = (_filterProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(dot, false)) !== null && _filterProps !== void 0 ? _filterProps : {\n r: 3,\n strokeWidth: 2\n }, _ref2$r = _ref2.r, r = _ref2$r === void 0 ? 3 : _ref2$r, _ref2$strokeWidth = _ref2.strokeWidth, strokeWidth = _ref2$strokeWidth === void 0 ? 2 : _ref2$strokeWidth;\n var _ref3 = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.hasClipDot)(dot) ? dot : {}, _ref3$clipDot = _ref3.clipDot, clipDot = _ref3$clipDot === void 0 ? true : _ref3$clipDot;\n var dotSize = r * 2 + strokeWidth;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"defs\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n })), !clipDot && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))) : null, !hasSinglePoint && this.renderCurve(needClip, clipPathId), this.renderErrorBar(needClip, clipPathId), (hasSinglePoint || dot) && this.renderDots(needClip, clipDot, clipPathId), (!isAnimationActive || isAnimationFinished) && _component_LabelList__WEBPACK_IMPORTED_MODULE_12__.LabelList.renderCallByParent(this.props, points));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints\n };\n }\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points\n };\n }\n return null;\n }\n },\n {\n key: \"repeat\",\n value: function repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [].concat(_toConsumableArray(lines), [\n 0\n ]) : lines;\n var result = [];\n for(var i = 0; i < count; ++i){\n result = [].concat(_toConsumableArray(result), _toConsumableArray(linesUnit));\n }\n return result;\n }\n },\n {\n key: \"renderDotItem\",\n value: function renderDotItem(option, props) {\n var dotItem;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n dotItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n dotItem = option(props);\n } else {\n var key = props.key, dotProps = _objectWithoutProperties(props, _excluded2);\n var className = (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])('recharts-line-dot', typeof option !== 'boolean' ? option.className : '');\n dotItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Dot__WEBPACK_IMPORTED_MODULE_13__.Dot, _extends({\n key: key\n }, dotProps, {\n className: className\n }));\n }\n return dotItem;\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(Line, \"displayName\", 'Line');\n_defineProperty(Line, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n connectNulls: false,\n activeDot: true,\n dot: true,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n fill: '#fff',\n points: [],\n isAnimationActive: !_util_Global__WEBPACK_IMPORTED_MODULE_14__.Global.isSsr,\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n hide: false,\n label: false\n});\n/**\n * Compose the data of each group\n * @param {Object} props The props from the component\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {String} dataKey The unique key of a group\n * @return {Array} Composed data\n */ _defineProperty(Line, \"getComposedData\", function(_ref4) {\n var props = _ref4.props, xAxis = _ref4.xAxis, yAxis = _ref4.yAxis, xAxisTicks = _ref4.xAxisTicks, yAxisTicks = _ref4.yAxisTicks, dataKey = _ref4.dataKey, bandSize = _ref4.bandSize, displayedData = _ref4.displayedData, offset = _ref4.offset;\n var layout = props.layout;\n var points = displayedData.map(function(entry, index) {\n var value = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_8__.getValueByDataKey)(entry, dataKey);\n if (layout === 'horizontal') {\n return {\n x: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_8__.getCateCoordinateOfLine)({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: lodash_isNil__WEBPACK_IMPORTED_MODULE_2___default()(value) ? null : yAxis.scale(value),\n value: value,\n payload: entry\n };\n }\n return {\n x: lodash_isNil__WEBPACK_IMPORTED_MODULE_2___default()(value) ? null : xAxis.scale(value),\n y: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_8__.getCateCoordinateOfLine)({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n return _objectSpread({\n points: points,\n layout: layout\n }, offset);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9MaW5lLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0lBQVE7SUFBVTtJQUFnQjtDQUFNLEVBQ3ZEQyxhQUFhO0lBQUM7Q0FBTTtBQUN0QixTQUFTQyxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0sseUJBQXlCQyxNQUFNLEVBQUVDLFFBQVE7SUFBSSxJQUFJRCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUUsU0FBU0MsOEJBQThCSCxRQUFRQztJQUFXLElBQUlHLEtBQUtDO0lBQUcsSUFBSUMsT0FBT0MscUJBQXFCLEVBQUU7UUFBRSxJQUFJQyxtQkFBbUJGLE9BQU9DLHFCQUFxQixDQUFDUDtRQUFTLElBQUtLLElBQUksR0FBR0EsSUFBSUcsaUJBQWlCQyxNQUFNLEVBQUVKLElBQUs7WUFBRUQsTUFBTUksZ0JBQWdCLENBQUNILEVBQUU7WUFBRSxJQUFJSixTQUFTUyxPQUFPLENBQUNOLFFBQVEsR0FBRztZQUFVLElBQUksQ0FBQ0UsT0FBT1IsU0FBUyxDQUFDYSxvQkFBb0IsQ0FBQ0MsSUFBSSxDQUFDWixRQUFRSSxNQUFNO1lBQVVGLE1BQU0sQ0FBQ0UsSUFBSSxHQUFHSixNQUFNLENBQUNJLElBQUk7UUFBRTtJQUFFO0lBQUUsT0FBT0Y7QUFBUTtBQUMzZSxTQUFTQyw4QkFBOEJILE1BQU0sRUFBRUMsUUFBUTtJQUFJ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QUM7Z0JBQ3pCMEssTUFBTTNIO2dCQUNONEgsT0FBT0w7Z0JBQ1BDLFVBQVVBO2dCQUNWaEcsT0FBT0E7Z0JBQ1BFLE9BQU9BO1lBQ1Q7WUFDQW5HLE9BQU9BO1lBQ1BtRixTQUFTYztRQUNYO0lBQ0Y7SUFDQSxPQUFPekosY0FBYztRQUNuQitILFFBQVFBO1FBQ1JHLFFBQVFBO0lBQ1YsR0FBR3lIO0FBQ0wiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9MaW5lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfZXhjbHVkZWQgPSBbXCJ0eXBlXCIsIFwibGF5b3V0XCIsIFwiY29ubmVjdE51bGxzXCIsIFwicmVmXCJdLFxuICBfZXhjbHVkZWQyID0gW1wia2V5XCJdO1xuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGl0ZXJbU3ltYm9sLml0ZXJhdG9yXSAhPSBudWxsIHx8IGl0ZXJbXCJAQGl0ZXJhdG9yXCJdICE9IG51bGwpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpOyB9XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShhcnIpOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IExpbmVcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQW5pbWF0ZSBmcm9tICdyZWFjdC1zbW9vdGgnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IEN1cnZlIH0gZnJvbSAnLi4vc2hhcGUvQ3VydmUnO1xuaW1wb3J0IHsgRG90IH0gZnJvbSAnLi4vc2hhcGUvRG90JztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vY29udGFpbmVyL0xheWVyJztcbmltcG9ydCB7IExhYmVsTGlzdCB9IGZyb20gJy4uL2NvbXBvbmVudC9MYWJlbExpc3QnO1xuaW1wb3J0IHsgRXJyb3JCYXIgfSBmcm9tICcuL0Vycm9yQmFyJztcbmltcG9ydCB7IHVuaXF1ZUlkLCBpbnRlcnBvbGF0ZU51bWJlciB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IGZpbmRBbGxCeVR5cGUsIGZpbHRlclByb3BzLCBoYXNDbGlwRG90IH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4uL3V0aWwvR2xvYmFsJztcbmltcG9ydCB7IGdldENhdGVDb29yZGluYXRlT2ZMaW5lLCBnZXRWYWx1ZUJ5RGF0YUtleSB9IGZyb20gJy4uL3V0aWwvQ2hhcnRVdGlscyc7XG5leHBvcnQgdmFyIExpbmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIExpbmUoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMaW5lKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX2NhbGxTdXBlcih0aGlzLCBMaW5lLCBbXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJzdGF0ZVwiLCB7XG4gICAgICBpc0FuaW1hdGlvbkZpbmlzaGVkOiB0cnVlLFxuICAgICAgdG90YWxMZW5ndGg6IDBcbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiZ2VuZXJhdGVTaW1wbGVTdHJva2VEYXNoYXJyYXlcIiwgZnVuY3Rpb24gKHRvdGFsTGVuZ3RoLCBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChsZW5ndGgsIFwicHggXCIpLmNvbmNhdCh0b3RhbExlbmd0aCAtIGxlbmd0aCwgXCJweFwiKTtcbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiZ2V0U3Ryb2tlRGFzaGFycmF5XCIsIGZ1bmN0aW9uIChsZW5ndGgsIHRvdGFsTGVuZ3RoLCBsaW5lcykge1xuICAgICAgdmFyIGxpbmVMZW5ndGggPSBsaW5lcy5yZWR1Y2UoZnVuY3Rpb24gKHByZSwgbmV4dCkge1xuICAgICAgICByZXR1cm4gcHJlICsgbmV4dDtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBpZiBsaW5lTGVuZ3RoIGlzIDAgcmV0dXJuIHRoZSBkZWZhdWx0IHdoZW4gbm8gc3Ryb2tlRGFzaGFycmF5IGlzIHByb3ZpZGVkXG4gICAgICBpZiAoIWxpbmVMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmdlbmVyYXRlU2ltcGxlU3Ryb2tlRGFzaGFycmF5KHRvdGFsTGVuZ3RoLCBsZW5ndGgpO1xuICAgICAgfVxuICAgICAgdmFyIGNvdW50ID0gTWF0aC5mbG9vcihsZW5ndGggLyBsaW5lTGVuZ3RoKTtcbiAgICAgIHZhciByZW1haW5MZW5ndGggPSBsZW5ndGggJSBsaW5lTGVuZ3RoO1xuICAgICAgdmFyIHJlc3RMZW5ndGggPSB0b3RhbExlbmd0aCAtIGxlbmd0aDtcbiAgICAgIHZhciByZW1haW5MaW5lcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIHN1bSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IHN1bSArPSBsaW5lc1tpXSwgKytpKSB7XG4gICAgICAgIGlmIChzdW0gKyBsaW5lc1tpXSA+IHJlbWFpbkxlbmd0aCkge1xuICAgICAgICAgIHJlbWFpbkxpbmVzID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShsaW5lcy5zbGljZSgwLCBpKSksIFtyZW1haW5MZW5ndGggLSBzdW1dKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIGVtcHR5TGluZXMgPSByZW1haW5MaW5lcy5sZW5ndGggJSAyID09PSAwID8gWzAsIHJlc3RMZW5ndGhdIDogW3Jlc3RMZW5ndGhdO1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoTGluZS5yZXBlYXQobGluZXMsIGNvdW50KSksIF90b0NvbnN1bWFibGVBcnJheShyZW1haW5MaW5lcyksIGVtcHR5TGluZXMpLm1hcChmdW5jdGlvbiAobGluZSkge1xuICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQobGluZSwgXCJweFwiKTtcbiAgICAgIH0pLmpvaW4oJywgJyk7XG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImlkXCIsIHVuaXF1ZUlkKCdyZWNoYXJ0cy1saW5lLScpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwicGF0aFJlZlwiLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgX3RoaXMubWFpbkN1cnZlID0gbm9kZTtcbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlQW5pbWF0aW9uRW5kXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNBbmltYXRpb25GaW5pc2hlZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoX3RoaXMucHJvcHMub25BbmltYXRpb25FbmQpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25BbmltYXRpb25FbmQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlQW5pbWF0aW9uU3RhcnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc0FuaW1hdGlvbkZpbmlzaGVkOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBpZiAoX3RoaXMucHJvcHMub25BbmltYXRpb25TdGFydCkge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkFuaW1hdGlvblN0YXJ0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9pbmhlcml0cyhMaW5lLCBfUHVyZUNvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoTGluZSwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBpZiAoIXRoaXMucHJvcHMuaXNBbmltYXRpb25BY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHRvdGFsTGVuZ3RoID0gdGhpcy5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHRvdGFsTGVuZ3RoOiB0b3RhbExlbmd0aFxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICBpZiAoIXRoaXMucHJvcHMuaXNBbmltYXRpb25BY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHRvdGFsTGVuZ3RoID0gdGhpcy5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgaWYgKHRvdGFsTGVuZ3RoICE9PSB0aGlzLnN0YXRlLnRvdGFsTGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIHRvdGFsTGVuZ3RoOiB0b3RhbExlbmd0aFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VG90YWxMZW5ndGhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VG90YWxMZW5ndGgoKSB7XG4gICAgICB2YXIgY3VydmVEb20gPSB0aGlzLm1haW5DdXJ2ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBjdXJ2ZURvbSAmJiBjdXJ2ZURvbS5nZXRUb3RhbExlbmd0aCAmJiBjdXJ2ZURvbS5nZXRUb3RhbExlbmd0aCgpIHx8IDA7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckVycm9yQmFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckVycm9yQmFyKG5lZWRDbGlwLCBjbGlwUGF0aElkKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5pc0FuaW1hdGlvbkFjdGl2ZSAmJiAhdGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgcG9pbnRzID0gX3RoaXMkcHJvcHMucG9pbnRzLFxuICAgICAgICB4QXhpcyA9IF90aGlzJHByb3BzLnhBeGlzLFxuICAgICAgICB5QXhpcyA9IF90aGlzJHByb3BzLnlBeGlzLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wcy5sYXlvdXQsXG4gICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW47XG4gICAgICB2YXIgZXJyb3JCYXJJdGVtcyA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIEVycm9yQmFyKTtcbiAgICAgIGlmICghZXJyb3JCYXJJdGVtcykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhUG9pbnRGb3JtYXR0ZXIgPSBmdW5jdGlvbiBkYXRhUG9pbnRGb3JtYXR0ZXIoZGF0YVBvaW50LCBkYXRhS2V5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogZGF0YVBvaW50LngsXG4gICAgICAgICAgeTogZGF0YVBvaW50LnksXG4gICAgICAgICAgdmFsdWU6IGRhdGFQb2ludC52YWx1ZSxcbiAgICAgICAgICBlcnJvclZhbDogZ2V0VmFsdWVCeURhdGFLZXkoZGF0YVBvaW50LnBheWxvYWQsIGRhdGFLZXkpXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgdmFyIGVycm9yQmFyUHJvcHMgPSB7XG4gICAgICAgIGNsaXBQYXRoOiBuZWVkQ2xpcCA/IFwidXJsKCNjbGlwUGF0aC1cIi5jb25jYXQoY2xpcFBhdGhJZCwgXCIpXCIpIDogbnVsbFxuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgZXJyb3JCYXJQcm9wcywgZXJyb3JCYXJJdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoaXRlbSwge1xuICAgICAgICAgIGtleTogXCJiYXItXCIuY29uY2F0KGl0ZW0ucHJvcHMuZGF0YUtleSksXG4gICAgICAgICAgZGF0YTogcG9pbnRzLFxuICAgICAgICAgIHhBeGlzOiB4QXhpcyxcbiAgICAgICAgICB5QXhpczogeUF4aXMsXG4gICAgICAgICAgbGF5b3V0OiBsYXlvdXQsXG4gICAgICAgICAgZGF0YVBvaW50Rm9ybWF0dGVyOiBkYXRhUG9pbnRGb3JtYXR0ZXJcbiAgICAgICAgfSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckRvdHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyRG90cyhuZWVkQ2xpcCwgY2xpcERvdCwgY2xpcFBhdGhJZCkge1xuICAgICAgdmFyIGlzQW5pbWF0aW9uQWN0aXZlID0gdGhpcy5wcm9wcy5pc0FuaW1hdGlvbkFjdGl2ZTtcbiAgICAgIGlmIChpc0FuaW1hdGlvbkFjdGl2ZSAmJiAhdGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRvdCA9IF90aGlzJHByb3BzMi5kb3QsXG4gICAgICAgIHBvaW50cyA9IF90aGlzJHByb3BzMi5wb2ludHMsXG4gICAgICAgIGRhdGFLZXkgPSBfdGhpcyRwcm9wczIuZGF0YUtleTtcbiAgICAgIHZhciBsaW5lUHJvcHMgPSBmaWx0ZXJQcm9wcyh0aGlzLnByb3BzLCBmYWxzZSk7XG4gICAgICB2YXIgY3VzdG9tRG90UHJvcHMgPSBmaWx0ZXJQcm9wcyhkb3QsIHRydWUpO1xuICAgICAgdmFyIGRvdHMgPSBwb2ludHMubWFwKGZ1bmN0aW9uIChlbnRyeSwgaSkge1xuICAgICAgICB2YXIgZG90UHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAga2V5OiBcImRvdC1cIi5jb25jYXQoaSksXG4gICAgICAgICAgcjogM1xuICAgICAgICB9LCBsaW5lUHJvcHMpLCBjdXN0b21Eb3RQcm9wcyksIHt9LCB7XG4gICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgY3g6IGVudHJ5LngsXG4gICAgICAgICAgY3k6IGVudHJ5LnksXG4gICAgICAgICAgdmFsdWU6IGVudHJ5LnZhbHVlLFxuICAgICAgICAgIGRhdGFLZXk6IGRhdGFLZXksXG4gICAgICAgICAgcGF5bG9hZDogZW50cnkucGF5bG9hZCxcbiAgICAgICAgICBwb2ludHM6IHBvaW50c1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIExpbmUucmVuZGVyRG90SXRlbShkb3QsIGRvdFByb3BzKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGRvdHNQcm9wcyA9IHtcbiAgICAgICAgY2xpcFBhdGg6IG5lZWRDbGlwID8gXCJ1cmwoI2NsaXBQYXRoLVwiLmNvbmNhdChjbGlwRG90ID8gJycgOiAnZG90cy0nKS5jb25jYXQoY2xpcFBhdGhJZCwgXCIpXCIpIDogbnVsbFxuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgX2V4dGVuZHMoe1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtbGluZS1kb3RzXCIsXG4gICAgICAgIGtleTogXCJkb3RzXCJcbiAgICAgIH0sIGRvdHNQcm9wcyksIGRvdHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJDdXJ2ZVN0YXRpY2FsbHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ3VydmVTdGF0aWNhbGx5KHBvaW50cywgbmVlZENsaXAsIGNsaXBQYXRoSWQsIHByb3BzKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgdHlwZSA9IF90aGlzJHByb3BzMy50eXBlLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wczMubGF5b3V0LFxuICAgICAgICBjb25uZWN0TnVsbHMgPSBfdGhpcyRwcm9wczMuY29ubmVjdE51bGxzLFxuICAgICAgICByZWYgPSBfdGhpcyRwcm9wczMucmVmLFxuICAgICAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHMzLCBfZXhjbHVkZWQpO1xuICAgICAgdmFyIGN1cnZlUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyUHJvcHMob3RoZXJzLCB0cnVlKSksIHt9LCB7XG4gICAgICAgIGZpbGw6ICdub25lJyxcbiAgICAgICAgY2xhc3NOYW1lOiAncmVjaGFydHMtbGluZS1jdXJ2ZScsXG4gICAgICAgIGNsaXBQYXRoOiBuZWVkQ2xpcCA/IFwidXJsKCNjbGlwUGF0aC1cIi5jb25jYXQoY2xpcFBhdGhJZCwgXCIpXCIpIDogbnVsbCxcbiAgICAgICAgcG9pbnRzOiBwb2ludHNcbiAgICAgIH0sIHByb3BzKSwge30sIHtcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgbGF5b3V0OiBsYXlvdXQsXG4gICAgICAgIGNvbm5lY3ROdWxsczogY29ubmVjdE51bGxzXG4gICAgICB9KTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDdXJ2ZSwgX2V4dGVuZHMoe30sIGN1cnZlUHJvcHMsIHtcbiAgICAgICAgcGF0aFJlZjogdGhpcy5wYXRoUmVmXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckN1cnZlV2l0aEFuaW1hdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJDdXJ2ZVdpdGhBbmltYXRpb24obmVlZENsaXAsIGNsaXBQYXRoSWQpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIHBvaW50cyA9IF90aGlzJHByb3BzNC5wb2ludHMsXG4gICAgICAgIHN0cm9rZURhc2hhcnJheSA9IF90aGlzJHByb3BzNC5zdHJva2VEYXNoYXJyYXksXG4gICAgICAgIGlzQW5pbWF0aW9uQWN0aXZlID0gX3RoaXMkcHJvcHM0LmlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBhbmltYXRpb25CZWdpbiA9IF90aGlzJHByb3BzNC5hbmltYXRpb25CZWdpbixcbiAgICAgICAgYW5pbWF0aW9uRHVyYXRpb24gPSBfdGhpcyRwcm9wczQuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgIGFuaW1hdGlvbkVhc2luZyA9IF90aGlzJHByb3BzNC5hbmltYXRpb25FYXNpbmcsXG4gICAgICAgIGFuaW1hdGlvbklkID0gX3RoaXMkcHJvcHM0LmFuaW1hdGlvbklkLFxuICAgICAgICBhbmltYXRlTmV3VmFsdWVzID0gX3RoaXMkcHJvcHM0LmFuaW1hdGVOZXdWYWx1ZXMsXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHM0LndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczQuaGVpZ2h0O1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgcHJldlBvaW50cyA9IF90aGlzJHN0YXRlLnByZXZQb2ludHMsXG4gICAgICAgIHRvdGFsTGVuZ3RoID0gX3RoaXMkc3RhdGUudG90YWxMZW5ndGg7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQW5pbWF0ZSwge1xuICAgICAgICBiZWdpbjogYW5pbWF0aW9uQmVnaW4sXG4gICAgICAgIGR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgaXNBY3RpdmU6IGlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBlYXNpbmc6IGFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHQ6IDBcbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB0OiAxXG4gICAgICAgIH0sXG4gICAgICAgIGtleTogXCJsaW5lLVwiLmNvbmNhdChhbmltYXRpb25JZCksXG4gICAgICAgIG9uQW5pbWF0aW9uRW5kOiB0aGlzLmhhbmRsZUFuaW1hdGlvbkVuZCxcbiAgICAgICAgb25BbmltYXRpb25TdGFydDogdGhpcy5oYW5kbGVBbmltYXRpb25TdGFydFxuICAgICAgfSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIHQgPSBfcmVmLnQ7XG4gICAgICAgIGlmIChwcmV2UG9pbnRzKSB7XG4gICAgICAgICAgdmFyIHByZXZQb2ludHNEaWZmRmFjdG9yID0gcHJldlBvaW50cy5sZW5ndGggLyBwb2ludHMubGVuZ3RoO1xuICAgICAgICAgIHZhciBzdGVwRGF0YSA9IHBvaW50cy5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xuICAgICAgICAgICAgdmFyIHByZXZQb2ludEluZGV4ID0gTWF0aC5mbG9vcihpbmRleCAqIHByZXZQb2ludHNEaWZmRmFjdG9yKTtcbiAgICAgICAgICAgIGlmIChwcmV2UG9pbnRzW3ByZXZQb2ludEluZGV4XSkge1xuICAgICAgICAgICAgICB2YXIgcHJldiA9IHByZXZQb2ludHNbcHJldlBvaW50SW5kZXhdO1xuICAgICAgICAgICAgICB2YXIgaW50ZXJwb2xhdG9yWCA9IGludGVycG9sYXRlTnVtYmVyKHByZXYueCwgZW50cnkueCk7XG4gICAgICAgICAgICAgIHZhciBpbnRlcnBvbGF0b3JZID0gaW50ZXJwb2xhdGVOdW1iZXIocHJldi55LCBlbnRyeS55KTtcbiAgICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICAgICAgICAgIHg6IGludGVycG9sYXRvclgodCksXG4gICAgICAgICAgICAgICAgeTogaW50ZXJwb2xhdG9yWSh0KVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbWFnaWMgbnVtYmVyIG9mIGZha2luZyBwcmV2aW91cyB4IGFuZCB5IGxvY2F0aW9uXG4gICAgICAgICAgICBpZiAoYW5pbWF0ZU5ld1ZhbHVlcykge1xuICAgICAgICAgICAgICB2YXIgX2ludGVycG9sYXRvclggPSBpbnRlcnBvbGF0ZU51bWJlcih3aWR0aCAqIDIsIGVudHJ5LngpO1xuICAgICAgICAgICAgICB2YXIgX2ludGVycG9sYXRvclkgPSBpbnRlcnBvbGF0ZU51bWJlcihoZWlnaHQgLyAyLCBlbnRyeS55KTtcbiAgICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICAgICAgICAgIHg6IF9pbnRlcnBvbGF0b3JYKHQpLFxuICAgICAgICAgICAgICAgIHk6IF9pbnRlcnBvbGF0b3JZKHQpXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICAgICAgICB4OiBlbnRyeS54LFxuICAgICAgICAgICAgICB5OiBlbnRyeS55XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gX3RoaXMyLnJlbmRlckN1cnZlU3RhdGljYWxseShzdGVwRGF0YSwgbmVlZENsaXAsIGNsaXBQYXRoSWQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbnRlcnBvbGF0b3IgPSBpbnRlcnBvbGF0ZU51bWJlcigwLCB0b3RhbExlbmd0aCk7XG4gICAgICAgIHZhciBjdXJMZW5ndGggPSBpbnRlcnBvbGF0b3IodCk7XG4gICAgICAgIHZhciBjdXJyZW50U3Ryb2tlRGFzaGFycmF5O1xuICAgICAgICBpZiAoc3Ryb2tlRGFzaGFycmF5KSB7XG4gICAgICAgICAgdmFyIGxpbmVzID0gXCJcIi5jb25jYXQoc3Ryb2tlRGFzaGFycmF5KS5zcGxpdCgvWyxcXHNdKy9naW0pLm1hcChmdW5jdGlvbiAobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGN1cnJlbnRTdHJva2VEYXNoYXJyYXkgPSBfdGhpczIuZ2V0U3Ryb2tlRGFzaGFycmF5KGN1ckxlbmd0aCwgdG90YWxMZW5ndGgsIGxpbmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50U3Ryb2tlRGFzaGFycmF5ID0gX3RoaXMyLmdlbmVyYXRlU2ltcGxlU3Ryb2tlRGFzaGFycmF5KHRvdGFsTGVuZ3RoLCBjdXJMZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdGhpczIucmVuZGVyQ3VydmVTdGF0aWNhbGx5KHBvaW50cywgbmVlZENsaXAsIGNsaXBQYXRoSWQsIHtcbiAgICAgICAgICBzdHJva2VEYXNoYXJyYXk6IGN1cnJlbnRTdHJva2VEYXNoYXJyYXlcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQ3VydmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ3VydmUobmVlZENsaXAsIGNsaXBQYXRoSWQpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczUgPSB0aGlzLnByb3BzLFxuICAgICAgICBwb2ludHMgPSBfdGhpcyRwcm9wczUucG9pbnRzLFxuICAgICAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IF90aGlzJHByb3BzNS5pc0FuaW1hdGlvbkFjdGl2ZTtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTIgPSB0aGlzLnN0YXRlLFxuICAgICAgICBwcmV2UG9pbnRzID0gX3RoaXMkc3RhdGUyLnByZXZQb2ludHMsXG4gICAgICAgIHRvdGFsTGVuZ3RoID0gX3RoaXMkc3RhdGUyLnRvdGFsTGVuZ3RoO1xuICAgICAgaWYgKGlzQW5pbWF0aW9uQWN0aXZlICYmIHBvaW50cyAmJiBwb2ludHMubGVuZ3RoICYmICghcHJldlBvaW50cyAmJiB0b3RhbExlbmd0aCA+IDAgfHwgIWlzRXF1YWwocHJldlBvaW50cywgcG9pbnRzKSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ3VydmVXaXRoQW5pbWF0aW9uKG5lZWRDbGlwLCBjbGlwUGF0aElkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckN1cnZlU3RhdGljYWxseShwb2ludHMsIG5lZWRDbGlwLCBjbGlwUGF0aElkKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfZmlsdGVyUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgaGlkZSA9IF90aGlzJHByb3BzNi5oaWRlLFxuICAgICAgICBkb3QgPSBfdGhpcyRwcm9wczYuZG90LFxuICAgICAgICBwb2ludHMgPSBfdGhpcyRwcm9wczYucG9pbnRzLFxuICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczYuY2xhc3NOYW1lLFxuICAgICAgICB4QXhpcyA9IF90aGlzJHByb3BzNi54QXhpcyxcbiAgICAgICAgeUF4aXMgPSBfdGhpcyRwcm9wczYueUF4aXMsXG4gICAgICAgIHRvcCA9IF90aGlzJHByb3BzNi50b3AsXG4gICAgICAgIGxlZnQgPSBfdGhpcyRwcm9wczYubGVmdCxcbiAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczYud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzNi5oZWlnaHQsXG4gICAgICAgIGlzQW5pbWF0aW9uQWN0aXZlID0gX3RoaXMkcHJvcHM2LmlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBpZCA9IF90aGlzJHByb3BzNi5pZDtcbiAgICAgIGlmIChoaWRlIHx8ICFwb2ludHMgfHwgIXBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgaXNBbmltYXRpb25GaW5pc2hlZCA9IHRoaXMuc3RhdGUuaXNBbmltYXRpb25GaW5pc2hlZDtcbiAgICAgIHZhciBoYXNTaW5nbGVQb2ludCA9IHBvaW50cy5sZW5ndGggPT09IDE7XG4gICAgICB2YXIgbGF5ZXJDbGFzcyA9IGNsc3goJ3JlY2hhcnRzLWxpbmUnLCBjbGFzc05hbWUpO1xuICAgICAgdmFyIG5lZWRDbGlwWCA9IHhBeGlzICYmIHhBeGlzLmFsbG93RGF0YU92ZXJmbG93O1xuICAgICAgdmFyIG5lZWRDbGlwWSA9IHlBeGlzICYmIHlBeGlzLmFsbG93RGF0YU92ZXJmbG93O1xuICAgICAgdmFyIG5lZWRDbGlwID0gbmVlZENsaXBYIHx8IG5lZWRDbGlwWTtcbiAgICAgIHZhciBjbGlwUGF0aElkID0gaXNOaWwoaWQpID8gdGhpcy5pZCA6IGlkO1xuICAgICAgdmFyIF9yZWYyID0gKF9maWx0ZXJQcm9wcyA9IGZpbHRlclByb3BzKGRvdCwgZmFsc2UpKSAhPT0gbnVsbCAmJiBfZmlsdGVyUHJvcHMgIT09IHZvaWQgMCA/IF9maWx0ZXJQcm9wcyA6IHtcbiAgICAgICAgICByOiAzLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAyXG4gICAgICAgIH0sXG4gICAgICAgIF9yZWYyJHIgPSBfcmVmMi5yLFxuICAgICAgICByID0gX3JlZjIkciA9PT0gdm9pZCAwID8gMyA6IF9yZWYyJHIsXG4gICAgICAgIF9yZWYyJHN0cm9rZVdpZHRoID0gX3JlZjIuc3Ryb2tlV2lkdGgsXG4gICAgICAgIHN0cm9rZVdpZHRoID0gX3JlZjIkc3Ryb2tlV2lkdGggPT09IHZvaWQgMCA/IDIgOiBfcmVmMiRzdHJva2VXaWR0aDtcbiAgICAgIHZhciBfcmVmMyA9IGhhc0NsaXBEb3QoZG90KSA/IGRvdCA6IHt9LFxuICAgICAgICBfcmVmMyRjbGlwRG90ID0gX3JlZjMuY2xpcERvdCxcbiAgICAgICAgY2xpcERvdCA9IF9yZWYzJGNsaXBEb3QgPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmMyRjbGlwRG90O1xuICAgICAgdmFyIGRvdFNpemUgPSByICogMiArIHN0cm9rZVdpZHRoO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzc1xuICAgICAgfSwgbmVlZENsaXBYIHx8IG5lZWRDbGlwWSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVmc1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNsaXBQYXRoXCIsIHtcbiAgICAgICAgaWQ6IFwiY2xpcFBhdGgtXCIuY29uY2F0KGNsaXBQYXRoSWQpXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgICAgICB4OiBuZWVkQ2xpcFggPyBsZWZ0IDogbGVmdCAtIHdpZHRoIC8gMixcbiAgICAgICAgeTogbmVlZENsaXBZID8gdG9wIDogdG9wIC0gaGVpZ2h0IC8gMixcbiAgICAgICAgd2lkdGg6IG5lZWRDbGlwWCA/IHdpZHRoIDogd2lkdGggKiAyLFxuICAgICAgICBoZWlnaHQ6IG5lZWRDbGlwWSA/IGhlaWdodCA6IGhlaWdodCAqIDJcbiAgICAgIH0pKSwgIWNsaXBEb3QgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjbGlwUGF0aFwiLCB7XG4gICAgICAgIGlkOiBcImNsaXBQYXRoLWRvdHMtXCIuY29uY2F0KGNsaXBQYXRoSWQpXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgICAgICB4OiBsZWZ0IC0gZG90U2l6ZSAvIDIsXG4gICAgICAgIHk6IHRvcCAtIGRvdFNpemUgLyAyLFxuICAgICAgICB3aWR0aDogd2lkdGggKyBkb3RTaXplLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCArIGRvdFNpemVcbiAgICAgIH0pKSkgOiBudWxsLCAhaGFzU2luZ2xlUG9pbnQgJiYgdGhpcy5yZW5kZXJDdXJ2ZShuZWVkQ2xpcCwgY2xpcFBhdGhJZCksIHRoaXMucmVuZGVyRXJyb3JCYXIobmVlZENsaXAsIGNsaXBQYXRoSWQpLCAoaGFzU2luZ2xlUG9pbnQgfHwgZG90KSAmJiB0aGlzLnJlbmRlckRvdHMobmVlZENsaXAsIGNsaXBEb3QsIGNsaXBQYXRoSWQpLCAoIWlzQW5pbWF0aW9uQWN0aXZlIHx8IGlzQW5pbWF0aW9uRmluaXNoZWQpICYmIExhYmVsTGlzdC5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcywgcG9pbnRzKSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgaWYgKG5leHRQcm9wcy5hbmltYXRpb25JZCAhPT0gcHJldlN0YXRlLnByZXZBbmltYXRpb25JZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHByZXZBbmltYXRpb25JZDogbmV4dFByb3BzLmFuaW1hdGlvbklkLFxuICAgICAgICAgIGN1clBvaW50czogbmV4dFByb3BzLnBvaW50cyxcbiAgICAgICAgICBwcmV2UG9pbnRzOiBwcmV2U3RhdGUuY3VyUG9pbnRzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAobmV4dFByb3BzLnBvaW50cyAhPT0gcHJldlN0YXRlLmN1clBvaW50cykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGN1clBvaW50czogbmV4dFByb3BzLnBvaW50c1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlcGVhdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXBlYXQobGluZXMsIGNvdW50KSB7XG4gICAgICB2YXIgbGluZXNVbml0ID0gbGluZXMubGVuZ3RoICUgMiAhPT0gMCA/IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkobGluZXMpLCBbMF0pIDogbGluZXM7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHtcbiAgICAgICAgcmVzdWx0ID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXN1bHQpLCBfdG9Db25zdW1hYmxlQXJyYXkobGluZXNVbml0KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJEb3RJdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckRvdEl0ZW0ob3B0aW9uLCBwcm9wcykge1xuICAgICAgdmFyIGRvdEl0ZW07XG4gICAgICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgICAgIGRvdEl0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKG9wdGlvbikpIHtcbiAgICAgICAgZG90SXRlbSA9IG9wdGlvbihwcm9wcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHMua2V5LFxuICAgICAgICAgIGRvdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQyKTtcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9IGNsc3goJ3JlY2hhcnRzLWxpbmUtZG90JywgdHlwZW9mIG9wdGlvbiAhPT0gJ2Jvb2xlYW4nID8gb3B0aW9uLmNsYXNzTmFtZSA6ICcnKTtcbiAgICAgICAgZG90SXRlbSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KERvdCwgX2V4dGVuZHMoe1xuICAgICAgICAgIGtleToga2V5XG4gICAgICAgIH0sIGRvdFByb3BzLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRvdEl0ZW07XG4gICAgfVxuICB9XSk7XG59KFB1cmVDb21wb25lbnQpO1xuX2RlZmluZVByb3BlcnR5KExpbmUsIFwiZGlzcGxheU5hbWVcIiwgJ0xpbmUnKTtcbl9kZWZpbmVQcm9wZXJ0eShMaW5lLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHhBeGlzSWQ6IDAsXG4gIHlBeGlzSWQ6IDAsXG4gIGNvbm5lY3ROdWxsczogZmFsc2UsXG4gIGFjdGl2ZURvdDogdHJ1ZSxcbiAgZG90OiB0cnVlLFxuICBsZWdlbmRUeXBlOiAnbGluZScsXG4gIHN0cm9rZTogJyMzMTgyYmQnLFxuICBzdHJva2VXaWR0aDogMSxcbiAgZmlsbDogJyNmZmYnLFxuICBwb2ludHM6IFtdLFxuICBpc0FuaW1hdGlvbkFjdGl2ZTogIUdsb2JhbC5pc1NzcixcbiAgYW5pbWF0ZU5ld1ZhbHVlczogdHJ1ZSxcbiAgYW5pbWF0aW9uQmVnaW46IDAsXG4gIGFuaW1hdGlvbkR1cmF0aW9uOiAxNTAwLFxuICBhbmltYXRpb25FYXNpbmc6ICdlYXNlJyxcbiAgaGlkZTogZmFsc2UsXG4gIGxhYmVsOiBmYWxzZVxufSk7XG4vKipcbiAqIENvbXBvc2UgdGhlIGRhdGEgb2YgZWFjaCBncm91cFxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIFRoZSBwcm9wcyBmcm9tIHRoZSBjb21wb25lbnRcbiAqIEBwYXJhbSAge09iamVjdH0geEF4aXMgICBUaGUgY29uZmlndXJhdGlvbiBvZiB4LWF4aXNcbiAqIEBwYXJhbSAge09iamVjdH0geUF4aXMgICBUaGUgY29uZmlndXJhdGlvbiBvZiB5LWF4aXNcbiAqIEBwYXJhbSAge1N0cmluZ30gZGF0YUtleSBUaGUgdW5pcXVlIGtleSBvZiBhIGdyb3VwXG4gKiBAcmV0dXJuIHtBcnJheX0gIENvbXBvc2VkIGRhdGFcbiAqL1xuX2RlZmluZVByb3BlcnR5KExpbmUsIFwiZ2V0Q29tcG9zZWREYXRhXCIsIGZ1bmN0aW9uIChfcmVmNCkge1xuICB2YXIgcHJvcHMgPSBfcmVmNC5wcm9wcyxcbiAgICB4QXhpcyA9IF9yZWY0LnhBeGlzLFxuICAgIHlBeGlzID0gX3JlZjQueUF4aXMsXG4gICAgeEF4aXNUaWNrcyA9IF9yZWY0LnhBeGlzVGlja3MsXG4gICAgeUF4aXNUaWNrcyA9IF9yZWY0LnlBeGlzVGlja3MsXG4gICAgZGF0YUtleSA9IF9yZWY0LmRhdGFLZXksXG4gICAgYmFuZFNpemUgPSBfcmVmNC5iYW5kU2l6ZSxcbiAgICBkaXNwbGF5ZWREYXRhID0gX3JlZjQuZGlzcGxheWVkRGF0YSxcbiAgICBvZmZzZXQgPSBfcmVmNC5vZmZzZXQ7XG4gIHZhciBsYXlvdXQgPSBwcm9wcy5sYXlvdXQ7XG4gIHZhciBwb2ludHMgPSBkaXNwbGF5ZWREYXRhLm1hcChmdW5jdGlvbiAoZW50cnksIGluZGV4KSB7XG4gICAgdmFyIHZhbHVlID0gZ2V0VmFsdWVCeURhdGFLZXkoZW50cnksIGRhdGFLZXkpO1xuICAgIGlmIChsYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogZ2V0Q2F0ZUNvb3JkaW5hdGVPZkxpbmUoe1xuICAgICAgICAgIGF4aXM6IHhBeGlzLFxuICAgICAgICAgIHRpY2tzOiB4QXhpc1RpY2tzLFxuICAgICAgICAgIGJhbmRTaXplOiBiYW5kU2l6ZSxcbiAgICAgICAgICBlbnRyeTogZW50cnksXG4gICAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICAgIH0pLFxuICAgICAgICB5OiBpc05pbCh2YWx1ZSkgPyBudWxsIDogeUF4aXMuc2NhbGUodmFsdWUpLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIHBheWxvYWQ6IGVudHJ5XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgeDogaXNOaWwodmFsdWUpID8gbnVsbCA6IHhBeGlzLnNjYWxlKHZhbHVlKSxcbiAgICAgIHk6IGdldENhdGVDb29yZGluYXRlT2ZMaW5lKHtcbiAgICAgICAgYXhpczogeUF4aXMsXG4gICAgICAgIHRpY2tzOiB5QXhpc1RpY2tzLFxuICAgICAgICBiYW5kU2l6ZTogYmFuZFNpemUsXG4gICAgICAgIGVudHJ5OiBlbnRyeSxcbiAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICB9KSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHBheWxvYWQ6IGVudHJ5XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBwb2ludHM6IHBvaW50cyxcbiAgICBsYXlvdXQ6IGxheW91dFxuICB9LCBvZmZzZXQpO1xufSk7Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwia2V5IiwiaSIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjYWxsIiwiaGFzT3duUHJvcGVydHkiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJhcHBseSIsIm93bktleXMiLCJlIiwiciIsInQiLCJrZXlzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiaXRlciIsImlzQXJyYXkiLCJsZW4iLCJhcnIyIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiQW5pbWF0ZSIsImlzRnVuY3Rpb24iLCJpc05pbCIsImlzRXF1YWwiLCJjbHN4IiwiQ3VydmUiLCJEb3QiLCJMYXllciIsIkxhYmVsTGlzdCIsIkVycm9yQmFyIiwidW5pcXVlSWQiLCJpbnRlcnBvbGF0ZU51bWJlciIsImZpbmRBbGxCeVR5cGUiLCJmaWx0ZXJQcm9wcyIsImhhc0NsaXBEb3QiLCJHbG9iYWwiLCJnZXRDYXRlQ29vcmRpbmF0ZU9mTGluZSIsImdldFZhbHVlQnlEYXRhS2V5IiwiTGluZSIsIl9QdXJlQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJncyIsIl9rZXkiLCJjb25jYXQiLCJpc0FuaW1hdGlvbkZpbmlzaGVkIiwidG90YWxMZW5ndGgiLCJsaW5lcyIsImxpbmVMZW5ndGgiLCJyZWR1Y2UiLCJwcmUiLCJuZXh0IiwiZ2VuZXJhdGVTaW1wbGVTdHJva2VEYXNoYXJyYXkiLCJjb3VudCIsIk1hdGgiLCJmbG9vciIsInJlbWFpbkxlbmd0aCIsInJlc3RMZW5ndGgiLCJyZW1haW5MaW5lcyIsInN1bSIsImVtcHR5TGluZXMiLCJyZXBlYXQiLCJtYXAiLCJsaW5lIiwiam9pbiIsIm5vZGUiLCJtYWluQ3VydmUiLCJzZXRTdGF0ZSIsIm9uQW5pbWF0aW9uRW5kIiwib25BbmltYXRpb25TdGFydCIsImNvbXBvbmVudERpZE1vdW50IiwiaXNBbmltYXRpb25BY3RpdmUiLCJnZXRUb3RhbExlbmd0aCIsImNvbXBvbmVudERpZFVwZGF0ZSIsInN0YXRlIiwiY3VydmVEb20iLCJlcnIiLCJyZW5kZXJFcnJvckJhciIsIm5lZWRDbGlwIiwiY2xpcFBhdGhJZCIsIl90aGlzJHByb3BzIiwicG9pbnRzIiwieEF4aXMiLCJ5QXhpcyIsImxheW91dCIsImNoaWxkcmVuIiwiZXJyb3JCYXJJdGVtcyIsImRhdGFQb2ludEZvcm1hdHRlciIsImRhdGFQb2ludCIsImRhdGFLZXkiLCJ4IiwieSIsImVycm9yVmFsIiwicGF5bG9hZCIsImVycm9yQmFyUHJvcHMiLCJjbGlwUGF0aCIsImNyZWF0ZUVsZW1lbnQiLCJpdGVtIiwiY2xvbmVFbGVtZW50IiwiZGF0YSIsInJlbmRlckRvdHMiLCJjbGlwRG90IiwiX3RoaXMkcHJvcHMyIiwiZG90IiwibGluZVByb3BzIiwiY3VzdG9tRG90UHJvcHMiLCJkb3RzIiwiZW50cnkiLCJkb3RQcm9wcyIsImluZGV4IiwiY3giLCJjeSIsInJlbmRlckRvdEl0ZW0iLCJkb3RzUHJvcHMiLCJjbGFzc05hbWUiLCJyZW5kZXJDdXJ2ZVN0YXRpY2FsbHkiLCJfdGhpcyRwcm9wczMiLCJ0eXBlIiwiY29ubmVjdE51bGxzIiwicmVmIiwib3RoZXJzIiwiY3VydmVQcm9wcyIsImZpbGwiLCJwYXRoUmVmIiwicmVuZGVyQ3VydmVXaXRoQW5pbWF0aW9uIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHM0Iiwic3Ryb2tlRGFzaGFycmF5IiwiYW5pbWF0aW9uQmVnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkVhc2luZyIsImFuaW1hdGlvbklkIiwiYW5pbWF0ZU5ld1ZhbHVlcyIsIndpZHRoIiwiaGVpZ2h0IiwiX3RoaXMkc3RhdGUiLCJwcmV2UG9pbnRzIiwiYmVnaW4iLCJkdXJhdGlvbiIsImlzQWN0aXZlIiwiZWFzaW5nIiwidG8iLCJoYW5kbGVBbmltYXRpb25FbmQiLCJoYW5kbGVBbmltYXRpb25TdGFydCIsIl9yZWYiLCJwcmV2UG9pbnRzRGlmZkZhY3RvciIsInN0ZXBEYXRhIiwicHJldlBvaW50SW5kZXgiLCJwcmV2IiwiaW50ZXJwb2xhdG9yWCIsImludGVycG9sYXRvclkiLCJfaW50ZXJwb2xhdG9yWCIsIl9pbnRlcnBvbGF0b3JZIiwiaW50ZXJwb2xhdG9yIiwiY3VyTGVuZ3RoIiwiY3VycmVudFN0cm9rZURhc2hhcnJheSIsInNwbGl0IiwibnVtIiwicGFyc2VGbG9hdCIsImdldFN0cm9rZURhc2hhcnJheSIsInJlbmRlckN1cnZlIiwiX3RoaXMkcHJvcHM1IiwiX3RoaXMkc3RhdGUyIiwicmVuZGVyIiwiX2ZpbHRlclByb3BzIiwiX3RoaXMkcHJvcHM2IiwiaGlkZSIsInRvcCIsImxlZnQiLCJpZCIsImhhc1NpbmdsZVBvaW50IiwibGF5ZXJDbGFzcyIsIm5lZWRDbGlwWCIsImFsbG93RGF0YU92ZXJmbG93IiwibmVlZENsaXBZIiwiX3JlZjIiLCJzdHJva2VXaWR0aCIsIl9yZWYyJHIiLCJfcmVmMiRzdHJva2VXaWR0aCIsIl9yZWYzIiwiX3JlZjMkY2xpcERvdCIsImRvdFNpemUiLCJyZW5kZXJDYWxsQnlQYXJlbnQiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJuZXh0UHJvcHMiLCJwcmV2U3RhdGUiLCJwcmV2QW5pbWF0aW9uSWQiLCJjdXJQb2ludHMiLCJsaW5lc1VuaXQiLCJyZXN1bHQiLCJvcHRpb24iLCJkb3RJdGVtIiwiaXNWYWxpZEVsZW1lbnQiLCJ4QXhpc0lkIiwieUF4aXNJZCIsImFjdGl2ZURvdCIsImxlZ2VuZFR5cGUiLCJzdHJva2UiLCJpc1NzciIsImxhYmVsIiwiX3JlZjQiLCJ4QXhpc1RpY2tzIiwieUF4aXNUaWNrcyIsImJhbmRTaXplIiwiZGlzcGxheWVkRGF0YSIsIm9mZnNldCIsImF4aXMiLCJ0aWNrcyIsInNjYWxlIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/Line.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/ReferenceArea.js":
/*!**************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/ReferenceArea.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReferenceArea: () => (/* binding */ ReferenceArea)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_Label__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../component/Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _util_CartesianUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/CartesianUtils */ \"(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\");\n/* harmony import */ var _util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/IfOverflowMatches */ \"(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _shape_Rectangle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../shape/Rectangle */ \"(ssr)/./node_modules/recharts/es6/shape/Rectangle.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Reference Line\n */ \n\n\n\n\n\n\n\n\n\n\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n var xValue1 = props.x1, xValue2 = props.x2, yValue1 = props.y1, yValue2 = props.y2, xAxis = props.xAxis, yAxis = props.yAxis;\n if (!xAxis || !yAxis) return null;\n var scales = (0,_util_CartesianUtils__WEBPACK_IMPORTED_MODULE_3__.createLabeledScales)({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var p1 = {\n x: hasX1 ? scales.x.apply(xValue1, {\n position: 'start'\n }) : scales.x.rangeMin,\n y: hasY1 ? scales.y.apply(yValue1, {\n position: 'start'\n }) : scales.y.rangeMin\n };\n var p2 = {\n x: hasX2 ? scales.x.apply(xValue2, {\n position: 'end'\n }) : scales.x.rangeMax,\n y: hasY2 ? scales.y.apply(yValue2, {\n position: 'end'\n }) : scales.y.rangeMax\n };\n if ((0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n return null;\n }\n return (0,_util_CartesianUtils__WEBPACK_IMPORTED_MODULE_3__.rectWithPoints)(p1, p2);\n};\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nvar ReferenceArea = /*#__PURE__*/ function(_React$Component) {\n function ReferenceArea() {\n _classCallCheck(this, ReferenceArea);\n return _callSuper(this, ReferenceArea, arguments);\n }\n _inherits(ReferenceArea, _React$Component);\n return _createClass(ReferenceArea, [\n {\n key: \"render\",\n value: function render() {\n var _this$props = this.props, x1 = _this$props.x1, x2 = _this$props.x2, y1 = _this$props.y1, y2 = _this$props.y2, className = _this$props.className, alwaysShow = _this$props.alwaysShow, clipPathId = _this$props.clipPathId;\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_5__.warn)(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var hasX1 = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumOrStr)(x1);\n var hasX2 = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumOrStr)(x2);\n var hasY1 = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumOrStr)(y1);\n var hasY2 = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumOrStr)(y2);\n var shape = this.props.shape;\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n var rect = getRect(hasX1, hasX2, hasY1, hasY2, this.props);\n if (!rect && !shape) {\n return null;\n }\n var clipPath = (0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(this.props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('recharts-reference-area', className)\n }, ReferenceArea.renderRect(shape, _objectSpread(_objectSpread({\n clipPath: clipPath\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.filterProps)(this.props, true)), rect)), _component_Label__WEBPACK_IMPORTED_MODULE_9__.Label.renderCallByParent(this.props, rect));\n }\n }\n ]);\n}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));\n_defineProperty(ReferenceArea, \"displayName\", 'ReferenceArea');\n_defineProperty(ReferenceArea, \"defaultProps\", {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#ccc',\n fillOpacity: 0.5,\n stroke: 'none',\n strokeWidth: 1\n});\n_defineProperty(ReferenceArea, \"renderRect\", function(option, props) {\n var rect;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n rect = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n rect = option(props);\n } else {\n rect = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Rectangle__WEBPACK_IMPORTED_MODULE_10__.Rectangle, _extends({}, props, {\n className: \"recharts-reference-area-rect\"\n }));\n }\n return rect;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9SZWZlcmVuY2VBcmVhLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0E7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTYSxLQUFLLENBQUMsSUFBSSxFQUFFUDtBQUFZO0FBQ2xWLFNBQVNRLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9OLFNBQVMsR0FBRyxXQUFXLE9BQU9LO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSSxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJckIsT0FBT3NCLElBQUksQ0FBQ0g7SUFBSSxJQUFJbkIsT0FBT3VCLHFCQUFxQixFQUFFO1FBQUUsSUFBSVQsSUFBSWQsT0FBT3VCLHFCQUFxQixDQUFDSjtRQUFJQyxLQUFNTixDQUFBQSxJQUFJQSxFQUFF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QkFDWixHQUFHcEMsNkRBQVdBLENBQUMsSUFBSSxDQUFDN0MsS0FBSyxFQUFFLFFBQVFnRixRQUFRMUMsbURBQUtBLENBQUMrQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUNyRixLQUFLLEVBQUVnRjtZQUNsRjtRQUNGO0tBQUU7QUFDSixFQUFFOUMsd0RBQWUsRUFBRTtBQUNuQjNDLGdCQUFnQmdGLGVBQWUsZUFBZTtBQUM5Q2hGLGdCQUFnQmdGLGVBQWUsZ0JBQWdCO0lBQzdDZ0IsU0FBUztJQUNUQyxZQUFZO0lBQ1pDLFNBQVM7SUFDVEMsU0FBUztJQUNUN0csR0FBRztJQUNIOEcsTUFBTTtJQUNOQyxhQUFhO0lBQ2JDLFFBQVE7SUFDUkMsYUFBYTtBQUNmO0FBQ0F2RyxnQkFBZ0JnRixlQUFlLGNBQWMsU0FBVXdCLE1BQU0sRUFBRS9GLEtBQUs7SUFDbEUsSUFBSWdGO0lBQ0osSUFBSyxXQUFXLEdBQUU5QywyREFBb0IsQ0FBQzZELFNBQVM7UUFDOUNmLE9BQU8sV0FBVyxHQUFFOUMseURBQWtCLENBQUM2RCxRQUFRL0Y7SUFDakQsT0FBTyxJQUFJbUMsd0RBQVVBLENBQUM0RCxTQUFTO1FBQzdCZixPQUFPZSxPQUFPL0Y7SUFDaEIsT0FBTztRQUNMZ0YsT0FBTyxXQUFXLEdBQUU5QywwREFBbUIsQ0FBQ1Usd0RBQVNBLEVBQUVwRixTQUFTLENBQUMsR0FBR3dDLE9BQU87WUFDckUyRSxXQUFXO1FBQ2I7SUFDRjtJQUNBLE9BQU9LO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9SZWZlcmVuY2VBcmVhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgUmVmZXJlbmNlIExpbmVcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuLi9jb21wb25lbnQvTGFiZWwnO1xuaW1wb3J0IHsgY3JlYXRlTGFiZWxlZFNjYWxlcywgcmVjdFdpdGhQb2ludHMgfSBmcm9tICcuLi91dGlsL0NhcnRlc2lhblV0aWxzJztcbmltcG9ydCB7IGlmT3ZlcmZsb3dNYXRjaGVzIH0gZnJvbSAnLi4vdXRpbC9JZk92ZXJmbG93TWF0Y2hlcyc7XG5pbXBvcnQgeyBpc051bU9yU3RyIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJy4uL3V0aWwvTG9nVXRpbHMnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlIH0gZnJvbSAnLi4vc2hhcGUvUmVjdGFuZ2xlJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbnZhciBnZXRSZWN0ID0gZnVuY3Rpb24gZ2V0UmVjdChoYXNYMSwgaGFzWDIsIGhhc1kxLCBoYXNZMiwgcHJvcHMpIHtcbiAgdmFyIHhWYWx1ZTEgPSBwcm9wcy54MSxcbiAgICB4VmFsdWUyID0gcHJvcHMueDIsXG4gICAgeVZhbHVlMSA9IHByb3BzLnkxLFxuICAgIHlWYWx1ZTIgPSBwcm9wcy55MixcbiAgICB4QXhpcyA9IHByb3BzLnhBeGlzLFxuICAgIHlBeGlzID0gcHJvcHMueUF4aXM7XG4gIGlmICgheEF4aXMgfHwgIXlBeGlzKSByZXR1cm4gbnVsbDtcbiAgdmFyIHNjYWxlcyA9IGNyZWF0ZUxhYmVsZWRTY2FsZXMoe1xuICAgIHg6IHhBeGlzLnNjYWxlLFxuICAgIHk6IHlBeGlzLnNjYWxlXG4gIH0pO1xuICB2YXIgcDEgPSB7XG4gICAgeDogaGFzWDEgPyBzY2FsZXMueC5hcHBseSh4VmFsdWUxLCB7XG4gICAgICBwb3NpdGlvbjogJ3N0YXJ0J1xuICAgIH0pIDogc2NhbGVzLngucmFuZ2VNaW4sXG4gICAgeTogaGFzWTEgPyBzY2FsZXMueS5hcHBseSh5VmFsdWUxLCB7XG4gICAgICBwb3NpdGlvbjogJ3N0YXJ0J1xuICAgIH0pIDogc2NhbGVzLnkucmFuZ2VNaW5cbiAgfTtcbiAgdmFyIHAyID0ge1xuICAgIHg6IGhhc1gyID8gc2NhbGVzLnguYXBwbHkoeFZhbHVlMiwge1xuICAgICAgcG9zaXRpb246ICdlbmQnXG4gICAgfSkgOiBzY2FsZXMueC5yYW5nZU1heCxcbiAgICB5OiBoYXNZMiA/IHNjYWxlcy55LmFwcGx5KHlWYWx1ZTIsIHtcbiAgICAgIHBvc2l0aW9uOiAnZW5kJ1xuICAgIH0pIDogc2NhbGVzLnkucmFuZ2VNYXhcbiAgfTtcbiAgaWYgKGlmT3ZlcmZsb3dNYXRjaGVzKHByb3BzLCAnZGlzY2FyZCcpICYmICghc2NhbGVzLmlzSW5SYW5nZShwMSkgfHwgIXNjYWxlcy5pc0luUmFuZ2UocDIpKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiByZWN0V2l0aFBvaW50cyhwMSwgcDIpO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3ByZWZlci1zdGF0ZWxlc3MtZnVuY3Rpb24gLS0gcmVxdWlyZXMgc3RhdGljIGRlZmF1bHRQcm9wc1xuZXhwb3J0IHZhciBSZWZlcmVuY2VBcmVhID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIFJlZmVyZW5jZUFyZWEoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlZmVyZW5jZUFyZWEpO1xuICAgIHJldHVybiBfY2FsbFN1cGVyKHRoaXMsIFJlZmVyZW5jZUFyZWEsIGFyZ3VtZW50cyk7XG4gIH1cbiAgX2luaGVyaXRzKFJlZmVyZW5jZUFyZWEsIF9SZWFjdCRDb21wb25lbnQpO1xuICByZXR1cm4gX2NyZWF0ZUNsYXNzKFJlZmVyZW5jZUFyZWEsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICB4MSA9IF90aGlzJHByb3BzLngxLFxuICAgICAgICB4MiA9IF90aGlzJHByb3BzLngyLFxuICAgICAgICB5MSA9IF90aGlzJHByb3BzLnkxLFxuICAgICAgICB5MiA9IF90aGlzJHByb3BzLnkyLFxuICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgIGFsd2F5c1Nob3cgPSBfdGhpcyRwcm9wcy5hbHdheXNTaG93LFxuICAgICAgICBjbGlwUGF0aElkID0gX3RoaXMkcHJvcHMuY2xpcFBhdGhJZDtcbiAgICAgIHdhcm4oYWx3YXlzU2hvdyA9PT0gdW5kZWZpbmVkLCAnVGhlIGFsd2F5c1Nob3cgcHJvcCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGlmT3ZlcmZsb3c9XCJleHRlbmREb21haW5cIiBpbnN0ZWFkLicpO1xuICAgICAgdmFyIGhhc1gxID0gaXNOdW1PclN0cih4MSk7XG4gICAgICB2YXIgaGFzWDIgPSBpc051bU9yU3RyKHgyKTtcbiAgICAgIHZhciBoYXNZMSA9IGlzTnVtT3JTdHIoeTEpO1xuICAgICAgdmFyIGhhc1kyID0gaXNOdW1PclN0cih5Mik7XG4gICAgICB2YXIgc2hhcGUgPSB0aGlzLnByb3BzLnNoYXBlO1xuICAgICAgaWYgKCFoYXNYMSAmJiAhaGFzWDIgJiYgIWhhc1kxICYmICFoYXNZMiAmJiAhc2hhcGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgcmVjdCA9IGdldFJlY3QoaGFzWDEsIGhhc1gyLCBoYXNZMSwgaGFzWTIsIHRoaXMucHJvcHMpO1xuICAgICAgaWYgKCFyZWN0ICYmICFzaGFwZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBjbGlwUGF0aCA9IGlmT3ZlcmZsb3dNYXRjaGVzKHRoaXMucHJvcHMsICdoaWRkZW4nKSA/IFwidXJsKCNcIi5jb25jYXQoY2xpcFBhdGhJZCwgXCIpXCIpIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtcmVmZXJlbmNlLWFyZWEnLCBjbGFzc05hbWUpXG4gICAgICB9LCBSZWZlcmVuY2VBcmVhLnJlbmRlclJlY3Qoc2hhcGUsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIGNsaXBQYXRoOiBjbGlwUGF0aFxuICAgICAgfSwgZmlsdGVyUHJvcHModGhpcy5wcm9wcywgdHJ1ZSkpLCByZWN0KSksIExhYmVsLnJlbmRlckNhbGxCeVBhcmVudCh0aGlzLnByb3BzLCByZWN0KSk7XG4gICAgfVxuICB9XSk7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5fZGVmaW5lUHJvcGVydHkoUmVmZXJlbmNlQXJlYSwgXCJkaXNwbGF5TmFtZVwiLCAnUmVmZXJlbmNlQXJlYScpO1xuX2RlZmluZVByb3BlcnR5KFJlZmVyZW5jZUFyZWEsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgaXNGcm9udDogZmFsc2UsXG4gIGlmT3ZlcmZsb3c6ICdkaXNjYXJkJyxcbiAgeEF4aXNJZDogMCxcbiAgeUF4aXNJZDogMCxcbiAgcjogMTAsXG4gIGZpbGw6ICcjY2NjJyxcbiAgZmlsbE9wYWNpdHk6IDAuNSxcbiAgc3Ryb2tlOiAnbm9uZScsXG4gIHN0cm9rZVdpZHRoOiAxXG59KTtcbl9kZWZpbmVQcm9wZXJ0eShSZWZlcmVuY2VBcmVhLCBcInJlbmRlclJlY3RcIiwgZnVuY3Rpb24gKG9wdGlvbiwgcHJvcHMpIHtcbiAgdmFyIHJlY3Q7XG4gIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KG9wdGlvbikpIHtcbiAgICByZWN0ID0gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChvcHRpb24sIHByb3BzKTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKG9wdGlvbikpIHtcbiAgICByZWN0ID0gb3B0aW9uKHByb3BzKTtcbiAgfSBlbHNlIHtcbiAgICByZWN0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVjdGFuZ2xlLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1yZWZlcmVuY2UtYXJlYS1yZWN0XCJcbiAgICB9KSk7XG4gIH1cbiAgcmV0dXJuIHJlY3Q7XG59KTsiXSwibmFtZXMiOlsiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIlJlYWN0IiwiaXNGdW5jdGlvbiIsImNsc3giLCJMYXllciIsIkxhYmVsIiwiY3JlYXRlTGFiZWxlZFNjYWxlcyIsInJlY3RXaXRoUG9pbnRzIiwiaWZPdmVyZmxvd01hdGNoZXMiLCJpc051bU9yU3RyIiwid2FybiIsIlJlY3RhbmdsZSIsImZpbHRlclByb3BzIiwiZ2V0UmVjdCIsImhhc1gxIiwiaGFzWDIiLCJoYXNZMSIsImhhc1kyIiwieFZhbHVlMSIsIngxIiwieFZhbHVlMiIsIngyIiwieVZhbHVlMSIsInkxIiwieVZhbHVlMiIsInkyIiwieEF4aXMiLCJ5QXhpcyIsInNjYWxlcyIsIngiLCJzY2FsZSIsInkiLCJwMSIsInBvc2l0aW9uIiwicmFuZ2VNaW4iLCJwMiIsInJhbmdlTWF4IiwiaXNJblJhbmdlIiwiUmVmZXJlbmNlQXJlYSIsIl9SZWFjdCRDb21wb25lbnQiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImNsYXNzTmFtZSIsImFsd2F5c1Nob3ciLCJjbGlwUGF0aElkIiwidW5kZWZpbmVkIiwic2hhcGUiLCJyZWN0IiwiY2xpcFBhdGgiLCJjb25jYXQiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyUmVjdCIsInJlbmRlckNhbGxCeVBhcmVudCIsIkNvbXBvbmVudCIsImlzRnJvbnQiLCJpZk92ZXJmbG93IiwieEF4aXNJZCIsInlBeGlzSWQiLCJmaWxsIiwiZmlsbE9wYWNpdHkiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsIm9wdGlvbiIsImlzVmFsaWRFbGVtZW50IiwiY2xvbmVFbGVtZW50Il0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/ReferenceArea.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/ReferenceDot.js":
/*!*************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/ReferenceDot.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReferenceDot: () => (/* binding */ ReferenceDot)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _shape_Dot__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../shape/Dot */ \"(ssr)/./node_modules/recharts/es6/shape/Dot.js\");\n/* harmony import */ var _component_Label__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../component/Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/IfOverflowMatches */ \"(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js\");\n/* harmony import */ var _util_CartesianUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/CartesianUtils */ \"(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Reference Dot\n */ \n\n\n\n\n\n\n\n\n\n\nvar getCoordinate = function getCoordinate(props) {\n var x = props.x, y = props.y, xAxis = props.xAxis, yAxis = props.yAxis;\n var scales = (0,_util_CartesianUtils__WEBPACK_IMPORTED_MODULE_3__.createLabeledScales)({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var result = scales.apply({\n x: x,\n y: y\n }, {\n bandAware: true\n });\n if ((0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, 'discard') && !scales.isInRange(result)) {\n return null;\n }\n return result;\n};\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nvar ReferenceDot = /*#__PURE__*/ function(_React$Component) {\n function ReferenceDot() {\n _classCallCheck(this, ReferenceDot);\n return _callSuper(this, ReferenceDot, arguments);\n }\n _inherits(ReferenceDot, _React$Component);\n return _createClass(ReferenceDot, [\n {\n key: \"render\",\n value: function render() {\n var _this$props = this.props, x = _this$props.x, y = _this$props.y, r = _this$props.r, alwaysShow = _this$props.alwaysShow, clipPathId = _this$props.clipPathId;\n var isX = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumOrStr)(x);\n var isY = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumOrStr)(y);\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_6__.warn)(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n if (!isX || !isY) {\n return null;\n }\n var coordinate = getCoordinate(this.props);\n if (!coordinate) {\n return null;\n }\n var cx = coordinate.x, cy = coordinate.y;\n var _this$props2 = this.props, shape = _this$props2.shape, className = _this$props2.className;\n var clipPath = (0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(this.props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var dotProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.filterProps)(this.props, true)), {}, {\n cx: cx,\n cy: cy\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_8__.Layer, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('recharts-reference-dot', className)\n }, ReferenceDot.renderDot(shape, dotProps), _component_Label__WEBPACK_IMPORTED_MODULE_9__.Label.renderCallByParent(this.props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r\n }));\n }\n }\n ]);\n}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));\n_defineProperty(ReferenceDot, \"displayName\", 'ReferenceDot');\n_defineProperty(ReferenceDot, \"defaultProps\", {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#fff',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1\n});\n_defineProperty(ReferenceDot, \"renderDot\", function(option, props) {\n var dot;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n dot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Dot__WEBPACK_IMPORTED_MODULE_10__.Dot, _extends({}, props, {\n cx: props.cx,\n cy: props.cy,\n className: \"recharts-reference-dot-dot\"\n }));\n }\n return dot;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9SZWZlcmVuY2VEb3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQTtJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9TLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNhLEtBQUssQ0FBQyxJQUFJLEVBQUVQO0FBQVk7QUFDbFYsU0FBU1EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT04sU0FBUyxHQUFHLFdBQVcsT0FBT0s7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNJLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlyQixPQUFPc0IsSUFBSSxDQUFDSDtJQUFJLElBQUluQixPQUFPdUIscUJBQXFCLEVBQUU7UUFBRSxJQUFJVCxJQUFJZCxPQUFPdUIscUJBQXFCLENBQUNKO1FBQUlDLEtBQU1OLENBQUFBLElBQUlBLEVBQUVV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RCxTQUFTO1FBQzdCQyxNQUFNRCxPQUFPdkY7SUFDZixPQUFPO1FBQ0x3RixNQUFNLFdBQVcsR0FBRXRELDBEQUFtQixDQUFDSSw0Q0FBR0EsRUFBRTlFLFNBQVMsQ0FBQyxHQUFHd0MsT0FBTztZQUM5RGlFLElBQUlqRSxNQUFNaUUsRUFBRTtZQUNaQyxJQUFJbEUsTUFBTWtFLEVBQUU7WUFDWkcsV0FBVztRQUNiO0lBQ0Y7SUFDQSxPQUFPbUI7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2FydGVzaWFuL1JlZmVyZW5jZURvdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFJlZmVyZW5jZSBEb3RcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgRG90IH0gZnJvbSAnLi4vc2hhcGUvRG90JztcbmltcG9ydCB7IExhYmVsIH0gZnJvbSAnLi4vY29tcG9uZW50L0xhYmVsJztcbmltcG9ydCB7IGlzTnVtT3JTdHIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBpZk92ZXJmbG93TWF0Y2hlcyB9IGZyb20gJy4uL3V0aWwvSWZPdmVyZmxvd01hdGNoZXMnO1xuaW1wb3J0IHsgY3JlYXRlTGFiZWxlZFNjYWxlcyB9IGZyb20gJy4uL3V0aWwvQ2FydGVzaWFuVXRpbHMnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJy4uL3V0aWwvTG9nVXRpbHMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xudmFyIGdldENvb3JkaW5hdGUgPSBmdW5jdGlvbiBnZXRDb29yZGluYXRlKHByb3BzKSB7XG4gIHZhciB4ID0gcHJvcHMueCxcbiAgICB5ID0gcHJvcHMueSxcbiAgICB4QXhpcyA9IHByb3BzLnhBeGlzLFxuICAgIHlBeGlzID0gcHJvcHMueUF4aXM7XG4gIHZhciBzY2FsZXMgPSBjcmVhdGVMYWJlbGVkU2NhbGVzKHtcbiAgICB4OiB4QXhpcy5zY2FsZSxcbiAgICB5OiB5QXhpcy5zY2FsZVxuICB9KTtcbiAgdmFyIHJlc3VsdCA9IHNjYWxlcy5hcHBseSh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0sIHtcbiAgICBiYW5kQXdhcmU6IHRydWVcbiAgfSk7XG4gIGlmIChpZk92ZXJmbG93TWF0Y2hlcyhwcm9wcywgJ2Rpc2NhcmQnKSAmJiAhc2NhbGVzLmlzSW5SYW5nZShyZXN1bHQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcmVmZXItc3RhdGVsZXNzLWZ1bmN0aW9uIC0tIHJlcXVpcmVzIHN0YXRpYyBkZWZhdWx0UHJvcHNcbmV4cG9ydCB2YXIgUmVmZXJlbmNlRG90ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIFJlZmVyZW5jZURvdCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVmZXJlbmNlRG90KTtcbiAgICByZXR1cm4gX2NhbGxTdXBlcih0aGlzLCBSZWZlcmVuY2VEb3QsIGFyZ3VtZW50cyk7XG4gIH1cbiAgX2luaGVyaXRzKFJlZmVyZW5jZURvdCwgX1JlYWN0JENvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoUmVmZXJlbmNlRG90LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgeCA9IF90aGlzJHByb3BzLngsXG4gICAgICAgIHkgPSBfdGhpcyRwcm9wcy55LFxuICAgICAgICByID0gX3RoaXMkcHJvcHMucixcbiAgICAgICAgYWx3YXlzU2hvdyA9IF90aGlzJHByb3BzLmFsd2F5c1Nob3csXG4gICAgICAgIGNsaXBQYXRoSWQgPSBfdGhpcyRwcm9wcy5jbGlwUGF0aElkO1xuICAgICAgdmFyIGlzWCA9IGlzTnVtT3JTdHIoeCk7XG4gICAgICB2YXIgaXNZID0gaXNOdW1PclN0cih5KTtcbiAgICAgIHdhcm4oYWx3YXlzU2hvdyA9PT0gdW5kZWZpbmVkLCAnVGhlIGFsd2F5c1Nob3cgcHJvcCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGlmT3ZlcmZsb3c9XCJleHRlbmREb21haW5cIiBpbnN0ZWFkLicpO1xuICAgICAgaWYgKCFpc1ggfHwgIWlzWSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBjb29yZGluYXRlID0gZ2V0Q29vcmRpbmF0ZSh0aGlzLnByb3BzKTtcbiAgICAgIGlmICghY29vcmRpbmF0ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBjeCA9IGNvb3JkaW5hdGUueCxcbiAgICAgICAgY3kgPSBjb29yZGluYXRlLnk7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgc2hhcGUgPSBfdGhpcyRwcm9wczIuc2hhcGUsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzMi5jbGFzc05hbWU7XG4gICAgICB2YXIgY2xpcFBhdGggPSBpZk92ZXJmbG93TWF0Y2hlcyh0aGlzLnByb3BzLCAnaGlkZGVuJykgPyBcInVybCgjXCIuY29uY2F0KGNsaXBQYXRoSWQsIFwiKVwiKSA6IHVuZGVmaW5lZDtcbiAgICAgIHZhciBkb3RQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIGNsaXBQYXRoOiBjbGlwUGF0aFxuICAgICAgfSwgZmlsdGVyUHJvcHModGhpcy5wcm9wcywgdHJ1ZSkpLCB7fSwge1xuICAgICAgICBjeDogY3gsXG4gICAgICAgIGN5OiBjeVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1yZWZlcmVuY2UtZG90JywgY2xhc3NOYW1lKVxuICAgICAgfSwgUmVmZXJlbmNlRG90LnJlbmRlckRvdChzaGFwZSwgZG90UHJvcHMpLCBMYWJlbC5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcywge1xuICAgICAgICB4OiBjeCAtIHIsXG4gICAgICAgIHk6IGN5IC0gcixcbiAgICAgICAgd2lkdGg6IDIgKiByLFxuICAgICAgICBoZWlnaHQ6IDIgKiByXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5fZGVmaW5lUHJvcGVydHkoUmVmZXJlbmNlRG90LCBcImRpc3BsYXlOYW1lXCIsICdSZWZlcmVuY2VEb3QnKTtcbl9kZWZpbmVQcm9wZXJ0eShSZWZlcmVuY2VEb3QsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgaXNGcm9udDogZmFsc2UsXG4gIGlmT3ZlcmZsb3c6ICdkaXNjYXJkJyxcbiAgeEF4aXNJZDogMCxcbiAgeUF4aXNJZDogMCxcbiAgcjogMTAsXG4gIGZpbGw6ICcjZmZmJyxcbiAgc3Ryb2tlOiAnI2NjYycsXG4gIGZpbGxPcGFjaXR5OiAxLFxuICBzdHJva2VXaWR0aDogMVxufSk7XG5fZGVmaW5lUHJvcGVydHkoUmVmZXJlbmNlRG90LCBcInJlbmRlckRvdFwiLCBmdW5jdGlvbiAob3B0aW9uLCBwcm9wcykge1xuICB2YXIgZG90O1xuICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgZG90ID0gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChvcHRpb24sIHByb3BzKTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKG9wdGlvbikpIHtcbiAgICBkb3QgPSBvcHRpb24ocHJvcHMpO1xuICB9IGVsc2Uge1xuICAgIGRvdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KERvdCwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICBjeDogcHJvcHMuY3gsXG4gICAgICBjeTogcHJvcHMuY3ksXG4gICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtcmVmZXJlbmNlLWRvdC1kb3RcIlxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gZG90O1xufSk7Il0sIm5hbWVzIjpbIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsIm93bktleXMiLCJlIiwiciIsInQiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1Byb3BlcnR5S2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzZWxmIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJwIiwib2JqIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJSZWFjdCIsImlzRnVuY3Rpb24iLCJjbHN4IiwiTGF5ZXIiLCJEb3QiLCJMYWJlbCIsImlzTnVtT3JTdHIiLCJpZk92ZXJmbG93TWF0Y2hlcyIsImNyZWF0ZUxhYmVsZWRTY2FsZXMiLCJ3YXJuIiwiZmlsdGVyUHJvcHMiLCJnZXRDb29yZGluYXRlIiwieCIsInkiLCJ4QXhpcyIsInlBeGlzIiwic2NhbGVzIiwic2NhbGUiLCJyZXN1bHQiLCJiYW5kQXdhcmUiLCJpc0luUmFuZ2UiLCJSZWZlcmVuY2VEb3QiLCJfUmVhY3QkQ29tcG9uZW50IiwicmVuZGVyIiwiX3RoaXMkcHJvcHMiLCJhbHdheXNTaG93IiwiY2xpcFBhdGhJZCIsImlzWCIsImlzWSIsInVuZGVmaW5lZCIsImNvb3JkaW5hdGUiLCJjeCIsImN5IiwiX3RoaXMkcHJvcHMyIiwic2hhcGUiLCJjbGFzc05hbWUiLCJjbGlwUGF0aCIsImNvbmNhdCIsImRvdFByb3BzIiwiY3JlYXRlRWxlbWVudCIsInJlbmRlckRvdCIsInJlbmRlckNhbGxCeVBhcmVudCIsIndpZHRoIiwiaGVpZ2h0IiwiQ29tcG9uZW50IiwiaXNGcm9udCIsImlmT3ZlcmZsb3ciLCJ4QXhpc0lkIiwieUF4aXNJZCIsImZpbGwiLCJzdHJva2UiLCJmaWxsT3BhY2l0eSIsInN0cm9rZVdpZHRoIiwib3B0aW9uIiwiZG90IiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/ReferenceDot.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/ReferenceLine.js":
/*!**************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/ReferenceLine.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReferenceLine: () => (/* binding */ ReferenceLine),\n/* harmony export */ getEndPoints: () => (/* binding */ getEndPoints)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_some__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/some */ \"(ssr)/./node_modules/lodash/some.js\");\n/* harmony import */ var lodash_some__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_some__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_Label__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../component/Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/IfOverflowMatches */ \"(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_CartesianUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/CartesianUtils */ \"(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../context/chartLayoutContext */ \"(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n/**\n * @fileOverview Reference Line\n */ \n\n\n\n\n\n\n\n\n\n\n\n/**\n * This excludes `viewBox` prop from svg for two reasons:\n * 1. The components wants viewBox of object type, and svg wants string\n * - so there's a conflict, and the component will throw if it gets string\n * 2. Internally the component calls `filterProps` which filters the viewBox away anyway\n */ var renderLine = function renderLine(option, props) {\n var line;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n line = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n line = option(props);\n } else {\n line = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({}, props, {\n className: \"recharts-reference-line-line\"\n }));\n }\n return line;\n};\n// TODO: ScaleHelper\nvar getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, viewBox, position, xAxisOrientation, yAxisOrientation, props) {\n var x = viewBox.x, y = viewBox.y, width = viewBox.width, height = viewBox.height;\n if (isFixedY) {\n var yCoord = props.y;\n var coord = scales.y.apply(yCoord, {\n position: position\n });\n if ((0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, 'discard') && !scales.y.isInRange(coord)) {\n return null;\n }\n var points = [\n {\n x: x + width,\n y: coord\n },\n {\n x: x,\n y: coord\n }\n ];\n return yAxisOrientation === 'left' ? points.reverse() : points;\n }\n if (isFixedX) {\n var xCoord = props.x;\n var _coord = scales.x.apply(xCoord, {\n position: position\n });\n if ((0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, 'discard') && !scales.x.isInRange(_coord)) {\n return null;\n }\n var _points = [\n {\n x: _coord,\n y: y + height\n },\n {\n x: _coord,\n y: y\n }\n ];\n return xAxisOrientation === 'top' ? _points.reverse() : _points;\n }\n if (isSegment) {\n var segment = props.segment;\n var _points2 = segment.map(function(p) {\n return scales.apply(p, {\n position: position\n });\n });\n if ((0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, 'discard') && lodash_some__WEBPACK_IMPORTED_MODULE_2___default()(_points2, function(p) {\n return !scales.isInRange(p);\n })) {\n return null;\n }\n return _points2;\n }\n return null;\n};\nfunction ReferenceLineImpl(props) {\n var fixedX = props.x, fixedY = props.y, segment = props.segment, xAxisId = props.xAxisId, yAxisId = props.yAxisId, shape = props.shape, className = props.className, alwaysShow = props.alwaysShow;\n var clipPathId = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_5__.useClipPathId)();\n var xAxis = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_5__.useXAxisOrThrow)(xAxisId);\n var yAxis = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_5__.useYAxisOrThrow)(yAxisId);\n var viewBox = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_5__.useViewBox)();\n if (!clipPathId || !viewBox) {\n return null;\n }\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_6__.warn)(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var scales = (0,_util_CartesianUtils__WEBPACK_IMPORTED_MODULE_7__.createLabeledScales)({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var isX = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_8__.isNumOrStr)(fixedX);\n var isY = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_8__.isNumOrStr)(fixedY);\n var isSegment = segment && segment.length === 2;\n var endPoints = getEndPoints(scales, isX, isY, isSegment, viewBox, props.position, xAxis.orientation, yAxis.orientation, props);\n if (!endPoints) {\n return null;\n }\n var _endPoints = _slicedToArray(endPoints, 2), _endPoints$ = _endPoints[0], x1 = _endPoints$.x, y1 = _endPoints$.y, _endPoints$2 = _endPoints[1], x2 = _endPoints$2.x, y2 = _endPoints$2.y;\n var clipPath = (0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var lineProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_9__.filterProps)(props, true)), {}, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_10__.Layer, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('recharts-reference-line', className)\n }, renderLine(shape, lineProps), _component_Label__WEBPACK_IMPORTED_MODULE_11__.Label.renderCallByParent(props, (0,_util_CartesianUtils__WEBPACK_IMPORTED_MODULE_7__.rectWithCoords)({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n })));\n}\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nvar ReferenceLine = /*#__PURE__*/ function(_React$Component) {\n function ReferenceLine() {\n _classCallCheck(this, ReferenceLine);\n return _callSuper(this, ReferenceLine, arguments);\n }\n _inherits(ReferenceLine, _React$Component);\n return _createClass(ReferenceLine, [\n {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ReferenceLineImpl, this.props);\n }\n }\n ]);\n}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));\n_defineProperty(ReferenceLine, \"displayName\", 'ReferenceLine');\n_defineProperty(ReferenceLine, \"defaultProps\", {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n fill: 'none',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1,\n position: 'middle'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9SZWZlcmVuY2VMaW5lLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLGdCQUFnQkMsUUFBUSxFQUFFQyxXQUFXO0lBQUksSUFBSSxDQUFFRCxDQUFBQSxvQkFBb0JDLFdBQVUsR0FBSTtRQUFFLE1BQU0sSUFBSUMsVUFBVTtJQUFzQztBQUFFO0FBQ3hKLFNBQVNDLGtCQUFrQkMsTUFBTSxFQUFFQyxLQUFLO0lBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlELE1BQU1FLE1BQU0sRUFBRUQsSUFBSztRQUFFLElBQUlFLGFBQWFILEtBQUssQ0FBQ0MsRUFBRTtRQUFFRSxXQUFXQyxVQUFVLEdBQUdELFdBQVdDLFVBQVUsSUFBSTtRQUFPRCxXQUFXRSxZQUFZLEdBQUc7UUFBTSxJQUFJLFdBQVdGLFlBQVlBLFdBQVdHLFFBQVEsR0FBRztRQUFNQyxPQUFPQyxjQUFjLENBQUNULFFBQVFVLGVBQWVOLFdBQVdPLEdBQUcsR0FBR1A7SUFBYTtBQUFFO0FBQzVVLFNBQVNRLGFBQWFmLFdBQVcsRUFBRWdCLFVBQVUsRUFBRUMsV0FBVztJQUFJLElBQUlELFlBQVlkLGtCQUFrQkYsWUFBWUgsU0FBUyxFQUFFbUI7SUFBYSxJQUFJQyxhQUFhZixrQkFBa0JGLGFBQWFpQjtJQUFjTixPQUFPQyxjQUFjLENBQUNaLGFB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LElBQUlLLGdCQUFnQixXQUFXLEdBQUUsU0FBVUMsZ0JBQWdCO0lBQ2hFLFNBQVNEO1FBQ1B0SyxnQkFBZ0IsSUFBSSxFQUFFc0s7UUFDdEIsT0FBT2xKLFdBQVcsSUFBSSxFQUFFa0osZUFBZWhIO0lBQ3pDO0lBQ0FmLFVBQVUrSCxlQUFlQztJQUN6QixPQUFPdEosYUFBYXFKLGVBQWU7UUFBQztZQUNsQ3RKLEtBQUs7WUFDTDJCLE9BQU8sU0FBUzZIO2dCQUNkLE9BQU8sV0FBVyxHQUFFNUUsMERBQW1CLENBQUMrQyxtQkFBbUIsSUFBSSxDQUFDckksS0FBSztZQUN2RTtRQUNGO0tBQUU7QUFDSixFQUFFc0Ysd0RBQWUsRUFBRTtBQUNuQnBDLGdCQUFnQjhHLGVBQWUsZUFBZTtBQUM5QzlHLGdCQUFnQjhHLGVBQWUsZ0JBQWdCO0lBQzdDSSxTQUFTO0lBQ1RDLFlBQVk7SUFDWjdCLFNBQVM7SUFDVEMsU0FBUztJQUNUNkIsTUFBTTtJQUNOQyxRQUFRO0lBQ1JDLGFBQWE7SUFDYkMsYUFBYTtJQUNidEQsVUFBVTtBQUNaIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jYXJ0ZXNpYW4vUmVmZXJlbmNlTGluZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgUmVmZXJlbmNlIExpbmVcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBzb21lIGZyb20gJ2xvZGFzaC9zb21lJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuLi9jb21wb25lbnQvTGFiZWwnO1xuaW1wb3J0IHsgaWZPdmVyZmxvd01hdGNoZXMgfSBmcm9tICcuLi91dGlsL0lmT3ZlcmZsb3dNYXRjaGVzJztcbmltcG9ydCB7IGlzTnVtT3JTdHIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBjcmVhdGVMYWJlbGVkU2NhbGVzLCByZWN0V2l0aENvb3JkcyB9IGZyb20gJy4uL3V0aWwvQ2FydGVzaWFuVXRpbHMnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJy4uL3V0aWwvTG9nVXRpbHMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgdXNlQ2xpcFBhdGhJZCwgdXNlVmlld0JveCwgdXNlWEF4aXNPclRocm93LCB1c2VZQXhpc09yVGhyb3cgfSBmcm9tICcuLi9jb250ZXh0L2NoYXJ0TGF5b3V0Q29udGV4dCc7XG5cbi8qKlxuICogVGhpcyBleGNsdWRlcyBgdmlld0JveGAgcHJvcCBmcm9tIHN2ZyBmb3IgdHdvIHJlYXNvbnM6XG4gKiAxLiBUaGUgY29tcG9uZW50cyB3YW50cyB2aWV3Qm94IG9mIG9iamVjdCB0eXBlLCBhbmQgc3ZnIHdhbnRzIHN0cmluZ1xuICogICAgLSBzbyB0aGVyZSdzIGEgY29uZmxpY3QsIGFuZCB0aGUgY29tcG9uZW50IHdpbGwgdGhyb3cgaWYgaXQgZ2V0cyBzdHJpbmdcbiAqIDIuIEludGVybmFsbHkgdGhlIGNvbXBvbmVudCBjYWxscyBgZmlsdGVyUHJvcHNgIHdoaWNoIGZpbHRlcnMgdGhlIHZpZXdCb3ggYXdheSBhbnl3YXlcbiAqL1xuXG52YXIgcmVuZGVyTGluZSA9IGZ1bmN0aW9uIHJlbmRlckxpbmUob3B0aW9uLCBwcm9wcykge1xuICB2YXIgbGluZTtcbiAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQob3B0aW9uKSkge1xuICAgIGxpbmUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgIGxpbmUgPSBvcHRpb24ocHJvcHMpO1xuICB9IGVsc2Uge1xuICAgIGxpbmUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtcmVmZXJlbmNlLWxpbmUtbGluZVwiXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBsaW5lO1xufTtcbi8vIFRPRE86IFNjYWxlSGVscGVyXG5leHBvcnQgdmFyIGdldEVuZFBvaW50cyA9IGZ1bmN0aW9uIGdldEVuZFBvaW50cyhzY2FsZXMsIGlzRml4ZWRYLCBpc0ZpeGVkWSwgaXNTZWdtZW50LCB2aWV3Qm94LCBwb3NpdGlvbiwgeEF4aXNPcmllbnRhdGlvbiwgeUF4aXNPcmllbnRhdGlvbiwgcHJvcHMpIHtcbiAgdmFyIHggPSB2aWV3Qm94LngsXG4gICAgeSA9IHZpZXdCb3gueSxcbiAgICB3aWR0aCA9IHZpZXdCb3gud2lkdGgsXG4gICAgaGVpZ2h0ID0gdmlld0JveC5oZWlnaHQ7XG4gIGlmIChpc0ZpeGVkWSkge1xuICAgIHZhciB5Q29vcmQgPSBwcm9wcy55O1xuICAgIHZhciBjb29yZCA9IHNjYWxlcy55LmFwcGx5KHlDb29yZCwge1xuICAgICAgcG9zaXRpb246IHBvc2l0aW9uXG4gICAgfSk7XG4gICAgaWYgKGlmT3ZlcmZsb3dNYXRjaGVzKHByb3BzLCAnZGlzY2FyZCcpICYmICFzY2FsZXMueS5pc0luUmFuZ2UoY29vcmQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIHBvaW50cyA9IFt7XG4gICAgICB4OiB4ICsgd2lkdGgsXG4gICAgICB5OiBjb29yZFxuICAgIH0sIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiBjb29yZFxuICAgIH1dO1xuICAgIHJldHVybiB5QXhpc09yaWVudGF0aW9uID09PSAnbGVmdCcgPyBwb2ludHMucmV2ZXJzZSgpIDogcG9pbnRzO1xuICB9XG4gIGlmIChpc0ZpeGVkWCkge1xuICAgIHZhciB4Q29vcmQgPSBwcm9wcy54O1xuICAgIHZhciBfY29vcmQgPSBzY2FsZXMueC5hcHBseSh4Q29vcmQsIHtcbiAgICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICAgIH0pO1xuICAgIGlmIChpZk92ZXJmbG93TWF0Y2hlcyhwcm9wcywgJ2Rpc2NhcmQnKSAmJiAhc2NhbGVzLnguaXNJblJhbmdlKF9jb29yZCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgX3BvaW50cyA9IFt7XG4gICAgICB4OiBfY29vcmQsXG4gICAgICB5OiB5ICsgaGVpZ2h0XG4gICAgfSwge1xuICAgICAgeDogX2Nvb3JkLFxuICAgICAgeTogeVxuICAgIH1dO1xuICAgIHJldHVybiB4QXhpc09yaWVudGF0aW9uID09PSAndG9wJyA/IF9wb2ludHMucmV2ZXJzZSgpIDogX3BvaW50cztcbiAgfVxuICBpZiAoaXNTZWdtZW50KSB7XG4gICAgdmFyIHNlZ21lbnQgPSBwcm9wcy5zZWdtZW50O1xuICAgIHZhciBfcG9pbnRzMiA9IHNlZ21lbnQubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gc2NhbGVzLmFwcGx5KHAsIHtcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAoaWZPdmVyZmxvd01hdGNoZXMocHJvcHMsICdkaXNjYXJkJykgJiYgc29tZShfcG9pbnRzMiwgZnVuY3Rpb24gKHApIHtcbiAgICAgIHJldHVybiAhc2NhbGVzLmlzSW5SYW5nZShwKTtcbiAgICB9KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBfcG9pbnRzMjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5mdW5jdGlvbiBSZWZlcmVuY2VMaW5lSW1wbChwcm9wcykge1xuICB2YXIgZml4ZWRYID0gcHJvcHMueCxcbiAgICBmaXhlZFkgPSBwcm9wcy55LFxuICAgIHNlZ21lbnQgPSBwcm9wcy5zZWdtZW50LFxuICAgIHhBeGlzSWQgPSBwcm9wcy54QXhpc0lkLFxuICAgIHlBeGlzSWQgPSBwcm9wcy55QXhpc0lkLFxuICAgIHNoYXBlID0gcHJvcHMuc2hhcGUsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgIGFsd2F5c1Nob3cgPSBwcm9wcy5hbHdheXNTaG93O1xuICB2YXIgY2xpcFBhdGhJZCA9IHVzZUNsaXBQYXRoSWQoKTtcbiAgdmFyIHhBeGlzID0gdXNlWEF4aXNPclRocm93KHhBeGlzSWQpO1xuICB2YXIgeUF4aXMgPSB1c2VZQXhpc09yVGhyb3coeUF4aXNJZCk7XG4gIHZhciB2aWV3Qm94ID0gdXNlVmlld0JveCgpO1xuICBpZiAoIWNsaXBQYXRoSWQgfHwgIXZpZXdCb3gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB3YXJuKGFsd2F5c1Nob3cgPT09IHVuZGVmaW5lZCwgJ1RoZSBhbHdheXNTaG93IHByb3AgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBpZk92ZXJmbG93PVwiZXh0ZW5kRG9tYWluXCIgaW5zdGVhZC4nKTtcbiAgdmFyIHNjYWxlcyA9IGNyZWF0ZUxhYmVsZWRTY2FsZXMoe1xuICAgIHg6IHhBeGlzLnNjYWxlLFxuICAgIHk6IHlBeGlzLnNjYWxlXG4gIH0pO1xuICB2YXIgaXNYID0gaXNOdW1PclN0cihmaXhlZFgpO1xuICB2YXIgaXNZID0gaXNOdW1PclN0cihmaXhlZFkpO1xuICB2YXIgaXNTZWdtZW50ID0gc2VnbWVudCAmJiBzZWdtZW50Lmxlbmd0aCA9PT0gMjtcbiAgdmFyIGVuZFBvaW50cyA9IGdldEVuZFBvaW50cyhzY2FsZXMsIGlzWCwgaXNZLCBpc1NlZ21lbnQsIHZpZXdCb3gsIHByb3BzLnBvc2l0aW9uLCB4QXhpcy5vcmllbnRhdGlvbiwgeUF4aXMub3JpZW50YXRpb24sIHByb3BzKTtcbiAgaWYgKCFlbmRQb2ludHMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgX2VuZFBvaW50cyA9IF9zbGljZWRUb0FycmF5KGVuZFBvaW50cywgMiksXG4gICAgX2VuZFBvaW50cyQgPSBfZW5kUG9pbnRzWzBdLFxuICAgIHgxID0gX2VuZFBvaW50cyQueCxcbiAgICB5MSA9IF9lbmRQb2ludHMkLnksXG4gICAgX2VuZFBvaW50cyQyID0gX2VuZFBvaW50c1sxXSxcbiAgICB4MiA9IF9lbmRQb2ludHMkMi54LFxuICAgIHkyID0gX2VuZFBvaW50cyQyLnk7XG4gIHZhciBjbGlwUGF0aCA9IGlmT3ZlcmZsb3dNYXRjaGVzKHByb3BzLCAnaGlkZGVuJykgPyBcInVybCgjXCIuY29uY2F0KGNsaXBQYXRoSWQsIFwiKVwiKSA6IHVuZGVmaW5lZDtcbiAgdmFyIGxpbmVQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgY2xpcFBhdGg6IGNsaXBQYXRoXG4gIH0sIGZpbHRlclByb3BzKHByb3BzLCB0cnVlKSksIHt9LCB7XG4gICAgeDE6IHgxLFxuICAgIHkxOiB5MSxcbiAgICB4MjogeDIsXG4gICAgeTI6IHkyXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXJlZmVyZW5jZS1saW5lJywgY2xhc3NOYW1lKVxuICB9LCByZW5kZXJMaW5lKHNoYXBlLCBsaW5lUHJvcHMpLCBMYWJlbC5yZW5kZXJDYWxsQnlQYXJlbnQocHJvcHMsIHJlY3RXaXRoQ29vcmRzKHtcbiAgICB4MTogeDEsXG4gICAgeTE6IHkxLFxuICAgIHgyOiB4MixcbiAgICB5MjogeTJcbiAgfSkpKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3ByZWZlci1zdGF0ZWxlc3MtZnVuY3Rpb24gLS0gcmVxdWlyZXMgc3RhdGljIGRlZmF1bHRQcm9wc1xuZXhwb3J0IHZhciBSZWZlcmVuY2VMaW5lID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIFJlZmVyZW5jZUxpbmUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlZmVyZW5jZUxpbmUpO1xuICAgIHJldHVybiBfY2FsbFN1cGVyKHRoaXMsIFJlZmVyZW5jZUxpbmUsIGFyZ3VtZW50cyk7XG4gIH1cbiAgX2luaGVyaXRzKFJlZmVyZW5jZUxpbmUsIF9SZWFjdCRDb21wb25lbnQpO1xuICByZXR1cm4gX2NyZWF0ZUNsYXNzKFJlZmVyZW5jZUxpbmUsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVmZXJlbmNlTGluZUltcGwsIHRoaXMucHJvcHMpO1xuICAgIH1cbiAgfV0pO1xufShSZWFjdC5Db21wb25lbnQpO1xuX2RlZmluZVByb3BlcnR5KFJlZmVyZW5jZUxpbmUsIFwiZGlzcGxheU5hbWVcIiwgJ1JlZmVyZW5jZUxpbmUnKTtcbl9kZWZpbmVQcm9wZXJ0eShSZWZlcmVuY2VMaW5lLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGlzRnJvbnQ6IGZhbHNlLFxuICBpZk92ZXJmbG93OiAnZGlzY2FyZCcsXG4gIHhBeGlzSWQ6IDAsXG4gIHlBeGlzSWQ6IDAsXG4gIGZpbGw6ICdub25lJyxcbiAgc3Ryb2tlOiAnI2NjYycsXG4gIGZpbGxPcGFjaXR5OiAxLFxuICBzdHJva2VXaWR0aDogMSxcbiAgcG9zaXRpb246ICdtaWRkbGUnXG59KTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJpIiwibGVuZ3RoIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwidCIsImUiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiYXBwbHkiLCJzZWxmIiwiY2FsbCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvd25LZXlzIiwiciIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImwiLCJ1IiwiYSIsImYiLCJuZXh0IiwiZG9uZSIsImlzQXJyYXkiLCJfZXh0ZW5kcyIsImFzc2lnbiIsInNvdXJjZSIsImhhc093blByb3BlcnR5IiwiUmVhY3QiLCJpc0Z1bmN0aW9uIiwic29tZSIsImNsc3giLCJMYXllciIsIkxhYmVsIiwiaWZPdmVyZmxvd01hdGNoZXMiLCJpc051bU9yU3RyIiwiY3JlYXRlTGFiZWxlZFNjYWxlcyIsInJlY3RXaXRoQ29vcmRzIiwid2FybiIsImZpbHRlclByb3BzIiwidXNlQ2xpcFBhdGhJZCIsInVzZVZpZXdCb3giLCJ1c2VYQXhpc09yVGhyb3ciLCJ1c2VZQXhpc09yVGhyb3ciLCJyZW5kZXJMaW5lIiwib3B0aW9uIiwibGluZSIsImlzVmFsaWRFbGVtZW50IiwiY2xvbmVFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImdldEVuZFBvaW50cyIsInNjYWxlcyIsImlzRml4ZWRYIiwiaXNGaXhlZFkiLCJpc1NlZ21lbnQiLCJ2aWV3Qm94IiwicG9zaXRpb24iLCJ4QXhpc09yaWVudGF0aW9uIiwieUF4aXNPcmllbnRhdGlvbiIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJ5Q29vcmQiLCJjb29yZCIsImlzSW5SYW5nZSIsInBvaW50cyIsInJldmVyc2UiLCJ4Q29vcmQiLCJfY29vcmQiLCJfcG9pbnRzIiwic2VnbWVudCIsIl9wb2ludHMyIiwibWFwIiwiUmVmZXJlbmNlTGluZUltcGwiLCJmaXhlZFgiLCJmaXhlZFkiLCJ4QXhpc0lkIiwieUF4aXNJZCIsInNoYXBlIiwiYWx3YXlzU2hvdyIsImNsaXBQYXRoSWQiLCJ4QXhpcyIsInlBeGlzIiwidW5kZWZpbmVkIiwic2NhbGUiLCJpc1giLCJpc1kiLCJlbmRQb2ludHMiLCJvcmllbnRhdGlvbiIsIl9lbmRQb2ludHMiLCJfZW5kUG9pbnRzJCIsIngxIiwieTEiLCJfZW5kUG9pbnRzJDIiLCJ4MiIsInkyIiwiY2xpcFBhdGgiLCJjb25jYXQiLCJsaW5lUHJvcHMiLCJyZW5kZXJDYWxsQnlQYXJlbnQiLCJSZWZlcmVuY2VMaW5lIiwiX1JlYWN0JENvbXBvbmVudCIsInJlbmRlciIsIkNvbXBvbmVudCIsImlzRnJvbnQiLCJpZk92ZXJmbG93IiwiZmlsbCIsInN0cm9rZSIsImZpbGxPcGFjaXR5Iiwic3Ryb2tlV2lkdGgiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/ReferenceLine.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/XAxis.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/XAxis.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ XAxis: () => (/* binding */ XAxis)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/chartLayoutContext */ \"(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\");\n/* harmony import */ var _CartesianAxis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CartesianAxis */ \"(ssr)/./node_modules/recharts/es6/cartesian/CartesianAxis.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n/**\n * @fileOverview X Axis\n */ \n\n\n\n\n/** Define of XAxis props */ function XAxisImpl(_ref) {\n var xAxisId = _ref.xAxisId;\n var width = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useChartWidth)();\n var height = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useChartHeight)();\n var axisOptions = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useXAxisOrThrow)(xAxisId);\n if (axisOptions == null) {\n return null;\n }\n return(/*#__PURE__*/ // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_CartesianAxis__WEBPACK_IMPORTED_MODULE_3__.CartesianAxis, _extends({}, axisOptions, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_4__.getTicksOfAxis)(axis, true);\n }\n })));\n}\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nvar XAxis = /*#__PURE__*/ function(_React$Component) {\n function XAxis() {\n _classCallCheck(this, XAxis);\n return _callSuper(this, XAxis, arguments);\n }\n _inherits(XAxis, _React$Component);\n return _createClass(XAxis, [\n {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(XAxisImpl, this.props);\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n_defineProperty(XAxis, \"displayName\", 'XAxis');\n_defineProperty(XAxis, \"defaultProps\", {\n allowDecimals: true,\n hide: false,\n orientation: 'bottom',\n width: 0,\n height: 30,\n mirror: false,\n xAxisId: 0,\n tickCount: 5,\n type: 'category',\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9YQXhpcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLGdCQUFnQkMsUUFBUSxFQUFFQyxXQUFXO0lBQUksSUFBSSxDQUFFRCxDQUFBQSxvQkFBb0JDLFdBQVUsR0FBSTtRQUFFLE1BQU0sSUFBSUMsVUFBVTtJQUFzQztBQUFFO0FBQ3hKLFNBQVNDLGtCQUFrQkMsTUFBTSxFQUFFQyxLQUFLO0lBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlELE1BQU1FLE1BQU0sRUFBRUQsSUFBSztRQUFFLElBQUlFLGFBQWFILEtBQUssQ0FBQ0MsRUFBRTtRQUFFRSxXQUFXQyxVQUFVLEdBQUdELFdBQVdDLFVBQVUsSUFBSTtRQUFPRCxXQUFXRSxZQUFZLEdBQUc7UUFBTSxJQUFJLFdBQVdGLFlBQVlBLFdBQVdHLFFBQVEsR0FBRztRQUFNQyxPQUFPQyxjQUFjLENBQUNULFFBQVFVLGVBQWVOLFdBQVdPLEdBQUcsR0FBR1A7SUFBYTtBQUFFO0FBQzVVLFNBQVNRLGFBQWFmLFdBQVcsRUFBRWdCLFVBQVUsRUFBRUMsV0FBVztJQUFJLElBQUlELFlBQVlkLGtCQUFrQkYsWUFBWUgsU0FBUyxFQUFFbUI7SUFBYSxJQUFJQyxhQUFhZixrQkFBa0JGLGFBQWFpQjtJQUFjTixPQUFPQyxjQUFjLENBQUNaLGFBQWEsYUFBYTtRQUFFVSxVQUFV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IjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9YQXhpcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBYIEF4aXNcbiAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1c2VDaGFydEhlaWdodCwgdXNlQ2hhcnRXaWR0aCwgdXNlWEF4aXNPclRocm93IH0gZnJvbSAnLi4vY29udGV4dC9jaGFydExheW91dENvbnRleHQnO1xuaW1wb3J0IHsgQ2FydGVzaWFuQXhpcyB9IGZyb20gJy4vQ2FydGVzaWFuQXhpcyc7XG5pbXBvcnQgeyBnZXRUaWNrc09mQXhpcyB9IGZyb20gJy4uL3V0aWwvQ2hhcnRVdGlscyc7XG5cbi8qKiBEZWZpbmUgb2YgWEF4aXMgcHJvcHMgKi9cblxuZnVuY3Rpb24gWEF4aXNJbXBsKF9yZWYpIHtcbiAgdmFyIHhBeGlzSWQgPSBfcmVmLnhBeGlzSWQ7XG4gIHZhciB3aWR0aCA9IHVzZUNoYXJ0V2lkdGgoKTtcbiAgdmFyIGhlaWdodCA9IHVzZUNoYXJ0SGVpZ2h0KCk7XG4gIHZhciBheGlzT3B0aW9ucyA9IHVzZVhBeGlzT3JUaHJvdyh4QXhpc0lkKTtcbiAgaWYgKGF4aXNPcHRpb25zID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gKFxuICAgIC8qI19fUFVSRV9fKi9cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoZSBheGlzT3B0aW9ucyB0eXBlIGlzIG5vdCBleGFjdGx5IHdoYXQgQ2FydGVzaWFuQXhpcyBpcyBleHBlY3RpbmcuXG4gICAgUmVhY3QuY3JlYXRlRWxlbWVudChDYXJ0ZXNpYW5BeGlzLCBfZXh0ZW5kcyh7fSwgYXhpc09wdGlvbnMsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xzeChcInJlY2hhcnRzLVwiLmNvbmNhdChheGlzT3B0aW9ucy5heGlzVHlwZSwgXCIgXCIpLmNvbmNhdChheGlzT3B0aW9ucy5heGlzVHlwZSksIGF4aXNPcHRpb25zLmNsYXNzTmFtZSksXG4gICAgICB2aWV3Qm94OiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH0sXG4gICAgICB0aWNrc0dlbmVyYXRvcjogZnVuY3Rpb24gdGlja3NHZW5lcmF0b3IoYXhpcykge1xuICAgICAgICByZXR1cm4gZ2V0VGlja3NPZkF4aXMoYXhpcywgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSkpXG4gICk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcmVmZXItc3RhdGVsZXNzLWZ1bmN0aW9uIC0tIHJlcXVpcmVzIHN0YXRpYyBkZWZhdWx0UHJvcHNcbmV4cG9ydCB2YXIgWEF4aXMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgZnVuY3Rpb24gWEF4aXMoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFhBeGlzKTtcbiAgICByZXR1cm4gX2NhbGxTdXBlcih0aGlzLCBYQXhpcywgYXJndW1lbnRzKTtcbiAgfVxuICBfaW5oZXJpdHMoWEF4aXMsIF9SZWFjdCRDb21wb25lbnQpO1xuICByZXR1cm4gX2NyZWF0ZUNsYXNzKFhBeGlzLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFhBeGlzSW1wbCwgdGhpcy5wcm9wcyk7XG4gICAgfVxuICB9XSk7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5fZGVmaW5lUHJvcGVydHkoWEF4aXMsIFwiZGlzcGxheU5hbWVcIiwgJ1hBeGlzJyk7XG5fZGVmaW5lUHJvcGVydHkoWEF4aXMsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgYWxsb3dEZWNpbWFsczogdHJ1ZSxcbiAgaGlkZTogZmFsc2UsXG4gIG9yaWVudGF0aW9uOiAnYm90dG9tJyxcbiAgd2lkdGg6IDAsXG4gIGhlaWdodDogMzAsXG4gIG1pcnJvcjogZmFsc2UsXG4gIHhBeGlzSWQ6IDAsXG4gIHRpY2tDb3VudDogNSxcbiAgdHlwZTogJ2NhdGVnb3J5JyxcbiAgcGFkZGluZzoge1xuICAgIGxlZnQ6IDAsXG4gICAgcmlnaHQ6IDBcbiAgfSxcbiAgYWxsb3dEYXRhT3ZlcmZsb3c6IGZhbHNlLFxuICBzY2FsZTogJ2F1dG8nLFxuICByZXZlcnNlZDogZmFsc2UsXG4gIGFsbG93RHVwbGljYXRlZENhdGVnb3J5OiB0cnVlXG59KTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJpIiwibGVuZ3RoIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwidCIsImUiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiYXBwbHkiLCJzZWxmIiwiY2FsbCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJfZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJyIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImFyZ3VtZW50cyIsInNvdXJjZSIsImhhc093blByb3BlcnR5IiwiUmVhY3QiLCJjbHN4IiwidXNlQ2hhcnRIZWlnaHQiLCJ1c2VDaGFydFdpZHRoIiwidXNlWEF4aXNPclRocm93IiwiQ2FydGVzaWFuQXhpcyIsImdldFRpY2tzT2ZBeGlzIiwiWEF4aXNJbXBsIiwiX3JlZiIsInhBeGlzSWQiLCJ3aWR0aCIsImhlaWdodCIsImF4aXNPcHRpb25zIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbmNhdCIsImF4aXNUeXBlIiwidmlld0JveCIsIngiLCJ5IiwidGlja3NHZW5lcmF0b3IiLCJheGlzIiwiWEF4aXMiLCJfUmVhY3QkQ29tcG9uZW50IiwicmVuZGVyIiwiQ29tcG9uZW50IiwiYWxsb3dEZWNpbWFscyIsImhpZGUiLCJvcmllbnRhdGlvbiIsIm1pcnJvciIsInRpY2tDb3VudCIsInR5cGUiLCJwYWRkaW5nIiwibGVmdCIsInJpZ2h0IiwiYWxsb3dEYXRhT3ZlcmZsb3ciLCJzY2FsZSIsInJldmVyc2VkIiwiYWxsb3dEdXBsaWNhdGVkQ2F0ZWdvcnkiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/XAxis.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/YAxis.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/YAxis.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ YAxis: () => (/* binding */ YAxis)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/chartLayoutContext */ \"(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\");\n/* harmony import */ var _CartesianAxis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CartesianAxis */ \"(ssr)/./node_modules/recharts/es6/cartesian/CartesianAxis.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n/**\n * @fileOverview Y Axis\n */ \n\n\n\n\nvar YAxisImpl = function YAxisImpl(_ref) {\n var yAxisId = _ref.yAxisId;\n var width = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useChartWidth)();\n var height = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useChartHeight)();\n var axisOptions = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useYAxisOrThrow)(yAxisId);\n if (axisOptions == null) {\n return null;\n }\n return(/*#__PURE__*/ // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_CartesianAxis__WEBPACK_IMPORTED_MODULE_3__.CartesianAxis, _extends({}, axisOptions, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_4__.getTicksOfAxis)(axis, true);\n }\n })));\n};\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nvar YAxis = /*#__PURE__*/ function(_React$Component) {\n function YAxis() {\n _classCallCheck(this, YAxis);\n return _callSuper(this, YAxis, arguments);\n }\n _inherits(YAxis, _React$Component);\n return _createClass(YAxis, [\n {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(YAxisImpl, this.props);\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n_defineProperty(YAxis, \"displayName\", 'YAxis');\n_defineProperty(YAxis, \"defaultProps\", {\n allowDuplicatedCategory: true,\n allowDecimals: true,\n hide: false,\n orientation: 'left',\n width: 60,\n height: 0,\n mirror: false,\n yAxisId: 0,\n tickCount: 5,\n type: 'number',\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9ZQXhpcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLGdCQUFnQkMsUUFBUSxFQUFFQyxXQUFXO0lBQUksSUFBSSxDQUFFRCxDQUFBQSxvQkFBb0JDLFdBQVUsR0FBSTtRQUFFLE1BQU0sSUFBSUMsVUFBVTtJQUFzQztBQUFFO0FBQ3hKLFNBQVNDLGtCQUFrQkMsTUFBTSxFQUFFQyxLQUFLO0lBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlELE1BQU1FLE1BQU0sRUFBRUQsSUFBSztRQUFFLElBQUlFLGFBQWFILEtBQUssQ0FBQ0MsRUFBRTtRQUFFRSxXQUFXQyxVQUFVLEdBQUdELFdBQVdDLFVBQVUsSUFBSTtRQUFPRCxXQUFXRSxZQUFZLEdBQUc7UUFBTSxJQUFJLFdBQVdGLFlBQVlBLFdBQVdHLFFBQVEsR0FBRztRQUFNQyxPQUFPQyxjQUFjLENBQUNULFFBQVFVLGVBQWVOLFdBQVdPLEdBQUcsR0FBR1A7SUFBYTtBQUFFO0FBQzVVLFNBQVNRLGFBQWFmLFdBQVcsRUFBRWdCLFVBQVUsRUFBRUMsV0FBVztJQUFJLElBQUlELFlBQVlkLGtCQUFrQkYsWUFBWUgsU0FBUyxFQUFFbUI7SUFBYSxJQUFJQyxhQUFhZixrQkFBa0JGLGFBQWFpQjtJQUFjTixPQUFPQyxjQUFjLENBQUNaLGFBQWEsYUFBYTtRQUFFVSxVQUFV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WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jYXJ0ZXNpYW4vWUF4aXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgWSBBeGlzXG4gKi9cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdXNlQ2hhcnRIZWlnaHQsIHVzZUNoYXJ0V2lkdGgsIHVzZVlBeGlzT3JUaHJvdyB9IGZyb20gJy4uL2NvbnRleHQvY2hhcnRMYXlvdXRDb250ZXh0JztcbmltcG9ydCB7IENhcnRlc2lhbkF4aXMgfSBmcm9tICcuL0NhcnRlc2lhbkF4aXMnO1xuaW1wb3J0IHsgZ2V0VGlja3NPZkF4aXMgfSBmcm9tICcuLi91dGlsL0NoYXJ0VXRpbHMnO1xudmFyIFlBeGlzSW1wbCA9IGZ1bmN0aW9uIFlBeGlzSW1wbChfcmVmKSB7XG4gIHZhciB5QXhpc0lkID0gX3JlZi55QXhpc0lkO1xuICB2YXIgd2lkdGggPSB1c2VDaGFydFdpZHRoKCk7XG4gIHZhciBoZWlnaHQgPSB1c2VDaGFydEhlaWdodCgpO1xuICB2YXIgYXhpc09wdGlvbnMgPSB1c2VZQXhpc09yVGhyb3coeUF4aXNJZCk7XG4gIGlmIChheGlzT3B0aW9ucyA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIChcbiAgICAvKiNfX1BVUkVfXyovXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgYXhpc09wdGlvbnMgdHlwZSBpcyBub3QgZXhhY3RseSB3aGF0IENhcnRlc2lhbkF4aXMgaXMgZXhwZWN0aW5nLlxuICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2FydGVzaWFuQXhpcywgX2V4dGVuZHMoe30sIGF4aXNPcHRpb25zLCB7XG4gICAgICBjbGFzc05hbWU6IGNsc3goXCJyZWNoYXJ0cy1cIi5jb25jYXQoYXhpc09wdGlvbnMuYXhpc1R5cGUsIFwiIFwiKS5jb25jYXQoYXhpc09wdGlvbnMuYXhpc1R5cGUpLCBheGlzT3B0aW9ucy5jbGFzc05hbWUpLFxuICAgICAgdmlld0JveDoge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9LFxuICAgICAgdGlja3NHZW5lcmF0b3I6IGZ1bmN0aW9uIHRpY2tzR2VuZXJhdG9yKGF4aXMpIHtcbiAgICAgICAgcmV0dXJuIGdldFRpY2tzT2ZBeGlzKGF4aXMsIHRydWUpO1xuICAgICAgfVxuICAgIH0pKVxuICApO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3ByZWZlci1zdGF0ZWxlc3MtZnVuY3Rpb24gLS0gcmVxdWlyZXMgc3RhdGljIGRlZmF1bHRQcm9wc1xuZXhwb3J0IHZhciBZQXhpcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBmdW5jdGlvbiBZQXhpcygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgWUF4aXMpO1xuICAgIHJldHVybiBfY2FsbFN1cGVyKHRoaXMsIFlBeGlzLCBhcmd1bWVudHMpO1xuICB9XG4gIF9pbmhlcml0cyhZQXhpcywgX1JlYWN0JENvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoWUF4aXMsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoWUF4aXNJbXBsLCB0aGlzLnByb3BzKTtcbiAgICB9XG4gIH1dKTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcbl9kZWZpbmVQcm9wZXJ0eShZQXhpcywgXCJkaXNwbGF5TmFtZVwiLCAnWUF4aXMnKTtcbl9kZWZpbmVQcm9wZXJ0eShZQXhpcywgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeTogdHJ1ZSxcbiAgYWxsb3dEZWNpbWFsczogdHJ1ZSxcbiAgaGlkZTogZmFsc2UsXG4gIG9yaWVudGF0aW9uOiAnbGVmdCcsXG4gIHdpZHRoOiA2MCxcbiAgaGVpZ2h0OiAwLFxuICBtaXJyb3I6IGZhbHNlLFxuICB5QXhpc0lkOiAwLFxuICB0aWNrQ291bnQ6IDUsXG4gIHR5cGU6ICdudW1iZXInLFxuICBwYWRkaW5nOiB7XG4gICAgdG9wOiAwLFxuICAgIGJvdHRvbTogMFxuICB9LFxuICBhbGxvd0RhdGFPdmVyZmxvdzogZmFsc2UsXG4gIHNjYWxlOiAnYXV0bycsXG4gIHJldmVyc2VkOiBmYWxzZVxufSk7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiaSIsImxlbmd0aCIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NhbGxTdXBlciIsInQiLCJlIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFwcGx5Iiwic2VsZiIsImNhbGwiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiX19wcm90b19fIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJwIiwiX2RlZmluZVByb3BlcnR5Iiwib2JqIiwiX3RvUHJpbWl0aXZlIiwiciIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJhcmd1bWVudHMiLCJzb3VyY2UiLCJoYXNPd25Qcm9wZXJ0eSIsIlJlYWN0IiwiY2xzeCIsInVzZUNoYXJ0SGVpZ2h0IiwidXNlQ2hhcnRXaWR0aCIsInVzZVlBeGlzT3JUaHJvdyIsIkNhcnRlc2lhbkF4aXMiLCJnZXRUaWNrc09mQXhpcyIsIllBeGlzSW1wbCIsIl9yZWYiLCJ5QXhpc0lkIiwid2lkdGgiLCJoZWlnaHQiLCJheGlzT3B0aW9ucyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjb25jYXQiLCJheGlzVHlwZSIsInZpZXdCb3giLCJ4IiwieSIsInRpY2tzR2VuZXJhdG9yIiwiYXhpcyIsIllBeGlzIiwiX1JlYWN0JENvbXBvbmVudCIsInJlbmRlciIsIkNvbXBvbmVudCIsImFsbG93RHVwbGljYXRlZENhdGVnb3J5IiwiYWxsb3dEZWNpbWFscyIsImhpZGUiLCJvcmllbnRhdGlvbiIsIm1pcnJvciIsInRpY2tDb3VudCIsInR5cGUiLCJwYWRkaW5nIiwidG9wIiwiYm90dG9tIiwiYWxsb3dEYXRhT3ZlcmZsb3ciLCJzY2FsZSIsInJldmVyc2VkIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/YAxis.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/getEquidistantTicks.js":
/*!********************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/getEquidistantTicks.js ***!
\********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getEquidistantTicks: () => (/* binding */ getEquidistantTicks)\n/* harmony export */ });\n/* harmony import */ var _util_TickUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/TickUtils */ \"(ssr)/./node_modules/recharts/es6/util/TickUtils.js\");\n/* harmony import */ var _util_getEveryNthWithCondition__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/getEveryNthWithCondition */ \"(ssr)/./node_modules/recharts/es6/util/getEveryNthWithCondition.js\");\n\n\nfunction getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var initialStart = boundaries.start, end = boundaries.end;\n var index = 0;\n // Premature optimisation idea 1: Estimate a lower bound, and start from there.\n // For now, start from every tick\n var stepsize = 1;\n var start = initialStart;\n var _loop = function _loop() {\n // Given stepsize, evaluate whether every stepsize-th tick can be shown.\n // If it can not, then increase the stepsize by 1, and try again.\n var entry = ticks === null || ticks === void 0 ? void 0 : ticks[index];\n // Break condition - If we have evaluate all the ticks, then we are done.\n if (entry === undefined) {\n return {\n v: (0,_util_getEveryNthWithCondition__WEBPACK_IMPORTED_MODULE_0__.getEveryNthWithCondition)(ticks, stepsize)\n };\n }\n // Check if the element collides with the next element\n var i = index;\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n var tickCoord = entry.coordinate;\n // We will always show the first tick.\n var isShow = index === 0 || (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.isVisible)(sign, tickCoord, getSize, start, end);\n if (!isShow) {\n // Start all over with a larger stepsize\n index = 0;\n start = initialStart;\n stepsize += 1;\n }\n if (isShow) {\n // If it can be shown, update the start\n start = tickCoord + sign * (getSize() / 2 + minTickGap);\n index += stepsize;\n }\n }, _ret;\n while(stepsize <= result.length){\n _ret = _loop();\n if (_ret) return _ret.v;\n }\n return [];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9nZXRFcXVpZGlzdGFudFRpY2tzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE4QztBQUM4QjtBQUNyRSxTQUFTRSxvQkFBb0JDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxXQUFXLEVBQUVDLEtBQUssRUFBRUMsVUFBVTtJQUNsRixJQUFJQyxTQUFTLENBQUNGLFNBQVMsRUFBRSxFQUFFRyxLQUFLO0lBQ2hDLElBQUlDLGVBQWVOLFdBQVdPLEtBQUssRUFDakNDLE1BQU1SLFdBQVdRLEdBQUc7SUFDdEIsSUFBSUMsUUFBUTtJQUNaLCtFQUErRTtJQUMvRSxpQ0FBaUM7SUFDakMsSUFBSUMsV0FBVztJQUNmLElBQUlILFFBQVFEO0lBQ1osSUFBSUssUUFBUSxTQUFTQTtRQUNqQix3RUFBd0U7UUFDeEUsaUVBQWlFO1FBRWpFLElBQUlDLFFBQVFWLFVBQVUsUUFBUUEsVUFBVSxLQUFLLElBQUksS0FBSyxJQUFJQSxLQUFLLENBQUNPLE1BQU07UUFFdEUseUVBQXlFO1FBQ3pFLElBQUlHLFVBQVVDLFdBQVc7WUFDdkIsT0FBTztnQkFDTEMsR0FBR2pCLHdGQUF3QkEsQ0FBQ0ssT0FBT1E7WUFDckM7UUFDRjtRQUVBLHNEQUFzRDtRQUN0RCxJQUFJSyxJQUFJTjtRQUNSLElBQUlPO1FBQ0osSUFBSUMsVUFBVSxTQUFTQTtZQUNyQixJQUFJRCxTQUFTSCxXQUFXO2dCQUN0QkcsT0FBT2YsWUFBWVcsT0FBT0c7WUFDNUI7WUFDQSxPQUFPQztRQUNUO1FBQ0EsSUFBSUUsWUFBWU4sTUFBTU8sVUFBVTtRQUNoQyxzQ0FBc0M7UUFDdEMsSUFBSUMsU0FBU1gsVUFBVSxLQUFLYiwwREFBU0EsQ0FBQ0csTUFBTW1CLFdBQVdELFNBQVNWLE9BQU9DO1FBQ3ZFLElBQUksQ0FBQ1ksUUFBUTtZQUNYLHdDQUF3QztZQUN4Q1gsUUFBUTtZQUNSRixRQUFRRDtZQUNSSSxZQUFZO1FBQ2Q7UUFDQSxJQUFJVSxRQUFRO1lBQ1YsdUNBQXVDO1lBQ3ZDYixRQUFRVyxZQUFZbkIsT0FBUWtCLENBQUFBLFlBQVksSUFBSWQsVUFBUztZQUNyRE0sU0FBU0M7UUFDWDtJQUNGLEdBQ0FXO0lBQ0YsTUFBT1gsWUFBWU4sT0FBT2tCLE1BQU0sQ0FBRTtRQUNoQ0QsT0FBT1Y7UUFDUCxJQUFJVSxNQUFNLE9BQU9BLEtBQUtQLENBQUM7SUFDekI7SUFDQSxPQUFPLEVBQUU7QUFDWCIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2FydGVzaWFuL2dldEVxdWlkaXN0YW50VGlja3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNWaXNpYmxlIH0gZnJvbSAnLi4vdXRpbC9UaWNrVXRpbHMnO1xuaW1wb3J0IHsgZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uIH0gZnJvbSAnLi4vdXRpbC9nZXRFdmVyeU50aFdpdGhDb25kaXRpb24nO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVxdWlkaXN0YW50VGlja3Moc2lnbiwgYm91bmRhcmllcywgZ2V0VGlja1NpemUsIHRpY2tzLCBtaW5UaWNrR2FwKSB7XG4gIHZhciByZXN1bHQgPSAodGlja3MgfHwgW10pLnNsaWNlKCk7XG4gIHZhciBpbml0aWFsU3RhcnQgPSBib3VuZGFyaWVzLnN0YXJ0LFxuICAgIGVuZCA9IGJvdW5kYXJpZXMuZW5kO1xuICB2YXIgaW5kZXggPSAwO1xuICAvLyBQcmVtYXR1cmUgb3B0aW1pc2F0aW9uIGlkZWEgMTogRXN0aW1hdGUgYSBsb3dlciBib3VuZCwgYW5kIHN0YXJ0IGZyb20gdGhlcmUuXG4gIC8vIEZvciBub3csIHN0YXJ0IGZyb20gZXZlcnkgdGlja1xuICB2YXIgc3RlcHNpemUgPSAxO1xuICB2YXIgc3RhcnQgPSBpbml0aWFsU3RhcnQ7XG4gIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKCkge1xuICAgICAgLy8gR2l2ZW4gc3RlcHNpemUsIGV2YWx1YXRlIHdoZXRoZXIgZXZlcnkgc3RlcHNpemUtdGggdGljayBjYW4gYmUgc2hvd24uXG4gICAgICAvLyBJZiBpdCBjYW4gbm90LCB0aGVuIGluY3JlYXNlIHRoZSBzdGVwc2l6ZSBieSAxLCBhbmQgdHJ5IGFnYWluLlxuXG4gICAgICB2YXIgZW50cnkgPSB0aWNrcyA9PT0gbnVsbCB8fCB0aWNrcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGlja3NbaW5kZXhdO1xuXG4gICAgICAvLyBCcmVhayBjb25kaXRpb24gLSBJZiB3ZSBoYXZlIGV2YWx1YXRlIGFsbCB0aGUgdGlja3MsIHRoZW4gd2UgYXJlIGRvbmUuXG4gICAgICBpZiAoZW50cnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHY6IGdldEV2ZXJ5TnRoV2l0aENvbmRpdGlvbih0aWNrcywgc3RlcHNpemUpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBlbGVtZW50IGNvbGxpZGVzIHdpdGggdGhlIG5leHQgZWxlbWVudFxuICAgICAgdmFyIGkgPSBpbmRleDtcbiAgICAgIHZhciBzaXplO1xuICAgICAgdmFyIGdldFNpemUgPSBmdW5jdGlvbiBnZXRTaXplKCkge1xuICAgICAgICBpZiAoc2l6ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2l6ZSA9IGdldFRpY2tTaXplKGVudHJ5LCBpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICAgIH07XG4gICAgICB2YXIgdGlja0Nvb3JkID0gZW50cnkuY29vcmRpbmF0ZTtcbiAgICAgIC8vIFdlIHdpbGwgYWx3YXlzIHNob3cgdGhlIGZpcnN0IHRpY2suXG4gICAgICB2YXIgaXNTaG93ID0gaW5kZXggPT09IDAgfHwgaXNWaXNpYmxlKHNpZ24sIHRpY2tDb29yZCwgZ2V0U2l6ZSwgc3RhcnQsIGVuZCk7XG4gICAgICBpZiAoIWlzU2hvdykge1xuICAgICAgICAvLyBTdGFydCBhbGwgb3ZlciB3aXRoIGEgbGFyZ2VyIHN0ZXBzaXplXG4gICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgc3RhcnQgPSBpbml0aWFsU3RhcnQ7XG4gICAgICAgIHN0ZXBzaXplICs9IDE7XG4gICAgICB9XG4gICAgICBpZiAoaXNTaG93KSB7XG4gICAgICAgIC8vIElmIGl0IGNhbiBiZSBzaG93biwgdXBkYXRlIHRoZSBzdGFydFxuICAgICAgICBzdGFydCA9IHRpY2tDb29yZCArIHNpZ24gKiAoZ2V0U2l6ZSgpIC8gMiArIG1pblRpY2tHYXApO1xuICAgICAgICBpbmRleCArPSBzdGVwc2l6ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIF9yZXQ7XG4gIHdoaWxlIChzdGVwc2l6ZSA8PSByZXN1bHQubGVuZ3RoKSB7XG4gICAgX3JldCA9IF9sb29wKCk7XG4gICAgaWYgKF9yZXQpIHJldHVybiBfcmV0LnY7XG4gIH1cbiAgcmV0dXJuIFtdO1xufSJdLCJuYW1lcyI6WyJpc1Zpc2libGUiLCJnZXRFdmVyeU50aFdpdGhDb25kaXRpb24iLCJnZXRFcXVpZGlzdGFudFRpY2tzIiwic2lnbiIsImJvdW5kYXJpZXMiLCJnZXRUaWNrU2l6ZSIsInRpY2tzIiwibWluVGlja0dhcCIsInJlc3VsdCIsInNsaWNlIiwiaW5pdGlhbFN0YXJ0Iiwic3RhcnQiLCJlbmQiLCJpbmRleCIsInN0ZXBzaXplIiwiX2xvb3AiLCJlbnRyeSIsInVuZGVmaW5lZCIsInYiLCJpIiwic2l6ZSIsImdldFNpemUiLCJ0aWNrQ29vcmQiLCJjb29yZGluYXRlIiwiaXNTaG93IiwiX3JldCIsImxlbmd0aCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/getEquidistantTicks.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/getTicks.js":
/*!*********************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/getTicks.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getTicks: () => (/* binding */ getTicks)\n/* harmony export */ });\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_DOMUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/DOMUtils */ \"(ssr)/./node_modules/recharts/es6/util/DOMUtils.js\");\n/* harmony import */ var _util_Global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_TickUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/TickUtils */ \"(ssr)/./node_modules/recharts/es6/util/TickUtils.js\");\n/* harmony import */ var _getEquidistantTicks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getEquidistantTicks */ \"(ssr)/./node_modules/recharts/es6/cartesian/getEquidistantTicks.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\nfunction getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start;\n var end = boundaries.end;\n var _loop = function _loop(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === len - 1) {\n var gap = sign * (entry.coordinate + sign * getSize() / 2 - end);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.isVisible)(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n end = entry.tickCoord - sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for(var i = len - 1; i >= 0; i--){\n _loop(i);\n }\n return result;\n}\nfunction getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, preserveEnd) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start, end = boundaries.end;\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailSize = getTickSize(tail, len - 1);\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.isVisible)(sign, tail.tickCoord, function() {\n return tailSize;\n }, start, end);\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n isShow: true\n });\n }\n }\n var count = preserveEnd ? len - 1 : len;\n var _loop2 = function _loop2(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === 0) {\n var gap = sign * (entry.coordinate - sign * getSize() / 2 - start);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.isVisible)(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n start = entry.tickCoord + sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for(var i = 0; i < count; i++){\n _loop2(i);\n }\n return result;\n}\nfunction getTicks(props, fontSize, letterSpacing) {\n var tick = props.tick, ticks = props.ticks, viewBox = props.viewBox, minTickGap = props.minTickGap, orientation = props.orientation, interval = props.interval, tickFormatter = props.tickFormatter, unit = props.unit, angle = props.angle;\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(interval) || _util_Global__WEBPACK_IMPORTED_MODULE_3__.Global.isSsr) {\n return (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.getNumberIntervalTicks)(ticks, typeof interval === 'number' && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(interval) ? interval : 0);\n }\n var candidates = [];\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n var unitSize = unit && sizeKey === 'width' ? (0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_4__.getStringSize)(unit, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }) : {\n width: 0,\n height: 0\n };\n var getTickSize = function getTickSize(content, index) {\n var value = lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default()(tickFormatter) ? tickFormatter(content.value, index) : content.value;\n // Recharts only supports angles when sizeKey === 'width'\n return sizeKey === 'width' ? (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.getAngledTickWidth)((0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_4__.getStringSize)(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }), unitSize, angle) : (0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_4__.getStringSize)(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey];\n };\n var sign = ticks.length >= 2 ? (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.mathSign)(ticks[1].coordinate - ticks[0].coordinate) : 1;\n var boundaries = (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.getTickBoundaries)(viewBox, sign, sizeKey);\n if (interval === 'equidistantPreserveStart') {\n return (0,_getEquidistantTicks__WEBPACK_IMPORTED_MODULE_5__.getEquidistantTicks)(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n if (interval === 'preserveStart' || interval === 'preserveStartEnd') {\n candidates = getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, interval === 'preserveStartEnd');\n } else {\n candidates = getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n return candidates.filter(function(entry) {\n return entry.isShow;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9nZXRUaWNrcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0Qs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M0MsbUVBQWtCQSxDQUFDTCw2REFBYUEsQ0FBQ2QsT0FBTztZQUNuRW1ELFVBQVVBO1lBQ1ZDLGVBQWVBO1FBQ2pCLElBQUlXLFVBQVVKLFNBQVM3Qyw2REFBYUEsQ0FBQ2QsT0FBTztZQUMxQ21ELFVBQVVBO1lBQ1ZDLGVBQWVBO1FBQ2pCLEVBQUUsQ0FBQ1UsUUFBUTtJQUNiO0lBQ0EsSUFBSXhDLE9BQU9HLE1BQU1qQyxNQUFNLElBQUksSUFBSW9CLHlEQUFRQSxDQUFDYSxLQUFLLENBQUMsRUFBRSxDQUFDYSxVQUFVLEdBQUdiLEtBQUssQ0FBQyxFQUFFLENBQUNhLFVBQVUsSUFBSTtJQUNyRixJQUFJZixhQUFhTixrRUFBaUJBLENBQUNxQyxTQUFTaEMsTUFBTXdDO0lBQ2xELElBQUlOLGFBQWEsNEJBQTRCO1FBQzNDLE9BQU9wQyx5RUFBbUJBLENBQUNFLE1BQU1DLFlBQVlDLGFBQWFDLE9BQU9DO0lBQ25FO0lBQ0EsSUFBSThCLGFBQWEsbUJBQW1CQSxhQUFhLG9CQUFvQjtRQUNuRUssYUFBYXBCLGNBQWNuQixNQUFNQyxZQUFZQyxhQUFhQyxPQUFPQyxZQUFZOEIsYUFBYTtJQUM1RixPQUFPO1FBQ0xLLGFBQWF4QyxZQUFZQyxNQUFNQyxZQUFZQyxhQUFhQyxPQUFPQztJQUNqRTtJQUNBLE9BQU9tQyxXQUFXNUUsTUFBTSxDQUFDLFNBQVVnRCxLQUFLO1FBQ3RDLE9BQU9BLE1BQU1PLE1BQU07SUFDckI7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2FydGVzaWFuL2dldFRpY2tzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgeyBtYXRoU2lnbiwgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBnZXRTdHJpbmdTaXplIH0gZnJvbSAnLi4vdXRpbC9ET01VdGlscyc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuLi91dGlsL0dsb2JhbCc7XG5pbXBvcnQgeyBpc1Zpc2libGUsIGdldFRpY2tCb3VuZGFyaWVzLCBnZXROdW1iZXJJbnRlcnZhbFRpY2tzLCBnZXRBbmdsZWRUaWNrV2lkdGggfSBmcm9tICcuLi91dGlsL1RpY2tVdGlscyc7XG5pbXBvcnQgeyBnZXRFcXVpZGlzdGFudFRpY2tzIH0gZnJvbSAnLi9nZXRFcXVpZGlzdGFudFRpY2tzJztcbmZ1bmN0aW9uIGdldFRpY2tzRW5kKHNpZ24sIGJvdW5kYXJpZXMsIGdldFRpY2tTaXplLCB0aWNrcywgbWluVGlja0dhcCkge1xuICB2YXIgcmVzdWx0ID0gKHRpY2tzIHx8IFtdKS5zbGljZSgpO1xuICB2YXIgbGVuID0gcmVzdWx0Lmxlbmd0aDtcbiAgdmFyIHN0YXJ0ID0gYm91bmRhcmllcy5zdGFydDtcbiAgdmFyIGVuZCA9IGJvdW5kYXJpZXMuZW5kO1xuICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChpKSB7XG4gICAgdmFyIGVudHJ5ID0gcmVzdWx0W2ldO1xuICAgIHZhciBzaXplO1xuICAgIHZhciBnZXRTaXplID0gZnVuY3Rpb24gZ2V0U2l6ZSgpIHtcbiAgICAgIGlmIChzaXplID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2l6ZSA9IGdldFRpY2tTaXplKGVudHJ5LCBpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzaXplO1xuICAgIH07XG4gICAgaWYgKGkgPT09IGxlbiAtIDEpIHtcbiAgICAgIHZhciBnYXAgPSBzaWduICogKGVudHJ5LmNvb3JkaW5hdGUgKyBzaWduICogZ2V0U2l6ZSgpIC8gMiAtIGVuZCk7XG4gICAgICByZXN1bHRbaV0gPSBlbnRyeSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICB0aWNrQ29vcmQ6IGdhcCA+IDAgPyBlbnRyeS5jb29yZGluYXRlIC0gZ2FwICogc2lnbiA6IGVudHJ5LmNvb3JkaW5hdGVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbaV0gPSBlbnRyeSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICB0aWNrQ29vcmQ6IGVudHJ5LmNvb3JkaW5hdGVcbiAgICAgIH0pO1xuICAgIH1cbiAgICB2YXIgaXNTaG93ID0gaXNWaXNpYmxlKHNpZ24sIGVudHJ5LnRpY2tDb29yZCwgZ2V0U2l6ZSwgc3RhcnQsIGVuZCk7XG4gICAgaWYgKGlzU2hvdykge1xuICAgICAgZW5kID0gZW50cnkudGlja0Nvb3JkIC0gc2lnbiAqIChnZXRTaXplKCkgLyAyICsgbWluVGlja0dhcCk7XG4gICAgICByZXN1bHRbaV0gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGVudHJ5KSwge30sIHtcbiAgICAgICAgaXNTaG93OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIF9sb29wKGkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXRUaWNrc1N0YXJ0KHNpZ24sIGJvdW5kYXJpZXMsIGdldFRpY2tTaXplLCB0aWNrcywgbWluVGlja0dhcCwgcHJlc2VydmVFbmQpIHtcbiAgdmFyIHJlc3VsdCA9ICh0aWNrcyB8fCBbXSkuc2xpY2UoKTtcbiAgdmFyIGxlbiA9IHJlc3VsdC5sZW5ndGg7XG4gIHZhciBzdGFydCA9IGJvdW5kYXJpZXMuc3RhcnQsXG4gICAgZW5kID0gYm91bmRhcmllcy5lbmQ7XG4gIGlmIChwcmVzZXJ2ZUVuZCkge1xuICAgIC8vIFRyeSB0byBndWFyYW50ZWUgdGhlIHRhaWwgdG8gYmUgZGlzcGxheWVkXG4gICAgdmFyIHRhaWwgPSB0aWNrc1tsZW4gLSAxXTtcbiAgICB2YXIgdGFpbFNpemUgPSBnZXRUaWNrU2l6ZSh0YWlsLCBsZW4gLSAxKTtcbiAgICB2YXIgdGFpbEdhcCA9IHNpZ24gKiAodGFpbC5jb29yZGluYXRlICsgc2lnbiAqIHRhaWxTaXplIC8gMiAtIGVuZCk7XG4gICAgcmVzdWx0W2xlbiAtIDFdID0gdGFpbCA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGFpbCksIHt9LCB7XG4gICAgICB0aWNrQ29vcmQ6IHRhaWxHYXAgPiAwID8gdGFpbC5jb29yZGluYXRlIC0gdGFpbEdhcCAqIHNpZ24gOiB0YWlsLmNvb3JkaW5hdGVcbiAgICB9KTtcbiAgICB2YXIgaXNUYWlsU2hvdyA9IGlzVmlzaWJsZShzaWduLCB0YWlsLnRpY2tDb29yZCwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRhaWxTaXplO1xuICAgIH0sIHN0YXJ0LCBlbmQpO1xuICAgIGlmIChpc1RhaWxTaG93KSB7XG4gICAgICBlbmQgPSB0YWlsLnRpY2tDb29yZCAtIHNpZ24gKiAodGFpbFNpemUgLyAyICsgbWluVGlja0dhcCk7XG4gICAgICByZXN1bHRbbGVuIC0gMV0gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRhaWwpLCB7fSwge1xuICAgICAgICBpc1Nob3c6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICB2YXIgY291bnQgPSBwcmVzZXJ2ZUVuZCA/IGxlbiAtIDEgOiBsZW47XG4gIHZhciBfbG9vcDIgPSBmdW5jdGlvbiBfbG9vcDIoaSkge1xuICAgIHZhciBlbnRyeSA9IHJlc3VsdFtpXTtcbiAgICB2YXIgc2l6ZTtcbiAgICB2YXIgZ2V0U2l6ZSA9IGZ1bmN0aW9uIGdldFNpemUoKSB7XG4gICAgICBpZiAoc2l6ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNpemUgPSBnZXRUaWNrU2l6ZShlbnRyeSwgaSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2l6ZTtcbiAgICB9O1xuICAgIGlmIChpID09PSAwKSB7XG4gICAgICB2YXIgZ2FwID0gc2lnbiAqIChlbnRyeS5jb29yZGluYXRlIC0gc2lnbiAqIGdldFNpemUoKSAvIDIgLSBzdGFydCk7XG4gICAgICByZXN1bHRbaV0gPSBlbnRyeSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICB0aWNrQ29vcmQ6IGdhcCA8IDAgPyBlbnRyeS5jb29yZGluYXRlIC0gZ2FwICogc2lnbiA6IGVudHJ5LmNvb3JkaW5hdGVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbaV0gPSBlbnRyeSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICB0aWNrQ29vcmQ6IGVudHJ5LmNvb3JkaW5hdGVcbiAgICAgIH0pO1xuICAgIH1cbiAgICB2YXIgaXNTaG93ID0gaXNWaXNpYmxlKHNpZ24sIGVudHJ5LnRpY2tDb29yZCwgZ2V0U2l6ZSwgc3RhcnQsIGVuZCk7XG4gICAgaWYgKGlzU2hvdykge1xuICAgICAgc3RhcnQgPSBlbnRyeS50aWNrQ29vcmQgKyBzaWduICogKGdldFNpemUoKSAvIDIgKyBtaW5UaWNrR2FwKTtcbiAgICAgIHJlc3VsdFtpXSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICBpc1Nob3c6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgX2xvb3AyKGkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGlja3MocHJvcHMsIGZvbnRTaXplLCBsZXR0ZXJTcGFjaW5nKSB7XG4gIHZhciB0aWNrID0gcHJvcHMudGljayxcbiAgICB0aWNrcyA9IHByb3BzLnRpY2tzLFxuICAgIHZpZXdCb3ggPSBwcm9wcy52aWV3Qm94LFxuICAgIG1pblRpY2tHYXAgPSBwcm9wcy5taW5UaWNrR2FwLFxuICAgIG9yaWVudGF0aW9uID0gcHJvcHMub3JpZW50YXRpb24sXG4gICAgaW50ZXJ2YWwgPSBwcm9wcy5pbnRlcnZhbCxcbiAgICB0aWNrRm9ybWF0dGVyID0gcHJvcHMudGlja0Zvcm1hdHRlcixcbiAgICB1bml0ID0gcHJvcHMudW5pdCxcbiAgICBhbmdsZSA9IHByb3BzLmFuZ2xlO1xuICBpZiAoIXRpY2tzIHx8ICF0aWNrcy5sZW5ndGggfHwgIXRpY2spIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKGlzTnVtYmVyKGludGVydmFsKSB8fCBHbG9iYWwuaXNTc3IpIHtcbiAgICByZXR1cm4gZ2V0TnVtYmVySW50ZXJ2YWxUaWNrcyh0aWNrcywgdHlwZW9mIGludGVydmFsID09PSAnbnVtYmVyJyAmJiBpc051bWJlcihpbnRlcnZhbCkgPyBpbnRlcnZhbCA6IDApO1xuICB9XG4gIHZhciBjYW5kaWRhdGVzID0gW107XG4gIHZhciBzaXplS2V5ID0gb3JpZW50YXRpb24gPT09ICd0b3AnIHx8IG9yaWVudGF0aW9uID09PSAnYm90dG9tJyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgdmFyIHVuaXRTaXplID0gdW5pdCAmJiBzaXplS2V5ID09PSAnd2lkdGgnID8gZ2V0U3RyaW5nU2l6ZSh1bml0LCB7XG4gICAgZm9udFNpemU6IGZvbnRTaXplLFxuICAgIGxldHRlclNwYWNpbmc6IGxldHRlclNwYWNpbmdcbiAgfSkgOiB7XG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH07XG4gIHZhciBnZXRUaWNrU2l6ZSA9IGZ1bmN0aW9uIGdldFRpY2tTaXplKGNvbnRlbnQsIGluZGV4KSB7XG4gICAgdmFyIHZhbHVlID0gaXNGdW5jdGlvbih0aWNrRm9ybWF0dGVyKSA/IHRpY2tGb3JtYXR0ZXIoY29udGVudC52YWx1ZSwgaW5kZXgpIDogY29udGVudC52YWx1ZTtcbiAgICAvLyBSZWNoYXJ0cyBvbmx5IHN1cHBvcnRzIGFuZ2xlcyB3aGVuIHNpemVLZXkgPT09ICd3aWR0aCdcbiAgICByZXR1cm4gc2l6ZUtleSA9PT0gJ3dpZHRoJyA/IGdldEFuZ2xlZFRpY2tXaWR0aChnZXRTdHJpbmdTaXplKHZhbHVlLCB7XG4gICAgICBmb250U2l6ZTogZm9udFNpemUsXG4gICAgICBsZXR0ZXJTcGFjaW5nOiBsZXR0ZXJTcGFjaW5nXG4gICAgfSksIHVuaXRTaXplLCBhbmdsZSkgOiBnZXRTdHJpbmdTaXplKHZhbHVlLCB7XG4gICAgICBmb250U2l6ZTogZm9udFNpemUsXG4gICAgICBsZXR0ZXJTcGFjaW5nOiBsZXR0ZXJTcGFjaW5nXG4gICAgfSlbc2l6ZUtleV07XG4gIH07XG4gIHZhciBzaWduID0gdGlja3MubGVuZ3RoID49IDIgPyBtYXRoU2lnbih0aWNrc1sxXS5jb29yZGluYXRlIC0gdGlja3NbMF0uY29vcmRpbmF0ZSkgOiAxO1xuICB2YXIgYm91bmRhcmllcyA9IGdldFRpY2tCb3VuZGFyaWVzKHZpZXdCb3gsIHNpZ24sIHNpemVLZXkpO1xuICBpZiAoaW50ZXJ2YWwgPT09ICdlcXVpZGlzdGFudFByZXNlcnZlU3RhcnQnKSB7XG4gICAgcmV0dXJuIGdldEVxdWlkaXN0YW50VGlja3Moc2lnbiwgYm91bmRhcmllcywgZ2V0VGlja1NpemUsIHRpY2tzLCBtaW5UaWNrR2FwKTtcbiAgfVxuICBpZiAoaW50ZXJ2YWwgPT09ICdwcmVzZXJ2ZVN0YXJ0JyB8fCBpbnRlcnZhbCA9PT0gJ3ByZXNlcnZlU3RhcnRFbmQnKSB7XG4gICAgY2FuZGlkYXRlcyA9IGdldFRpY2tzU3RhcnQoc2lnbiwgYm91bmRhcmllcywgZ2V0VGlja1NpemUsIHRpY2tzLCBtaW5UaWNrR2FwLCBpbnRlcnZhbCA9PT0gJ3ByZXNlcnZlU3RhcnRFbmQnKTtcbiAgfSBlbHNlIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0VGlja3NFbmQoc2lnbiwgYm91bmRhcmllcywgZ2V0VGlja1NpemUsIHRpY2tzLCBtaW5UaWNrR2FwKTtcbiAgfVxuICByZXR1cm4gY2FuZGlkYXRlcy5maWx0ZXIoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIGVudHJ5LmlzU2hvdztcbiAgfSk7XG59Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJpc0Z1bmN0aW9uIiwibWF0aFNpZ24iLCJpc051bWJlciIsImdldFN0cmluZ1NpemUiLCJHbG9iYWwiLCJpc1Zpc2libGUiLCJnZXRUaWNrQm91bmRhcmllcyIsImdldE51bWJlckludGVydmFsVGlja3MiLCJnZXRBbmdsZWRUaWNrV2lkdGgiLCJnZXRFcXVpZGlzdGFudFRpY2tzIiwiZ2V0VGlja3NFbmQiLCJzaWduIiwiYm91bmRhcmllcyIsImdldFRpY2tTaXplIiwidGlja3MiLCJtaW5UaWNrR2FwIiwicmVzdWx0Iiwic2xpY2UiLCJsZW4iLCJzdGFydCIsImVuZCIsIl9sb29wIiwiZW50cnkiLCJzaXplIiwiZ2V0U2l6ZSIsInVuZGVmaW5lZCIsImdhcCIsImNvb3JkaW5hdGUiLCJ0aWNrQ29vcmQiLCJpc1Nob3ciLCJnZXRUaWNrc1N0YXJ0IiwicHJlc2VydmVFbmQiLCJ0YWlsIiwidGFpbFNpemUiLCJ0YWlsR2FwIiwiaXNUYWlsU2hvdyIsImNvdW50IiwiX2xvb3AyIiwiZ2V0VGlja3MiLCJwcm9wcyIsImZvbnRTaXplIiwibGV0dGVyU3BhY2luZyIsInRpY2siLCJ2aWV3Qm94Iiwib3JpZW50YXRpb24iLCJpbnRlcnZhbCIsInRpY2tGb3JtYXR0ZXIiLCJ1bml0IiwiYW5nbGUiLCJpc1NzciIsImNhbmRpZGF0ZXMiLCJzaXplS2V5IiwidW5pdFNpemUiLCJ3aWR0aCIsImhlaWdodCIsImNvbnRlbnQiLCJpbmRleCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/getTicks.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/chart/AccessibilityManager.js":
/*!*****************************************************************!*\
!*** ./node_modules/recharts/es6/chart/AccessibilityManager.js ***!
\*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AccessibilityManager: () => (/* binding */ AccessibilityManager)\n/* harmony export */ });\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nvar AccessibilityManager = /*#__PURE__*/ function() {\n function AccessibilityManager() {\n _classCallCheck(this, AccessibilityManager);\n _defineProperty(this, \"activeIndex\", 0);\n _defineProperty(this, \"coordinateList\", []);\n _defineProperty(this, \"layout\", 'horizontal');\n }\n return _createClass(AccessibilityManager, [\n {\n key: \"setDetails\",\n value: function setDetails(_ref) {\n var _ref2;\n var _ref$coordinateList = _ref.coordinateList, coordinateList = _ref$coordinateList === void 0 ? null : _ref$coordinateList, _ref$container = _ref.container, container = _ref$container === void 0 ? null : _ref$container, _ref$layout = _ref.layout, layout = _ref$layout === void 0 ? null : _ref$layout, _ref$offset = _ref.offset, offset = _ref$offset === void 0 ? null : _ref$offset, _ref$mouseHandlerCall = _ref.mouseHandlerCallback, mouseHandlerCallback = _ref$mouseHandlerCall === void 0 ? null : _ref$mouseHandlerCall;\n this.coordinateList = (_ref2 = coordinateList !== null && coordinateList !== void 0 ? coordinateList : this.coordinateList) !== null && _ref2 !== void 0 ? _ref2 : [];\n this.container = container !== null && container !== void 0 ? container : this.container;\n this.layout = layout !== null && layout !== void 0 ? layout : this.layout;\n this.offset = offset !== null && offset !== void 0 ? offset : this.offset;\n this.mouseHandlerCallback = mouseHandlerCallback !== null && mouseHandlerCallback !== void 0 ? mouseHandlerCallback : this.mouseHandlerCallback;\n // Keep activeIndex in the bounds between 0 and the last coordinate index\n this.activeIndex = Math.min(Math.max(this.activeIndex, 0), this.coordinateList.length - 1);\n }\n },\n {\n key: \"focus\",\n value: function focus() {\n this.spoofMouse();\n }\n },\n {\n key: \"keyboardEvent\",\n value: function keyboardEvent(e) {\n // The AccessibilityManager relies on the Tooltip component. When tooltips suddenly stop existing,\n // it can cause errors. We use this function to check. We don't want arrow keys to be processed\n // if there are no tooltips, since that will cause unexpected behavior of users.\n if (this.coordinateList.length === 0) {\n return;\n }\n switch(e.key){\n case 'ArrowRight':\n {\n if (this.layout !== 'horizontal') {\n return;\n }\n this.activeIndex = Math.min(this.activeIndex + 1, this.coordinateList.length - 1);\n this.spoofMouse();\n break;\n }\n case 'ArrowLeft':\n {\n if (this.layout !== 'horizontal') {\n return;\n }\n this.activeIndex = Math.max(this.activeIndex - 1, 0);\n this.spoofMouse();\n break;\n }\n default:\n {\n break;\n }\n }\n }\n },\n {\n key: \"setIndex\",\n value: function setIndex(newIndex) {\n this.activeIndex = newIndex;\n }\n },\n {\n key: \"spoofMouse\",\n value: function spoofMouse() {\n var _window, _window2;\n if (this.layout !== 'horizontal') {\n return;\n }\n // This can happen when the tooltips suddenly stop existing as children of the component\n // That update doesn't otherwise fire events, so we have to double check here.\n if (this.coordinateList.length === 0) {\n return;\n }\n var _this$container$getBo = this.container.getBoundingClientRect(), x = _this$container$getBo.x, y = _this$container$getBo.y, height = _this$container$getBo.height;\n var coordinate = this.coordinateList[this.activeIndex].coordinate;\n var scrollOffsetX = ((_window = window) === null || _window === void 0 ? void 0 : _window.scrollX) || 0;\n var scrollOffsetY = ((_window2 = window) === null || _window2 === void 0 ? void 0 : _window2.scrollY) || 0;\n var pageX = x + coordinate + scrollOffsetX;\n var pageY = y + this.offset.top + height / 2 + scrollOffsetY;\n this.mouseHandlerCallback({\n pageX: pageX,\n pageY: pageY\n });\n }\n }\n ]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L0FjY2Vzc2liaWxpdHlNYW5hZ2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0ssZ0JBQWdCQyxRQUFRLEVBQUVDLFdBQVc7SUFBSSxJQUFJLENBQUVELENBQUFBLG9CQUFvQkMsV0FBVSxHQUFJO1FBQUUsTUFBTSxJQUFJQyxVQUFVO0lBQXNDO0FBQUU7QUFDeEosU0FBU0Msa0JBQWtCQyxNQUFNLEVBQUVDLEtBQUs7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUQsTUFBTUUsTUFBTSxFQUFFRCxJQUFLO1FBQUUsSUFBSUUsYUFBYUgsS0FBSyxDQUFDQyxFQUFFO1FBQUVFLFdBQVdDLFVBQVUsR0FBR0QsV0FBV0MsVUFBVSxJQUFJO1FBQU9ELFdBQVdFLFlBQVksR0FBRztRQUFNLElBQUksV0FBV0YsWUFBWUEsV0FBV0csUUFBUSxHQUFHO1FBQU1DLE9BQU9DLGNBQWMsQ0FBQ1QsUUFBUVUsZUFBZU4sV0FBV08sR0FBRyxHQUFHUDtJQUFhO0FBQUU7QUFDNVUsU0FBU1EsYUFBYWYsV0FBVyxFQUFFZ0IsVUFBVSxFQUFFQyxXQUFXO0lBQUksSUFBSUQsWUFBWWQsa0JBQWtCRixZQUFZSCxTQUFTLEVBQUVtQjtJQUFhLElBQUlDLGFBQWFmLGtCQUFrQkYsYUFBYWlCO0lBQWNOLE9BQU9DLGNBQWMsQ0FBQ1osYUFBYSxhQUFhO1FBQUVV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LDhFQUE4RTtnQkFDOUUsSUFBSSxJQUFJLENBQUNKLGNBQWMsQ0FBQzVCLE1BQU0sS0FBSyxHQUFHO29CQUNwQztnQkFDRjtnQkFDQSxJQUFJZ0Qsd0JBQXdCLElBQUksQ0FBQ2xCLFNBQVMsQ0FBQ21CLHFCQUFxQixJQUM5REMsSUFBSUYsc0JBQXNCRSxDQUFDLEVBQzNCQyxJQUFJSCxzQkFBc0JHLENBQUMsRUFDM0JDLFNBQVNKLHNCQUFzQkksTUFBTTtnQkFDdkMsSUFBSUMsYUFBYSxJQUFJLENBQUN6QixjQUFjLENBQUMsSUFBSSxDQUFDUyxXQUFXLENBQUMsQ0FBQ2dCLFVBQVU7Z0JBQ2pFLElBQUlDLGdCQUFnQixDQUFDLENBQUNSLFVBQVVTLE1BQUssTUFBTyxRQUFRVCxZQUFZLEtBQUssSUFBSSxLQUFLLElBQUlBLFFBQVFVLE9BQU8sS0FBSztnQkFDdEcsSUFBSUMsZ0JBQWdCLENBQUMsQ0FBQ1YsV0FBV1EsTUFBSyxNQUFPLFFBQVFSLGFBQWEsS0FBSyxJQUFJLEtBQUssSUFBSUEsU0FBU1csT0FBTyxLQUFLO2dCQUN6RyxJQUFJQyxRQUFRVCxJQUFJRyxhQUFhQztnQkFDN0IsSUFBSU0sUUFBUVQsSUFBSSxJQUFJLENBQUNqQixNQUFNLENBQUMyQixHQUFHLEdBQUdULFNBQVMsSUFBSUs7Z0JBQy9DLElBQUksQ0FBQ3JCLG9CQUFvQixDQUFDO29CQUN4QnVCLE9BQU9BO29CQUNQQyxPQUFPQTtnQkFDVDtZQUNGO1FBQ0Y7S0FBRTtBQUNKLElBQUkiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L0FjY2Vzc2liaWxpdHlNYW5hZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZXhwb3J0IHZhciBBY2Nlc3NpYmlsaXR5TWFuYWdlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEFjY2Vzc2liaWxpdHlNYW5hZ2VyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBY2Nlc3NpYmlsaXR5TWFuYWdlcik7XG4gICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwiYWN0aXZlSW5kZXhcIiwgMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwiY29vcmRpbmF0ZUxpc3RcIiwgW10pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImxheW91dFwiLCAnaG9yaXpvbnRhbCcpO1xuICB9XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoQWNjZXNzaWJpbGl0eU1hbmFnZXIsIFt7XG4gICAga2V5OiBcInNldERldGFpbHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RGV0YWlscyhfcmVmKSB7XG4gICAgICB2YXIgX3JlZjI7XG4gICAgICB2YXIgX3JlZiRjb29yZGluYXRlTGlzdCA9IF9yZWYuY29vcmRpbmF0ZUxpc3QsXG4gICAgICAgIGNvb3JkaW5hdGVMaXN0ID0gX3JlZiRjb29yZGluYXRlTGlzdCA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYkY29vcmRpbmF0ZUxpc3QsXG4gICAgICAgIF9yZWYkY29udGFpbmVyID0gX3JlZi5jb250YWluZXIsXG4gICAgICAgIGNvbnRhaW5lciA9IF9yZWYkY29udGFpbmVyID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRjb250YWluZXIsXG4gICAgICAgIF9yZWYkbGF5b3V0ID0gX3JlZi5sYXlvdXQsXG4gICAgICAgIGxheW91dCA9IF9yZWYkbGF5b3V0ID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRsYXlvdXQsXG4gICAgICAgIF9yZWYkb2Zmc2V0ID0gX3JlZi5vZmZzZXQsXG4gICAgICAgIG9mZnNldCA9IF9yZWYkb2Zmc2V0ID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRvZmZzZXQsXG4gICAgICAgIF9yZWYkbW91c2VIYW5kbGVyQ2FsbCA9IF9yZWYubW91c2VIYW5kbGVyQ2FsbGJhY2ssXG4gICAgICAgIG1vdXNlSGFuZGxlckNhbGxiYWNrID0gX3JlZiRtb3VzZUhhbmRsZXJDYWxsID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRtb3VzZUhhbmRsZXJDYWxsO1xuICAgICAgdGhpcy5jb29yZGluYXRlTGlzdCA9IChfcmVmMiA9IGNvb3JkaW5hdGVMaXN0ICE9PSBudWxsICYmIGNvb3JkaW5hdGVMaXN0ICE9PSB2b2lkIDAgPyBjb29yZGluYXRlTGlzdCA6IHRoaXMuY29vcmRpbmF0ZUxpc3QpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IFtdO1xuICAgICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXIgIT09IG51bGwgJiYgY29udGFpbmVyICE9PSB2b2lkIDAgPyBjb250YWluZXIgOiB0aGlzLmNvbnRhaW5lcjtcbiAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0ICE9PSBudWxsICYmIGxheW91dCAhPT0gdm9pZCAwID8gbGF5b3V0IDogdGhpcy5sYXlvdXQ7XG4gICAgICB0aGlzLm9mZnNldCA9IG9mZnNldCAhPT0gbnVsbCAmJiBvZmZzZXQgIT09IHZvaWQgMCA/IG9mZnNldCA6IHRoaXMub2Zmc2V0O1xuICAgICAgdGhpcy5tb3VzZUhhbmRsZXJDYWxsYmFjayA9IG1vdXNlSGFuZGxlckNhbGxiYWNrICE9PSBudWxsICYmIG1vdXNlSGFuZGxlckNhbGxiYWNrICE9PSB2b2lkIDAgPyBtb3VzZUhhbmRsZXJDYWxsYmFjayA6IHRoaXMubW91c2VIYW5kbGVyQ2FsbGJhY2s7XG5cbiAgICAgIC8vIEtlZXAgYWN0aXZlSW5kZXggaW4gdGhlIGJvdW5kcyBiZXR3ZWVuIDAgYW5kIHRoZSBsYXN0IGNvb3JkaW5hdGUgaW5kZXhcbiAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBNYXRoLm1pbihNYXRoLm1heCh0aGlzLmFjdGl2ZUluZGV4LCAwKSwgdGhpcy5jb29yZGluYXRlTGlzdC5sZW5ndGggLSAxKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXMoKSB7XG4gICAgICB0aGlzLnNwb29mTW91c2UoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwia2V5Ym9hcmRFdmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBrZXlib2FyZEV2ZW50KGUpIHtcbiAgICAgIC8vIFRoZSBBY2Nlc3NpYmlsaXR5TWFuYWdlciByZWxpZXMgb24gdGhlIFRvb2x0aXAgY29tcG9uZW50LiBXaGVuIHRvb2x0aXBzIHN1ZGRlbmx5IHN0b3AgZXhpc3RpbmcsXG4gICAgICAvLyBpdCBjYW4gY2F1c2UgZXJyb3JzLiBXZSB1c2UgdGhpcyBmdW5jdGlvbiB0byBjaGVjay4gV2UgZG9uJ3Qgd2FudCBhcnJvdyBrZXlzIHRvIGJlIHByb2Nlc3NlZFxuICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIHRvb2x0aXBzLCBzaW5jZSB0aGF0IHdpbGwgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvciBvZiB1c2Vycy5cbiAgICAgIGlmICh0aGlzLmNvb3JkaW5hdGVMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKGUua2V5KSB7XG4gICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxheW91dCAhPT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBNYXRoLm1pbih0aGlzLmFjdGl2ZUluZGV4ICsgMSwgdGhpcy5jb29yZGluYXRlTGlzdC5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIHRoaXMuc3Bvb2ZNb3VzZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxheW91dCAhPT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBNYXRoLm1heCh0aGlzLmFjdGl2ZUluZGV4IC0gMSwgMCk7XG4gICAgICAgICAgICB0aGlzLnNwb29mTW91c2UoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEluZGV4KG5ld0luZGV4KSB7XG4gICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gbmV3SW5kZXg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNwb29mTW91c2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3Bvb2ZNb3VzZSgpIHtcbiAgICAgIHZhciBfd2luZG93LCBfd2luZG93MjtcbiAgICAgIGlmICh0aGlzLmxheW91dCAhPT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIHRvb2x0aXBzIHN1ZGRlbmx5IHN0b3AgZXhpc3RpbmcgYXMgY2hpbGRyZW4gb2YgdGhlIGNvbXBvbmVudFxuICAgICAgLy8gVGhhdCB1cGRhdGUgZG9lc24ndCBvdGhlcndpc2UgZmlyZSBldmVudHMsIHNvIHdlIGhhdmUgdG8gZG91YmxlIGNoZWNrIGhlcmUuXG4gICAgICBpZiAodGhpcy5jb29yZGluYXRlTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIF90aGlzJGNvbnRhaW5lciRnZXRCbyA9IHRoaXMuY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICB4ID0gX3RoaXMkY29udGFpbmVyJGdldEJvLngsXG4gICAgICAgIHkgPSBfdGhpcyRjb250YWluZXIkZ2V0Qm8ueSxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkY29udGFpbmVyJGdldEJvLmhlaWdodDtcbiAgICAgIHZhciBjb29yZGluYXRlID0gdGhpcy5jb29yZGluYXRlTGlzdFt0aGlzLmFjdGl2ZUluZGV4XS5jb29yZGluYXRlO1xuICAgICAgdmFyIHNjcm9sbE9mZnNldFggPSAoKF93aW5kb3cgPSB3aW5kb3cpID09PSBudWxsIHx8IF93aW5kb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF93aW5kb3cuc2Nyb2xsWCkgfHwgMDtcbiAgICAgIHZhciBzY3JvbGxPZmZzZXRZID0gKChfd2luZG93MiA9IHdpbmRvdykgPT09IG51bGwgfHwgX3dpbmRvdzIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF93aW5kb3cyLnNjcm9sbFkpIHx8IDA7XG4gICAgICB2YXIgcGFnZVggPSB4ICsgY29vcmRpbmF0ZSArIHNjcm9sbE9mZnNldFg7XG4gICAgICB2YXIgcGFnZVkgPSB5ICsgdGhpcy5vZmZzZXQudG9wICsgaGVpZ2h0IC8gMiArIHNjcm9sbE9mZnNldFk7XG4gICAgICB0aGlzLm1vdXNlSGFuZGxlckNhbGxiYWNrKHtcbiAgICAgICAgcGFnZVg6IHBhZ2VYLFxuICAgICAgICBwYWdlWTogcGFnZVlcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xufSgpOyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImkiLCJsZW5ndGgiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwidCIsIl90b1ByaW1pdGl2ZSIsInIiLCJlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiU3RyaW5nIiwiTnVtYmVyIiwiQWNjZXNzaWJpbGl0eU1hbmFnZXIiLCJzZXREZXRhaWxzIiwiX3JlZiIsIl9yZWYyIiwiX3JlZiRjb29yZGluYXRlTGlzdCIsImNvb3JkaW5hdGVMaXN0IiwiX3JlZiRjb250YWluZXIiLCJjb250YWluZXIiLCJfcmVmJGxheW91dCIsImxheW91dCIsIl9yZWYkb2Zmc2V0Iiwib2Zmc2V0IiwiX3JlZiRtb3VzZUhhbmRsZXJDYWxsIiwibW91c2VIYW5kbGVyQ2FsbGJhY2siLCJhY3RpdmVJbmRleCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJmb2N1cyIsInNwb29mTW91c2UiLCJrZXlib2FyZEV2ZW50Iiwic2V0SW5kZXgiLCJuZXdJbmRleCIsIl93aW5kb3ciLCJfd2luZG93MiIsIl90aGlzJGNvbnRhaW5lciRnZXRCbyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIngiLCJ5IiwiaGVpZ2h0IiwiY29vcmRpbmF0ZSIsInNjcm9sbE9mZnNldFgiLCJ3aW5kb3ciLCJzY3JvbGxYIiwic2Nyb2xsT2Zmc2V0WSIsInNjcm9sbFkiLCJwYWdlWCIsInBhZ2VZIiwidG9wIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/chart/AccessibilityManager.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/chart/LineChart.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/chart/LineChart.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LineChart: () => (/* binding */ LineChart)\n/* harmony export */ });\n/* harmony import */ var _generateCategoricalChart__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./generateCategoricalChart */ \"(ssr)/./node_modules/recharts/es6/chart/generateCategoricalChart.js\");\n/* harmony import */ var _cartesian_Line__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cartesian/Line */ \"(ssr)/./node_modules/recharts/es6/cartesian/Line.js\");\n/* harmony import */ var _cartesian_XAxis__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cartesian/XAxis */ \"(ssr)/./node_modules/recharts/es6/cartesian/XAxis.js\");\n/* harmony import */ var _cartesian_YAxis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cartesian/YAxis */ \"(ssr)/./node_modules/recharts/es6/cartesian/YAxis.js\");\n/* harmony import */ var _util_CartesianUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/CartesianUtils */ \"(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\");\n/**\n * @fileOverview Line Chart\n */ \n\n\n\n\nvar LineChart = (0,_generateCategoricalChart__WEBPACK_IMPORTED_MODULE_0__.generateCategoricalChart)({\n chartName: 'LineChart',\n GraphicalChild: _cartesian_Line__WEBPACK_IMPORTED_MODULE_1__.Line,\n axisComponents: [\n {\n axisType: 'xAxis',\n AxisComp: _cartesian_XAxis__WEBPACK_IMPORTED_MODULE_2__.XAxis\n },\n {\n axisType: 'yAxis',\n AxisComp: _cartesian_YAxis__WEBPACK_IMPORTED_MODULE_3__.YAxis\n }\n ],\n formatAxisMap: _util_CartesianUtils__WEBPACK_IMPORTED_MODULE_4__.formatAxisMap\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L0xpbmVDaGFydC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Q0FFQyxHQUNxRTtBQUM3QjtBQUNFO0FBQ0E7QUFDWTtBQUNoRCxJQUFJSyxZQUFZTCxtRkFBd0JBLENBQUM7SUFDOUNNLFdBQVc7SUFDWEMsZ0JBQWdCTixpREFBSUE7SUFDcEJPLGdCQUFnQjtRQUFDO1lBQ2ZDLFVBQVU7WUFDVkMsVUFBVVIsbURBQUtBO1FBQ2pCO1FBQUc7WUFDRE8sVUFBVTtZQUNWQyxVQUFVUCxtREFBS0E7UUFDakI7S0FBRTtJQUNGQyxlQUFlQSwrREFBYUE7QUFDOUIsR0FBRyIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2hhcnQvTGluZUNoYXJ0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBMaW5lIENoYXJ0XG4gKi9cbmltcG9ydCB7IGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCB9IGZyb20gJy4vZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0JztcbmltcG9ydCB7IExpbmUgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vTGluZSc7XG5pbXBvcnQgeyBYQXhpcyB9IGZyb20gJy4uL2NhcnRlc2lhbi9YQXhpcyc7XG5pbXBvcnQgeyBZQXhpcyB9IGZyb20gJy4uL2NhcnRlc2lhbi9ZQXhpcyc7XG5pbXBvcnQgeyBmb3JtYXRBeGlzTWFwIH0gZnJvbSAnLi4vdXRpbC9DYXJ0ZXNpYW5VdGlscyc7XG5leHBvcnQgdmFyIExpbmVDaGFydCA9IGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCh7XG4gIGNoYXJ0TmFtZTogJ0xpbmVDaGFydCcsXG4gIEdyYXBoaWNhbENoaWxkOiBMaW5lLFxuICBheGlzQ29tcG9uZW50czogW3tcbiAgICBheGlzVHlwZTogJ3hBeGlzJyxcbiAgICBBeGlzQ29tcDogWEF4aXNcbiAgfSwge1xuICAgIGF4aXNUeXBlOiAneUF4aXMnLFxuICAgIEF4aXNDb21wOiBZQXhpc1xuICB9XSxcbiAgZm9ybWF0QXhpc01hcDogZm9ybWF0QXhpc01hcFxufSk7Il0sIm5hbWVzIjpbImdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCIsIkxpbmUiLCJYQXhpcyIsIllBeGlzIiwiZm9ybWF0QXhpc01hcCIsIkxpbmVDaGFydCIsImNoYXJ0TmFtZSIsIkdyYXBoaWNhbENoaWxkIiwiYXhpc0NvbXBvbmVudHMiLCJheGlzVHlwZSIsIkF4aXNDb21wIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/chart/LineChart.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/chart/generateCategoricalChart.js":
/*!*********************************************************************!*\
!*** ./node_modules/recharts/es6/chart/generateCategoricalChart.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createDefaultState: () => (/* binding */ createDefaultState),\n/* harmony export */ generateCategoricalChart: () => (/* binding */ generateCategoricalChart),\n/* harmony export */ getAxisMapByAxes: () => (/* binding */ getAxisMapByAxes)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_range__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/range */ \"(ssr)/./node_modules/lodash/range.js\");\n/* harmony import */ var lodash_range__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_range__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/sortBy */ \"(ssr)/./node_modules/lodash/sortBy.js\");\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_sortBy__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/throttle */ \"(ssr)/./node_modules/lodash/throttle.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! tiny-invariant */ \"(ssr)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\");\n/* harmony import */ var _container_Surface__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../container/Surface */ \"(ssr)/./node_modules/recharts/es6/container/Surface.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../component/Tooltip */ \"(ssr)/./node_modules/recharts/es6/component/Tooltip.js\");\n/* harmony import */ var _component_Legend__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../component/Legend */ \"(ssr)/./node_modules/recharts/es6/component/Legend.js\");\n/* harmony import */ var _shape_Dot__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../shape/Dot */ \"(ssr)/./node_modules/recharts/es6/shape/Dot.js\");\n/* harmony import */ var _shape_Rectangle__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../shape/Rectangle */ \"(ssr)/./node_modules/recharts/es6/shape/Rectangle.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _cartesian_Brush__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../cartesian/Brush */ \"(ssr)/./node_modules/recharts/es6/cartesian/Brush.js\");\n/* harmony import */ var _util_DOMUtils__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../util/DOMUtils */ \"(ssr)/./node_modules/recharts/es6/util/DOMUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/getLegendProps.js\");\n/* harmony import */ var _util_DetectReferenceElementsDomain__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../util/DetectReferenceElementsDomain */ \"(ssr)/./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js\");\n/* harmony import */ var _util_PolarUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\n/* harmony import */ var _util_ShallowEqual__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../util/ShallowEqual */ \"(ssr)/./node_modules/recharts/es6/util/ShallowEqual.js\");\n/* harmony import */ var _util_Events__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../util/Events */ \"(ssr)/./node_modules/recharts/es6/util/Events.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _AccessibilityManager__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./AccessibilityManager */ \"(ssr)/./node_modules/recharts/es6/chart/AccessibilityManager.js\");\n/* harmony import */ var _util_isDomainSpecifiedByUser__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../util/isDomainSpecifiedByUser */ \"(ssr)/./node_modules/recharts/es6/util/isDomainSpecifiedByUser.js\");\n/* harmony import */ var _util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../util/ActiveShapeUtils */ \"(ssr)/./node_modules/recharts/es6/util/ActiveShapeUtils.js\");\n/* harmony import */ var _component_Cursor__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../component/Cursor */ \"(ssr)/./node_modules/recharts/es6/component/Cursor.js\");\n/* harmony import */ var _context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../context/chartLayoutContext */ \"(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\");\nvar _excluded = [\n \"item\"\n], _excluded2 = [\n \"children\",\n \"className\",\n \"width\",\n \"height\",\n \"style\",\n \"compact\",\n \"title\",\n \"desc\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\n\n\n// eslint-disable-next-line no-restricted-imports\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ORIENT_MAP = {\n xAxis: [\n 'bottom',\n 'top'\n ],\n yAxis: [\n 'left',\n 'right'\n ]\n};\nvar FULL_WIDTH_AND_HEIGHT = {\n width: '100%',\n height: '100%'\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n};\n/**\n * This function exists as a temporary workaround.\n *\n * Why? generateCategoricalChart does not render `{children}` directly;\n * instead it passes them through `renderByOrder` function which reads their handlers.\n *\n * So, this is a handler that does nothing.\n * Once we get rid of `renderByOrder` and switch to JSX only, we can get rid of this handler too.\n *\n * @param {JSX} element as is in JSX\n * @returns {JSX} the same element\n */ function renderAsIs(element) {\n return element;\n}\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n return rangeObj.radius;\n};\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n var entry = tooltipTicks.find(function(tick) {\n return tick && tick.index === activeIndex;\n });\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_9__.polarToCartesian)(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n angle: _angle,\n radius: _radius\n });\n }\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_9__.polarToCartesian)(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n angle: angle,\n radius: radius\n });\n }\n return originCoordinate;\n};\nvar getDisplayedData = function getDisplayedData(data, _ref) {\n var graphicalItems = _ref.graphicalItems, dataStartIndex = _ref.dataStartIndex, dataEndIndex = _ref.dataEndIndex;\n var itemsData = (graphicalItems !== null && graphicalItems !== void 0 ? graphicalItems : []).reduce(function(result, child) {\n var itemData = child.props.data;\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n return result;\n }, []);\n if (itemsData.length > 0) {\n return itemsData;\n }\n if (data && data.length && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.isNumber)(dataStartIndex) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.isNumber)(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n return [];\n};\nfunction getDefaultDomainByAxisType(axisType) {\n return axisType === 'number' ? [\n 0,\n 'auto'\n ] : undefined;\n}\n/**\n * Get the content to be displayed in the tooltip\n * @param {Object} state Current state\n * @param {Array} chartData The data defined in chart\n * @param {Number} activeIndex Active index of data\n * @param {String} activeLabel Active label of data\n * @return {Array} The content of tooltip\n */ var getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n var graphicalItems = state.graphicalItems, tooltipAxis = state.tooltipAxis;\n var displayedData = getDisplayedData(chartData, state);\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n }\n // get data by activeIndex when the axis don't allow duplicated category\n return graphicalItems.reduce(function(result, child) {\n var _child$props$data;\n /**\n * Fixes: https://github.com/recharts/recharts/issues/3669\n * Defaulting to chartData below to fix an edge case where the tooltip does not include data from all charts\n * when a separate dataset is passed to chart prop data and specified on Line/Area/etc prop data\n */ var data = (_child$props$data = child.props.data) !== null && _child$props$data !== void 0 ? _child$props$data : chartData;\n if (data && state.dataStartIndex + state.dataEndIndex !== 0 && // https://github.com/recharts/recharts/issues/4717\n // The data is sliced only when the active index is within the start/end index range.\n state.dataEndIndex - state.dataStartIndex >= activeIndex) {\n data = data.slice(state.dataStartIndex, state.dataEndIndex + 1);\n }\n var payload;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n var entries = data === undefined ? displayedData : data;\n payload = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.findEntryInArray)(entries, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n if (!payload) {\n return result;\n }\n return [].concat(_toConsumableArray(result), [\n (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTooltipItem)(child, payload)\n ]);\n }, []);\n};\n/**\n * Returns tooltip data based on a mouse position (as a parameter or in state)\n * @param {Object} state current state\n * @param {Array} chartData the data defined in chart\n * @param {String} layout The layout type of chart\n * @param {Object} rangeObj { x, y } coordinates\n * @return {Object} Tooltip data data\n */ var getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n var rangeData = rangeObj || {\n x: state.chartX,\n y: state.chartY\n };\n var pos = calculateTooltipPos(rangeData, layout);\n var ticks = state.orderedTooltipTicks, axis = state.tooltipAxis, tooltipTicks = state.tooltipTicks;\n var activeIndex = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.calculateActiveTickIndex)(pos, ticks, tooltipTicks, axis);\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n return {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n }\n return null;\n};\n/**\n * Get the configuration of axis by the options of axis instance\n * @param {Object} props Latest props\n * @param {Array} axes The instance of axes\n * @param {Array} graphicalItems The instances of item\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */ var getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n var axes = _ref2.axes, graphicalItems = _ref2.graphicalItems, axisType = _ref2.axisType, axisIdKey = _ref2.axisIdKey, stackGroups = _ref2.stackGroups, dataStartIndex = _ref2.dataStartIndex, dataEndIndex = _ref2.dataEndIndex;\n var layout = props.layout, children = props.children, stackOffset = props.stackOffset;\n var isCategorical = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.isCategoricalAxis)(layout, axisType);\n // Eliminate duplicated axes\n return axes.reduce(function(result, child) {\n var _childProps$domain2;\n var childProps = child.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, child.type.defaultProps), child.props) : child.props;\n var type = childProps.type, dataKey = childProps.dataKey, allowDataOverflow = childProps.allowDataOverflow, allowDuplicatedCategory = childProps.allowDuplicatedCategory, scale = childProps.scale, ticks = childProps.ticks, includeHidden = childProps.includeHidden;\n var axisId = childProps[axisIdKey];\n if (result[axisId]) {\n return result;\n }\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems.filter(function(item) {\n var _defaultProps;\n var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : (_defaultProps = item.type.defaultProps) === null || _defaultProps === void 0 ? void 0 : _defaultProps[axisIdKey];\n return itemAxisId === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var domain, duplicateDomain, categoricalDomain;\n /*\n * This is a hack to short-circuit the domain creation here to enhance performance.\n * Usually, the data is used to determine the domain, but when the user specifies\n * a domain upfront (via props), there is no need to calculate the domain start and end,\n * which is very expensive for a larger amount of data.\n * The only thing that would prohibit short-circuiting is when the user doesn't allow data overflow,\n * because the axis is supposed to ignore the specified domain that way.\n */ if ((0,_util_isDomainSpecifiedByUser__WEBPACK_IMPORTED_MODULE_12__.isDomainSpecifiedByUser)(childProps.domain, allowDataOverflow, type)) {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseSpecifiedDomain)(childProps.domain, null, allowDataOverflow);\n /* The chart can be categorical and have the domain specified in numbers\n * we still need to calculate the categorical domain\n * TODO: refactor this more\n */ if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfDataByKey)(displayedData, dataKey, 'category');\n }\n }\n // if the domain is defaulted we need this for `originalDomain` as well\n var defaultDomain = getDefaultDomainByAxisType(type);\n // we didn't create the domain from user's props above, so we need to calculate it\n if (!domain || domain.length === 0) {\n var _childProps$domain;\n var childDomain = (_childProps$domain = childProps.domain) !== null && _childProps$domain !== void 0 ? _childProps$domain : defaultDomain;\n if (dataKey) {\n // has dataKey in <Axis />\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfDataByKey)(displayedData, dataKey, type);\n if (type === 'category' && isCategorical) {\n // the field type is category data and this axis is categorical axis\n var duplicate = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.hasDuplicate)(domain);\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain;\n // When category axis has duplicated text, serial numbers are used to generate scale\n domain = lodash_range__WEBPACK_IMPORTED_MODULE_3___default()(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseDomainOfCategoryAxis)(childDomain, domain, child).reduce(function(finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [\n entry\n ]);\n }, []);\n }\n } else if (type === 'category') {\n // the field type is category data and this axis is numerical axis\n if (!allowDuplicatedCategory) {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseDomainOfCategoryAxis)(childDomain, domain, child).reduce(function(finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === '' || lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [\n entry\n ]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function(entry) {\n return entry !== '' && !lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(entry);\n });\n }\n } else if (type === 'number') {\n // the field type is numerical\n var errorBarsDomain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseErrorBarsOfAxis)(displayedData, graphicalItems.filter(function(item) {\n var _defaultProps2, _defaultProps3;\n var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : (_defaultProps2 = item.type.defaultProps) === null || _defaultProps2 === void 0 ? void 0 : _defaultProps2[axisIdKey];\n var itemHide = 'hide' in item.props ? item.props.hide : (_defaultProps3 = item.type.defaultProps) === null || _defaultProps3 === void 0 ? void 0 : _defaultProps3.hide;\n return itemAxisId === axisId && (includeHidden || !itemHide);\n }), dataKey, axisType, layout);\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\n }\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfDataByKey)(displayedData, dataKey, 'category');\n }\n } else if (isCategorical) {\n // the axis is a categorical axis\n domain = lodash_range__WEBPACK_IMPORTED_MODULE_3___default()(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n domain = stackOffset === 'expand' ? [\n 0,\n 1\n ] : (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfStackGroups)(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfItemsWithSameAxis)(displayedData, graphicalItems.filter(function(item) {\n var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : item.type.defaultProps[axisIdKey];\n var itemHide = 'hide' in item.props ? item.props.hide : item.type.defaultProps.hide;\n return itemAxisId === axisId && (includeHidden || !itemHide);\n }), type, layout, true);\n }\n if (type === 'number') {\n // To detect wether there is any reference lines whose props alwaysShow is true\n domain = (0,_util_DetectReferenceElementsDomain__WEBPACK_IMPORTED_MODULE_13__.detectReferenceElementsDomain)(children, domain, axisId, axisType, ticks);\n if (childDomain) {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseSpecifiedDomain)(childDomain, domain, allowDataOverflow);\n }\n } else if (type === 'category' && childDomain) {\n var axisDomain = childDomain;\n var isDomainValid = domain.every(function(entry) {\n return axisDomain.indexOf(entry) >= 0;\n });\n if (isDomainValid) {\n domain = axisDomain;\n }\n }\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, childProps), {}, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: (_childProps$domain2 = childProps.domain) !== null && _childProps$domain2 !== void 0 ? _childProps$domain2 : defaultDomain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }, {});\n};\n/**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {ReactElement} Axis Axis Component\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */ var getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n var graphicalItems = _ref3.graphicalItems, Axis = _ref3.Axis, axisType = _ref3.axisType, axisIdKey = _ref3.axisIdKey, stackGroups = _ref3.stackGroups, dataStartIndex = _ref3.dataStartIndex, dataEndIndex = _ref3.dataEndIndex;\n var layout = props.layout, children = props.children;\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorical = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.isCategoricalAxis)(layout, axisType);\n var index = -1;\n // The default type of x-axis is category axis,\n // The default contents of x-axis is the serial numbers of data\n // The default type of y-axis is number axis\n // The default contents of y-axis is the domain of data\n return graphicalItems.reduce(function(result, child) {\n var childProps = child.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, child.type.defaultProps), child.props) : child.props;\n var axisId = childProps[axisIdKey];\n var originalDomain = getDefaultDomainByAxisType('number');\n if (!result[axisId]) {\n index++;\n var domain;\n if (isCategorical) {\n domain = lodash_range__WEBPACK_IMPORTED_MODULE_3___default()(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfStackGroups)(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n domain = (0,_util_DetectReferenceElementsDomain__WEBPACK_IMPORTED_MODULE_13__.detectReferenceElementsDomain)(children, domain, axisId, axisType);\n } else {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseSpecifiedDomain)(originalDomain, (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfItemsWithSameAxis)(displayedData, graphicalItems.filter(function(item) {\n var _defaultProps4, _defaultProps5;\n var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : (_defaultProps4 = item.type.defaultProps) === null || _defaultProps4 === void 0 ? void 0 : _defaultProps4[axisIdKey];\n var itemHide = 'hide' in item.props ? item.props.hide : (_defaultProps5 = item.type.defaultProps) === null || _defaultProps5 === void 0 ? void 0 : _defaultProps5.hide;\n return itemAxisId === axisId && !itemHide;\n }), 'number', layout), Axis.defaultProps.allowDataOverflow);\n domain = (0,_util_DetectReferenceElementsDomain__WEBPACK_IMPORTED_MODULE_13__.detectReferenceElementsDomain)(children, domain, axisId, axisType);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n axisType: axisType\n }, Axis.defaultProps), {}, {\n hide: true,\n orientation: lodash_get__WEBPACK_IMPORTED_MODULE_4___default()(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n domain: domain,\n originalDomain: originalDomain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }\n return result;\n }, {});\n};\n/**\n * Get the configuration of all x-axis or y-axis\n * @param {Object} props Latest props\n * @param {String} axisType The type of axis\n * @param {React.ComponentType} [AxisComp] Axis Component\n * @param {Array} graphicalItems The instances of item\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */ var getAxisMap = function getAxisMap(props, _ref4) {\n var _ref4$axisType = _ref4.axisType, axisType = _ref4$axisType === void 0 ? 'xAxis' : _ref4$axisType, AxisComp = _ref4.AxisComp, graphicalItems = _ref4.graphicalItems, stackGroups = _ref4.stackGroups, dataStartIndex = _ref4.dataStartIndex, dataEndIndex = _ref4.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\");\n // Get all the instance of Axis\n var axes = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findAllByType)(children, AxisComp);\n var axisMap = {};\n if (axes && axes.length) {\n axisMap = getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n return axisMap;\n};\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n var axis = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(axisMap);\n var tooltipTicks = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTicksOfAxis)(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: lodash_sortBy__WEBPACK_IMPORTED_MODULE_5___default()(tooltipTicks, function(o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBandSizeOfAxis)(axis, tooltipTicks)\n };\n};\n/**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */ var createDefaultState = function createDefaultState(props) {\n var children = props.children, defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _cartesian_Brush__WEBPACK_IMPORTED_MODULE_15__.Brush);\n var startIndex = 0;\n var endIndex = 0;\n if (props.data && props.data.length !== 0) {\n endIndex = props.data.length - 1;\n }\n if (brushItem && brushItem.props) {\n if (brushItem.props.startIndex >= 0) {\n startIndex = brushItem.props.startIndex;\n }\n if (brushItem.props.endIndex >= 0) {\n endIndex = brushItem.props.endIndex;\n }\n }\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: Boolean(defaultShowTooltip)\n };\n};\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n return graphicalItems.some(function(item) {\n var name = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.getDisplayName)(item && item.type);\n return name && name.indexOf('Bar') >= 0;\n });\n};\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n if (layout === 'horizontal') {\n return {\n numericAxisName: 'yAxis',\n cateAxisName: 'xAxis'\n };\n }\n if (layout === 'vertical') {\n return {\n numericAxisName: 'xAxis',\n cateAxisName: 'yAxis'\n };\n }\n if (layout === 'centric') {\n return {\n numericAxisName: 'radiusAxis',\n cateAxisName: 'angleAxis'\n };\n }\n return {\n numericAxisName: 'angleAxis',\n cateAxisName: 'radiusAxis'\n };\n};\n/**\n * Calculate the offset of main part in the svg element\n * @param {Object} params.props Latest props\n * @param {Array} params.graphicalItems The instances of item\n * @param {Object} params.xAxisMap The configuration of x-axis\n * @param {Object} params.yAxisMap The configuration of y-axis\n * @param {Object} prevLegendBBox The boundary box of legend\n * @return {Object} The offset of main part in the svg element\n */ var calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n var props = _ref5.props, graphicalItems = _ref5.graphicalItems, _ref5$xAxisMap = _ref5.xAxisMap, xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap, _ref5$yAxisMap = _ref5.yAxisMap, yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n var width = props.width, height = props.height, children = props.children;\n var margin = props.margin || {};\n var brushItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _cartesian_Brush__WEBPACK_IMPORTED_MODULE_15__.Brush);\n var legendItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _component_Legend__WEBPACK_IMPORTED_MODULE_16__.Legend);\n var offsetH = Object.keys(yAxisMap).reduce(function(result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function(result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, lodash_get__WEBPACK_IMPORTED_MODULE_4___default()(result, \"\".concat(orientation)) + entry.height));\n }\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n var brushBottom = offset.bottom;\n if (brushItem) {\n offset.bottom += brushItem.props.height || _cartesian_Brush__WEBPACK_IMPORTED_MODULE_15__.Brush.defaultProps.height;\n }\n if (legendItem && prevLegendBBox) {\n // @ts-expect-error margin is optional in props but required in appendOffsetOfLegend\n offset = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.appendOffsetOfLegend)(offset, graphicalItems, props, prevLegendBBox);\n }\n var offsetWidth = width - offset.left - offset.right;\n var offsetHeight = height - offset.top - offset.bottom;\n return _objectSpread(_objectSpread({\n brushBottom: brushBottom\n }, offset), {}, {\n // never return negative values for height and width\n width: Math.max(offsetWidth, 0),\n height: Math.max(offsetHeight, 0)\n });\n};\n// Determine the size of the axis, used for calculation of relative bar sizes\nvar getCartesianAxisSize = function getCartesianAxisSize(axisObj, axisName) {\n if (axisName === 'xAxis') {\n return axisObj[axisName].width;\n }\n if (axisName === 'yAxis') {\n return axisObj[axisName].height;\n }\n // This is only supported for Bar charts (i.e. charts with cartesian axes), so we should never get here\n return undefined;\n};\nvar generateCategoricalChart = function generateCategoricalChart(_ref6) {\n var chartName = _ref6.chartName, GraphicalChild = _ref6.GraphicalChild, _ref6$defaultTooltipE = _ref6.defaultTooltipEventType, defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? 'axis' : _ref6$defaultTooltipE, _ref6$validateTooltip = _ref6.validateTooltipEventTypes, validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? [\n 'axis'\n ] : _ref6$validateTooltip, axisComponents = _ref6.axisComponents, legendContent = _ref6.legendContent, formatAxisMap = _ref6.formatAxisMap, defaultProps = _ref6.defaultProps;\n var getFormatItems = function getFormatItems(props, currentState) {\n var graphicalItems = currentState.graphicalItems, stackGroups = currentState.stackGroups, offset = currentState.offset, updateId = currentState.updateId, dataStartIndex = currentState.dataStartIndex, dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize, layout = props.layout, barGap = props.barGap, barCategoryGap = props.barCategoryGap, globalMaxBarSize = props.maxBarSize;\n var _getAxisNameByLayout = getAxisNameByLayout(layout), numericAxisName = _getAxisNameByLayout.numericAxisName, cateAxisName = _getAxisNameByLayout.cateAxisName;\n var hasBar = hasGraphicalBarItem(graphicalItems);\n var formattedItems = [];\n graphicalItems.forEach(function(item, index) {\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: [\n item\n ],\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var itemProps = item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var dataKey = itemProps.dataKey, childMaxBarSize = itemProps.maxBarSize;\n // axisId of the numerical axis\n var numericAxisId = itemProps[\"\".concat(numericAxisName, \"Id\")];\n // axisId of the categorical axis\n var cateAxisId = itemProps[\"\".concat(cateAxisName, \"Id\")];\n var axisObjInitialValue = {};\n var axisObj = axisComponents.reduce(function(result, entry) {\n var _item$type$displayNam, _item$type;\n // map of axisId to axis for a specific axis type\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n // axisId of axis we are currently computing\n var id = itemProps[\"\".concat(entry.axisType, \"Id\")];\n /**\n * tell the user in dev mode that their configuration is incorrect if we cannot find a match between\n * axisId on the chart and axisId on the axis. zAxis does not get passed in the map for ComposedChart,\n * leave it out of the check for now.\n */ !(axisMap && axisMap[id] || entry.axisType === 'zAxis') ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(false, \"Specifying a(n) \".concat(entry.axisType, \"Id requires a corresponding \").concat(entry.axisType, \"Id on the targeted graphical component \").concat((_item$type$displayNam = item === null || item === void 0 || (_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.displayName) !== null && _item$type$displayNam !== void 0 ? _item$type$displayNam : '')) : 0 : void 0;\n // the axis we are currently formatting\n var axis = axisMap[id];\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty(_defineProperty({}, entry.axisType, axis), \"\".concat(entry.axisType, \"Ticks\"), (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTicksOfAxis)(axis)));\n }, axisObjInitialValue);\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getStackedDataOfItem)(item, stackGroups[numericAxisId].stackGroups);\n var itemIsBar = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.getDisplayName)(item.type).indexOf('Bar') >= 0;\n var bandSize = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBandSizeOfAxis)(cateAxis, cateTicks);\n var barPosition = [];\n var sizeList = hasBar && (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBarSizeList)({\n barSize: barSize,\n stackGroups: stackGroups,\n totalSize: getCartesianAxisSize(axisObj, cateAxisName)\n });\n if (itemIsBar) {\n var _ref7, _getBandSizeOfAxis;\n // If it is bar, calculate the position of bar\n var maxBarSize = lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n var barBandSize = (_ref7 = (_getBandSizeOfAxis = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBandSizeOfAxis)(cateAxis, cateTicks, true)) !== null && _getBandSizeOfAxis !== void 0 ? _getBandSizeOfAxis : maxBarSize) !== null && _ref7 !== void 0 ? _ref7 : 0;\n barPosition = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBarPosition)({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n if (barBandSize !== bandSize) {\n barPosition = barPosition.map(function(pos) {\n return _objectSpread(_objectSpread({}, pos), {}, {\n position: _objectSpread(_objectSpread({}, pos.position), {}, {\n offset: pos.position.offset - barBandSize / 2\n })\n });\n });\n }\n }\n // @ts-expect-error we should stop reading data from ReactElements\n var composedFn = item && item.type && item.type.getComposedData;\n if (composedFn) {\n formattedItems.push({\n props: _objectSpread(_objectSpread({}, composedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))), {}, _defineProperty(_defineProperty(_defineProperty({\n key: item.key || \"item-\".concat(index)\n }, numericAxisName, axisObj[numericAxisName]), cateAxisName, axisObj[cateAxisName]), \"animationId\", updateId)),\n childIndex: (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.parseChildIndex)(item, props.children),\n item: item\n });\n }\n });\n return formattedItems;\n };\n /**\n * The AxisMaps are expensive to render on large data sets\n * so provide the ability to store them in state and only update them when necessary\n * they are dependent upon the start and end index of\n * the brush so it's important that this method is called _after_\n * the state is updated with any new start/end indices\n *\n * @param {Object} props The props object to be used for updating the axismaps\n * dataStartIndex: The start index of the data series when a brush is applied\n * dataEndIndex: The end index of the data series when a brush is applied\n * updateId: The update id\n * @param {Object} prevState Prev state\n * @return {Object} state New state to set\n */ var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref8, prevState) {\n var props = _ref8.props, dataStartIndex = _ref8.dataStartIndex, dataEndIndex = _ref8.dataEndIndex, updateId = _ref8.updateId;\n if (!(0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.validateWidthHeight)({\n props: props\n })) {\n return null;\n }\n var children = props.children, layout = props.layout, stackOffset = props.stackOffset, data = props.data, reverseStackOrder = props.reverseStackOrder;\n var _getAxisNameByLayout2 = getAxisNameByLayout(layout), numericAxisName = _getAxisNameByLayout2.numericAxisName, cateAxisName = _getAxisNameByLayout2.cateAxisName;\n var graphicalItems = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findAllByType)(children, GraphicalChild);\n var stackGroups = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getStackGroupsByAxisId)(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function(result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n props: props,\n graphicalItems: graphicalItems\n }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n Object.keys(axisObj).forEach(function(key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = tooltipTicksGenerator(cateAxisMap);\n var formattedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread(_objectSpread({\n formattedGraphicalItems: formattedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj), axisObj);\n };\n var CategoricalChartWrapper = /*#__PURE__*/ function(_Component) {\n function CategoricalChartWrapper(_props) {\n var _props$id, _props$throttleDelay;\n var _this;\n _classCallCheck(this, CategoricalChartWrapper);\n _this = _callSuper(this, CategoricalChartWrapper, [\n _props\n ]);\n _defineProperty(_this, \"eventEmitterSymbol\", Symbol('rechartsEventEmitter'));\n _defineProperty(_this, \"accessibilityManager\", new _AccessibilityManager__WEBPACK_IMPORTED_MODULE_17__.AccessibilityManager());\n _defineProperty(_this, \"handleLegendBBoxUpdate\", function(box) {\n if (box) {\n var _this$state = _this.state, dataStartIndex = _this$state.dataStartIndex, dataEndIndex = _this$state.dataEndIndex, updateId = _this$state.updateId;\n _this.setState(_objectSpread({\n legendBBox: box\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _objectSpread(_objectSpread({}, _this.state), {}, {\n legendBBox: box\n }))));\n }\n });\n _defineProperty(_this, \"handleReceiveSyncEvent\", function(cId, data, emitter) {\n if (_this.props.syncId === cId) {\n if (emitter === _this.eventEmitterSymbol && typeof _this.props.syncMethod !== 'function') {\n return;\n }\n _this.applySyncEvent(data);\n }\n });\n _defineProperty(_this, \"handleBrushChange\", function(_ref9) {\n var startIndex = _ref9.startIndex, endIndex = _ref9.endIndex;\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n _this.setState(function() {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }, _this.state));\n });\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n });\n /**\n * The handler of mouse entering chart\n * @param {Object} e Event object\n * @return {Null} null\n */ _defineProperty(_this, \"handleMouseEnter\", function(e) {\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState);\n _this.triggerSyncEvent(_nextState);\n var onMouseEnter = _this.props.onMouseEnter;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onMouseEnter)) {\n onMouseEnter(_nextState, e);\n }\n }\n });\n _defineProperty(_this, \"triggeredAfterMouseMove\", function(e) {\n var mouse = _this.getMouseInfo(e);\n var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n var onMouseMove = _this.props.onMouseMove;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n });\n /**\n * The handler of mouse entering a scatter\n * @param {Object} el The active scatter\n * @return {Object} no return\n */ _defineProperty(_this, \"handleItemMouseEnter\", function(el) {\n _this.setState(function() {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n });\n /**\n * The handler of mouse leaving a scatter\n * @return {Object} no return\n */ _defineProperty(_this, \"handleItemMouseLeave\", function() {\n _this.setState(function() {\n return {\n isTooltipActive: false\n };\n });\n });\n /**\n * The handler of mouse moving in chart\n * @param {React.MouseEvent} e Event object\n * @return {void} no return\n */ _defineProperty(_this, \"handleMouseMove\", function(e) {\n e.persist();\n _this.throttleTriggeredAfterMouseMove(e);\n });\n /**\n * The handler if mouse leaving chart\n * @param {Object} e Event object\n * @return {Null} no return\n */ _defineProperty(_this, \"handleMouseLeave\", function(e) {\n _this.throttleTriggeredAfterMouseMove.cancel();\n var nextState = {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n var onMouseLeave = _this.props.onMouseLeave;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n });\n _defineProperty(_this, \"handleOuterEvent\", function(e) {\n var eventName = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.getReactEventByType)(e);\n var event = lodash_get__WEBPACK_IMPORTED_MODULE_4___default()(_this.props, \"\".concat(eventName));\n if (eventName && lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(event)) {\n var _mouse;\n var mouse;\n if (/.*touch.*/i.test(eventName)) {\n mouse = _this.getMouseInfo(e.changedTouches[0]);\n } else {\n mouse = _this.getMouseInfo(e);\n }\n event((_mouse = mouse) !== null && _mouse !== void 0 ? _mouse : {}, e);\n }\n });\n _defineProperty(_this, \"handleClick\", function(e) {\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState2 = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState2);\n _this.triggerSyncEvent(_nextState2);\n var onClick = _this.props.onClick;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onClick)) {\n onClick(_nextState2, e);\n }\n }\n });\n _defineProperty(_this, \"handleMouseDown\", function(e) {\n var onMouseDown = _this.props.onMouseDown;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onMouseDown)) {\n var _nextState3 = _this.getMouseInfo(e);\n onMouseDown(_nextState3, e);\n }\n });\n _defineProperty(_this, \"handleMouseUp\", function(e) {\n var onMouseUp = _this.props.onMouseUp;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onMouseUp)) {\n var _nextState4 = _this.getMouseInfo(e);\n onMouseUp(_nextState4, e);\n }\n });\n _defineProperty(_this, \"handleTouchMove\", function(e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.throttleTriggeredAfterMouseMove(e.changedTouches[0]);\n }\n });\n _defineProperty(_this, \"handleTouchStart\", function(e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n });\n _defineProperty(_this, \"handleTouchEnd\", function(e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n });\n _defineProperty(_this, \"handleDoubleClick\", function(e) {\n var onDoubleClick = _this.props.onDoubleClick;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onDoubleClick)) {\n var _nextState5 = _this.getMouseInfo(e);\n onDoubleClick(_nextState5, e);\n }\n });\n _defineProperty(_this, \"handleContextMenu\", function(e) {\n var onContextMenu = _this.props.onContextMenu;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onContextMenu)) {\n var _nextState6 = _this.getMouseInfo(e);\n onContextMenu(_nextState6, e);\n }\n });\n _defineProperty(_this, \"triggerSyncEvent\", function(data) {\n if (_this.props.syncId !== undefined) {\n _util_Events__WEBPACK_IMPORTED_MODULE_18__.eventCenter.emit(_util_Events__WEBPACK_IMPORTED_MODULE_18__.SYNC_EVENT, _this.props.syncId, data, _this.eventEmitterSymbol);\n }\n });\n _defineProperty(_this, \"applySyncEvent\", function(data) {\n var _this$props = _this.props, layout = _this$props.layout, syncMethod = _this$props.syncMethod;\n var updateId = _this.state.updateId;\n var dataStartIndex = data.dataStartIndex, dataEndIndex = data.dataEndIndex;\n if (data.dataStartIndex !== undefined || data.dataEndIndex !== undefined) {\n _this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _this.state)));\n } else if (data.activeTooltipIndex !== undefined) {\n var chartX = data.chartX, chartY = data.chartY;\n var activeTooltipIndex = data.activeTooltipIndex;\n var _this$state2 = _this.state, offset = _this$state2.offset, tooltipTicks = _this$state2.tooltipTicks;\n if (!offset) {\n return;\n }\n if (typeof syncMethod === 'function') {\n // Call a callback function. If there is an application specific algorithm\n activeTooltipIndex = syncMethod(tooltipTicks, data);\n } else if (syncMethod === 'value') {\n // Set activeTooltipIndex to the index with the same value as data.activeLabel\n // For loop instead of findIndex because the latter is very slow in some browsers\n activeTooltipIndex = -1; // in case we cannot find the element\n for(var i = 0; i < tooltipTicks.length; i++){\n if (tooltipTicks[i].value === data.activeLabel) {\n activeTooltipIndex = i;\n break;\n }\n }\n }\n var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n });\n // When a categorical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n var activePayload = getTooltipContent(_this.state, _this.props.data, activeTooltipIndex);\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n _this.setState(_objectSpread(_objectSpread({}, data), {}, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex\n }));\n } else {\n _this.setState(data);\n }\n });\n _defineProperty(_this, \"renderCursor\", function(element) {\n var _element$props$active;\n var _this$state3 = _this.state, isTooltipActive = _this$state3.isTooltipActive, activeCoordinate = _this$state3.activeCoordinate, activePayload = _this$state3.activePayload, offset = _this$state3.offset, activeTooltipIndex = _this$state3.activeTooltipIndex, tooltipAxisBandSize = _this$state3.tooltipAxisBandSize;\n var tooltipEventType = _this.getTooltipEventType();\n // The cursor is a part of the Tooltip, and it should be shown (by default) when the Tooltip is active.\n var isActive = (_element$props$active = element.props.active) !== null && _element$props$active !== void 0 ? _element$props$active : isTooltipActive;\n var layout = _this.props.layout;\n var key = element.key || '_recharts-cursor';\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Cursor__WEBPACK_IMPORTED_MODULE_19__.Cursor, {\n key: key,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex,\n chartName: chartName,\n element: element,\n isActive: isActive,\n layout: layout,\n offset: offset,\n tooltipAxisBandSize: tooltipAxisBandSize,\n tooltipEventType: tooltipEventType\n });\n });\n _defineProperty(_this, \"renderPolarAxis\", function(element, displayName, index) {\n var axisType = lodash_get__WEBPACK_IMPORTED_MODULE_4___default()(element, 'type.axisType');\n var axisMap = lodash_get__WEBPACK_IMPORTED_MODULE_4___default()(_this.state, \"\".concat(axisType, \"Map\"));\n var elementDefaultProps = element.type.defaultProps;\n var elementProps = elementDefaultProps !== undefined ? _objectSpread(_objectSpread({}, elementDefaultProps), element.props) : element.props;\n var axisOption = axisMap && axisMap[elementProps[\"\".concat(axisType, \"Id\")]];\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(axisType, axisOption.className),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTicksOfAxis)(axisOption, true)\n }));\n });\n _defineProperty(_this, \"renderPolarGrid\", function(element) {\n var _element$props = element.props, radialLines = _element$props.radialLines, polarAngles = _element$props.polarAngles, polarRadius = _element$props.polarRadius;\n var _this$state4 = _this.state, radiusAxisMap = _this$state4.radiusAxisMap, angleAxisMap = _this$state4.angleAxisMap;\n var radiusAxis = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(radiusAxisMap);\n var angleAxis = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(angleAxisMap);\n var cx = angleAxis.cx, cy = angleAxis.cy, innerRadius = angleAxis.innerRadius, outerRadius = angleAxis.outerRadius;\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, {\n polarAngles: Array.isArray(polarAngles) ? polarAngles : (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTicksOfAxis)(angleAxis, true).map(function(entry) {\n return entry.coordinate;\n }),\n polarRadius: Array.isArray(polarRadius) ? polarRadius : (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTicksOfAxis)(radiusAxis, true).map(function(entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || 'polar-grid',\n radialLines: radialLines\n });\n });\n /**\n * Draw legend\n * @return {ReactElement} The instance of Legend\n */ _defineProperty(_this, \"renderLegend\", function() {\n var formattedGraphicalItems = _this.state.formattedGraphicalItems;\n var _this$props2 = _this.props, children = _this$props2.children, width = _this$props2.width, height = _this$props2.height;\n var margin = _this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var props = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_20__.getLegendProps)({\n children: children,\n formattedGraphicalItems: formattedGraphicalItems,\n legendWidth: legendWidth,\n legendContent: legendContent\n });\n if (!props) {\n return null;\n }\n var item = props.item, otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n onBBoxUpdate: _this.handleLegendBBoxUpdate\n }));\n });\n /**\n * Draw Tooltip\n * @return {ReactElement} The instance of Tooltip\n */ _defineProperty(_this, \"renderTooltip\", function() {\n var _tooltipItem$props$ac;\n var _this$props3 = _this.props, children = _this$props3.children, accessibilityLayer = _this$props3.accessibilityLayer;\n var tooltipItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip);\n if (!tooltipItem) {\n return null;\n }\n var _this$state5 = _this.state, isTooltipActive = _this$state5.isTooltipActive, activeCoordinate = _this$state5.activeCoordinate, activePayload = _this$state5.activePayload, activeLabel = _this$state5.activeLabel, offset = _this$state5.offset;\n // The user can set isActive on the Tooltip,\n // and we respect the user to enable customisation.\n // The Tooltip is active if the user has set isActive, or if the tooltip is active due to a mouse event.\n var isActive = (_tooltipItem$props$ac = tooltipItem.props.active) !== null && _tooltipItem$props$ac !== void 0 ? _tooltipItem$props$ac : isTooltipActive;\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(tooltipItem, {\n viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }),\n active: isActive,\n label: activeLabel,\n payload: isActive ? activePayload : [],\n coordinate: activeCoordinate,\n accessibilityLayer: accessibilityLayer\n });\n });\n _defineProperty(_this, \"renderBrush\", function(element) {\n var _this$props4 = _this.props, margin = _this$props4.margin, data = _this$props4.data;\n var _this$state6 = _this.state, offset = _this$state6.offset, dataStartIndex = _this$state6.dataStartIndex, dataEndIndex = _this$state6.dataEndIndex, updateId = _this$state6.updateId;\n // TODO: update brush when children update\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, {\n key: element.key || '_recharts-brush',\n onChange: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.combineEventHandlers)(_this.handleBrushChange, element.props.onChange),\n data: data,\n x: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.isNumber)(element.props.x) ? element.props.x : offset.left,\n y: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.isNumber)(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.isNumber)(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n });\n _defineProperty(_this, \"renderReferenceElement\", function(element, displayName, index) {\n if (!element) {\n return null;\n }\n var _this2 = _this, clipPathId = _this2.clipPathId;\n var _this$state7 = _this.state, xAxisMap = _this$state7.xAxisMap, yAxisMap = _this$state7.yAxisMap, offset = _this$state7.offset;\n var elementDefaultProps = element.type.defaultProps || {};\n var _element$props2 = element.props, _element$props2$xAxis = _element$props2.xAxisId, xAxisId = _element$props2$xAxis === void 0 ? elementDefaultProps.xAxisId : _element$props2$xAxis, _element$props2$yAxis = _element$props2.yAxisId, yAxisId = _element$props2$yAxis === void 0 ? elementDefaultProps.yAxisId : _element$props2$yAxis;\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n });\n _defineProperty(_this, \"renderActivePoints\", function(_ref10) {\n var item = _ref10.item, activePoint = _ref10.activePoint, basePoint = _ref10.basePoint, childIndex = _ref10.childIndex, isRange = _ref10.isRange;\n var result = [];\n // item is not a React Element so we don't need to resolve defaultProps.\n var key = item.props.key;\n var itemItemProps = item.item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.item.type.defaultProps), item.item.props) : item.item.props;\n var activeDot = itemItemProps.activeDot, dataKey = itemItemProps.dataKey;\n var dotProps = _objectSpread(_objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getMainColorOfGraphicItem)(item.item),\n strokeWidth: 2,\n stroke: '#fff',\n payload: activePoint.payload,\n value: activePoint.value\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.filterProps)(activeDot, false)), (0,_util_types__WEBPACK_IMPORTED_MODULE_22__.adaptEventHandlers)(activeDot));\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps, \"\".concat(key, \"-activePoint-\").concat(childIndex)));\n if (basePoint) {\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n cx: basePoint.x,\n cy: basePoint.y\n }), \"\".concat(key, \"-basePoint-\").concat(childIndex)));\n } else if (isRange) {\n result.push(null);\n }\n return result;\n });\n _defineProperty(_this, \"renderGraphicChild\", function(element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n if (!item) {\n return null;\n }\n var tooltipEventType = _this.getTooltipEventType();\n var _this$state8 = _this.state, isTooltipActive = _this$state8.isTooltipActive, tooltipAxis = _this$state8.tooltipAxis, activeTooltipIndex = _this$state8.activeTooltipIndex, activeLabel = _this$state8.activeLabel;\n var children = _this.props.children;\n var tooltipItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip);\n // item is not a React Element so we don't need to resolve defaultProps\n var _item$props = item.props, points = _item$props.points, isRange = _item$props.isRange, baseLine = _item$props.baseLine;\n var itemItemProps = item.item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.item.type.defaultProps), item.item.props) : item.item.props;\n var activeDot = itemItemProps.activeDot, hide = itemItemProps.hide, activeBar = itemItemProps.activeBar, activeShape = itemItemProps.activeShape;\n var hasActive = Boolean(!hide && isTooltipActive && tooltipItem && (activeDot || activeBar || activeShape));\n var itemEvents = {};\n if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n itemEvents = {\n onClick: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.combineEventHandlers)(_this.handleItemMouseEnter, element.props.onClick)\n };\n } else if (tooltipEventType !== 'axis') {\n itemEvents = {\n onMouseLeave: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.combineEventHandlers)(_this.handleItemMouseLeave, element.props.onMouseLeave),\n onMouseEnter: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.combineEventHandlers)(_this.handleItemMouseEnter, element.props.onMouseEnter)\n };\n }\n var graphicalItem = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n function findWithPayload(entry) {\n // TODO needs to verify dataKey is Function\n return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n }\n if (hasActive) {\n if (activeTooltipIndex >= 0) {\n var activePoint, basePoint;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n activePoint = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.findEntryInArray)(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.findEntryInArray)(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points === null || points === void 0 ? void 0 : points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n if (activeShape || activeBar) {\n var activeIndex = element.props.activeIndex !== undefined ? element.props.activeIndex : activeTooltipIndex;\n return [\n /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n activeIndex: activeIndex\n })),\n null,\n null\n ];\n }\n if (!lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(activePoint)) {\n return [\n graphicalItem\n ].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n } else {\n var _this$getItemByXY;\n /**\n * We hit this block if consumer uses a Tooltip without XAxis and/or YAxis.\n * In which case, this.state.activeTooltipIndex never gets set\n * because the mouse events that trigger that value getting set never get trigged without the axis components.\n *\n * An example usage case is a FunnelChart\n */ var _ref11 = (_this$getItemByXY = _this.getItemByXY(_this.state.activeCoordinate)) !== null && _this$getItemByXY !== void 0 ? _this$getItemByXY : {\n graphicalItem: graphicalItem\n }, _ref11$graphicalItem = _ref11.graphicalItem, _ref11$graphicalItem$ = _ref11$graphicalItem.item, xyItem = _ref11$graphicalItem$ === void 0 ? element : _ref11$graphicalItem$, childIndex = _ref11$graphicalItem.childIndex;\n var elementProps = _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n activeIndex: childIndex\n });\n return [\n /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(xyItem, elementProps),\n null,\n null\n ];\n }\n }\n if (isRange) {\n return [\n graphicalItem,\n null,\n null\n ];\n }\n return [\n graphicalItem,\n null\n ];\n });\n _defineProperty(_this, \"renderCustomized\", function(element, displayName, index) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, _objectSpread(_objectSpread({\n key: \"recharts-customized-\".concat(index)\n }, _this.props), _this.state));\n });\n _defineProperty(_this, \"renderMap\", {\n CartesianGrid: {\n handler: renderAsIs,\n once: true\n },\n ReferenceArea: {\n handler: _this.renderReferenceElement\n },\n ReferenceLine: {\n handler: renderAsIs\n },\n ReferenceDot: {\n handler: _this.renderReferenceElement\n },\n XAxis: {\n handler: renderAsIs\n },\n YAxis: {\n handler: renderAsIs\n },\n Brush: {\n handler: _this.renderBrush,\n once: true\n },\n Bar: {\n handler: _this.renderGraphicChild\n },\n Line: {\n handler: _this.renderGraphicChild\n },\n Area: {\n handler: _this.renderGraphicChild\n },\n Radar: {\n handler: _this.renderGraphicChild\n },\n RadialBar: {\n handler: _this.renderGraphicChild\n },\n Scatter: {\n handler: _this.renderGraphicChild\n },\n Pie: {\n handler: _this.renderGraphicChild\n },\n Funnel: {\n handler: _this.renderGraphicChild\n },\n Tooltip: {\n handler: _this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: _this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: _this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: _this.renderPolarAxis\n },\n Customized: {\n handler: _this.renderCustomized\n }\n });\n _this.clipPathId = \"\".concat((_props$id = _props.id) !== null && _props$id !== void 0 ? _props$id : (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.uniqueId)('recharts'), \"-clip\");\n // trigger 60fps\n _this.throttleTriggeredAfterMouseMove = lodash_throttle__WEBPACK_IMPORTED_MODULE_6___default()(_this.triggeredAfterMouseMove, (_props$throttleDelay = _props.throttleDelay) !== null && _props$throttleDelay !== void 0 ? _props$throttleDelay : 1000 / 60);\n _this.state = {};\n return _this;\n }\n _inherits(CategoricalChartWrapper, _Component);\n return _createClass(CategoricalChartWrapper, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props$margin$le, _this$props$margin$to;\n this.addListener();\n this.accessibilityManager.setDetails({\n container: this.container,\n offset: {\n left: (_this$props$margin$le = this.props.margin.left) !== null && _this$props$margin$le !== void 0 ? _this$props$margin$le : 0,\n top: (_this$props$margin$to = this.props.margin.top) !== null && _this$props$margin$to !== void 0 ? _this$props$margin$to : 0\n },\n coordinateList: this.state.tooltipTicks,\n mouseHandlerCallback: this.triggeredAfterMouseMove,\n layout: this.props.layout\n });\n this.displayDefaultTooltip();\n }\n },\n {\n key: \"displayDefaultTooltip\",\n value: function displayDefaultTooltip() {\n var _this$props5 = this.props, children = _this$props5.children, data = _this$props5.data, height = _this$props5.height, layout = _this$props5.layout;\n var tooltipElem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip);\n // If the chart doesn't include a <Tooltip /> element, there's no tooltip to display\n if (!tooltipElem) {\n return;\n }\n var defaultIndex = tooltipElem.props.defaultIndex;\n // Protect against runtime errors\n if (typeof defaultIndex !== 'number' || defaultIndex < 0 || defaultIndex > this.state.tooltipTicks.length - 1) {\n return;\n }\n var activeLabel = this.state.tooltipTicks[defaultIndex] && this.state.tooltipTicks[defaultIndex].value;\n var activePayload = getTooltipContent(this.state, data, defaultIndex, activeLabel);\n var independentAxisCoord = this.state.tooltipTicks[defaultIndex].coordinate;\n var dependentAxisCoord = (this.state.offset.top + height) / 2;\n var isHorizontal = layout === 'horizontal';\n var activeCoordinate = isHorizontal ? {\n x: independentAxisCoord,\n y: dependentAxisCoord\n } : {\n y: independentAxisCoord,\n x: dependentAxisCoord\n };\n // Unlike other chart types, scatter plot's tooltip positions rely on both X and Y coordinates. Only the scatter plot\n // element knows its own Y coordinates.\n // If there's a scatter plot, we'll want to grab that element for an interrogation.\n var scatterPlotElement = this.state.formattedGraphicalItems.find(function(_ref12) {\n var item = _ref12.item;\n return item.type.name === 'Scatter';\n });\n if (scatterPlotElement) {\n activeCoordinate = _objectSpread(_objectSpread({}, activeCoordinate), scatterPlotElement.props.points[defaultIndex].tooltipPosition);\n activePayload = scatterPlotElement.props.points[defaultIndex].tooltipPayload;\n }\n var nextState = {\n activeTooltipIndex: defaultIndex,\n isTooltipActive: true,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n this.setState(nextState);\n this.renderCursor(tooltipElem);\n // Make sure that anyone who keyboard-only users who tab to the chart will start their\n // cursors at defaultIndex\n this.accessibilityManager.setIndex(defaultIndex);\n }\n },\n {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps, prevState) {\n if (!this.props.accessibilityLayer) {\n return null;\n }\n if (this.state.tooltipTicks !== prevState.tooltipTicks) {\n this.accessibilityManager.setDetails({\n coordinateList: this.state.tooltipTicks\n });\n }\n if (this.props.layout !== prevProps.layout) {\n this.accessibilityManager.setDetails({\n layout: this.props.layout\n });\n }\n if (this.props.margin !== prevProps.margin) {\n var _this$props$margin$le2, _this$props$margin$to2;\n this.accessibilityManager.setDetails({\n offset: {\n left: (_this$props$margin$le2 = this.props.margin.left) !== null && _this$props$margin$le2 !== void 0 ? _this$props$margin$le2 : 0,\n top: (_this$props$margin$to2 = this.props.margin.top) !== null && _this$props$margin$to2 !== void 0 ? _this$props$margin$to2 : 0\n }\n });\n }\n // Something has to be returned for getSnapshotBeforeUpdate\n return null;\n }\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // Check to see if the Tooltip updated. If so, re-check default tooltip position\n if (!(0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.isChildrenEqual)([\n (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(prevProps.children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip)\n ], [\n (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(this.props.children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip)\n ])) {\n this.displayDefaultTooltip();\n }\n }\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeListener();\n this.throttleTriggeredAfterMouseMove.cancel();\n }\n },\n {\n key: \"getTooltipEventType\",\n value: function getTooltipEventType() {\n var tooltipItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(this.props.children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip);\n if (tooltipItem && typeof tooltipItem.props.shared === 'boolean') {\n var eventType = tooltipItem.props.shared ? 'axis' : 'item';\n return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n }\n return defaultTooltipEventType;\n }\n },\n {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n var element = this.container;\n var boundingRect = element.getBoundingClientRect();\n var containerOffset = (0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_23__.getOffset)(boundingRect);\n var e = {\n chartX: Math.round(event.pageX - containerOffset.left),\n chartY: Math.round(event.pageY - containerOffset.top)\n };\n var scale = boundingRect.width / element.offsetWidth || 1;\n var rangeObj = this.inRange(e.chartX, e.chartY, scale);\n if (!rangeObj) {\n return null;\n }\n var _this$state9 = this.state, xAxisMap = _this$state9.xAxisMap, yAxisMap = _this$state9.yAxisMap;\n var tooltipEventType = this.getTooltipEventType();\n var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n var xScale = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(xAxisMap).scale;\n var yScale = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread(_objectSpread({}, e), {}, {\n xValue: xValue,\n yValue: yValue\n }, toolTipData);\n }\n if (toolTipData) {\n return _objectSpread(_objectSpread({}, e), toolTipData);\n }\n return null;\n }\n },\n {\n key: \"inRange\",\n value: function inRange(x, y) {\n var scale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var layout = this.props.layout;\n var scaledX = x / scale, scaledY = y / scale;\n if (layout === 'horizontal' || layout === 'vertical') {\n var offset = this.state.offset;\n var isInRange = scaledX >= offset.left && scaledX <= offset.left + offset.width && scaledY >= offset.top && scaledY <= offset.top + offset.height;\n return isInRange ? {\n x: scaledX,\n y: scaledY\n } : null;\n }\n var _this$state10 = this.state, angleAxisMap = _this$state10.angleAxisMap, radiusAxisMap = _this$state10.radiusAxisMap;\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(angleAxisMap);\n return (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_9__.inRangeOfSector)({\n x: scaledX,\n y: scaledY\n }, angleAxis);\n }\n return null;\n }\n },\n {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipEventType = this.getTooltipEventType();\n var tooltipItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip);\n var tooltipEvents = {};\n if (tooltipItem && tooltipEventType === 'axis') {\n if (tooltipItem.props.trigger === 'click') {\n tooltipEvents = {\n onClick: this.handleClick\n };\n } else {\n tooltipEvents = {\n onMouseEnter: this.handleMouseEnter,\n onDoubleClick: this.handleDoubleClick,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd,\n onContextMenu: this.handleContextMenu\n };\n }\n }\n // @ts-expect-error adaptEventHandlers expects DOM Event but generateCategoricalChart works with React UIEvents\n var outerEvents = (0,_util_types__WEBPACK_IMPORTED_MODULE_22__.adaptEventHandlers)(this.props, this.handleOuterEvent);\n return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n }\n },\n {\n key: \"addListener\",\n value: function addListener() {\n _util_Events__WEBPACK_IMPORTED_MODULE_18__.eventCenter.on(_util_Events__WEBPACK_IMPORTED_MODULE_18__.SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n },\n {\n key: \"removeListener\",\n value: function removeListener() {\n _util_Events__WEBPACK_IMPORTED_MODULE_18__.eventCenter.removeListener(_util_Events__WEBPACK_IMPORTED_MODULE_18__.SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n },\n {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n for(var i = 0, len = formattedGraphicalItems.length; i < len; i++){\n var entry = formattedGraphicalItems[i];\n if (entry.item === item || entry.props.key === item.key || displayName === (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.getDisplayName)(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n return null;\n }\n },\n {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset, left = _this$state$offset.left, top = _this$state$offset.top, height = _this$state$offset.height, width = _this$state$offset.width;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"defs\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n },\n {\n key: \"getXScales\",\n value: function getXScales() {\n var xAxisMap = this.state.xAxisMap;\n return xAxisMap ? Object.entries(xAxisMap).reduce(function(res, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2), axisId = _ref14[0], axisProps = _ref14[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n },\n {\n key: \"getYScales\",\n value: function getYScales() {\n var yAxisMap = this.state.yAxisMap;\n return yAxisMap ? Object.entries(yAxisMap).reduce(function(res, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 2), axisId = _ref16[0], axisProps = _ref16[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n },\n {\n key: \"getXScaleByAxisId\",\n value: function getXScaleByAxisId(axisId) {\n var _this$state$xAxisMap;\n return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 || (_this$state$xAxisMap = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap === void 0 ? void 0 : _this$state$xAxisMap.scale;\n }\n },\n {\n key: \"getYScaleByAxisId\",\n value: function getYScaleByAxisId(axisId) {\n var _this$state$yAxisMap;\n return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 || (_this$state$yAxisMap = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap === void 0 ? void 0 : _this$state$yAxisMap.scale;\n }\n },\n {\n key: \"getItemByXY\",\n value: function getItemByXY(chartXY) {\n var _this$state11 = this.state, formattedGraphicalItems = _this$state11.formattedGraphicalItems, activeItem = _this$state11.activeItem;\n if (formattedGraphicalItems && formattedGraphicalItems.length) {\n for(var i = 0, len = formattedGraphicalItems.length; i < len; i++){\n var graphicalItem = formattedGraphicalItems[i];\n // graphicalItem is not a React Element so we don't need to resolve defaultProps\n var props = graphicalItem.props, item = graphicalItem.item;\n var itemProps = item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var itemDisplayName = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.getDisplayName)(item.type);\n if (itemDisplayName === 'Bar') {\n var activeBarItem = (props.data || []).find(function(entry) {\n return (0,_shape_Rectangle__WEBPACK_IMPORTED_MODULE_24__.isInRectangle)(chartXY, entry);\n });\n if (activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: activeBarItem\n };\n }\n } else if (itemDisplayName === 'RadialBar') {\n var _activeBarItem = (props.data || []).find(function(entry) {\n return (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_9__.inRangeOfSector)(chartXY, entry);\n });\n if (_activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: _activeBarItem\n };\n }\n } else if ((0,_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__.isFunnel)(graphicalItem, activeItem) || (0,_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__.isPie)(graphicalItem, activeItem) || (0,_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__.isScatter)(graphicalItem, activeItem)) {\n var activeIndex = (0,_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__.getActiveShapeIndexForTooltip)({\n graphicalItem: graphicalItem,\n activeTooltipItem: activeItem,\n itemData: itemProps.data\n });\n var childIndex = itemProps.activeIndex === undefined ? activeIndex : itemProps.activeIndex;\n return {\n graphicalItem: _objectSpread(_objectSpread({}, graphicalItem), {}, {\n childIndex: childIndex\n }),\n payload: (0,_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__.isScatter)(graphicalItem, activeItem) ? itemProps.data[activeIndex] : graphicalItem.props.data[activeIndex]\n };\n }\n }\n }\n return null;\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n if (!(0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.validateWidthHeight)(this)) {\n return null;\n }\n var _this$props6 = this.props, children = _this$props6.children, className = _this$props6.className, width = _this$props6.width, height = _this$props6.height, style = _this$props6.style, compact = _this$props6.compact, title = _this$props6.title, desc = _this$props6.desc, others = _objectWithoutProperties(_this$props6, _excluded2);\n var attrs = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.filterProps)(others, false);\n // The \"compact\" mode is mainly used as the panorama within Brush\n if (compact) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_26__.ChartLayoutContextProvider, {\n state: this.state,\n width: this.props.width,\n height: this.props.height,\n clipPathId: this.clipPathId\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Surface__WEBPACK_IMPORTED_MODULE_27__.Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc\n }), this.renderClipPath(), (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.renderByOrder)(children, this.renderMap)));\n }\n if (this.props.accessibilityLayer) {\n var _this$props$tabIndex, _this$props$role;\n // Set tabIndex to 0 by default (can be overwritten)\n attrs.tabIndex = (_this$props$tabIndex = this.props.tabIndex) !== null && _this$props$tabIndex !== void 0 ? _this$props$tabIndex : 0;\n // Set role to img by default (can be overwritten)\n attrs.role = (_this$props$role = this.props.role) !== null && _this$props$role !== void 0 ? _this$props$role : 'application';\n attrs.onKeyDown = function(e) {\n _this3.accessibilityManager.keyboardEvent(e);\n // 'onKeyDown' is not currently a supported prop that can be passed through\n // if it's added, this should be added: this.props.onKeyDown(e);\n };\n attrs.onFocus = function() {\n _this3.accessibilityManager.focus();\n // 'onFocus' is not currently a supported prop that can be passed through\n // if it's added, the focus event should be forwarded to the prop\n };\n }\n var events = this.parseEventsOfWrapper();\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_26__.ChartLayoutContextProvider, {\n state: this.state,\n width: this.props.width,\n height: this.props.height,\n clipPathId: this.clipPathId\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", _extends({\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('recharts-wrapper', className),\n style: _objectSpread({\n position: 'relative',\n cursor: 'default',\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this3.container = node;\n }\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Surface__WEBPACK_IMPORTED_MODULE_27__.Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc,\n style: FULL_WIDTH_AND_HEIGHT\n }), this.renderClipPath(), (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.renderByOrder)(children, this.renderMap)), this.renderLegend(), this.renderTooltip()));\n }\n }\n ]);\n }(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n _defineProperty(CategoricalChartWrapper, \"displayName\", chartName);\n // todo join specific chart propTypes\n _defineProperty(CategoricalChartWrapper, \"defaultProps\", _objectSpread({\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false,\n syncMethod: 'index'\n }, defaultProps));\n _defineProperty(CategoricalChartWrapper, \"getDerivedStateFromProps\", function(nextProps, prevState) {\n var dataKey = nextProps.dataKey, data = nextProps.data, children = nextProps.children, width = nextProps.width, height = nextProps.height, layout = nextProps.layout, stackOffset = nextProps.stackOffset, margin = nextProps.margin;\n var dataStartIndex = prevState.dataStartIndex, dataEndIndex = prevState.dataEndIndex;\n if (prevState.updateId === undefined) {\n var defaultState = createDefaultState(nextProps);\n return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n updateId: 0\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, defaultState), {}, {\n updateId: 0\n }), prevState)), {}, {\n prevDataKey: dataKey,\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (dataKey !== prevState.prevDataKey || data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !(0,_util_ShallowEqual__WEBPACK_IMPORTED_MODULE_28__.shallowEqual)(margin, prevState.prevMargin)) {\n var _defaultState = createDefaultState(nextProps);\n // Fixes https://github.com/recharts/recharts/issues/2143\n var keepFromPrevState = {\n // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n // any flickering\n chartX: prevState.chartX,\n chartY: prevState.chartY,\n // The tooltip should stay active when it was active in the previous render. If this is not\n // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n isTooltipActive: prevState.isTooltipActive\n };\n var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n updateId: prevState.updateId + 1\n });\n var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, newState), prevState)), {}, {\n prevDataKey: dataKey,\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (!(0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.isChildrenEqual)(children, prevState.prevChildren)) {\n var _brush$props$startInd, _brush$props, _brush$props$endIndex, _brush$props2;\n // specifically check for Brush - if it exists and the start and end indexes are different, re-render with the new ones\n var brush = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _cartesian_Brush__WEBPACK_IMPORTED_MODULE_15__.Brush);\n var startIndex = brush ? (_brush$props$startInd = (_brush$props = brush.props) === null || _brush$props === void 0 ? void 0 : _brush$props.startIndex) !== null && _brush$props$startInd !== void 0 ? _brush$props$startInd : dataStartIndex : dataStartIndex;\n var endIndex = brush ? (_brush$props$endIndex = (_brush$props2 = brush.props) === null || _brush$props2 === void 0 ? void 0 : _brush$props2.endIndex) !== null && _brush$props$endIndex !== void 0 ? _brush$props$endIndex : dataEndIndex : dataEndIndex;\n var hasDifferentStartOrEndIndex = startIndex !== dataStartIndex || endIndex !== dataEndIndex;\n // update configuration in children\n var hasGlobalData = !lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(data);\n var newUpdateId = hasGlobalData && !hasDifferentStartOrEndIndex ? prevState.updateId : prevState.updateId + 1;\n return _objectSpread(_objectSpread({\n updateId: newUpdateId\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, prevState), {}, {\n updateId: newUpdateId,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }), prevState)), {}, {\n prevChildren: children,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n return null;\n });\n _defineProperty(CategoricalChartWrapper, \"renderActiveDot\", function(option, props, key) {\n var dot;\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(option)) {\n dot = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Dot__WEBPACK_IMPORTED_MODULE_29__.Dot, props);\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_30__.Layer, {\n className: \"recharts-active-dot\",\n key: key\n }, dot);\n });\n var CategoricalChart = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CategoricalChart(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CategoricalChartWrapper, _extends({}, props, {\n ref: ref\n }));\n });\n CategoricalChart.displayName = CategoricalChartWrapper.displayName;\n return CategoricalChart;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L2dlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUlBLFlBQVk7SUFBQztDQUFPLEVBQ3RCQyxhQUFhO0lBQUM7SUFBWTtJQUFhO0lBQVM7SUFBVTtJQUFTO0lBQVc7SUFBUztDQUFPO0FBQ2hHLFNBQVNDLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9GLFNBQVMsQ0FBQ1csY0FBYyxDQUFDQyxJQUFJLENBQUNILFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNZLEtBQUssQ0FBQyxJQUFJLEVBQUVOO0FBQVk7QUFDbFYsU0FBU08sZUFBZUMsR0FBRyxFQUFFVCxDQUFDO0lBQUksT0FBT1UsZ0JB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Z0JBQ25CZ1MsY0FBY25hO2dCQUNkdEMsZ0JBQWdCc0Y7Z0JBQ2hCckYsY0FBY3NGO1lBQ2hCO1FBQ0Y7UUFDQSxPQUFPO0lBQ1Q7SUFDQXBNLGdCQUFnQjhSLHlCQUF5QixtQkFBbUIsU0FBVXFTLE1BQU0sRUFBRXJuQixLQUFLLEVBQUVwQyxHQUFHO1FBQ3RGLElBQUkwcEI7UUFDSixJQUFLLFdBQVcsR0FBRXpqQixxREFBY0EsQ0FBQ3dqQixTQUFTO1lBQ3hDQyxNQUFNLFdBQVcsR0FBRTFqQixtREFBWUEsQ0FBQ3lqQixRQUFRcm5CO1FBQzFDLE9BQU8sSUFBSWdFLHdEQUFVQSxDQUFDcWpCLFNBQVM7WUFDN0JDLE1BQU1ELE9BQU9ybkI7UUFDZixPQUFPO1lBQ0xzbkIsTUFBTSxXQUFXLEdBQUU1akIsMERBQW1CLENBQUNpQiw0Q0FBR0EsRUFBRTNFO1FBQzlDO1FBQ0EsT0FBTyxXQUFXLEdBQUUwRCwwREFBbUIsQ0FBQ2Msb0RBQUtBLEVBQUU7WUFDN0N3VSxXQUFXO1lBQ1hwYixLQUFLQTtRQUNQLEdBQUcwcEI7SUFDTDtJQUNBLElBQUlDLG1CQUFtQixXQUFXLEdBQUV6akIsaURBQVVBLENBQUMsU0FBU3lqQixpQkFBaUJ2bkIsS0FBSyxFQUFFMmxCLEdBQUc7UUFDakYsT0FBTyxXQUFXLEdBQUVqaUIsMERBQW1CLENBQUNzUix5QkFBeUI3WCxTQUFTLENBQUMsR0FBRzZDLE9BQU87WUFDbkYybEIsS0FBS0E7UUFDUDtJQUNGO0lBQ0E0QixpQkFBaUJsVSxXQUFXLEdBQUcyQix3QkFBd0IzQixXQUFXO0lBQ2xFLE9BQU9rVTtBQUNULEVBQUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L2dlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wiaXRlbVwiXSxcbiAgX2V4Y2x1ZGVkMiA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJzdHlsZVwiLCBcImNvbXBhY3RcIiwgXCJ0aXRsZVwiLCBcImRlc2NcIl07XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIF9jYWxsU3VwZXIodCwgbywgZSkgeyByZXR1cm4gbyA9IF9nZXRQcm90b3R5cGVPZihvKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpID8gUmVmbGVjdC5jb25zdHJ1Y3QobywgZSB8fCBbXSwgX2dldFByb3RvdHlwZU9mKHQpLmNvbnN0cnVjdG9yKSA6IG8uYXBwbHkodCwgZSkpOyB9XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IGVsc2UgaWYgKGNhbGwgIT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgdHJ5IHsgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyB9IGNhdGNoICh0KSB7fSByZXR1cm4gKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyByZXR1cm4gISF0OyB9KSgpOyB9XG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGl0ZXJbU3ltYm9sLml0ZXJhdG9yXSAhPSBudWxsIHx8IGl0ZXJbXCJAQGl0ZXJhdG9yXCJdICE9IG51bGwpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpOyB9XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShhcnIpOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIGNsb25lRWxlbWVudCwgaXNWYWxpZEVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCByYW5nZSBmcm9tICdsb2Rhc2gvcmFuZ2UnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBzb3J0QnkgZnJvbSAnbG9kYXNoL3NvcnRCeSc7XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoL3Rocm90dGxlJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuXG5pbXBvcnQgaW52YXJpYW50IGZyb20gJ3RpbnktaW52YXJpYW50JztcbmltcG9ydCB7IFN1cmZhY2UgfSBmcm9tICcuLi9jb250YWluZXIvU3VyZmFjZSc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnLi4vY29tcG9uZW50L1Rvb2x0aXAnO1xuaW1wb3J0IHsgTGVnZW5kIH0gZnJvbSAnLi4vY29tcG9uZW50L0xlZ2VuZCc7XG5pbXBvcnQgeyBEb3QgfSBmcm9tICcuLi9zaGFwZS9Eb3QnO1xuaW1wb3J0IHsgaXNJblJlY3RhbmdsZSB9IGZyb20gJy4uL3NoYXBlL1JlY3RhbmdsZSc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcywgZmluZEFsbEJ5VHlwZSwgZmluZENoaWxkQnlUeXBlLCBnZXREaXNwbGF5TmFtZSwgZ2V0UmVhY3RFdmVudEJ5VHlwZSwgaXNDaGlsZHJlbkVxdWFsLCBwYXJzZUNoaWxkSW5kZXgsIHJlbmRlckJ5T3JkZXIsIHZhbGlkYXRlV2lkdGhIZWlnaHQgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgQnJ1c2ggfSBmcm9tICcuLi9jYXJ0ZXNpYW4vQnJ1c2gnO1xuaW1wb3J0IHsgZ2V0T2Zmc2V0IH0gZnJvbSAnLi4vdXRpbC9ET01VdGlscyc7XG5pbXBvcnQgeyBmaW5kRW50cnlJbkFycmF5LCBnZXRBbnlFbGVtZW50T2ZPYmplY3QsIGhhc0R1cGxpY2F0ZSwgaXNOdW1iZXIsIHVuaXF1ZUlkIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgYXBwZW5kT2Zmc2V0T2ZMZWdlbmQsIGNhbGN1bGF0ZUFjdGl2ZVRpY2tJbmRleCwgY29tYmluZUV2ZW50SGFuZGxlcnMsIGdldEJhbmRTaXplT2ZBeGlzLCBnZXRCYXJQb3NpdGlvbiwgZ2V0QmFyU2l6ZUxpc3QsIGdldERvbWFpbk9mRGF0YUJ5S2V5LCBnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzLCBnZXREb21haW5PZlN0YWNrR3JvdXBzLCBnZXRMZWdlbmRQcm9wcywgZ2V0TWFpbkNvbG9yT2ZHcmFwaGljSXRlbSwgZ2V0U3RhY2tlZERhdGFPZkl0ZW0sIGdldFN0YWNrR3JvdXBzQnlBeGlzSWQsIGdldFRpY2tzT2ZBeGlzLCBnZXRUb29sdGlwSXRlbSwgaXNDYXRlZ29yaWNhbEF4aXMsIHBhcnNlRG9tYWluT2ZDYXRlZ29yeUF4aXMsIHBhcnNlRXJyb3JCYXJzT2ZBeGlzLCBwYXJzZVNwZWNpZmllZERvbWFpbiB9IGZyb20gJy4uL3V0aWwvQ2hhcnRVdGlscyc7XG5pbXBvcnQgeyBkZXRlY3RSZWZlcmVuY2VFbGVtZW50c0RvbWFpbiB9IGZyb20gJy4uL3V0aWwvRGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4nO1xuaW1wb3J0IHsgaW5SYW5nZU9mU2VjdG9yLCBwb2xhclRvQ2FydGVzaWFuIH0gZnJvbSAnLi4vdXRpbC9Qb2xhclV0aWxzJztcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCB9IGZyb20gJy4uL3V0aWwvU2hhbGxvd0VxdWFsJztcbmltcG9ydCB7IGV2ZW50Q2VudGVyLCBTWU5DX0VWRU5UIH0gZnJvbSAnLi4vdXRpbC9FdmVudHMnO1xuaW1wb3J0IHsgYWRhcHRFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5TWFuYWdlciB9IGZyb20gJy4vQWNjZXNzaWJpbGl0eU1hbmFnZXInO1xuaW1wb3J0IHsgaXNEb21haW5TcGVjaWZpZWRCeVVzZXIgfSBmcm9tICcuLi91dGlsL2lzRG9tYWluU3BlY2lmaWVkQnlVc2VyJztcbmltcG9ydCB7IGdldEFjdGl2ZVNoYXBlSW5kZXhGb3JUb29sdGlwLCBpc0Z1bm5lbCwgaXNQaWUsIGlzU2NhdHRlciB9IGZyb20gJy4uL3V0aWwvQWN0aXZlU2hhcGVVdGlscyc7XG5pbXBvcnQgeyBDdXJzb3IgfSBmcm9tICcuLi9jb21wb25lbnQvQ3Vyc29yJztcbmltcG9ydCB7IENoYXJ0TGF5b3V0Q29udGV4dFByb3ZpZGVyIH0gZnJvbSAnLi4vY29udGV4dC9jaGFydExheW91dENvbnRleHQnO1xudmFyIE9SSUVOVF9NQVAgPSB7XG4gIHhBeGlzOiBbJ2JvdHRvbScsICd0b3AnXSxcbiAgeUF4aXM6IFsnbGVmdCcsICdyaWdodCddXG59O1xudmFyIEZVTExfV0lEVEhfQU5EX0hFSUdIVCA9IHtcbiAgd2lkdGg6ICcxMDAlJyxcbiAgaGVpZ2h0OiAnMTAwJSdcbn07XG52YXIgb3JpZ2luQ29vcmRpbmF0ZSA9IHtcbiAgeDogMCxcbiAgeTogMFxufTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBhcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLlxuICpcbiAqIFdoeT8gZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0IGRvZXMgbm90IHJlbmRlciBge2NoaWxkcmVufWAgZGlyZWN0bHk7XG4gKiBpbnN0ZWFkIGl0IHBhc3NlcyB0aGVtIHRocm91Z2ggYHJlbmRlckJ5T3JkZXJgIGZ1bmN0aW9uIHdoaWNoIHJlYWRzIHRoZWlyIGhhbmRsZXJzLlxuICpcbiAqIFNvLCB0aGlzIGlzIGEgaGFuZGxlciB0aGF0IGRvZXMgbm90aGluZy5cbiAqIE9uY2Ugd2UgZ2V0IHJpZCBvZiBgcmVuZGVyQnlPcmRlcmAgYW5kIHN3aXRjaCB0byBKU1ggb25seSwgd2UgY2FuIGdldCByaWQgb2YgdGhpcyBoYW5kbGVyIHRvby5cbiAqXG4gKiBAcGFyYW0ge0pTWH0gZWxlbWVudCBhcyBpcyBpbiBKU1hcbiAqIEByZXR1cm5zIHtKU1h9IHRoZSBzYW1lIGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gcmVuZGVyQXNJcyhlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50O1xufVxudmFyIGNhbGN1bGF0ZVRvb2x0aXBQb3MgPSBmdW5jdGlvbiBjYWxjdWxhdGVUb29sdGlwUG9zKHJhbmdlT2JqLCBsYXlvdXQpIHtcbiAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgcmV0dXJuIHJhbmdlT2JqLng7XG4gIH1cbiAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgIHJldHVybiByYW5nZU9iai55O1xuICB9XG4gIGlmIChsYXlvdXQgPT09ICdjZW50cmljJykge1xuICAgIHJldHVybiByYW5nZU9iai5hbmdsZTtcbiAgfVxuICByZXR1cm4gcmFuZ2VPYmoucmFkaXVzO1xufTtcbnZhciBnZXRBY3RpdmVDb29yZGluYXRlID0gZnVuY3Rpb24gZ2V0QWN0aXZlQ29vcmRpbmF0ZShsYXlvdXQsIHRvb2x0aXBUaWNrcywgYWN0aXZlSW5kZXgsIHJhbmdlT2JqKSB7XG4gIHZhciBlbnRyeSA9IHRvb2x0aXBUaWNrcy5maW5kKGZ1bmN0aW9uICh0aWNrKSB7XG4gICAgcmV0dXJuIHRpY2sgJiYgdGljay5pbmRleCA9PT0gYWN0aXZlSW5kZXg7XG4gIH0pO1xuICBpZiAoZW50cnkpIHtcbiAgICBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGVudHJ5LmNvb3JkaW5hdGUsXG4gICAgICAgIHk6IHJhbmdlT2JqLnlcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHJhbmdlT2JqLngsXG4gICAgICAgIHk6IGVudHJ5LmNvb3JkaW5hdGVcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChsYXlvdXQgPT09ICdjZW50cmljJykge1xuICAgICAgdmFyIF9hbmdsZSA9IGVudHJ5LmNvb3JkaW5hdGU7XG4gICAgICB2YXIgX3JhZGl1cyA9IHJhbmdlT2JqLnJhZGl1cztcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmFuZ2VPYmopLCBwb2xhclRvQ2FydGVzaWFuKHJhbmdlT2JqLmN4LCByYW5nZU9iai5jeSwgX3JhZGl1cywgX2FuZ2xlKSksIHt9LCB7XG4gICAgICAgIGFuZ2xlOiBfYW5nbGUsXG4gICAgICAgIHJhZGl1czogX3JhZGl1c1xuICAgICAgfSk7XG4gICAgfVxuICAgIHZhciByYWRpdXMgPSBlbnRyeS5jb29yZGluYXRlO1xuICAgIHZhciBhbmdsZSA9IHJhbmdlT2JqLmFuZ2xlO1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmFuZ2VPYmopLCBwb2xhclRvQ2FydGVzaWFuKHJhbmdlT2JqLmN4LCByYW5nZU9iai5jeSwgcmFkaXVzLCBhbmdsZSkpLCB7fSwge1xuICAgICAgYW5nbGU6IGFuZ2xlLFxuICAgICAgcmFkaXVzOiByYWRpdXNcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gb3JpZ2luQ29vcmRpbmF0ZTtcbn07XG52YXIgZ2V0RGlzcGxheWVkRGF0YSA9IGZ1bmN0aW9uIGdldERpc3BsYXllZERhdGEoZGF0YSwgX3JlZikge1xuICB2YXIgZ3JhcGhpY2FsSXRlbXMgPSBfcmVmLmdyYXBoaWNhbEl0ZW1zLFxuICAgIGRhdGFTdGFydEluZGV4ID0gX3JlZi5kYXRhU3RhcnRJbmRleCxcbiAgICBkYXRhRW5kSW5kZXggPSBfcmVmLmRhdGFFbmRJbmRleDtcbiAgdmFyIGl0ZW1zRGF0YSA9IChncmFwaGljYWxJdGVtcyAhPT0gbnVsbCAmJiBncmFwaGljYWxJdGVtcyAhPT0gdm9pZCAwID8gZ3JhcGhpY2FsSXRlbXMgOiBbXSkucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGNoaWxkKSB7XG4gICAgdmFyIGl0ZW1EYXRhID0gY2hpbGQucHJvcHMuZGF0YTtcbiAgICBpZiAoaXRlbURhdGEgJiYgaXRlbURhdGEubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXN1bHQpLCBfdG9Db25zdW1hYmxlQXJyYXkoaXRlbURhdGEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgW10pO1xuICBpZiAoaXRlbXNEYXRhLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gaXRlbXNEYXRhO1xuICB9XG4gIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoICYmIGlzTnVtYmVyKGRhdGFTdGFydEluZGV4KSAmJiBpc051bWJlcihkYXRhRW5kSW5kZXgpKSB7XG4gICAgcmV0dXJuIGRhdGEuc2xpY2UoZGF0YVN0YXJ0SW5kZXgsIGRhdGFFbmRJbmRleCArIDEpO1xuICB9XG4gIHJldHVybiBbXTtcbn07XG5mdW5jdGlvbiBnZXREZWZhdWx0RG9tYWluQnlBeGlzVHlwZShheGlzVHlwZSkge1xuICByZXR1cm4gYXhpc1R5cGUgPT09ICdudW1iZXInID8gWzAsICdhdXRvJ10gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjb250ZW50IHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgdG9vbHRpcFxuICogQHBhcmFtICB7T2JqZWN0fSBzdGF0ZSAgICAgICAgICBDdXJyZW50IHN0YXRlXG4gKiBAcGFyYW0gIHtBcnJheX0gIGNoYXJ0RGF0YSAgICAgIFRoZSBkYXRhIGRlZmluZWQgaW4gY2hhcnRcbiAqIEBwYXJhbSAge051bWJlcn0gYWN0aXZlSW5kZXggICAgQWN0aXZlIGluZGV4IG9mIGRhdGFcbiAqIEBwYXJhbSAge1N0cmluZ30gYWN0aXZlTGFiZWwgICAgQWN0aXZlIGxhYmVsIG9mIGRhdGFcbiAqIEByZXR1cm4ge0FycmF5fSAgICAgICAgICAgICAgICAgVGhlIGNvbnRlbnQgb2YgdG9vbHRpcFxuICovXG52YXIgZ2V0VG9vbHRpcENvbnRlbnQgPSBmdW5jdGlvbiBnZXRUb29sdGlwQ29udGVudChzdGF0ZSwgY2hhcnREYXRhLCBhY3RpdmVJbmRleCwgYWN0aXZlTGFiZWwpIHtcbiAgdmFyIGdyYXBoaWNhbEl0ZW1zID0gc3RhdGUuZ3JhcGhpY2FsSXRlbXMsXG4gICAgdG9vbHRpcEF4aXMgPSBzdGF0ZS50b29sdGlwQXhpcztcbiAgdmFyIGRpc3BsYXllZERhdGEgPSBnZXREaXNwbGF5ZWREYXRhKGNoYXJ0RGF0YSwgc3RhdGUpO1xuICBpZiAoYWN0aXZlSW5kZXggPCAwIHx8ICFncmFwaGljYWxJdGVtcyB8fCAhZ3JhcGhpY2FsSXRlbXMubGVuZ3RoIHx8IGFjdGl2ZUluZGV4ID49IGRpc3BsYXllZERhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gZ2V0IGRhdGEgYnkgYWN0aXZlSW5kZXggd2hlbiB0aGUgYXhpcyBkb24ndCBhbGxvdyBkdXBsaWNhdGVkIGNhdGVnb3J5XG4gIHJldHVybiBncmFwaGljYWxJdGVtcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgY2hpbGQpIHtcbiAgICB2YXIgX2NoaWxkJHByb3BzJGRhdGE7XG4gICAgLyoqXG4gICAgICogRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWNoYXJ0cy9yZWNoYXJ0cy9pc3N1ZXMvMzY2OVxuICAgICAqIERlZmF1bHRpbmcgdG8gY2hhcnREYXRhIGJlbG93IHRvIGZpeCBhbiBlZGdlIGNhc2Ugd2hlcmUgdGhlIHRvb2x0aXAgZG9lcyBub3QgaW5jbHVkZSBkYXRhIGZyb20gYWxsIGNoYXJ0c1xuICAgICAqIHdoZW4gYSBzZXBhcmF0ZSBkYXRhc2V0IGlzIHBhc3NlZCB0byBjaGFydCBwcm9wIGRhdGEgYW5kIHNwZWNpZmllZCBvbiBMaW5lL0FyZWEvZXRjIHByb3AgZGF0YVxuICAgICAqL1xuICAgIHZhciBkYXRhID0gKF9jaGlsZCRwcm9wcyRkYXRhID0gY2hpbGQucHJvcHMuZGF0YSkgIT09IG51bGwgJiYgX2NoaWxkJHByb3BzJGRhdGEgIT09IHZvaWQgMCA/IF9jaGlsZCRwcm9wcyRkYXRhIDogY2hhcnREYXRhO1xuICAgIGlmIChkYXRhICYmIHN0YXRlLmRhdGFTdGFydEluZGV4ICsgc3RhdGUuZGF0YUVuZEluZGV4ICE9PSAwICYmXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlY2hhcnRzL3JlY2hhcnRzL2lzc3Vlcy80NzE3XG4gICAgLy8gVGhlIGRhdGEgaXMgc2xpY2VkIG9ubHkgd2hlbiB0aGUgYWN0aXZlIGluZGV4IGlzIHdpdGhpbiB0aGUgc3RhcnQvZW5kIGluZGV4IHJhbmdlLlxuICAgIHN0YXRlLmRhdGFFbmRJbmRleCAtIHN0YXRlLmRhdGFTdGFydEluZGV4ID49IGFjdGl2ZUluZGV4KSB7XG4gICAgICBkYXRhID0gZGF0YS5zbGljZShzdGF0ZS5kYXRhU3RhcnRJbmRleCwgc3RhdGUuZGF0YUVuZEluZGV4ICsgMSk7XG4gICAgfVxuICAgIHZhciBwYXlsb2FkO1xuICAgIGlmICh0b29sdGlwQXhpcy5kYXRhS2V5ICYmICF0b29sdGlwQXhpcy5hbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSkge1xuICAgICAgLy8gZ3JhcGhpYyBjaGlsZCBoYXMgZGF0YSBwcm9wc1xuICAgICAgdmFyIGVudHJpZXMgPSBkYXRhID09PSB1bmRlZmluZWQgPyBkaXNwbGF5ZWREYXRhIDogZGF0YTtcbiAgICAgIHBheWxvYWQgPSBmaW5kRW50cnlJbkFycmF5KGVudHJpZXMsIHRvb2x0aXBBeGlzLmRhdGFLZXksIGFjdGl2ZUxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCA9IGRhdGEgJiYgZGF0YVthY3RpdmVJbmRleF0gfHwgZGlzcGxheWVkRGF0YVthY3RpdmVJbmRleF07XG4gICAgfVxuICAgIGlmICghcGF5bG9hZCkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocmVzdWx0KSwgW2dldFRvb2x0aXBJdGVtKGNoaWxkLCBwYXlsb2FkKV0pO1xuICB9LCBbXSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdG9vbHRpcCBkYXRhIGJhc2VkIG9uIGEgbW91c2UgcG9zaXRpb24gKGFzIGEgcGFyYW1ldGVyIG9yIGluIHN0YXRlKVxuICogQHBhcmFtICB7T2JqZWN0fSBzdGF0ZSAgICAgY3VycmVudCBzdGF0ZVxuICogQHBhcmFtICB7QXJyYXl9ICBjaGFydERhdGEgdGhlIGRhdGEgZGVmaW5lZCBpbiBjaGFydFxuICogQHBhcmFtICB7U3RyaW5nfSBsYXlvdXQgICAgIFRoZSBsYXlvdXQgdHlwZSBvZiBjaGFydFxuICogQHBhcmFtICB7T2JqZWN0fSByYW5nZU9iaiAgeyB4LCB5IH0gY29vcmRpbmF0ZXNcbiAqIEByZXR1cm4ge09iamVjdH0gICAgICAgICAgIFRvb2x0aXAgZGF0YSBkYXRhXG4gKi9cbnZhciBnZXRUb29sdGlwRGF0YSA9IGZ1bmN0aW9uIGdldFRvb2x0aXBEYXRhKHN0YXRlLCBjaGFydERhdGEsIGxheW91dCwgcmFuZ2VPYmopIHtcbiAgdmFyIHJhbmdlRGF0YSA9IHJhbmdlT2JqIHx8IHtcbiAgICB4OiBzdGF0ZS5jaGFydFgsXG4gICAgeTogc3RhdGUuY2hhcnRZXG4gIH07XG4gIHZhciBwb3MgPSBjYWxjdWxhdGVUb29sdGlwUG9zKHJhbmdlRGF0YSwgbGF5b3V0KTtcbiAgdmFyIHRpY2tzID0gc3RhdGUub3JkZXJlZFRvb2x0aXBUaWNrcyxcbiAgICBheGlzID0gc3RhdGUudG9vbHRpcEF4aXMsXG4gICAgdG9vbHRpcFRpY2tzID0gc3RhdGUudG9vbHRpcFRpY2tzO1xuICB2YXIgYWN0aXZlSW5kZXggPSBjYWxjdWxhdGVBY3RpdmVUaWNrSW5kZXgocG9zLCB0aWNrcywgdG9vbHRpcFRpY2tzLCBheGlzKTtcbiAgaWYgKGFjdGl2ZUluZGV4ID49IDAgJiYgdG9vbHRpcFRpY2tzKSB7XG4gICAgdmFyIGFjdGl2ZUxhYmVsID0gdG9vbHRpcFRpY2tzW2FjdGl2ZUluZGV4XSAmJiB0b29sdGlwVGlja3NbYWN0aXZlSW5kZXhdLnZhbHVlO1xuICAgIHZhciBhY3RpdmVQYXlsb2FkID0gZ2V0VG9vbHRpcENvbnRlbnQoc3RhdGUsIGNoYXJ0RGF0YSwgYWN0aXZlSW5kZXgsIGFjdGl2ZUxhYmVsKTtcbiAgICB2YXIgYWN0aXZlQ29vcmRpbmF0ZSA9IGdldEFjdGl2ZUNvb3JkaW5hdGUobGF5b3V0LCB0aWNrcywgYWN0aXZlSW5kZXgsIHJhbmdlRGF0YSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZVRvb2x0aXBJbmRleDogYWN0aXZlSW5kZXgsXG4gICAgICBhY3RpdmVMYWJlbDogYWN0aXZlTGFiZWwsXG4gICAgICBhY3RpdmVQYXlsb2FkOiBhY3RpdmVQYXlsb2FkLFxuICAgICAgYWN0aXZlQ29vcmRpbmF0ZTogYWN0aXZlQ29vcmRpbmF0ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgY29uZmlndXJhdGlvbiBvZiBheGlzIGJ5IHRoZSBvcHRpb25zIG9mIGF4aXMgaW5zdGFuY2VcbiAqIEBwYXJhbSAge09iamVjdH0gcHJvcHMgICAgICAgICBMYXRlc3QgcHJvcHNcbiAqIEBwYXJhbSB7QXJyYXl9ICBheGVzICAgICAgICAgICBUaGUgaW5zdGFuY2Ugb2YgYXhlc1xuICogQHBhcmFtICB7QXJyYXl9IGdyYXBoaWNhbEl0ZW1zIFRoZSBpbnN0YW5jZXMgb2YgaXRlbVxuICogQHBhcmFtICB7U3RyaW5nfSBheGlzVHlwZSAgICAgIFRoZSB0eXBlIG9mIGF4aXMsIHhBeGlzIC0geC1heGlzLCB5QXhpcyAtIHktYXhpc1xuICogQHBhcmFtICB7U3RyaW5nfSBheGlzSWRLZXkgICAgIFRoZSB1bmlxdWUgaWQgb2YgYW4gYXhpc1xuICogQHBhcmFtICB7T2JqZWN0fSBzdGFja0dyb3VwcyAgIFRoZSBpdGVtcyBncm91cGVkIGJ5IGF4aXNJZCBhbmQgc3RhY2tJZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRhdGFTdGFydEluZGV4IFRoZSBzdGFydCBpbmRleCBvZiB0aGUgZGF0YSBzZXJpZXMgd2hlbiBhIGJydXNoIGlzIGFwcGxpZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXRhRW5kSW5kZXggICBUaGUgZW5kIGluZGV4IG9mIHRoZSBkYXRhIHNlcmllcyB3aGVuIGEgYnJ1c2ggaXMgYXBwbGllZFxuICogQHJldHVybiB7T2JqZWN0fSAgICAgIENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IHZhciBnZXRBeGlzTWFwQnlBeGVzID0gZnVuY3Rpb24gZ2V0QXhpc01hcEJ5QXhlcyhwcm9wcywgX3JlZjIpIHtcbiAgdmFyIGF4ZXMgPSBfcmVmMi5heGVzLFxuICAgIGdyYXBoaWNhbEl0ZW1zID0gX3JlZjIuZ3JhcGhpY2FsSXRlbXMsXG4gICAgYXhpc1R5cGUgPSBfcmVmMi5heGlzVHlwZSxcbiAgICBheGlzSWRLZXkgPSBfcmVmMi5heGlzSWRLZXksXG4gICAgc3RhY2tHcm91cHMgPSBfcmVmMi5zdGFja0dyb3VwcyxcbiAgICBkYXRhU3RhcnRJbmRleCA9IF9yZWYyLmRhdGFTdGFydEluZGV4LFxuICAgIGRhdGFFbmRJbmRleCA9IF9yZWYyLmRhdGFFbmRJbmRleDtcbiAgdmFyIGxheW91dCA9IHByb3BzLmxheW91dCxcbiAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIHN0YWNrT2Zmc2V0ID0gcHJvcHMuc3RhY2tPZmZzZXQ7XG4gIHZhciBpc0NhdGVnb3JpY2FsID0gaXNDYXRlZ29yaWNhbEF4aXMobGF5b3V0LCBheGlzVHlwZSk7XG5cbiAgLy8gRWxpbWluYXRlIGR1cGxpY2F0ZWQgYXhlc1xuICByZXR1cm4gYXhlcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgY2hpbGQpIHtcbiAgICB2YXIgX2NoaWxkUHJvcHMkZG9tYWluMjtcbiAgICB2YXIgY2hpbGRQcm9wcyA9IGNoaWxkLnR5cGUuZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNoaWxkLnR5cGUuZGVmYXVsdFByb3BzKSwgY2hpbGQucHJvcHMpIDogY2hpbGQucHJvcHM7XG4gICAgdmFyIHR5cGUgPSBjaGlsZFByb3BzLnR5cGUsXG4gICAgICBkYXRhS2V5ID0gY2hpbGRQcm9wcy5kYXRhS2V5LFxuICAgICAgYWxsb3dEYXRhT3ZlcmZsb3cgPSBjaGlsZFByb3BzLmFsbG93RGF0YU92ZXJmbG93LFxuICAgICAgYWxsb3dEdXBsaWNhdGVkQ2F0ZWdvcnkgPSBjaGlsZFByb3BzLmFsbG93RHVwbGljYXRlZENhdGVnb3J5LFxuICAgICAgc2NhbGUgPSBjaGlsZFByb3BzLnNjYWxlLFxuICAgICAgdGlja3MgPSBjaGlsZFByb3BzLnRpY2tzLFxuICAgICAgaW5jbHVkZUhpZGRlbiA9IGNoaWxkUHJvcHMuaW5jbHVkZUhpZGRlbjtcbiAgICB2YXIgYXhpc0lkID0gY2hpbGRQcm9wc1theGlzSWRLZXldO1xuICAgIGlmIChyZXN1bHRbYXhpc0lkXSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgdmFyIGRpc3BsYXllZERhdGEgPSBnZXREaXNwbGF5ZWREYXRhKHByb3BzLmRhdGEsIHtcbiAgICAgIGdyYXBoaWNhbEl0ZW1zOiBncmFwaGljYWxJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgdmFyIF9kZWZhdWx0UHJvcHM7XG4gICAgICAgIHZhciBpdGVtQXhpc0lkID0gYXhpc0lkS2V5IGluIGl0ZW0ucHJvcHMgPyBpdGVtLnByb3BzW2F4aXNJZEtleV0gOiAoX2RlZmF1bHRQcm9wcyA9IGl0ZW0udHlwZS5kZWZhdWx0UHJvcHMpID09PSBudWxsIHx8IF9kZWZhdWx0UHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0UHJvcHNbYXhpc0lkS2V5XTtcbiAgICAgICAgcmV0dXJuIGl0ZW1BeGlzSWQgPT09IGF4aXNJZDtcbiAgICAgIH0pLFxuICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgICB9KTtcbiAgICB2YXIgbGVuID0gZGlzcGxheWVkRGF0YS5sZW5ndGg7XG4gICAgdmFyIGRvbWFpbiwgZHVwbGljYXRlRG9tYWluLCBjYXRlZ29yaWNhbERvbWFpbjtcblxuICAgIC8qXG4gICAgICogVGhpcyBpcyBhIGhhY2sgdG8gc2hvcnQtY2lyY3VpdCB0aGUgZG9tYWluIGNyZWF0aW9uIGhlcmUgdG8gZW5oYW5jZSBwZXJmb3JtYW5jZS5cbiAgICAgKiBVc3VhbGx5LCB0aGUgZGF0YSBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgZG9tYWluLCBidXQgd2hlbiB0aGUgdXNlciBzcGVjaWZpZXNcbiAgICAgKiBhIGRvbWFpbiB1cGZyb250ICh2aWEgcHJvcHMpLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgZG9tYWluIHN0YXJ0IGFuZCBlbmQsXG4gICAgICogd2hpY2ggaXMgdmVyeSBleHBlbnNpdmUgZm9yIGEgbGFyZ2VyIGFtb3VudCBvZiBkYXRhLlxuICAgICAqIFRoZSBvbmx5IHRoaW5nIHRoYXQgd291bGQgcHJvaGliaXQgc2hvcnQtY2lyY3VpdGluZyBpcyB3aGVuIHRoZSB1c2VyIGRvZXNuJ3QgYWxsb3cgZGF0YSBvdmVyZmxvdyxcbiAgICAgKiBiZWNhdXNlIHRoZSBheGlzIGlzIHN1cHBvc2VkIHRvIGlnbm9yZSB0aGUgc3BlY2lmaWVkIGRvbWFpbiB0aGF0IHdheS5cbiAgICAgKi9cbiAgICBpZiAoaXNEb21haW5TcGVjaWZpZWRCeVVzZXIoY2hpbGRQcm9wcy5kb21haW4sIGFsbG93RGF0YU92ZXJmbG93LCB0eXBlKSkge1xuICAgICAgZG9tYWluID0gcGFyc2VTcGVjaWZpZWREb21haW4oY2hpbGRQcm9wcy5kb21haW4sIG51bGwsIGFsbG93RGF0YU92ZXJmbG93KTtcbiAgICAgIC8qIFRoZSBjaGFydCBjYW4gYmUgY2F0ZWdvcmljYWwgYW5kIGhhdmUgdGhlIGRvbWFpbiBzcGVjaWZpZWQgaW4gbnVtYmVyc1xuICAgICAgICogd2Ugc3RpbGwgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGNhdGVnb3JpY2FsIGRvbWFpblxuICAgICAgICogVE9ETzogcmVmYWN0b3IgdGhpcyBtb3JlXG4gICAgICAgKi9cbiAgICAgIGlmIChpc0NhdGVnb3JpY2FsICYmICh0eXBlID09PSAnbnVtYmVyJyB8fCBzY2FsZSAhPT0gJ2F1dG8nKSkge1xuICAgICAgICBjYXRlZ29yaWNhbERvbWFpbiA9IGdldERvbWFpbk9mRGF0YUJ5S2V5KGRpc3BsYXllZERhdGEsIGRhdGFLZXksICdjYXRlZ29yeScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIHRoZSBkb21haW4gaXMgZGVmYXVsdGVkIHdlIG5lZWQgdGhpcyBmb3IgYG9yaWdpbmFsRG9tYWluYCBhcyB3ZWxsXG4gICAgdmFyIGRlZmF1bHREb21haW4gPSBnZXREZWZhdWx0RG9tYWluQnlBeGlzVHlwZSh0eXBlKTtcblxuICAgIC8vIHdlIGRpZG4ndCBjcmVhdGUgdGhlIGRvbWFpbiBmcm9tIHVzZXIncyBwcm9wcyBhYm92ZSwgc28gd2UgbmVlZCB0byBjYWxjdWxhdGUgaXRcbiAgICBpZiAoIWRvbWFpbiB8fCBkb21haW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YXIgX2NoaWxkUHJvcHMkZG9tYWluO1xuICAgICAgdmFyIGNoaWxkRG9tYWluID0gKF9jaGlsZFByb3BzJGRvbWFpbiA9IGNoaWxkUHJvcHMuZG9tYWluKSAhPT0gbnVsbCAmJiBfY2hpbGRQcm9wcyRkb21haW4gIT09IHZvaWQgMCA/IF9jaGlsZFByb3BzJGRvbWFpbiA6IGRlZmF1bHREb21haW47XG4gICAgICBpZiAoZGF0YUtleSkge1xuICAgICAgICAvLyBoYXMgZGF0YUtleSBpbiA8QXhpcyAvPlxuICAgICAgICBkb21haW4gPSBnZXREb21haW5PZkRhdGFCeUtleShkaXNwbGF5ZWREYXRhLCBkYXRhS2V5LCB0eXBlKTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdjYXRlZ29yeScgJiYgaXNDYXRlZ29yaWNhbCkge1xuICAgICAgICAgIC8vIHRoZSBmaWVsZCB0eXBlIGlzIGNhdGVnb3J5IGRhdGEgYW5kIHRoaXMgYXhpcyBpcyBjYXRlZ29yaWNhbCBheGlzXG4gICAgICAgICAgdmFyIGR1cGxpY2F0ZSA9IGhhc0R1cGxpY2F0ZShkb21haW4pO1xuICAgICAgICAgIGlmIChhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSAmJiBkdXBsaWNhdGUpIHtcbiAgICAgICAgICAgIGR1cGxpY2F0ZURvbWFpbiA9IGRvbWFpbjtcbiAgICAgICAgICAgIC8vIFdoZW4gY2F0ZWdvcnkgYXhpcyBoYXMgZHVwbGljYXRlZCB0ZXh0LCBzZXJpYWwgbnVtYmVycyBhcmUgdXNlZCB0byBnZW5lcmF0ZSBzY2FsZVxuICAgICAgICAgICAgZG9tYWluID0gcmFuZ2UoMCwgbGVuKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSkge1xuICAgICAgICAgICAgLy8gcmVtb3ZlIGR1cGxpY2F0ZWQgY2F0ZWdvcnlcbiAgICAgICAgICAgIGRvbWFpbiA9IHBhcnNlRG9tYWluT2ZDYXRlZ29yeUF4aXMoY2hpbGREb21haW4sIGRvbWFpbiwgY2hpbGQpLnJlZHVjZShmdW5jdGlvbiAoZmluYWxEb21haW4sIGVudHJ5KSB7XG4gICAgICAgICAgICAgIHJldHVybiBmaW5hbERvbWFpbi5pbmRleE9mKGVudHJ5KSA+PSAwID8gZmluYWxEb21haW4gOiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGZpbmFsRG9tYWluKSwgW2VudHJ5XSk7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjYXRlZ29yeScpIHtcbiAgICAgICAgICAvLyB0aGUgZmllbGQgdHlwZSBpcyBjYXRlZ29yeSBkYXRhIGFuZCB0aGlzIGF4aXMgaXMgbnVtZXJpY2FsIGF4aXNcbiAgICAgICAgICBpZiAoIWFsbG93RHVwbGljYXRlZENhdGVnb3J5KSB7XG4gICAgICAgICAgICBkb21haW4gPSBwYXJzZURvbWFpbk9mQ2F0ZWdvcnlBeGlzKGNoaWxkRG9tYWluLCBkb21haW4sIGNoaWxkKS5yZWR1Y2UoZnVuY3Rpb24gKGZpbmFsRG9tYWluLCBlbnRyeSkge1xuICAgICAgICAgICAgICByZXR1cm4gZmluYWxEb21haW4uaW5kZXhPZihlbnRyeSkgPj0gMCB8fCBlbnRyeSA9PT0gJycgfHwgaXNOaWwoZW50cnkpID8gZmluYWxEb21haW4gOiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGZpbmFsRG9tYWluKSwgW2VudHJ5XSk7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGVsaW1pbmF0ZSB1bmRlZmluZWQgb3IgbnVsbCBvciBlbXB0eSBzdHJpbmdcbiAgICAgICAgICAgIGRvbWFpbiA9IGRvbWFpbi5maWx0ZXIoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgICAgICAgIHJldHVybiBlbnRyeSAhPT0gJycgJiYgIWlzTmlsKGVudHJ5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIC8vIHRoZSBmaWVsZCB0eXBlIGlzIG51bWVyaWNhbFxuICAgICAgICAgIHZhciBlcnJvckJhcnNEb21haW4gPSBwYXJzZUVycm9yQmFyc09mQXhpcyhkaXNwbGF5ZWREYXRhLCBncmFwaGljYWxJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgIHZhciBfZGVmYXVsdFByb3BzMiwgX2RlZmF1bHRQcm9wczM7XG4gICAgICAgICAgICB2YXIgaXRlbUF4aXNJZCA9IGF4aXNJZEtleSBpbiBpdGVtLnByb3BzID8gaXRlbS5wcm9wc1theGlzSWRLZXldIDogKF9kZWZhdWx0UHJvcHMyID0gaXRlbS50eXBlLmRlZmF1bHRQcm9wcykgPT09IG51bGwgfHwgX2RlZmF1bHRQcm9wczIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0UHJvcHMyW2F4aXNJZEtleV07XG4gICAgICAgICAgICB2YXIgaXRlbUhpZGUgPSAnaGlkZScgaW4gaXRlbS5wcm9wcyA/IGl0ZW0ucHJvcHMuaGlkZSA6IChfZGVmYXVsdFByb3BzMyA9IGl0ZW0udHlwZS5kZWZhdWx0UHJvcHMpID09PSBudWxsIHx8IF9kZWZhdWx0UHJvcHMzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdFByb3BzMy5oaWRlO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1BeGlzSWQgPT09IGF4aXNJZCAmJiAoaW5jbHVkZUhpZGRlbiB8fCAhaXRlbUhpZGUpO1xuICAgICAgICAgIH0pLCBkYXRhS2V5LCBheGlzVHlwZSwgbGF5b3V0KTtcbiAgICAgICAgICBpZiAoZXJyb3JCYXJzRG9tYWluKSB7XG4gICAgICAgICAgICBkb21haW4gPSBlcnJvckJhcnNEb21haW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NhdGVnb3JpY2FsICYmICh0eXBlID09PSAnbnVtYmVyJyB8fCBzY2FsZSAhPT0gJ2F1dG8nKSkge1xuICAgICAgICAgIGNhdGVnb3JpY2FsRG9tYWluID0gZ2V0RG9tYWluT2ZEYXRhQnlLZXkoZGlzcGxheWVkRGF0YSwgZGF0YUtleSwgJ2NhdGVnb3J5Jyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNDYXRlZ29yaWNhbCkge1xuICAgICAgICAvLyB0aGUgYXhpcyBpcyBhIGNhdGVnb3JpY2FsIGF4aXNcbiAgICAgICAgZG9tYWluID0gcmFuZ2UoMCwgbGVuKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhY2tHcm91cHMgJiYgc3RhY2tHcm91cHNbYXhpc0lkXSAmJiBzdGFja0dyb3Vwc1theGlzSWRdLmhhc1N0YWNrICYmIHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIC8vIHdoZW4gc3RhY2tPZmZzZXQgaXMgJ2V4cGFuZCcsIHRoZSBkb21haW4gbWF5IGJlIGNhbGN1bGF0ZWQgYXMgWzAsIDEuMDAwMDAwMDAwMDAyXVxuICAgICAgICBkb21haW4gPSBzdGFja09mZnNldCA9PT0gJ2V4cGFuZCcgPyBbMCwgMV0gOiBnZXREb21haW5PZlN0YWNrR3JvdXBzKHN0YWNrR3JvdXBzW2F4aXNJZF0uc3RhY2tHcm91cHMsIGRhdGFTdGFydEluZGV4LCBkYXRhRW5kSW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9tYWluID0gZ2V0RG9tYWluT2ZJdGVtc1dpdGhTYW1lQXhpcyhkaXNwbGF5ZWREYXRhLCBncmFwaGljYWxJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICB2YXIgaXRlbUF4aXNJZCA9IGF4aXNJZEtleSBpbiBpdGVtLnByb3BzID8gaXRlbS5wcm9wc1theGlzSWRLZXldIDogaXRlbS50eXBlLmRlZmF1bHRQcm9wc1theGlzSWRLZXldO1xuICAgICAgICAgIHZhciBpdGVtSGlkZSA9ICdoaWRlJyBpbiBpdGVtLnByb3BzID8gaXRlbS5wcm9wcy5oaWRlIDogaXRlbS50eXBlLmRlZmF1bHRQcm9wcy5oaWRlO1xuICAgICAgICAgIHJldHVybiBpdGVtQXhpc0lkID09PSBheGlzSWQgJiYgKGluY2x1ZGVIaWRkZW4gfHwgIWl0ZW1IaWRlKTtcbiAgICAgICAgfSksIHR5cGUsIGxheW91dCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gVG8gZGV0ZWN0IHdldGhlciB0aGVyZSBpcyBhbnkgcmVmZXJlbmNlIGxpbmVzIHdob3NlIHByb3BzIGFsd2F5c1Nob3cgaXMgdHJ1ZVxuICAgICAgICBkb21haW4gPSBkZXRlY3RSZWZlcmVuY2VFbGVtZW50c0RvbWFpbihjaGlsZHJlbiwgZG9tYWluLCBheGlzSWQsIGF4aXNUeXBlLCB0aWNrcyk7XG4gICAgICAgIGlmIChjaGlsZERvbWFpbikge1xuICAgICAgICAgIGRvbWFpbiA9IHBhcnNlU3BlY2lmaWVkRG9tYWluKGNoaWxkRG9tYWluLCBkb21haW4sIGFsbG93RGF0YU92ZXJmbG93KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2F0ZWdvcnknICYmIGNoaWxkRG9tYWluKSB7XG4gICAgICAgIHZhciBheGlzRG9tYWluID0gY2hpbGREb21haW47XG4gICAgICAgIHZhciBpc0RvbWFpblZhbGlkID0gZG9tYWluLmV2ZXJ5KGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgIHJldHVybiBheGlzRG9tYWluLmluZGV4T2YoZW50cnkpID49IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNEb21haW5WYWxpZCkge1xuICAgICAgICAgIGRvbWFpbiA9IGF4aXNEb21haW47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgYXhpc0lkLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNoaWxkUHJvcHMpLCB7fSwge1xuICAgICAgYXhpc1R5cGU6IGF4aXNUeXBlLFxuICAgICAgZG9tYWluOiBkb21haW4sXG4gICAgICBjYXRlZ29yaWNhbERvbWFpbjogY2F0ZWdvcmljYWxEb21haW4sXG4gICAgICBkdXBsaWNhdGVEb21haW46IGR1cGxpY2F0ZURvbWFpbixcbiAgICAgIG9yaWdpbmFsRG9tYWluOiAoX2NoaWxkUHJvcHMkZG9tYWluMiA9IGNoaWxkUHJvcHMuZG9tYWluKSAhPT0gbnVsbCAmJiBfY2hpbGRQcm9wcyRkb21haW4yICE9PSB2b2lkIDAgPyBfY2hpbGRQcm9wcyRkb21haW4yIDogZGVmYXVsdERvbWFpbixcbiAgICAgIGlzQ2F0ZWdvcmljYWw6IGlzQ2F0ZWdvcmljYWwsXG4gICAgICBsYXlvdXQ6IGxheW91dFxuICAgIH0pKSk7XG4gIH0sIHt9KTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBjb25maWd1cmF0aW9uIG9mIGF4aXMgYnkgdGhlIG9wdGlvbnMgb2YgaXRlbSxcbiAqIHRoaXMga2luZCBvZiBheGlzIGRvZXMgbm90IGRpc3BsYXkgaW4gY2hhcnRcbiAqIEBwYXJhbSAge09iamVjdH0gcHJvcHMgICAgICAgICBMYXRlc3QgcHJvcHNcbiAqIEBwYXJhbSAge0FycmF5fSBncmFwaGljYWxJdGVtcyBUaGUgaW5zdGFuY2VzIG9mIGl0ZW1cbiAqIEBwYXJhbSAge1JlYWN0RWxlbWVudH0gQXhpcyAgICBBeGlzIENvbXBvbmVudFxuICogQHBhcmFtICB7U3RyaW5nfSBheGlzVHlwZSAgICAgIFRoZSB0eXBlIG9mIGF4aXMsIHhBeGlzIC0geC1heGlzLCB5QXhpcyAtIHktYXhpc1xuICogQHBhcmFtICB7U3RyaW5nfSBheGlzSWRLZXkgICAgIFRoZSB1bmlxdWUgaWQgb2YgYW4gYXhpc1xuICogQHBhcmFtICB7T2JqZWN0fSBzdGFja0dyb3VwcyAgIFRoZSBpdGVtcyBncm91cGVkIGJ5IGF4aXNJZCBhbmQgc3RhY2tJZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRhdGFTdGFydEluZGV4IFRoZSBzdGFydCBpbmRleCBvZiB0aGUgZGF0YSBzZXJpZXMgd2hlbiBhIGJydXNoIGlzIGFwcGxpZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXRhRW5kSW5kZXggICBUaGUgZW5kIGluZGV4IG9mIHRoZSBkYXRhIHNlcmllcyB3aGVuIGEgYnJ1c2ggaXMgYXBwbGllZFxuICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25cbiAqL1xudmFyIGdldEF4aXNNYXBCeUl0ZW1zID0gZnVuY3Rpb24gZ2V0QXhpc01hcEJ5SXRlbXMocHJvcHMsIF9yZWYzKSB7XG4gIHZhciBncmFwaGljYWxJdGVtcyA9IF9yZWYzLmdyYXBoaWNhbEl0ZW1zLFxuICAgIEF4aXMgPSBfcmVmMy5BeGlzLFxuICAgIGF4aXNUeXBlID0gX3JlZjMuYXhpc1R5cGUsXG4gICAgYXhpc0lkS2V5ID0gX3JlZjMuYXhpc0lkS2V5LFxuICAgIHN0YWNrR3JvdXBzID0gX3JlZjMuc3RhY2tHcm91cHMsXG4gICAgZGF0YVN0YXJ0SW5kZXggPSBfcmVmMy5kYXRhU3RhcnRJbmRleCxcbiAgICBkYXRhRW5kSW5kZXggPSBfcmVmMy5kYXRhRW5kSW5kZXg7XG4gIHZhciBsYXlvdXQgPSBwcm9wcy5sYXlvdXQsXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgdmFyIGRpc3BsYXllZERhdGEgPSBnZXREaXNwbGF5ZWREYXRhKHByb3BzLmRhdGEsIHtcbiAgICBncmFwaGljYWxJdGVtczogZ3JhcGhpY2FsSXRlbXMsXG4gICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgIGRhdGFFbmRJbmRleDogZGF0YUVuZEluZGV4XG4gIH0pO1xuICB2YXIgbGVuID0gZGlzcGxheWVkRGF0YS5sZW5ndGg7XG4gIHZhciBpc0NhdGVnb3JpY2FsID0gaXNDYXRlZ29yaWNhbEF4aXMobGF5b3V0LCBheGlzVHlwZSk7XG4gIHZhciBpbmRleCA9IC0xO1xuXG4gIC8vIFRoZSBkZWZhdWx0IHR5cGUgb2YgeC1heGlzIGlzIGNhdGVnb3J5IGF4aXMsXG4gIC8vIFRoZSBkZWZhdWx0IGNvbnRlbnRzIG9mIHgtYXhpcyBpcyB0aGUgc2VyaWFsIG51bWJlcnMgb2YgZGF0YVxuICAvLyBUaGUgZGVmYXVsdCB0eXBlIG9mIHktYXhpcyBpcyBudW1iZXIgYXhpc1xuICAvLyBUaGUgZGVmYXVsdCBjb250ZW50cyBvZiB5LWF4aXMgaXMgdGhlIGRvbWFpbiBvZiBkYXRhXG4gIHJldHVybiBncmFwaGljYWxJdGVtcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgY2hpbGQpIHtcbiAgICB2YXIgY2hpbGRQcm9wcyA9IGNoaWxkLnR5cGUuZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNoaWxkLnR5cGUuZGVmYXVsdFByb3BzKSwgY2hpbGQucHJvcHMpIDogY2hpbGQucHJvcHM7XG4gICAgdmFyIGF4aXNJZCA9IGNoaWxkUHJvcHNbYXhpc0lkS2V5XTtcbiAgICB2YXIgb3JpZ2luYWxEb21haW4gPSBnZXREZWZhdWx0RG9tYWluQnlBeGlzVHlwZSgnbnVtYmVyJyk7XG4gICAgaWYgKCFyZXN1bHRbYXhpc0lkXSkge1xuICAgICAgaW5kZXgrKztcbiAgICAgIHZhciBkb21haW47XG4gICAgICBpZiAoaXNDYXRlZ29yaWNhbCkge1xuICAgICAgICBkb21haW4gPSByYW5nZSgwLCBsZW4pO1xuICAgICAgfSBlbHNlIGlmIChzdGFja0dyb3VwcyAmJiBzdGFja0dyb3Vwc1theGlzSWRdICYmIHN0YWNrR3JvdXBzW2F4aXNJZF0uaGFzU3RhY2spIHtcbiAgICAgICAgZG9tYWluID0gZ2V0RG9tYWluT2ZTdGFja0dyb3VwcyhzdGFja0dyb3Vwc1theGlzSWRdLnN0YWNrR3JvdXBzLCBkYXRhU3RhcnRJbmRleCwgZGF0YUVuZEluZGV4KTtcbiAgICAgICAgZG9tYWluID0gZGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4oY2hpbGRyZW4sIGRvbWFpbiwgYXhpc0lkLCBheGlzVHlwZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb21haW4gPSBwYXJzZVNwZWNpZmllZERvbWFpbihvcmlnaW5hbERvbWFpbiwgZ2V0RG9tYWluT2ZJdGVtc1dpdGhTYW1lQXhpcyhkaXNwbGF5ZWREYXRhLCBncmFwaGljYWxJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICB2YXIgX2RlZmF1bHRQcm9wczQsIF9kZWZhdWx0UHJvcHM1O1xuICAgICAgICAgIHZhciBpdGVtQXhpc0lkID0gYXhpc0lkS2V5IGluIGl0ZW0ucHJvcHMgPyBpdGVtLnByb3BzW2F4aXNJZEtleV0gOiAoX2RlZmF1bHRQcm9wczQgPSBpdGVtLnR5cGUuZGVmYXVsdFByb3BzKSA9PT0gbnVsbCB8fCBfZGVmYXVsdFByb3BzNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRQcm9wczRbYXhpc0lkS2V5XTtcbiAgICAgICAgICB2YXIgaXRlbUhpZGUgPSAnaGlkZScgaW4gaXRlbS5wcm9wcyA/IGl0ZW0ucHJvcHMuaGlkZSA6IChfZGVmYXVsdFByb3BzNSA9IGl0ZW0udHlwZS5kZWZhdWx0UHJvcHMpID09PSBudWxsIHx8IF9kZWZhdWx0UHJvcHM1ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdFByb3BzNS5oaWRlO1xuICAgICAgICAgIHJldHVybiBpdGVtQXhpc0lkID09PSBheGlzSWQgJiYgIWl0ZW1IaWRlO1xuICAgICAgICB9KSwgJ251bWJlcicsIGxheW91dCksIEF4aXMuZGVmYXVsdFByb3BzLmFsbG93RGF0YU92ZXJmbG93KTtcbiAgICAgICAgZG9tYWluID0gZGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4oY2hpbGRyZW4sIGRvbWFpbiwgYXhpc0lkLCBheGlzVHlwZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBheGlzSWQsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIGF4aXNUeXBlOiBheGlzVHlwZVxuICAgICAgfSwgQXhpcy5kZWZhdWx0UHJvcHMpLCB7fSwge1xuICAgICAgICBoaWRlOiB0cnVlLFxuICAgICAgICBvcmllbnRhdGlvbjogZ2V0KE9SSUVOVF9NQVAsIFwiXCIuY29uY2F0KGF4aXNUeXBlLCBcIi5cIikuY29uY2F0KGluZGV4ICUgMiksIG51bGwpLFxuICAgICAgICBkb21haW46IGRvbWFpbixcbiAgICAgICAgb3JpZ2luYWxEb21haW46IG9yaWdpbmFsRG9tYWluLFxuICAgICAgICBpc0NhdGVnb3JpY2FsOiBpc0NhdGVnb3JpY2FsLFxuICAgICAgICBsYXlvdXQ6IGxheW91dFxuICAgICAgICAvLyBzcGVjaWZ5IHNjYWxlIHdoZW4gbm8gQXhpc1xuICAgICAgICAvLyBzY2FsZTogaXNDYXRlZ29yaWNhbCA/ICdiYW5kJyA6ICdsaW5lYXInLFxuICAgICAgfSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYWxsIHgtYXhpcyBvciB5LWF4aXNcbiAqIEBwYXJhbSAge09iamVjdH0gcHJvcHMgICAgICAgICAgTGF0ZXN0IHByb3BzXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGF4aXNUeXBlICAgICAgIFRoZSB0eXBlIG9mIGF4aXNcbiAqIEBwYXJhbSAge1JlYWN0LkNvbXBvbmVudFR5cGV9ICBbQXhpc0NvbXBdICAgICAgQXhpcyBDb21wb25lbnRcbiAqIEBwYXJhbSAge0FycmF5fSAgZ3JhcGhpY2FsSXRlbXMgVGhlIGluc3RhbmNlcyBvZiBpdGVtXG4gKiBAcGFyYW0gIHtPYmplY3R9IHN0YWNrR3JvdXBzICAgIFRoZSBpdGVtcyBncm91cGVkIGJ5IGF4aXNJZCBhbmQgc3RhY2tJZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRhdGFTdGFydEluZGV4ICBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIGRhdGEgc2VyaWVzIHdoZW4gYSBicnVzaCBpcyBhcHBsaWVkXG4gKiBAcGFyYW0ge051bWJlcn0gZGF0YUVuZEluZGV4ICAgIFRoZSBlbmQgaW5kZXggb2YgdGhlIGRhdGEgc2VyaWVzIHdoZW4gYSBicnVzaCBpcyBhcHBsaWVkXG4gKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgIENvbmZpZ3VyYXRpb25cbiAqL1xudmFyIGdldEF4aXNNYXAgPSBmdW5jdGlvbiBnZXRBeGlzTWFwKHByb3BzLCBfcmVmNCkge1xuICB2YXIgX3JlZjQkYXhpc1R5cGUgPSBfcmVmNC5heGlzVHlwZSxcbiAgICBheGlzVHlwZSA9IF9yZWY0JGF4aXNUeXBlID09PSB2b2lkIDAgPyAneEF4aXMnIDogX3JlZjQkYXhpc1R5cGUsXG4gICAgQXhpc0NvbXAgPSBfcmVmNC5BeGlzQ29tcCxcbiAgICBncmFwaGljYWxJdGVtcyA9IF9yZWY0LmdyYXBoaWNhbEl0ZW1zLFxuICAgIHN0YWNrR3JvdXBzID0gX3JlZjQuc3RhY2tHcm91cHMsXG4gICAgZGF0YVN0YXJ0SW5kZXggPSBfcmVmNC5kYXRhU3RhcnRJbmRleCxcbiAgICBkYXRhRW5kSW5kZXggPSBfcmVmNC5kYXRhRW5kSW5kZXg7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICB2YXIgYXhpc0lkS2V5ID0gXCJcIi5jb25jYXQoYXhpc1R5cGUsIFwiSWRcIik7XG4gIC8vIEdldCBhbGwgdGhlIGluc3RhbmNlIG9mIEF4aXNcbiAgdmFyIGF4ZXMgPSBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCBBeGlzQ29tcCk7XG4gIHZhciBheGlzTWFwID0ge307XG4gIGlmIChheGVzICYmIGF4ZXMubGVuZ3RoKSB7XG4gICAgYXhpc01hcCA9IGdldEF4aXNNYXBCeUF4ZXMocHJvcHMsIHtcbiAgICAgIGF4ZXM6IGF4ZXMsXG4gICAgICBncmFwaGljYWxJdGVtczogZ3JhcGhpY2FsSXRlbXMsXG4gICAgICBheGlzVHlwZTogYXhpc1R5cGUsXG4gICAgICBheGlzSWRLZXk6IGF4aXNJZEtleSxcbiAgICAgIHN0YWNrR3JvdXBzOiBzdGFja0dyb3VwcyxcbiAgICAgIGRhdGFTdGFydEluZGV4OiBkYXRhU3RhcnRJbmRleCxcbiAgICAgIGRhdGFFbmRJbmRleDogZGF0YUVuZEluZGV4XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoZ3JhcGhpY2FsSXRlbXMgJiYgZ3JhcGhpY2FsSXRlbXMubGVuZ3RoKSB7XG4gICAgYXhpc01hcCA9IGdldEF4aXNNYXBCeUl0ZW1zKHByb3BzLCB7XG4gICAgICBBeGlzOiBBeGlzQ29tcCxcbiAgICAgIGdyYXBoaWNhbEl0ZW1zOiBncmFwaGljYWxJdGVtcyxcbiAgICAgIGF4aXNUeXBlOiBheGlzVHlwZSxcbiAgICAgIGF4aXNJZEtleTogYXhpc0lkS2V5LFxuICAgICAgc3RhY2tHcm91cHM6IHN0YWNrR3JvdXBzLFxuICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gYXhpc01hcDtcbn07XG52YXIgdG9vbHRpcFRpY2tzR2VuZXJhdG9yID0gZnVuY3Rpb24gdG9vbHRpcFRpY2tzR2VuZXJhdG9yKGF4aXNNYXApIHtcbiAgdmFyIGF4aXMgPSBnZXRBbnlFbGVtZW50T2ZPYmplY3QoYXhpc01hcCk7XG4gIHZhciB0b29sdGlwVGlja3MgPSBnZXRUaWNrc09mQXhpcyhheGlzLCBmYWxzZSwgdHJ1ZSk7XG4gIHJldHVybiB7XG4gICAgdG9vbHRpcFRpY2tzOiB0b29sdGlwVGlja3MsXG4gICAgb3JkZXJlZFRvb2x0aXBUaWNrczogc29ydEJ5KHRvb2x0aXBUaWNrcywgZnVuY3Rpb24gKG8pIHtcbiAgICAgIHJldHVybiBvLmNvb3JkaW5hdGU7XG4gICAgfSksXG4gICAgdG9vbHRpcEF4aXM6IGF4aXMsXG4gICAgdG9vbHRpcEF4aXNCYW5kU2l6ZTogZ2V0QmFuZFNpemVPZkF4aXMoYXhpcywgdG9vbHRpcFRpY2tzKVxuICB9O1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGRlZmF1bHQsIHJlc2V0IHN0YXRlIGZvciB0aGUgY2F0ZWdvcmljYWwgY2hhcnQuXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgUHJvcHMgb2JqZWN0IHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSBkZWZhdWx0IHN0YXRlXG4gKiBAcmV0dXJuIHtPYmplY3R9IFdob2xlIG5ldyBzdGF0ZVxuICovXG5leHBvcnQgdmFyIGNyZWF0ZURlZmF1bHRTdGF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRTdGF0ZShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBkZWZhdWx0U2hvd1Rvb2x0aXAgPSBwcm9wcy5kZWZhdWx0U2hvd1Rvb2x0aXA7XG4gIHZhciBicnVzaEl0ZW0gPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIEJydXNoKTtcbiAgdmFyIHN0YXJ0SW5kZXggPSAwO1xuICB2YXIgZW5kSW5kZXggPSAwO1xuICBpZiAocHJvcHMuZGF0YSAmJiBwcm9wcy5kYXRhLmxlbmd0aCAhPT0gMCkge1xuICAgIGVuZEluZGV4ID0gcHJvcHMuZGF0YS5sZW5ndGggLSAxO1xuICB9XG4gIGlmIChicnVzaEl0ZW0gJiYgYnJ1c2hJdGVtLnByb3BzKSB7XG4gICAgaWYgKGJydXNoSXRlbS5wcm9wcy5zdGFydEluZGV4ID49IDApIHtcbiAgICAgIHN0YXJ0SW5kZXggPSBicnVzaEl0ZW0ucHJvcHMuc3RhcnRJbmRleDtcbiAgICB9XG4gICAgaWYgKGJydXNoSXRlbS5wcm9wcy5lbmRJbmRleCA+PSAwKSB7XG4gICAgICBlbmRJbmRleCA9IGJydXNoSXRlbS5wcm9wcy5lbmRJbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjaGFydFg6IDAsXG4gICAgY2hhcnRZOiAwLFxuICAgIGRhdGFTdGFydEluZGV4OiBzdGFydEluZGV4LFxuICAgIGRhdGFFbmRJbmRleDogZW5kSW5kZXgsXG4gICAgYWN0aXZlVG9vbHRpcEluZGV4OiAtMSxcbiAgICBpc1Rvb2x0aXBBY3RpdmU6IEJvb2xlYW4oZGVmYXVsdFNob3dUb29sdGlwKVxuICB9O1xufTtcbnZhciBoYXNHcmFwaGljYWxCYXJJdGVtID0gZnVuY3Rpb24gaGFzR3JhcGhpY2FsQmFySXRlbShncmFwaGljYWxJdGVtcykge1xuICBpZiAoIWdyYXBoaWNhbEl0ZW1zIHx8ICFncmFwaGljYWxJdGVtcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdyYXBoaWNhbEl0ZW1zLnNvbWUoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgbmFtZSA9IGdldERpc3BsYXlOYW1lKGl0ZW0gJiYgaXRlbS50eXBlKTtcbiAgICByZXR1cm4gbmFtZSAmJiBuYW1lLmluZGV4T2YoJ0JhcicpID49IDA7XG4gIH0pO1xufTtcbnZhciBnZXRBeGlzTmFtZUJ5TGF5b3V0ID0gZnVuY3Rpb24gZ2V0QXhpc05hbWVCeUxheW91dChsYXlvdXQpIHtcbiAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG51bWVyaWNBeGlzTmFtZTogJ3lBeGlzJyxcbiAgICAgIGNhdGVBeGlzTmFtZTogJ3hBeGlzJ1xuICAgIH07XG4gIH1cbiAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgIHJldHVybiB7XG4gICAgICBudW1lcmljQXhpc05hbWU6ICd4QXhpcycsXG4gICAgICBjYXRlQXhpc05hbWU6ICd5QXhpcydcbiAgICB9O1xuICB9XG4gIGlmIChsYXlvdXQgPT09ICdjZW50cmljJykge1xuICAgIHJldHVybiB7XG4gICAgICBudW1lcmljQXhpc05hbWU6ICdyYWRpdXNBeGlzJyxcbiAgICAgIGNhdGVBeGlzTmFtZTogJ2FuZ2xlQXhpcydcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbnVtZXJpY0F4aXNOYW1lOiAnYW5nbGVBeGlzJyxcbiAgICBjYXRlQXhpc05hbWU6ICdyYWRpdXNBeGlzJ1xuICB9O1xufTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIG9mZnNldCBvZiBtYWluIHBhcnQgaW4gdGhlIHN2ZyBlbGVtZW50XG4gKiBAcGFyYW0gIHtPYmplY3R9IHBhcmFtcy5wcm9wcyAgICAgICAgICBMYXRlc3QgcHJvcHNcbiAqIEBwYXJhbSAge0FycmF5fSAgcGFyYW1zLmdyYXBoaWNhbEl0ZW1zIFRoZSBpbnN0YW5jZXMgb2YgaXRlbVxuICogQHBhcmFtICB7T2JqZWN0fSBwYXJhbXMueEF4aXNNYXAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb24gb2YgeC1heGlzXG4gKiBAcGFyYW0gIHtPYmplY3R9IHBhcmFtcy55QXhpc01hcCAgICAgICBUaGUgY29uZmlndXJhdGlvbiBvZiB5LWF4aXNcbiAqIEBwYXJhbSAge09iamVjdH0gcHJldkxlZ2VuZEJCb3ggICAgICAgIFRoZSBib3VuZGFyeSBib3ggb2YgbGVnZW5kXG4gKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBvZmZzZXQgb2YgbWFpbiBwYXJ0IGluIHRoZSBzdmcgZWxlbWVudFxuICovXG52YXIgY2FsY3VsYXRlT2Zmc2V0ID0gZnVuY3Rpb24gY2FsY3VsYXRlT2Zmc2V0KF9yZWY1LCBwcmV2TGVnZW5kQkJveCkge1xuICB2YXIgcHJvcHMgPSBfcmVmNS5wcm9wcyxcbiAgICBncmFwaGljYWxJdGVtcyA9IF9yZWY1LmdyYXBoaWNhbEl0ZW1zLFxuICAgIF9yZWY1JHhBeGlzTWFwID0gX3JlZjUueEF4aXNNYXAsXG4gICAgeEF4aXNNYXAgPSBfcmVmNSR4QXhpc01hcCA9PT0gdm9pZCAwID8ge30gOiBfcmVmNSR4QXhpc01hcCxcbiAgICBfcmVmNSR5QXhpc01hcCA9IF9yZWY1LnlBeGlzTWFwLFxuICAgIHlBeGlzTWFwID0gX3JlZjUkeUF4aXNNYXAgPT09IHZvaWQgMCA/IHt9IDogX3JlZjUkeUF4aXNNYXA7XG4gIHZhciB3aWR0aCA9IHByb3BzLndpZHRoLFxuICAgIGhlaWdodCA9IHByb3BzLmhlaWdodCxcbiAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICB2YXIgbWFyZ2luID0gcHJvcHMubWFyZ2luIHx8IHt9O1xuICB2YXIgYnJ1c2hJdGVtID0gZmluZENoaWxkQnlUeXBlKGNoaWxkcmVuLCBCcnVzaCk7XG4gIHZhciBsZWdlbmRJdGVtID0gZmluZENoaWxkQnlUeXBlKGNoaWxkcmVuLCBMZWdlbmQpO1xuICB2YXIgb2Zmc2V0SCA9IE9iamVjdC5rZXlzKHlBeGlzTWFwKS5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgaWQpIHtcbiAgICB2YXIgZW50cnkgPSB5QXhpc01hcFtpZF07XG4gICAgdmFyIG9yaWVudGF0aW9uID0gZW50cnkub3JpZW50YXRpb247XG4gICAgaWYgKCFlbnRyeS5taXJyb3IgJiYgIWVudHJ5LmhpZGUpIHtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3VsdCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIG9yaWVudGF0aW9uLCByZXN1bHRbb3JpZW50YXRpb25dICsgZW50cnkud2lkdGgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwge1xuICAgIGxlZnQ6IG1hcmdpbi5sZWZ0IHx8IDAsXG4gICAgcmlnaHQ6IG1hcmdpbi5yaWdodCB8fCAwXG4gIH0pO1xuICB2YXIgb2Zmc2V0ViA9IE9iamVjdC5rZXlzKHhBeGlzTWFwKS5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgaWQpIHtcbiAgICB2YXIgZW50cnkgPSB4QXhpc01hcFtpZF07XG4gICAgdmFyIG9yaWVudGF0aW9uID0gZW50cnkub3JpZW50YXRpb247XG4gICAgaWYgKCFlbnRyeS5taXJyb3IgJiYgIWVudHJ5LmhpZGUpIHtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3VsdCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIG9yaWVudGF0aW9uLCBnZXQocmVzdWx0LCBcIlwiLmNvbmNhdChvcmllbnRhdGlvbikpICsgZW50cnkuaGVpZ2h0KSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIHtcbiAgICB0b3A6IG1hcmdpbi50b3AgfHwgMCxcbiAgICBib3R0b206IG1hcmdpbi5ib3R0b20gfHwgMFxuICB9KTtcbiAgdmFyIG9mZnNldCA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb2Zmc2V0ViksIG9mZnNldEgpO1xuICB2YXIgYnJ1c2hCb3R0b20gPSBvZmZzZXQuYm90dG9tO1xuICBpZiAoYnJ1c2hJdGVtKSB7XG4gICAgb2Zmc2V0LmJvdHRvbSArPSBicnVzaEl0ZW0ucHJvcHMuaGVpZ2h0IHx8IEJydXNoLmRlZmF1bHRQcm9wcy5oZWlnaHQ7XG4gIH1cbiAgaWYgKGxlZ2VuZEl0ZW0gJiYgcHJldkxlZ2VuZEJCb3gpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1hcmdpbiBpcyBvcHRpb25hbCBpbiBwcm9wcyBidXQgcmVxdWlyZWQgaW4gYXBwZW5kT2Zmc2V0T2ZMZWdlbmRcbiAgICBvZmZzZXQgPSBhcHBlbmRPZmZzZXRPZkxlZ2VuZChvZmZzZXQsIGdyYXBoaWNhbEl0ZW1zLCBwcm9wcywgcHJldkxlZ2VuZEJCb3gpO1xuICB9XG4gIHZhciBvZmZzZXRXaWR0aCA9IHdpZHRoIC0gb2Zmc2V0LmxlZnQgLSBvZmZzZXQucmlnaHQ7XG4gIHZhciBvZmZzZXRIZWlnaHQgPSBoZWlnaHQgLSBvZmZzZXQudG9wIC0gb2Zmc2V0LmJvdHRvbTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgYnJ1c2hCb3R0b206IGJydXNoQm90dG9tXG4gIH0sIG9mZnNldCksIHt9LCB7XG4gICAgLy8gbmV2ZXIgcmV0dXJuIG5lZ2F0aXZlIHZhbHVlcyBmb3IgaGVpZ2h0IGFuZCB3aWR0aFxuICAgIHdpZHRoOiBNYXRoLm1heChvZmZzZXRXaWR0aCwgMCksXG4gICAgaGVpZ2h0OiBNYXRoLm1heChvZmZzZXRIZWlnaHQsIDApXG4gIH0pO1xufTtcbi8vIERldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgYXhpcywgdXNlZCBmb3IgY2FsY3VsYXRpb24gb2YgcmVsYXRpdmUgYmFyIHNpemVzXG52YXIgZ2V0Q2FydGVzaWFuQXhpc1NpemUgPSBmdW5jdGlvbiBnZXRDYXJ0ZXNpYW5BeGlzU2l6ZShheGlzT2JqLCBheGlzTmFtZSkge1xuICBpZiAoYXhpc05hbWUgPT09ICd4QXhpcycpIHtcbiAgICByZXR1cm4gYXhpc09ialtheGlzTmFtZV0ud2lkdGg7XG4gIH1cbiAgaWYgKGF4aXNOYW1lID09PSAneUF4aXMnKSB7XG4gICAgcmV0dXJuIGF4aXNPYmpbYXhpc05hbWVdLmhlaWdodDtcbiAgfVxuICAvLyBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBCYXIgY2hhcnRzIChpLmUuIGNoYXJ0cyB3aXRoIGNhcnRlc2lhbiBheGVzKSwgc28gd2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlXG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuZXhwb3J0IHZhciBnZW5lcmF0ZUNhdGVnb3JpY2FsQ2hhcnQgPSBmdW5jdGlvbiBnZW5lcmF0ZUNhdGVnb3JpY2FsQ2hhcnQoX3JlZjYpIHtcbiAgdmFyIGNoYXJ0TmFtZSA9IF9yZWY2LmNoYXJ0TmFtZSxcbiAgICBHcmFwaGljYWxDaGlsZCA9IF9yZWY2LkdyYXBoaWNhbENoaWxkLFxuICAgIF9yZWY2JGRlZmF1bHRUb29sdGlwRSA9IF9yZWY2LmRlZmF1bHRUb29sdGlwRXZlbnRUeXBlLFxuICAgIGRlZmF1bHRUb29sdGlwRXZlbnRUeXBlID0gX3JlZjYkZGVmYXVsdFRvb2x0aXBFID09PSB2b2lkIDAgPyAnYXhpcycgOiBfcmVmNiRkZWZhdWx0VG9vbHRpcEUsXG4gICAgX3JlZjYkdmFsaWRhdGVUb29sdGlwID0gX3JlZjYudmFsaWRhdGVUb29sdGlwRXZlbnRUeXBlcyxcbiAgICB2YWxpZGF0ZVRvb2x0aXBFdmVudFR5cGVzID0gX3JlZjYkdmFsaWRhdGVUb29sdGlwID09PSB2b2lkIDAgPyBbJ2F4aXMnXSA6IF9yZWY2JHZhbGlkYXRlVG9vbHRpcCxcbiAgICBheGlzQ29tcG9uZW50cyA9IF9yZWY2LmF4aXNDb21wb25lbnRzLFxuICAgIGxlZ2VuZENvbnRlbnQgPSBfcmVmNi5sZWdlbmRDb250ZW50LFxuICAgIGZvcm1hdEF4aXNNYXAgPSBfcmVmNi5mb3JtYXRBeGlzTWFwLFxuICAgIGRlZmF1bHRQcm9wcyA9IF9yZWY2LmRlZmF1bHRQcm9wcztcbiAgdmFyIGdldEZvcm1hdEl0ZW1zID0gZnVuY3Rpb24gZ2V0Rm9ybWF0SXRlbXMocHJvcHMsIGN1cnJlbnRTdGF0ZSkge1xuICAgIHZhciBncmFwaGljYWxJdGVtcyA9IGN1cnJlbnRTdGF0ZS5ncmFwaGljYWxJdGVtcyxcbiAgICAgIHN0YWNrR3JvdXBzID0gY3VycmVudFN0YXRlLnN0YWNrR3JvdXBzLFxuICAgICAgb2Zmc2V0ID0gY3VycmVudFN0YXRlLm9mZnNldCxcbiAgICAgIHVwZGF0ZUlkID0gY3VycmVudFN0YXRlLnVwZGF0ZUlkLFxuICAgICAgZGF0YVN0YXJ0SW5kZXggPSBjdXJyZW50U3RhdGUuZGF0YVN0YXJ0SW5kZXgsXG4gICAgICBkYXRhRW5kSW5kZXggPSBjdXJyZW50U3RhdGUuZGF0YUVuZEluZGV4O1xuICAgIHZhciBiYXJTaXplID0gcHJvcHMuYmFyU2l6ZSxcbiAgICAgIGxheW91dCA9IHByb3BzLmxheW91dCxcbiAgICAgIGJhckdhcCA9IHByb3BzLmJhckdhcCxcbiAgICAgIGJhckNhdGVnb3J5R2FwID0gcHJvcHMuYmFyQ2F0ZWdvcnlHYXAsXG4gICAgICBnbG9iYWxNYXhCYXJTaXplID0gcHJvcHMubWF4QmFyU2l6ZTtcbiAgICB2YXIgX2dldEF4aXNOYW1lQnlMYXlvdXQgPSBnZXRBeGlzTmFtZUJ5TGF5b3V0KGxheW91dCksXG4gICAgICBudW1lcmljQXhpc05hbWUgPSBfZ2V0QXhpc05hbWVCeUxheW91dC5udW1lcmljQXhpc05hbWUsXG4gICAgICBjYXRlQXhpc05hbWUgPSBfZ2V0QXhpc05hbWVCeUxheW91dC5jYXRlQXhpc05hbWU7XG4gICAgdmFyIGhhc0JhciA9IGhhc0dyYXBoaWNhbEJhckl0ZW0oZ3JhcGhpY2FsSXRlbXMpO1xuICAgIHZhciBmb3JtYXR0ZWRJdGVtcyA9IFtdO1xuICAgIGdyYXBoaWNhbEl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICB2YXIgZGlzcGxheWVkRGF0YSA9IGdldERpc3BsYXllZERhdGEocHJvcHMuZGF0YSwge1xuICAgICAgICBncmFwaGljYWxJdGVtczogW2l0ZW1dLFxuICAgICAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgIGRhdGFFbmRJbmRleDogZGF0YUVuZEluZGV4XG4gICAgICB9KTtcbiAgICAgIHZhciBpdGVtUHJvcHMgPSBpdGVtLnR5cGUuZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW0udHlwZS5kZWZhdWx0UHJvcHMpLCBpdGVtLnByb3BzKSA6IGl0ZW0ucHJvcHM7XG4gICAgICB2YXIgZGF0YUtleSA9IGl0ZW1Qcm9wcy5kYXRhS2V5LFxuICAgICAgICBjaGlsZE1heEJhclNpemUgPSBpdGVtUHJvcHMubWF4QmFyU2l6ZTtcbiAgICAgIC8vIGF4aXNJZCBvZiB0aGUgbnVtZXJpY2FsIGF4aXNcbiAgICAgIHZhciBudW1lcmljQXhpc0lkID0gaXRlbVByb3BzW1wiXCIuY29uY2F0KG51bWVyaWNBeGlzTmFtZSwgXCJJZFwiKV07XG4gICAgICAvLyBheGlzSWQgb2YgdGhlIGNhdGVnb3JpY2FsIGF4aXNcbiAgICAgIHZhciBjYXRlQXhpc0lkID0gaXRlbVByb3BzW1wiXCIuY29uY2F0KGNhdGVBeGlzTmFtZSwgXCJJZFwiKV07XG4gICAgICB2YXIgYXhpc09iakluaXRpYWxWYWx1ZSA9IHt9O1xuICAgICAgdmFyIGF4aXNPYmogPSBheGlzQ29tcG9uZW50cy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZW50cnkpIHtcbiAgICAgICAgdmFyIF9pdGVtJHR5cGUkZGlzcGxheU5hbSwgX2l0ZW0kdHlwZTtcbiAgICAgICAgLy8gbWFwIG9mIGF4aXNJZCB0byBheGlzIGZvciBhIHNwZWNpZmljIGF4aXMgdHlwZVxuICAgICAgICB2YXIgYXhpc01hcCA9IGN1cnJlbnRTdGF0ZVtcIlwiLmNvbmNhdChlbnRyeS5heGlzVHlwZSwgXCJNYXBcIildO1xuICAgICAgICAvLyBheGlzSWQgb2YgYXhpcyB3ZSBhcmUgY3VycmVudGx5IGNvbXB1dGluZ1xuICAgICAgICB2YXIgaWQgPSBpdGVtUHJvcHNbXCJcIi5jb25jYXQoZW50cnkuYXhpc1R5cGUsIFwiSWRcIildO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0ZWxsIHRoZSB1c2VyIGluIGRldiBtb2RlIHRoYXQgdGhlaXIgY29uZmlndXJhdGlvbiBpcyBpbmNvcnJlY3QgaWYgd2UgY2Fubm90IGZpbmQgYSBtYXRjaCBiZXR3ZWVuXG4gICAgICAgICAqIGF4aXNJZCBvbiB0aGUgY2hhcnQgYW5kIGF4aXNJZCBvbiB0aGUgYXhpcy4gekF4aXMgZG9lcyBub3QgZ2V0IHBhc3NlZCBpbiB0aGUgbWFwIGZvciBDb21wb3NlZENoYXJ0LFxuICAgICAgICAgKiBsZWF2ZSBpdCBvdXQgb2YgdGhlIGNoZWNrIGZvciBub3cuXG4gICAgICAgICAqL1xuICAgICAgICAhKGF4aXNNYXAgJiYgYXhpc01hcFtpZF0gfHwgZW50cnkuYXhpc1R5cGUgPT09ICd6QXhpcycpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBcIlNwZWNpZnlpbmcgYShuKSBcIi5jb25jYXQoZW50cnkuYXhpc1R5cGUsIFwiSWQgcmVxdWlyZXMgYSBjb3JyZXNwb25kaW5nIFwiKS5jb25jYXQoZW50cnkuYXhpc1R5cGVcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB3ZSBzaG91bGQgc3RvcCByZWFkaW5nIGRhdGEgZnJvbSBSZWFjdEVsZW1lbnRzXG4gICAgICAgICwgXCJJZCBvbiB0aGUgdGFyZ2V0ZWQgZ3JhcGhpY2FsIGNvbXBvbmVudCBcIikuY29uY2F0KChfaXRlbSR0eXBlJGRpc3BsYXlOYW0gPSBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCB8fCAoX2l0ZW0kdHlwZSA9IGl0ZW0udHlwZSkgPT09IG51bGwgfHwgX2l0ZW0kdHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2l0ZW0kdHlwZS5kaXNwbGF5TmFtZSkgIT09IG51bGwgJiYgX2l0ZW0kdHlwZSRkaXNwbGF5TmFtICE9PSB2b2lkIDAgPyBfaXRlbSR0eXBlJGRpc3BsYXlOYW0gOiAnJykpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAgICAgICAvLyB0aGUgYXhpcyB3ZSBhcmUgY3VycmVudGx5IGZvcm1hdHRpbmdcbiAgICAgICAgdmFyIGF4aXMgPSBheGlzTWFwW2lkXTtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoe30sIGVudHJ5LmF4aXNUeXBlLCBheGlzKSwgXCJcIi5jb25jYXQoZW50cnkuYXhpc1R5cGUsIFwiVGlja3NcIiksIGdldFRpY2tzT2ZBeGlzKGF4aXMpKSk7XG4gICAgICB9LCBheGlzT2JqSW5pdGlhbFZhbHVlKTtcbiAgICAgIHZhciBjYXRlQXhpcyA9IGF4aXNPYmpbY2F0ZUF4aXNOYW1lXTtcbiAgICAgIHZhciBjYXRlVGlja3MgPSBheGlzT2JqW1wiXCIuY29uY2F0KGNhdGVBeGlzTmFtZSwgXCJUaWNrc1wiKV07XG4gICAgICB2YXIgc3RhY2tlZERhdGEgPSBzdGFja0dyb3VwcyAmJiBzdGFja0dyb3Vwc1tudW1lcmljQXhpc0lkXSAmJiBzdGFja0dyb3Vwc1tudW1lcmljQXhpc0lkXS5oYXNTdGFjayAmJiBnZXRTdGFja2VkRGF0YU9mSXRlbShpdGVtLCBzdGFja0dyb3Vwc1tudW1lcmljQXhpc0lkXS5zdGFja0dyb3Vwcyk7XG4gICAgICB2YXIgaXRlbUlzQmFyID0gZ2V0RGlzcGxheU5hbWUoaXRlbS50eXBlKS5pbmRleE9mKCdCYXInKSA+PSAwO1xuICAgICAgdmFyIGJhbmRTaXplID0gZ2V0QmFuZFNpemVPZkF4aXMoY2F0ZUF4aXMsIGNhdGVUaWNrcyk7XG4gICAgICB2YXIgYmFyUG9zaXRpb24gPSBbXTtcbiAgICAgIHZhciBzaXplTGlzdCA9IGhhc0JhciAmJiBnZXRCYXJTaXplTGlzdCh7XG4gICAgICAgIGJhclNpemU6IGJhclNpemUsXG4gICAgICAgIHN0YWNrR3JvdXBzOiBzdGFja0dyb3VwcyxcbiAgICAgICAgdG90YWxTaXplOiBnZXRDYXJ0ZXNpYW5BeGlzU2l6ZShheGlzT2JqLCBjYXRlQXhpc05hbWUpXG4gICAgICB9KTtcbiAgICAgIGlmIChpdGVtSXNCYXIpIHtcbiAgICAgICAgdmFyIF9yZWY3LCBfZ2V0QmFuZFNpemVPZkF4aXM7XG4gICAgICAgIC8vIElmIGl0IGlzIGJhciwgY2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiBiYXJcbiAgICAgICAgdmFyIG1heEJhclNpemUgPSBpc05pbChjaGlsZE1heEJhclNpemUpID8gZ2xvYmFsTWF4QmFyU2l6ZSA6IGNoaWxkTWF4QmFyU2l6ZTtcbiAgICAgICAgdmFyIGJhckJhbmRTaXplID0gKF9yZWY3ID0gKF9nZXRCYW5kU2l6ZU9mQXhpcyA9IGdldEJhbmRTaXplT2ZBeGlzKGNhdGVBeGlzLCBjYXRlVGlja3MsIHRydWUpKSAhPT0gbnVsbCAmJiBfZ2V0QmFuZFNpemVPZkF4aXMgIT09IHZvaWQgMCA/IF9nZXRCYW5kU2l6ZU9mQXhpcyA6IG1heEJhclNpemUpICE9PSBudWxsICYmIF9yZWY3ICE9PSB2b2lkIDAgPyBfcmVmNyA6IDA7XG4gICAgICAgIGJhclBvc2l0aW9uID0gZ2V0QmFyUG9zaXRpb24oe1xuICAgICAgICAgIGJhckdhcDogYmFyR2FwLFxuICAgICAgICAgIGJhckNhdGVnb3J5R2FwOiBiYXJDYXRlZ29yeUdhcCxcbiAgICAgICAgICBiYW5kU2l6ZTogYmFyQmFuZFNpemUgIT09IGJhbmRTaXplID8gYmFyQmFuZFNpemUgOiBiYW5kU2l6ZSxcbiAgICAgICAgICBzaXplTGlzdDogc2l6ZUxpc3RbY2F0ZUF4aXNJZF0sXG4gICAgICAgICAgbWF4QmFyU2l6ZTogbWF4QmFyU2l6ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGJhckJhbmRTaXplICE9PSBiYW5kU2l6ZSkge1xuICAgICAgICAgIGJhclBvc2l0aW9uID0gYmFyUG9zaXRpb24ubWFwKGZ1bmN0aW9uIChwb3MpIHtcbiAgICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHBvcyksIHt9LCB7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHBvcy5wb3NpdGlvbiksIHt9LCB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBwb3MucG9zaXRpb24ub2Zmc2V0IC0gYmFyQmFuZFNpemUgLyAyXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB3ZSBzaG91bGQgc3RvcCByZWFkaW5nIGRhdGEgZnJvbSBSZWFjdEVsZW1lbnRzXG4gICAgICB2YXIgY29tcG9zZWRGbiA9IGl0ZW0gJiYgaXRlbS50eXBlICYmIGl0ZW0udHlwZS5nZXRDb21wb3NlZERhdGE7XG4gICAgICBpZiAoY29tcG9zZWRGbikge1xuICAgICAgICBmb3JtYXR0ZWRJdGVtcy5wdXNoKHtcbiAgICAgICAgICBwcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBjb21wb3NlZEZuKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXhpc09iaiksIHt9LCB7XG4gICAgICAgICAgICBkaXNwbGF5ZWREYXRhOiBkaXNwbGF5ZWREYXRhLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgZGF0YUtleTogZGF0YUtleSxcbiAgICAgICAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICAgICAgICBiYW5kU2l6ZTogYmFuZFNpemUsXG4gICAgICAgICAgICBiYXJQb3NpdGlvbjogYmFyUG9zaXRpb24sXG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgIHN0YWNrZWREYXRhOiBzdGFja2VkRGF0YSxcbiAgICAgICAgICAgIGxheW91dDogbGF5b3V0LFxuICAgICAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgICAgICAgICB9KSkpLCB7fSwgX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoe1xuICAgICAgICAgICAga2V5OiBpdGVtLmtleSB8fCBcIml0ZW0tXCIuY29uY2F0KGluZGV4KVxuICAgICAgICAgIH0sIG51bWVyaWNBeGlzTmFtZSwgYXhpc09ialtudW1lcmljQXhpc05hbWVdKSwgY2F0ZUF4aXNOYW1lLCBheGlzT2JqW2NhdGVBeGlzTmFtZV0pLCBcImFuaW1hdGlvbklkXCIsIHVwZGF0ZUlkKSksXG4gICAgICAgICAgY2hpbGRJbmRleDogcGFyc2VDaGlsZEluZGV4KGl0ZW0sIHByb3BzLmNoaWxkcmVuKSxcbiAgICAgICAgICBpdGVtOiBpdGVtXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmb3JtYXR0ZWRJdGVtcztcbiAgfTtcblxuICAvKipcbiAgICogVGhlIEF4aXNNYXBzIGFyZSBleHBlbnNpdmUgdG8gcmVuZGVyIG9uIGxhcmdlIGRhdGEgc2V0c1xuICAgKiBzbyBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHN0b3JlIHRoZW0gaW4gc3RhdGUgYW5kIG9ubHkgdXBkYXRlIHRoZW0gd2hlbiBuZWNlc3NhcnlcbiAgICogdGhleSBhcmUgZGVwZW5kZW50IHVwb24gdGhlIHN0YXJ0IGFuZCBlbmQgaW5kZXggb2ZcbiAgICogdGhlIGJydXNoIHNvIGl0J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIF9hZnRlcl9cbiAgICogdGhlIHN0YXRlIGlzIHVwZGF0ZWQgd2l0aCBhbnkgbmV3IHN0YXJ0L2VuZCBpbmRpY2VzXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAgICAgICAgICBUaGUgcHJvcHMgb2JqZWN0IHRvIGJlIHVzZWQgZm9yIHVwZGF0aW5nIHRoZSBheGlzbWFwc1xuICAgKiBkYXRhU3RhcnRJbmRleDogVGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBkYXRhIHNlcmllcyB3aGVuIGEgYnJ1c2ggaXMgYXBwbGllZFxuICAgKiBkYXRhRW5kSW5kZXg6IFRoZSBlbmQgaW5kZXggb2YgdGhlIGRhdGEgc2VyaWVzIHdoZW4gYSBicnVzaCBpcyBhcHBsaWVkXG4gICAqIHVwZGF0ZUlkOiBUaGUgdXBkYXRlIGlkXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcmV2U3RhdGUgICAgICBQcmV2IHN0YXRlXG4gICAqIEByZXR1cm4ge09iamVjdH0gc3RhdGUgTmV3IHN0YXRlIHRvIHNldFxuICAgKi9cbiAgdmFyIHVwZGF0ZVN0YXRlT2ZBeGlzTWFwc09mZnNldEFuZFN0YWNrR3JvdXBzID0gZnVuY3Rpb24gdXBkYXRlU3RhdGVPZkF4aXNNYXBzT2Zmc2V0QW5kU3RhY2tHcm91cHMoX3JlZjgsIHByZXZTdGF0ZSkge1xuICAgIHZhciBwcm9wcyA9IF9yZWY4LnByb3BzLFxuICAgICAgZGF0YVN0YXJ0SW5kZXggPSBfcmVmOC5kYXRhU3RhcnRJbmRleCxcbiAgICAgIGRhdGFFbmRJbmRleCA9IF9yZWY4LmRhdGFFbmRJbmRleCxcbiAgICAgIHVwZGF0ZUlkID0gX3JlZjgudXBkYXRlSWQ7XG4gICAgaWYgKCF2YWxpZGF0ZVdpZHRoSGVpZ2h0KHtcbiAgICAgIHByb3BzOiBwcm9wc1xuICAgIH0pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBsYXlvdXQgPSBwcm9wcy5sYXlvdXQsXG4gICAgICBzdGFja09mZnNldCA9IHByb3BzLnN0YWNrT2Zmc2V0LFxuICAgICAgZGF0YSA9IHByb3BzLmRhdGEsXG4gICAgICByZXZlcnNlU3RhY2tPcmRlciA9IHByb3BzLnJldmVyc2VTdGFja09yZGVyO1xuICAgIHZhciBfZ2V0QXhpc05hbWVCeUxheW91dDIgPSBnZXRBeGlzTmFtZUJ5TGF5b3V0KGxheW91dCksXG4gICAgICBudW1lcmljQXhpc05hbWUgPSBfZ2V0QXhpc05hbWVCeUxheW91dDIubnVtZXJpY0F4aXNOYW1lLFxuICAgICAgY2F0ZUF4aXNOYW1lID0gX2dldEF4aXNOYW1lQnlMYXlvdXQyLmNhdGVBeGlzTmFtZTtcbiAgICB2YXIgZ3JhcGhpY2FsSXRlbXMgPSBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCBHcmFwaGljYWxDaGlsZCk7XG4gICAgdmFyIHN0YWNrR3JvdXBzID0gZ2V0U3RhY2tHcm91cHNCeUF4aXNJZChkYXRhLCBncmFwaGljYWxJdGVtcywgXCJcIi5jb25jYXQobnVtZXJpY0F4aXNOYW1lLCBcIklkXCIpLCBcIlwiLmNvbmNhdChjYXRlQXhpc05hbWUsIFwiSWRcIiksIHN0YWNrT2Zmc2V0LCByZXZlcnNlU3RhY2tPcmRlcik7XG4gICAgdmFyIGF4aXNPYmogPSBheGlzQ29tcG9uZW50cy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZW50cnkpIHtcbiAgICAgIHZhciBuYW1lID0gXCJcIi5jb25jYXQoZW50cnkuYXhpc1R5cGUsIFwiTWFwXCIpO1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgbmFtZSwgZ2V0QXhpc01hcChwcm9wcywgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgIGdyYXBoaWNhbEl0ZW1zOiBncmFwaGljYWxJdGVtcyxcbiAgICAgICAgc3RhY2tHcm91cHM6IGVudHJ5LmF4aXNUeXBlID09PSBudW1lcmljQXhpc05hbWUgJiYgc3RhY2tHcm91cHMsXG4gICAgICAgIGRhdGFTdGFydEluZGV4OiBkYXRhU3RhcnRJbmRleCxcbiAgICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgICAgIH0pKSkpO1xuICAgIH0sIHt9KTtcbiAgICB2YXIgb2Zmc2V0ID0gY2FsY3VsYXRlT2Zmc2V0KF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXhpc09iaiksIHt9LCB7XG4gICAgICBwcm9wczogcHJvcHMsXG4gICAgICBncmFwaGljYWxJdGVtczogZ3JhcGhpY2FsSXRlbXNcbiAgICB9KSwgcHJldlN0YXRlID09PSBudWxsIHx8IHByZXZTdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJldlN0YXRlLmxlZ2VuZEJCb3gpO1xuICAgIE9iamVjdC5rZXlzKGF4aXNPYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgYXhpc09ialtrZXldID0gZm9ybWF0QXhpc01hcChwcm9wcywgYXhpc09ialtrZXldLCBvZmZzZXQsIGtleS5yZXBsYWNlKCdNYXAnLCAnJyksIGNoYXJ0TmFtZSk7XG4gICAgfSk7XG4gICAgdmFyIGNhdGVBeGlzTWFwID0gYXhpc09ialtcIlwiLmNvbmNhdChjYXRlQXhpc05hbWUsIFwiTWFwXCIpXTtcbiAgICB2YXIgdGlja3NPYmogPSB0b29sdGlwVGlja3NHZW5lcmF0b3IoY2F0ZUF4aXNNYXApO1xuICAgIHZhciBmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyA9IGdldEZvcm1hdEl0ZW1zKHByb3BzLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXNPYmopLCB7fSwge1xuICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXgsXG4gICAgICB1cGRhdGVJZDogdXBkYXRlSWQsXG4gICAgICBncmFwaGljYWxJdGVtczogZ3JhcGhpY2FsSXRlbXMsXG4gICAgICBzdGFja0dyb3Vwczogc3RhY2tHcm91cHMsXG4gICAgICBvZmZzZXQ6IG9mZnNldFxuICAgIH0pKTtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgIGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zOiBmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyxcbiAgICAgIGdyYXBoaWNhbEl0ZW1zOiBncmFwaGljYWxJdGVtcyxcbiAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgc3RhY2tHcm91cHM6IHN0YWNrR3JvdXBzXG4gICAgfSwgdGlja3NPYmopLCBheGlzT2JqKTtcbiAgfTtcbiAgdmFyIENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gICAgZnVuY3Rpb24gQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIoX3Byb3BzKSB7XG4gICAgICB2YXIgX3Byb3BzJGlkLCBfcHJvcHMkdGhyb3R0bGVEZWxheTtcbiAgICAgIHZhciBfdGhpcztcbiAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYXRlZ29yaWNhbENoYXJ0V3JhcHBlcik7XG4gICAgICBfdGhpcyA9IF9jYWxsU3VwZXIodGhpcywgQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIsIFtfcHJvcHNdKTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJldmVudEVtaXR0ZXJTeW1ib2xcIiwgU3ltYm9sKCdyZWNoYXJ0c0V2ZW50RW1pdHRlcicpKTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJhY2Nlc3NpYmlsaXR5TWFuYWdlclwiLCBuZXcgQWNjZXNzaWJpbGl0eU1hbmFnZXIoKSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlTGVnZW5kQkJveFVwZGF0ZVwiLCBmdW5jdGlvbiAoYm94KSB7XG4gICAgICAgIGlmIChib3gpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkc3RhdGUgPSBfdGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGRhdGFTdGFydEluZGV4ID0gX3RoaXMkc3RhdGUuZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBkYXRhRW5kSW5kZXggPSBfdGhpcyRzdGF0ZS5kYXRhRW5kSW5kZXgsXG4gICAgICAgICAgICB1cGRhdGVJZCA9IF90aGlzJHN0YXRlLnVwZGF0ZUlkO1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgbGVnZW5kQkJveDogYm94XG4gICAgICAgICAgfSwgdXBkYXRlU3RhdGVPZkF4aXNNYXBzT2Zmc2V0QW5kU3RhY2tHcm91cHMoe1xuICAgICAgICAgICAgcHJvcHM6IF90aGlzLnByb3BzLFxuICAgICAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXgsXG4gICAgICAgICAgICB1cGRhdGVJZDogdXBkYXRlSWRcbiAgICAgICAgICB9LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF90aGlzLnN0YXRlKSwge30sIHtcbiAgICAgICAgICAgIGxlZ2VuZEJCb3g6IGJveFxuICAgICAgICAgIH0pKSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVSZWNlaXZlU3luY0V2ZW50XCIsIGZ1bmN0aW9uIChjSWQsIGRhdGEsIGVtaXR0ZXIpIHtcbiAgICAgICAgaWYgKF90aGlzLnByb3BzLnN5bmNJZCA9PT0gY0lkKSB7XG4gICAgICAgICAgaWYgKGVtaXR0ZXIgPT09IF90aGlzLmV2ZW50RW1pdHRlclN5bWJvbCAmJiB0eXBlb2YgX3RoaXMucHJvcHMuc3luY01ldGhvZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfdGhpcy5hcHBseVN5bmNFdmVudChkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlQnJ1c2hDaGFuZ2VcIiwgZnVuY3Rpb24gKF9yZWY5KSB7XG4gICAgICAgIHZhciBzdGFydEluZGV4ID0gX3JlZjkuc3RhcnRJbmRleCxcbiAgICAgICAgICBlbmRJbmRleCA9IF9yZWY5LmVuZEluZGV4O1xuICAgICAgICAvLyBPbmx5IHRyaWdnZXIgY2hhbmdlcyBpZiB0aGUgZXh0ZW50cyBvZiB0aGUgYnJ1c2ggaGF2ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgICAgIGlmIChzdGFydEluZGV4ICE9PSBfdGhpcy5zdGF0ZS5kYXRhU3RhcnRJbmRleCB8fCBlbmRJbmRleCAhPT0gX3RoaXMuc3RhdGUuZGF0YUVuZEluZGV4KSB7XG4gICAgICAgICAgdmFyIHVwZGF0ZUlkID0gX3RoaXMuc3RhdGUudXBkYXRlSWQ7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgICBkYXRhU3RhcnRJbmRleDogc3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgZGF0YUVuZEluZGV4OiBlbmRJbmRleFxuICAgICAgICAgICAgfSwgdXBkYXRlU3RhdGVPZkF4aXNNYXBzT2Zmc2V0QW5kU3RhY2tHcm91cHMoe1xuICAgICAgICAgICAgICBwcm9wczogX3RoaXMucHJvcHMsXG4gICAgICAgICAgICAgIGRhdGFTdGFydEluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgICBkYXRhRW5kSW5kZXg6IGVuZEluZGV4LFxuICAgICAgICAgICAgICB1cGRhdGVJZDogdXBkYXRlSWRcbiAgICAgICAgICAgIH0sIF90aGlzLnN0YXRlKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX3RoaXMudHJpZ2dlclN5bmNFdmVudCh7XG4gICAgICAgICAgICBkYXRhU3RhcnRJbmRleDogc3RhcnRJbmRleCxcbiAgICAgICAgICAgIGRhdGFFbmRJbmRleDogZW5kSW5kZXhcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBoYW5kbGVyIG9mIG1vdXNlIGVudGVyaW5nIGNoYXJ0XG4gICAgICAgKiBAcGFyYW0gIHtPYmplY3R9IGUgICAgICAgICAgICAgIEV2ZW50IG9iamVjdFxuICAgICAgICogQHJldHVybiB7TnVsbH0gICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgKi9cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVNb3VzZUVudGVyXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciBtb3VzZSA9IF90aGlzLmdldE1vdXNlSW5mbyhlKTtcbiAgICAgICAgaWYgKG1vdXNlKSB7XG4gICAgICAgICAgdmFyIF9uZXh0U3RhdGUgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG1vdXNlKSwge30sIHtcbiAgICAgICAgICAgIGlzVG9vbHRpcEFjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKF9uZXh0U3RhdGUpO1xuICAgICAgICAgIF90aGlzLnRyaWdnZXJTeW5jRXZlbnQoX25leHRTdGF0ZSk7XG4gICAgICAgICAgdmFyIG9uTW91c2VFbnRlciA9IF90aGlzLnByb3BzLm9uTW91c2VFbnRlcjtcbiAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvbk1vdXNlRW50ZXIpKSB7XG4gICAgICAgICAgICBvbk1vdXNlRW50ZXIoX25leHRTdGF0ZSwgZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJ0cmlnZ2VyZWRBZnRlck1vdXNlTW92ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgbW91c2UgPSBfdGhpcy5nZXRNb3VzZUluZm8oZSk7XG4gICAgICAgIHZhciBuZXh0U3RhdGUgPSBtb3VzZSA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbW91c2UpLCB7fSwge1xuICAgICAgICAgIGlzVG9vbHRpcEFjdGl2ZTogdHJ1ZVxuICAgICAgICB9KSA6IHtcbiAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmU6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLnNldFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgIF90aGlzLnRyaWdnZXJTeW5jRXZlbnQobmV4dFN0YXRlKTtcbiAgICAgICAgdmFyIG9uTW91c2VNb3ZlID0gX3RoaXMucHJvcHMub25Nb3VzZU1vdmU7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uTW91c2VNb3ZlKSkge1xuICAgICAgICAgIG9uTW91c2VNb3ZlKG5leHRTdGF0ZSwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgaGFuZGxlciBvZiBtb3VzZSBlbnRlcmluZyBhIHNjYXR0ZXJcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBlbCBUaGUgYWN0aXZlIHNjYXR0ZXJcbiAgICAgICAqIEByZXR1cm4ge09iamVjdH0gbm8gcmV0dXJuXG4gICAgICAgKi9cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVJdGVtTW91c2VFbnRlclwiLCBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmU6IHRydWUsXG4gICAgICAgICAgICBhY3RpdmVJdGVtOiBlbCxcbiAgICAgICAgICAgIGFjdGl2ZVBheWxvYWQ6IGVsLnRvb2x0aXBQYXlsb2FkLFxuICAgICAgICAgICAgYWN0aXZlQ29vcmRpbmF0ZTogZWwudG9vbHRpcFBvc2l0aW9uIHx8IHtcbiAgICAgICAgICAgICAgeDogZWwuY3gsXG4gICAgICAgICAgICAgIHk6IGVsLmN5XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGhhbmRsZXIgb2YgbW91c2UgbGVhdmluZyBhIHNjYXR0ZXJcbiAgICAgICAqIEByZXR1cm4ge09iamVjdH0gbm8gcmV0dXJuXG4gICAgICAgKi9cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVJdGVtTW91c2VMZWF2ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNUb29sdGlwQWN0aXZlOiBmYWxzZVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBoYW5kbGVyIG9mIG1vdXNlIG1vdmluZyBpbiBjaGFydFxuICAgICAgICogQHBhcmFtICB7UmVhY3QuTW91c2VFdmVudH0gZSAgICAgICAgRXZlbnQgb2JqZWN0XG4gICAgICAgKiBAcmV0dXJuIHt2b2lkfSBubyByZXR1cm5cbiAgICAgICAqL1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZU1vdXNlTW92ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBlLnBlcnNpc3QoKTtcbiAgICAgICAgX3RoaXMudGhyb3R0bGVUcmlnZ2VyZWRBZnRlck1vdXNlTW92ZShlKTtcbiAgICAgIH0pO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgaGFuZGxlciBpZiBtb3VzZSBsZWF2aW5nIGNoYXJ0XG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gZSBFdmVudCBvYmplY3RcbiAgICAgICAqIEByZXR1cm4ge051bGx9IG5vIHJldHVyblxuICAgICAgICovXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlTW91c2VMZWF2ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBfdGhpcy50aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlLmNhbmNlbCgpO1xuICAgICAgICB2YXIgbmV4dFN0YXRlID0ge1xuICAgICAgICAgIGlzVG9vbHRpcEFjdGl2ZTogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUobmV4dFN0YXRlKTtcbiAgICAgICAgX3RoaXMudHJpZ2dlclN5bmNFdmVudChuZXh0U3RhdGUpO1xuICAgICAgICB2YXIgb25Nb3VzZUxlYXZlID0gX3RoaXMucHJvcHMub25Nb3VzZUxlYXZlO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvbk1vdXNlTGVhdmUpKSB7XG4gICAgICAgICAgb25Nb3VzZUxlYXZlKG5leHRTdGF0ZSwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZU91dGVyRXZlbnRcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIGV2ZW50TmFtZSA9IGdldFJlYWN0RXZlbnRCeVR5cGUoZSk7XG4gICAgICAgIHZhciBldmVudCA9IGdldChfdGhpcy5wcm9wcywgXCJcIi5jb25jYXQoZXZlbnROYW1lKSk7XG4gICAgICAgIGlmIChldmVudE5hbWUgJiYgaXNGdW5jdGlvbihldmVudCkpIHtcbiAgICAgICAgICB2YXIgX21vdXNlO1xuICAgICAgICAgIHZhciBtb3VzZTtcbiAgICAgICAgICBpZiAoLy4qdG91Y2guKi9pLnRlc3QoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgbW91c2UgPSBfdGhpcy5nZXRNb3VzZUluZm8oZS5jaGFuZ2VkVG91Y2hlc1swXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vdXNlID0gX3RoaXMuZ2V0TW91c2VJbmZvKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBldmVudCgoX21vdXNlID0gbW91c2UpICE9PSBudWxsICYmIF9tb3VzZSAhPT0gdm9pZCAwID8gX21vdXNlIDoge30sIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgbW91c2UgPSBfdGhpcy5nZXRNb3VzZUluZm8oZSk7XG4gICAgICAgIGlmIChtb3VzZSkge1xuICAgICAgICAgIHZhciBfbmV4dFN0YXRlMiA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbW91c2UpLCB7fSwge1xuICAgICAgICAgICAgaXNUb29sdGlwQWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoX25leHRTdGF0ZTIpO1xuICAgICAgICAgIF90aGlzLnRyaWdnZXJTeW5jRXZlbnQoX25leHRTdGF0ZTIpO1xuICAgICAgICAgIHZhciBvbkNsaWNrID0gX3RoaXMucHJvcHMub25DbGljaztcbiAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvbkNsaWNrKSkge1xuICAgICAgICAgICAgb25DbGljayhfbmV4dFN0YXRlMiwgZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVNb3VzZURvd25cIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIG9uTW91c2VEb3duID0gX3RoaXMucHJvcHMub25Nb3VzZURvd247XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uTW91c2VEb3duKSkge1xuICAgICAgICAgIHZhciBfbmV4dFN0YXRlMyA9IF90aGlzLmdldE1vdXNlSW5mbyhlKTtcbiAgICAgICAgICBvbk1vdXNlRG93bihfbmV4dFN0YXRlMywgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZU1vdXNlVXBcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIG9uTW91c2VVcCA9IF90aGlzLnByb3BzLm9uTW91c2VVcDtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25Nb3VzZVVwKSkge1xuICAgICAgICAgIHZhciBfbmV4dFN0YXRlNCA9IF90aGlzLmdldE1vdXNlSW5mbyhlKTtcbiAgICAgICAgICBvbk1vdXNlVXAoX25leHRTdGF0ZTQsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVUb3VjaE1vdmVcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKGUuY2hhbmdlZFRvdWNoZXMgIT0gbnVsbCAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBfdGhpcy50aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlKGUuY2hhbmdlZFRvdWNoZXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVUb3VjaFN0YXJ0XCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChlLmNoYW5nZWRUb3VjaGVzICE9IG51bGwgJiYgZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgX3RoaXMuaGFuZGxlTW91c2VEb3duKGUuY2hhbmdlZFRvdWNoZXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVUb3VjaEVuZFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZS5jaGFuZ2VkVG91Y2hlcyAhPSBudWxsICYmIGUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIF90aGlzLmhhbmRsZU1vdXNlVXAoZS5jaGFuZ2VkVG91Y2hlc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZURvdWJsZUNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciBvbkRvdWJsZUNsaWNrID0gX3RoaXMucHJvcHMub25Eb3VibGVDbGljaztcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25Eb3VibGVDbGljaykpIHtcbiAgICAgICAgICB2YXIgX25leHRTdGF0ZTUgPSBfdGhpcy5nZXRNb3VzZUluZm8oZSk7XG4gICAgICAgICAgb25Eb3VibGVDbGljayhfbmV4dFN0YXRlNSwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZUNvbnRleHRNZW51XCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciBvbkNvbnRleHRNZW51ID0gX3RoaXMucHJvcHMub25Db250ZXh0TWVudTtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25Db250ZXh0TWVudSkpIHtcbiAgICAgICAgICB2YXIgX25leHRTdGF0ZTYgPSBfdGhpcy5nZXRNb3VzZUluZm8oZSk7XG4gICAgICAgICAgb25Db250ZXh0TWVudShfbmV4dFN0YXRlNiwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInRyaWdnZXJTeW5jRXZlbnRcIiwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgaWYgKF90aGlzLnByb3BzLnN5bmNJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXZlbnRDZW50ZXIuZW1pdChTWU5DX0VWRU5ULCBfdGhpcy5wcm9wcy5zeW5jSWQsIGRhdGEsIF90aGlzLmV2ZW50RW1pdHRlclN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImFwcGx5U3luY0V2ZW50XCIsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGxheW91dCA9IF90aGlzJHByb3BzLmxheW91dCxcbiAgICAgICAgICBzeW5jTWV0aG9kID0gX3RoaXMkcHJvcHMuc3luY01ldGhvZDtcbiAgICAgICAgdmFyIHVwZGF0ZUlkID0gX3RoaXMuc3RhdGUudXBkYXRlSWQ7XG4gICAgICAgIHZhciBkYXRhU3RhcnRJbmRleCA9IGRhdGEuZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgZGF0YUVuZEluZGV4ID0gZGF0YS5kYXRhRW5kSW5kZXg7XG4gICAgICAgIGlmIChkYXRhLmRhdGFTdGFydEluZGV4ICE9PSB1bmRlZmluZWQgfHwgZGF0YS5kYXRhRW5kSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgICAgICAgICB9LCB1cGRhdGVTdGF0ZU9mQXhpc01hcHNPZmZzZXRBbmRTdGFja0dyb3Vwcyh7XG4gICAgICAgICAgICBwcm9wczogX3RoaXMucHJvcHMsXG4gICAgICAgICAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleCxcbiAgICAgICAgICAgIHVwZGF0ZUlkOiB1cGRhdGVJZFxuICAgICAgICAgIH0sIF90aGlzLnN0YXRlKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGEuYWN0aXZlVG9vbHRpcEluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YXIgY2hhcnRYID0gZGF0YS5jaGFydFgsXG4gICAgICAgICAgICBjaGFydFkgPSBkYXRhLmNoYXJ0WTtcbiAgICAgICAgICB2YXIgYWN0aXZlVG9vbHRpcEluZGV4ID0gZGF0YS5hY3RpdmVUb29sdGlwSW5kZXg7XG4gICAgICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IF90aGlzLnN0YXRlLFxuICAgICAgICAgICAgb2Zmc2V0ID0gX3RoaXMkc3RhdGUyLm9mZnNldCxcbiAgICAgICAgICAgIHRvb2x0aXBUaWNrcyA9IF90aGlzJHN0YXRlMi50b29sdGlwVGlja3M7XG4gICAgICAgICAgaWYgKCFvZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiBzeW5jTWV0aG9kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBDYWxsIGEgY2FsbGJhY2sgZnVuY3Rpb24uIElmIHRoZXJlIGlzIGFuIGFwcGxpY2F0aW9uIHNwZWNpZmljIGFsZ29yaXRobVxuICAgICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4ID0gc3luY01ldGhvZCh0b29sdGlwVGlja3MsIGRhdGEpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3luY01ldGhvZCA9PT0gJ3ZhbHVlJykge1xuICAgICAgICAgICAgLy8gU2V0IGFjdGl2ZVRvb2x0aXBJbmRleCB0byB0aGUgaW5kZXggd2l0aCB0aGUgc2FtZSB2YWx1ZSBhcyBkYXRhLmFjdGl2ZUxhYmVsXG4gICAgICAgICAgICAvLyBGb3IgbG9vcCBpbnN0ZWFkIG9mIGZpbmRJbmRleCBiZWNhdXNlIHRoZSBsYXR0ZXIgaXMgdmVyeSBzbG93IGluIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgICAgIGFjdGl2ZVRvb2x0aXBJbmRleCA9IC0xOyAvLyBpbiBjYXNlIHdlIGNhbm5vdCBmaW5kIHRoZSBlbGVtZW50XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvb2x0aXBUaWNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBpZiAodG9vbHRpcFRpY2tzW2ldLnZhbHVlID09PSBkYXRhLmFjdGl2ZUxhYmVsKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgdmlld0JveCA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb2Zmc2V0KSwge30sIHtcbiAgICAgICAgICAgIHg6IG9mZnNldC5sZWZ0LFxuICAgICAgICAgICAgeTogb2Zmc2V0LnRvcFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIFdoZW4gYSBjYXRlZ29yaWNhbCBjaGFydCBpcyBjb21iaW5lZCB3aXRoIGFub3RoZXIgY2hhcnQsIHRoZSB2YWx1ZSBvZiBjaGFydFhcbiAgICAgICAgICAvLyBhbmQgY2hhcnRZIG1heSBiZXlvbmQgdGhlIGJvdW5kYXJpZXMuXG4gICAgICAgICAgdmFyIHZhbGlkYXRlQ2hhcnRYID0gTWF0aC5taW4oY2hhcnRYLCB2aWV3Qm94LnggKyB2aWV3Qm94LndpZHRoKTtcbiAgICAgICAgICB2YXIgdmFsaWRhdGVDaGFydFkgPSBNYXRoLm1pbihjaGFydFksIHZpZXdCb3gueSArIHZpZXdCb3guaGVpZ2h0KTtcbiAgICAgICAgICB2YXIgYWN0aXZlTGFiZWwgPSB0b29sdGlwVGlja3NbYWN0aXZlVG9vbHRpcEluZGV4XSAmJiB0b29sdGlwVGlja3NbYWN0aXZlVG9vbHRpcEluZGV4XS52YWx1ZTtcbiAgICAgICAgICB2YXIgYWN0aXZlUGF5bG9hZCA9IGdldFRvb2x0aXBDb250ZW50KF90aGlzLnN0YXRlLCBfdGhpcy5wcm9wcy5kYXRhLCBhY3RpdmVUb29sdGlwSW5kZXgpO1xuICAgICAgICAgIHZhciBhY3RpdmVDb29yZGluYXRlID0gdG9vbHRpcFRpY2tzW2FjdGl2ZVRvb2x0aXBJbmRleF0gPyB7XG4gICAgICAgICAgICB4OiBsYXlvdXQgPT09ICdob3Jpem9udGFsJyA/IHRvb2x0aXBUaWNrc1thY3RpdmVUb29sdGlwSW5kZXhdLmNvb3JkaW5hdGUgOiB2YWxpZGF0ZUNoYXJ0WCxcbiAgICAgICAgICAgIHk6IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gdmFsaWRhdGVDaGFydFkgOiB0b29sdGlwVGlja3NbYWN0aXZlVG9vbHRpcEluZGV4XS5jb29yZGluYXRlXG4gICAgICAgICAgfSA6IG9yaWdpbkNvb3JkaW5hdGU7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkYXRhKSwge30sIHtcbiAgICAgICAgICAgIGFjdGl2ZUxhYmVsOiBhY3RpdmVMYWJlbCxcbiAgICAgICAgICAgIGFjdGl2ZUNvb3JkaW5hdGU6IGFjdGl2ZUNvb3JkaW5hdGUsXG4gICAgICAgICAgICBhY3RpdmVQYXlsb2FkOiBhY3RpdmVQYXlsb2FkLFxuICAgICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4OiBhY3RpdmVUb29sdGlwSW5kZXhcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInJlbmRlckN1cnNvclwiLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgX2VsZW1lbnQkcHJvcHMkYWN0aXZlO1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGUzID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgaXNUb29sdGlwQWN0aXZlID0gX3RoaXMkc3RhdGUzLmlzVG9vbHRpcEFjdGl2ZSxcbiAgICAgICAgICBhY3RpdmVDb29yZGluYXRlID0gX3RoaXMkc3RhdGUzLmFjdGl2ZUNvb3JkaW5hdGUsXG4gICAgICAgICAgYWN0aXZlUGF5bG9hZCA9IF90aGlzJHN0YXRlMy5hY3RpdmVQYXlsb2FkLFxuICAgICAgICAgIG9mZnNldCA9IF90aGlzJHN0YXRlMy5vZmZzZXQsXG4gICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4ID0gX3RoaXMkc3RhdGUzLmFjdGl2ZVRvb2x0aXBJbmRleCxcbiAgICAgICAgICB0b29sdGlwQXhpc0JhbmRTaXplID0gX3RoaXMkc3RhdGUzLnRvb2x0aXBBeGlzQmFuZFNpemU7XG4gICAgICAgIHZhciB0b29sdGlwRXZlbnRUeXBlID0gX3RoaXMuZ2V0VG9vbHRpcEV2ZW50VHlwZSgpO1xuICAgICAgICAvLyBUaGUgY3Vyc29yIGlzIGEgcGFydCBvZiB0aGUgVG9vbHRpcCwgYW5kIGl0IHNob3VsZCBiZSBzaG93biAoYnkgZGVmYXVsdCkgd2hlbiB0aGUgVG9vbHRpcCBpcyBhY3RpdmUuXG4gICAgICAgIHZhciBpc0FjdGl2ZSA9IChfZWxlbWVudCRwcm9wcyRhY3RpdmUgPSBlbGVtZW50LnByb3BzLmFjdGl2ZSkgIT09IG51bGwgJiYgX2VsZW1lbnQkcHJvcHMkYWN0aXZlICE9PSB2b2lkIDAgPyBfZWxlbWVudCRwcm9wcyRhY3RpdmUgOiBpc1Rvb2x0aXBBY3RpdmU7XG4gICAgICAgIHZhciBsYXlvdXQgPSBfdGhpcy5wcm9wcy5sYXlvdXQ7XG4gICAgICAgIHZhciBrZXkgPSBlbGVtZW50LmtleSB8fCAnX3JlY2hhcnRzLWN1cnNvcic7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDdXJzb3IsIHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICBhY3RpdmVDb29yZGluYXRlOiBhY3RpdmVDb29yZGluYXRlLFxuICAgICAgICAgIGFjdGl2ZVBheWxvYWQ6IGFjdGl2ZVBheWxvYWQsXG4gICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4OiBhY3RpdmVUb29sdGlwSW5kZXgsXG4gICAgICAgICAgY2hhcnROYW1lOiBjaGFydE5hbWUsXG4gICAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgICBpc0FjdGl2ZTogaXNBY3RpdmUsXG4gICAgICAgICAgbGF5b3V0OiBsYXlvdXQsXG4gICAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgICAgdG9vbHRpcEF4aXNCYW5kU2l6ZTogdG9vbHRpcEF4aXNCYW5kU2l6ZSxcbiAgICAgICAgICB0b29sdGlwRXZlbnRUeXBlOiB0b29sdGlwRXZlbnRUeXBlXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwicmVuZGVyUG9sYXJBeGlzXCIsIGZ1bmN0aW9uIChlbGVtZW50LCBkaXNwbGF5TmFtZSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIGF4aXNUeXBlID0gZ2V0KGVsZW1lbnQsICd0eXBlLmF4aXNUeXBlJyk7XG4gICAgICAgIHZhciBheGlzTWFwID0gZ2V0KF90aGlzLnN0YXRlLCBcIlwiLmNvbmNhdChheGlzVHlwZSwgXCJNYXBcIikpO1xuICAgICAgICB2YXIgZWxlbWVudERlZmF1bHRQcm9wcyA9IGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHM7XG4gICAgICAgIHZhciBlbGVtZW50UHJvcHMgPSBlbGVtZW50RGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGVsZW1lbnREZWZhdWx0UHJvcHMpLCBlbGVtZW50LnByb3BzKSA6IGVsZW1lbnQucHJvcHM7XG4gICAgICAgIHZhciBheGlzT3B0aW9uID0gYXhpc01hcCAmJiBheGlzTWFwW2VsZW1lbnRQcm9wc1tcIlwiLmNvbmNhdChheGlzVHlwZSwgXCJJZFwiKV1dO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChlbGVtZW50LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXNPcHRpb24pLCB7fSwge1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xzeChheGlzVHlwZSwgYXhpc09wdGlvbi5jbGFzc05hbWUpLFxuICAgICAgICAgIGtleTogZWxlbWVudC5rZXkgfHwgXCJcIi5jb25jYXQoZGlzcGxheU5hbWUsIFwiLVwiKS5jb25jYXQoaW5kZXgpLFxuICAgICAgICAgIHRpY2tzOiBnZXRUaWNrc09mQXhpcyhheGlzT3B0aW9uLCB0cnVlKVxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJyZW5kZXJQb2xhckdyaWRcIiwgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIF9lbGVtZW50JHByb3BzID0gZWxlbWVudC5wcm9wcyxcbiAgICAgICAgICByYWRpYWxMaW5lcyA9IF9lbGVtZW50JHByb3BzLnJhZGlhbExpbmVzLFxuICAgICAgICAgIHBvbGFyQW5nbGVzID0gX2VsZW1lbnQkcHJvcHMucG9sYXJBbmdsZXMsXG4gICAgICAgICAgcG9sYXJSYWRpdXMgPSBfZWxlbWVudCRwcm9wcy5wb2xhclJhZGl1cztcbiAgICAgICAgdmFyIF90aGlzJHN0YXRlNCA9IF90aGlzLnN0YXRlLFxuICAgICAgICAgIHJhZGl1c0F4aXNNYXAgPSBfdGhpcyRzdGF0ZTQucmFkaXVzQXhpc01hcCxcbiAgICAgICAgICBhbmdsZUF4aXNNYXAgPSBfdGhpcyRzdGF0ZTQuYW5nbGVBeGlzTWFwO1xuICAgICAgICB2YXIgcmFkaXVzQXhpcyA9IGdldEFueUVsZW1lbnRPZk9iamVjdChyYWRpdXNBeGlzTWFwKTtcbiAgICAgICAgdmFyIGFuZ2xlQXhpcyA9IGdldEFueUVsZW1lbnRPZk9iamVjdChhbmdsZUF4aXNNYXApO1xuICAgICAgICB2YXIgY3ggPSBhbmdsZUF4aXMuY3gsXG4gICAgICAgICAgY3kgPSBhbmdsZUF4aXMuY3ksXG4gICAgICAgICAgaW5uZXJSYWRpdXMgPSBhbmdsZUF4aXMuaW5uZXJSYWRpdXMsXG4gICAgICAgICAgb3V0ZXJSYWRpdXMgPSBhbmdsZUF4aXMub3V0ZXJSYWRpdXM7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGVsZW1lbnQsIHtcbiAgICAgICAgICBwb2xhckFuZ2xlczogQXJyYXkuaXNBcnJheShwb2xhckFuZ2xlcykgPyBwb2xhckFuZ2xlcyA6IGdldFRpY2tzT2ZBeGlzKGFuZ2xlQXhpcywgdHJ1ZSkubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmNvb3JkaW5hdGU7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgcG9sYXJSYWRpdXM6IEFycmF5LmlzQXJyYXkocG9sYXJSYWRpdXMpID8gcG9sYXJSYWRpdXMgOiBnZXRUaWNrc09mQXhpcyhyYWRpdXNBeGlzLCB0cnVlKS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gZW50cnkuY29vcmRpbmF0ZTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjeDogY3gsXG4gICAgICAgICAgY3k6IGN5LFxuICAgICAgICAgIGlubmVyUmFkaXVzOiBpbm5lclJhZGl1cyxcbiAgICAgICAgICBvdXRlclJhZGl1czogb3V0ZXJSYWRpdXMsXG4gICAgICAgICAga2V5OiBlbGVtZW50LmtleSB8fCAncG9sYXItZ3JpZCcsXG4gICAgICAgICAgcmFkaWFsTGluZXM6IHJhZGlhbExpbmVzXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICAvKipcbiAgICAgICAqIERyYXcgbGVnZW5kXG4gICAgICAgKiBAcmV0dXJuIHtSZWFjdEVsZW1lbnR9ICAgICAgICAgICAgVGhlIGluc3RhbmNlIG9mIExlZ2VuZFxuICAgICAgICovXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwicmVuZGVyTGVnZW5kXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zID0gX3RoaXMuc3RhdGUuZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXM7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczIgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzMi5jaGlsZHJlbixcbiAgICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzMi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczIuaGVpZ2h0O1xuICAgICAgICB2YXIgbWFyZ2luID0gX3RoaXMucHJvcHMubWFyZ2luIHx8IHt9O1xuICAgICAgICB2YXIgbGVnZW5kV2lkdGggPSB3aWR0aCAtIChtYXJnaW4ubGVmdCB8fCAwKSAtIChtYXJnaW4ucmlnaHQgfHwgMCk7XG4gICAgICAgIHZhciBwcm9wcyA9IGdldExlZ2VuZFByb3BzKHtcbiAgICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgICAgICAgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXM6IGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLFxuICAgICAgICAgIGxlZ2VuZFdpZHRoOiBsZWdlbmRXaWR0aCxcbiAgICAgICAgICBsZWdlbmRDb250ZW50OiBsZWdlbmRDb250ZW50XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGl0ZW0gPSBwcm9wcy5pdGVtLFxuICAgICAgICAgIG90aGVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGl0ZW0sIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3RoZXJQcm9wcyksIHt9LCB7XG4gICAgICAgICAgY2hhcnRXaWR0aDogd2lkdGgsXG4gICAgICAgICAgY2hhcnRIZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICBtYXJnaW46IG1hcmdpbixcbiAgICAgICAgICBvbkJCb3hVcGRhdGU6IF90aGlzLmhhbmRsZUxlZ2VuZEJCb3hVcGRhdGVcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgICAvKipcbiAgICAgICAqIERyYXcgVG9vbHRpcFxuICAgICAgICogQHJldHVybiB7UmVhY3RFbGVtZW50fSAgVGhlIGluc3RhbmNlIG9mIFRvb2x0aXBcbiAgICAgICAqL1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInJlbmRlclRvb2x0aXBcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3Rvb2x0aXBJdGVtJHByb3BzJGFjO1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczMuY2hpbGRyZW4sXG4gICAgICAgICAgYWNjZXNzaWJpbGl0eUxheWVyID0gX3RoaXMkcHJvcHMzLmFjY2Vzc2liaWxpdHlMYXllcjtcbiAgICAgICAgdmFyIHRvb2x0aXBJdGVtID0gZmluZENoaWxkQnlUeXBlKGNoaWxkcmVuLCBUb29sdGlwKTtcbiAgICAgICAgaWYgKCF0b29sdGlwSXRlbSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZTUgPSBfdGhpcy5zdGF0ZSxcbiAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmUgPSBfdGhpcyRzdGF0ZTUuaXNUb29sdGlwQWN0aXZlLFxuICAgICAgICAgIGFjdGl2ZUNvb3JkaW5hdGUgPSBfdGhpcyRzdGF0ZTUuYWN0aXZlQ29vcmRpbmF0ZSxcbiAgICAgICAgICBhY3RpdmVQYXlsb2FkID0gX3RoaXMkc3RhdGU1LmFjdGl2ZVBheWxvYWQsXG4gICAgICAgICAgYWN0aXZlTGFiZWwgPSBfdGhpcyRzdGF0ZTUuYWN0aXZlTGFiZWwsXG4gICAgICAgICAgb2Zmc2V0ID0gX3RoaXMkc3RhdGU1Lm9mZnNldDtcblxuICAgICAgICAvLyBUaGUgdXNlciBjYW4gc2V0IGlzQWN0aXZlIG9uIHRoZSBUb29sdGlwLFxuICAgICAgICAvLyBhbmQgd2UgcmVzcGVjdCB0aGUgdXNlciB0byBlbmFibGUgY3VzdG9taXNhdGlvbi5cbiAgICAgICAgLy8gVGhlIFRvb2x0aXAgaXMgYWN0aXZlIGlmIHRoZSB1c2VyIGhhcyBzZXQgaXNBY3RpdmUsIG9yIGlmIHRoZSB0b29sdGlwIGlzIGFjdGl2ZSBkdWUgdG8gYSBtb3VzZSBldmVudC5cbiAgICAgICAgdmFyIGlzQWN0aXZlID0gKF90b29sdGlwSXRlbSRwcm9wcyRhYyA9IHRvb2x0aXBJdGVtLnByb3BzLmFjdGl2ZSkgIT09IG51bGwgJiYgX3Rvb2x0aXBJdGVtJHByb3BzJGFjICE9PSB2b2lkIDAgPyBfdG9vbHRpcEl0ZW0kcHJvcHMkYWMgOiBpc1Rvb2x0aXBBY3RpdmU7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KHRvb2x0aXBJdGVtLCB7XG4gICAgICAgICAgdmlld0JveDogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvZmZzZXQpLCB7fSwge1xuICAgICAgICAgICAgeDogb2Zmc2V0LmxlZnQsXG4gICAgICAgICAgICB5OiBvZmZzZXQudG9wXG4gICAgICAgICAgfSksXG4gICAgICAgICAgYWN0aXZlOiBpc0FjdGl2ZSxcbiAgICAgICAgICBsYWJlbDogYWN0aXZlTGFiZWwsXG4gICAgICAgICAgcGF5bG9hZDogaXNBY3RpdmUgPyBhY3RpdmVQYXlsb2FkIDogW10sXG4gICAgICAgICAgY29vcmRpbmF0ZTogYWN0aXZlQ29vcmRpbmF0ZSxcbiAgICAgICAgICBhY2Nlc3NpYmlsaXR5TGF5ZXI6IGFjY2Vzc2liaWxpdHlMYXllclxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInJlbmRlckJydXNoXCIsIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBtYXJnaW4gPSBfdGhpcyRwcm9wczQubWFyZ2luLFxuICAgICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczQuZGF0YTtcbiAgICAgICAgdmFyIF90aGlzJHN0YXRlNiA9IF90aGlzLnN0YXRlLFxuICAgICAgICAgIG9mZnNldCA9IF90aGlzJHN0YXRlNi5vZmZzZXQsXG4gICAgICAgICAgZGF0YVN0YXJ0SW5kZXggPSBfdGhpcyRzdGF0ZTYuZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgZGF0YUVuZEluZGV4ID0gX3RoaXMkc3RhdGU2LmRhdGFFbmRJbmRleCxcbiAgICAgICAgICB1cGRhdGVJZCA9IF90aGlzJHN0YXRlNi51cGRhdGVJZDtcblxuICAgICAgICAvLyBUT0RPOiB1cGRhdGUgYnJ1c2ggd2hlbiBjaGlsZHJlbiB1cGRhdGVcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoZWxlbWVudCwge1xuICAgICAgICAgIGtleTogZWxlbWVudC5rZXkgfHwgJ19yZWNoYXJ0cy1icnVzaCcsXG4gICAgICAgICAgb25DaGFuZ2U6IGNvbWJpbmVFdmVudEhhbmRsZXJzKF90aGlzLmhhbmRsZUJydXNoQ2hhbmdlLCBlbGVtZW50LnByb3BzLm9uQ2hhbmdlKSxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIHg6IGlzTnVtYmVyKGVsZW1lbnQucHJvcHMueCkgPyBlbGVtZW50LnByb3BzLnggOiBvZmZzZXQubGVmdCxcbiAgICAgICAgICB5OiBpc051bWJlcihlbGVtZW50LnByb3BzLnkpID8gZWxlbWVudC5wcm9wcy55IDogb2Zmc2V0LnRvcCArIG9mZnNldC5oZWlnaHQgKyBvZmZzZXQuYnJ1c2hCb3R0b20gLSAobWFyZ2luLmJvdHRvbSB8fCAwKSxcbiAgICAgICAgICB3aWR0aDogaXNOdW1iZXIoZWxlbWVudC5wcm9wcy53aWR0aCkgPyBlbGVtZW50LnByb3BzLndpZHRoIDogb2Zmc2V0LndpZHRoLFxuICAgICAgICAgIHN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgICAgIGVuZEluZGV4OiBkYXRhRW5kSW5kZXgsXG4gICAgICAgICAgdXBkYXRlSWQ6IFwiYnJ1c2gtXCIuY29uY2F0KHVwZGF0ZUlkKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInJlbmRlclJlZmVyZW5jZUVsZW1lbnRcIiwgZnVuY3Rpb24gKGVsZW1lbnQsIGRpc3BsYXlOYW1lLCBpbmRleCkge1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX3RoaXMyID0gX3RoaXMsXG4gICAgICAgICAgY2xpcFBhdGhJZCA9IF90aGlzMi5jbGlwUGF0aElkO1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGU3ID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgeEF4aXNNYXAgPSBfdGhpcyRzdGF0ZTcueEF4aXNNYXAsXG4gICAgICAgICAgeUF4aXNNYXAgPSBfdGhpcyRzdGF0ZTcueUF4aXNNYXAsXG4gICAgICAgICAgb2Zmc2V0ID0gX3RoaXMkc3RhdGU3Lm9mZnNldDtcbiAgICAgICAgdmFyIGVsZW1lbnREZWZhdWx0UHJvcHMgPSBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzIHx8IHt9O1xuICAgICAgICB2YXIgX2VsZW1lbnQkcHJvcHMyID0gZWxlbWVudC5wcm9wcyxcbiAgICAgICAgICBfZWxlbWVudCRwcm9wczIkeEF4aXMgPSBfZWxlbWVudCRwcm9wczIueEF4aXNJZCxcbiAgICAgICAgICB4QXhpc0lkID0gX2VsZW1lbnQkcHJvcHMyJHhBeGlzID09PSB2b2lkIDAgPyBlbGVtZW50RGVmYXVsdFByb3BzLnhBeGlzSWQgOiBfZWxlbWVudCRwcm9wczIkeEF4aXMsXG4gICAgICAgICAgX2VsZW1lbnQkcHJvcHMyJHlBeGlzID0gX2VsZW1lbnQkcHJvcHMyLnlBeGlzSWQsXG4gICAgICAgICAgeUF4aXNJZCA9IF9lbGVtZW50JHByb3BzMiR5QXhpcyA9PT0gdm9pZCAwID8gZWxlbWVudERlZmF1bHRQcm9wcy55QXhpc0lkIDogX2VsZW1lbnQkcHJvcHMyJHlBeGlzO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChlbGVtZW50LCB7XG4gICAgICAgICAga2V5OiBlbGVtZW50LmtleSB8fCBcIlwiLmNvbmNhdChkaXNwbGF5TmFtZSwgXCItXCIpLmNvbmNhdChpbmRleCksXG4gICAgICAgICAgeEF4aXM6IHhBeGlzTWFwW3hBeGlzSWRdLFxuICAgICAgICAgIHlBeGlzOiB5QXhpc01hcFt5QXhpc0lkXSxcbiAgICAgICAgICB2aWV3Qm94OiB7XG4gICAgICAgICAgICB4OiBvZmZzZXQubGVmdCxcbiAgICAgICAgICAgIHk6IG9mZnNldC50b3AsXG4gICAgICAgICAgICB3aWR0aDogb2Zmc2V0LndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBvZmZzZXQuaGVpZ2h0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjbGlwUGF0aElkOiBjbGlwUGF0aElkXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwicmVuZGVyQWN0aXZlUG9pbnRzXCIsIGZ1bmN0aW9uIChfcmVmMTApIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBfcmVmMTAuaXRlbSxcbiAgICAgICAgICBhY3RpdmVQb2ludCA9IF9yZWYxMC5hY3RpdmVQb2ludCxcbiAgICAgICAgICBiYXNlUG9pbnQgPSBfcmVmMTAuYmFzZVBvaW50LFxuICAgICAgICAgIGNoaWxkSW5kZXggPSBfcmVmMTAuY2hpbGRJbmRleCxcbiAgICAgICAgICBpc1JhbmdlID0gX3JlZjEwLmlzUmFuZ2U7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgLy8gaXRlbSBpcyBub3QgYSBSZWFjdCBFbGVtZW50IHNvIHdlIGRvbid0IG5lZWQgdG8gcmVzb2x2ZSBkZWZhdWx0UHJvcHMuXG4gICAgICAgIHZhciBrZXkgPSBpdGVtLnByb3BzLmtleTtcbiAgICAgICAgdmFyIGl0ZW1JdGVtUHJvcHMgPSBpdGVtLml0ZW0udHlwZS5kZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbS5pdGVtLnR5cGUuZGVmYXVsdFByb3BzKSwgaXRlbS5pdGVtLnByb3BzKSA6IGl0ZW0uaXRlbS5wcm9wcztcbiAgICAgICAgdmFyIGFjdGl2ZURvdCA9IGl0ZW1JdGVtUHJvcHMuYWN0aXZlRG90LFxuICAgICAgICAgIGRhdGFLZXkgPSBpdGVtSXRlbVByb3BzLmRhdGFLZXk7XG4gICAgICAgIHZhciBkb3RQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgaW5kZXg6IGNoaWxkSW5kZXgsXG4gICAgICAgICAgZGF0YUtleTogZGF0YUtleSxcbiAgICAgICAgICBjeDogYWN0aXZlUG9pbnQueCxcbiAgICAgICAgICBjeTogYWN0aXZlUG9pbnQueSxcbiAgICAgICAgICByOiA0LFxuICAgICAgICAgIGZpbGw6IGdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0oaXRlbS5pdGVtKSxcbiAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICBzdHJva2U6ICcjZmZmJyxcbiAgICAgICAgICBwYXlsb2FkOiBhY3RpdmVQb2ludC5wYXlsb2FkLFxuICAgICAgICAgIHZhbHVlOiBhY3RpdmVQb2ludC52YWx1ZVxuICAgICAgICB9LCBmaWx0ZXJQcm9wcyhhY3RpdmVEb3QsIGZhbHNlKSksIGFkYXB0RXZlbnRIYW5kbGVycyhhY3RpdmVEb3QpKTtcbiAgICAgICAgcmVzdWx0LnB1c2goQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIucmVuZGVyQWN0aXZlRG90KGFjdGl2ZURvdCwgZG90UHJvcHMsIFwiXCIuY29uY2F0KGtleSwgXCItYWN0aXZlUG9pbnQtXCIpLmNvbmNhdChjaGlsZEluZGV4KSkpO1xuICAgICAgICBpZiAoYmFzZVBvaW50KSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIucmVuZGVyQWN0aXZlRG90KGFjdGl2ZURvdCwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkb3RQcm9wcyksIHt9LCB7XG4gICAgICAgICAgICBjeDogYmFzZVBvaW50LngsXG4gICAgICAgICAgICBjeTogYmFzZVBvaW50LnlcbiAgICAgICAgICB9KSwgXCJcIi5jb25jYXQoa2V5LCBcIi1iYXNlUG9pbnQtXCIpLmNvbmNhdChjaGlsZEluZGV4KSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzUmFuZ2UpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwicmVuZGVyR3JhcGhpY0NoaWxkXCIsIGZ1bmN0aW9uIChlbGVtZW50LCBkaXNwbGF5TmFtZSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBfdGhpcy5maWx0ZXJGb3JtYXRJdGVtKGVsZW1lbnQsIGRpc3BsYXlOYW1lLCBpbmRleCk7XG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b29sdGlwRXZlbnRUeXBlID0gX3RoaXMuZ2V0VG9vbHRpcEV2ZW50VHlwZSgpO1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGU4ID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgaXNUb29sdGlwQWN0aXZlID0gX3RoaXMkc3RhdGU4LmlzVG9vbHRpcEFjdGl2ZSxcbiAgICAgICAgICB0b29sdGlwQXhpcyA9IF90aGlzJHN0YXRlOC50b29sdGlwQXhpcyxcbiAgICAgICAgICBhY3RpdmVUb29sdGlwSW5kZXggPSBfdGhpcyRzdGF0ZTguYWN0aXZlVG9vbHRpcEluZGV4LFxuICAgICAgICAgIGFjdGl2ZUxhYmVsID0gX3RoaXMkc3RhdGU4LmFjdGl2ZUxhYmVsO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSBfdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgdmFyIHRvb2x0aXBJdGVtID0gZmluZENoaWxkQnlUeXBlKGNoaWxkcmVuLCBUb29sdGlwKTtcbiAgICAgICAgLy8gaXRlbSBpcyBub3QgYSBSZWFjdCBFbGVtZW50IHNvIHdlIGRvbid0IG5lZWQgdG8gcmVzb2x2ZSBkZWZhdWx0UHJvcHNcbiAgICAgICAgdmFyIF9pdGVtJHByb3BzID0gaXRlbS5wcm9wcyxcbiAgICAgICAgICBwb2ludHMgPSBfaXRlbSRwcm9wcy5wb2ludHMsXG4gICAgICAgICAgaXNSYW5nZSA9IF9pdGVtJHByb3BzLmlzUmFuZ2UsXG4gICAgICAgICAgYmFzZUxpbmUgPSBfaXRlbSRwcm9wcy5iYXNlTGluZTtcbiAgICAgICAgdmFyIGl0ZW1JdGVtUHJvcHMgPSBpdGVtLml0ZW0udHlwZS5kZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbS5pdGVtLnR5cGUuZGVmYXVsdFByb3BzKSwgaXRlbS5pdGVtLnByb3BzKSA6IGl0ZW0uaXRlbS5wcm9wcztcbiAgICAgICAgdmFyIGFjdGl2ZURvdCA9IGl0ZW1JdGVtUHJvcHMuYWN0aXZlRG90LFxuICAgICAgICAgIGhpZGUgPSBpdGVtSXRlbVByb3BzLmhpZGUsXG4gICAgICAgICAgYWN0aXZlQmFyID0gaXRlbUl0ZW1Qcm9wcy5hY3RpdmVCYXIsXG4gICAgICAgICAgYWN0aXZlU2hhcGUgPSBpdGVtSXRlbVByb3BzLmFjdGl2ZVNoYXBlO1xuICAgICAgICB2YXIgaGFzQWN0aXZlID0gQm9vbGVhbighaGlkZSAmJiBpc1Rvb2x0aXBBY3RpdmUgJiYgdG9vbHRpcEl0ZW0gJiYgKGFjdGl2ZURvdCB8fCBhY3RpdmVCYXIgfHwgYWN0aXZlU2hhcGUpKTtcbiAgICAgICAgdmFyIGl0ZW1FdmVudHMgPSB7fTtcbiAgICAgICAgaWYgKHRvb2x0aXBFdmVudFR5cGUgIT09ICdheGlzJyAmJiB0b29sdGlwSXRlbSAmJiB0b29sdGlwSXRlbS5wcm9wcy50cmlnZ2VyID09PSAnY2xpY2snKSB7XG4gICAgICAgICAgaXRlbUV2ZW50cyA9IHtcbiAgICAgICAgICAgIG9uQ2xpY2s6IGNvbWJpbmVFdmVudEhhbmRsZXJzKF90aGlzLmhhbmRsZUl0ZW1Nb3VzZUVudGVyLCBlbGVtZW50LnByb3BzLm9uQ2xpY2spXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmICh0b29sdGlwRXZlbnRUeXBlICE9PSAnYXhpcycpIHtcbiAgICAgICAgICBpdGVtRXZlbnRzID0ge1xuICAgICAgICAgICAgb25Nb3VzZUxlYXZlOiBjb21iaW5lRXZlbnRIYW5kbGVycyhfdGhpcy5oYW5kbGVJdGVtTW91c2VMZWF2ZSwgZWxlbWVudC5wcm9wcy5vbk1vdXNlTGVhdmUpLFxuICAgICAgICAgICAgb25Nb3VzZUVudGVyOiBjb21iaW5lRXZlbnRIYW5kbGVycyhfdGhpcy5oYW5kbGVJdGVtTW91c2VFbnRlciwgZWxlbWVudC5wcm9wcy5vbk1vdXNlRW50ZXIpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZ3JhcGhpY2FsSXRlbSA9IC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoZWxlbWVudCwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpdGVtLnByb3BzKSwgaXRlbUV2ZW50cykpO1xuICAgICAgICBmdW5jdGlvbiBmaW5kV2l0aFBheWxvYWQoZW50cnkpIHtcbiAgICAgICAgICAvLyBUT0RPIG5lZWRzIHRvIHZlcmlmeSBkYXRhS2V5IGlzIEZ1bmN0aW9uXG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiB0b29sdGlwQXhpcy5kYXRhS2V5ID09PSAnZnVuY3Rpb24nID8gdG9vbHRpcEF4aXMuZGF0YUtleShlbnRyeS5wYXlsb2FkKSA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0FjdGl2ZSkge1xuICAgICAgICAgIGlmIChhY3RpdmVUb29sdGlwSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdmFyIGFjdGl2ZVBvaW50LCBiYXNlUG9pbnQ7XG4gICAgICAgICAgICBpZiAodG9vbHRpcEF4aXMuZGF0YUtleSAmJiAhdG9vbHRpcEF4aXMuYWxsb3dEdXBsaWNhdGVkQ2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgLy8gbnVtYmVyIHRyYW5zZm9ybSB0byBzdHJpbmdcbiAgICAgICAgICAgICAgdmFyIHNwZWNpZmllZEtleSA9IHR5cGVvZiB0b29sdGlwQXhpcy5kYXRhS2V5ID09PSAnZnVuY3Rpb24nID8gZmluZFdpdGhQYXlsb2FkIDogJ3BheWxvYWQuJy5jb25jYXQodG9vbHRpcEF4aXMuZGF0YUtleS50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgYWN0aXZlUG9pbnQgPSBmaW5kRW50cnlJbkFycmF5KHBvaW50cywgc3BlY2lmaWVkS2V5LCBhY3RpdmVMYWJlbCk7XG4gICAgICAgICAgICAgIGJhc2VQb2ludCA9IGlzUmFuZ2UgJiYgYmFzZUxpbmUgJiYgZmluZEVudHJ5SW5BcnJheShiYXNlTGluZSwgc3BlY2lmaWVkS2V5LCBhY3RpdmVMYWJlbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhY3RpdmVQb2ludCA9IHBvaW50cyA9PT0gbnVsbCB8fCBwb2ludHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBvaW50c1thY3RpdmVUb29sdGlwSW5kZXhdO1xuICAgICAgICAgICAgICBiYXNlUG9pbnQgPSBpc1JhbmdlICYmIGJhc2VMaW5lICYmIGJhc2VMaW5lW2FjdGl2ZVRvb2x0aXBJbmRleF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWN0aXZlU2hhcGUgfHwgYWN0aXZlQmFyKSB7XG4gICAgICAgICAgICAgIHZhciBhY3RpdmVJbmRleCA9IGVsZW1lbnQucHJvcHMuYWN0aXZlSW5kZXggIT09IHVuZGVmaW5lZCA/IGVsZW1lbnQucHJvcHMuYWN0aXZlSW5kZXggOiBhY3RpdmVUb29sdGlwSW5kZXg7XG4gICAgICAgICAgICAgIHJldHVybiBbLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChlbGVtZW50LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbS5wcm9wcyksIGl0ZW1FdmVudHMpLCB7fSwge1xuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiBhY3RpdmVJbmRleFxuICAgICAgICAgICAgICB9KSksIG51bGwsIG51bGxdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc05pbChhY3RpdmVQb2ludCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtncmFwaGljYWxJdGVtXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KF90aGlzLnJlbmRlckFjdGl2ZVBvaW50cyh7XG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbSxcbiAgICAgICAgICAgICAgICBhY3RpdmVQb2ludDogYWN0aXZlUG9pbnQsXG4gICAgICAgICAgICAgICAgYmFzZVBvaW50OiBiYXNlUG9pbnQsXG4gICAgICAgICAgICAgICAgY2hpbGRJbmRleDogYWN0aXZlVG9vbHRpcEluZGV4LFxuICAgICAgICAgICAgICAgIGlzUmFuZ2U6IGlzUmFuZ2VcbiAgICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIF90aGlzJGdldEl0ZW1CeVhZO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBoaXQgdGhpcyBibG9jayBpZiBjb25zdW1lciB1c2VzIGEgVG9vbHRpcCB3aXRob3V0IFhBeGlzIGFuZC9vciBZQXhpcy5cbiAgICAgICAgICAgICAqIEluIHdoaWNoIGNhc2UsIHRoaXMuc3RhdGUuYWN0aXZlVG9vbHRpcEluZGV4IG5ldmVyIGdldHMgc2V0XG4gICAgICAgICAgICAgKiBiZWNhdXNlIHRoZSBtb3VzZSBldmVudHMgdGhhdCB0cmlnZ2VyIHRoYXQgdmFsdWUgZ2V0dGluZyBzZXQgbmV2ZXIgZ2V0IHRyaWdnZWQgd2l0aG91dCB0aGUgYXhpcyBjb21wb25lbnRzLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEFuIGV4YW1wbGUgdXNhZ2UgY2FzZSBpcyBhIEZ1bm5lbENoYXJ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhciBfcmVmMTEgPSAoX3RoaXMkZ2V0SXRlbUJ5WFkgPSBfdGhpcy5nZXRJdGVtQnlYWShfdGhpcy5zdGF0ZS5hY3RpdmVDb29yZGluYXRlKSkgIT09IG51bGwgJiYgX3RoaXMkZ2V0SXRlbUJ5WFkgIT09IHZvaWQgMCA/IF90aGlzJGdldEl0ZW1CeVhZIDoge1xuICAgICAgICAgICAgICAgIGdyYXBoaWNhbEl0ZW06IGdyYXBoaWNhbEl0ZW1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgX3JlZjExJGdyYXBoaWNhbEl0ZW0gPSBfcmVmMTEuZ3JhcGhpY2FsSXRlbSxcbiAgICAgICAgICAgICAgX3JlZjExJGdyYXBoaWNhbEl0ZW0kID0gX3JlZjExJGdyYXBoaWNhbEl0ZW0uaXRlbSxcbiAgICAgICAgICAgICAgeHlJdGVtID0gX3JlZjExJGdyYXBoaWNhbEl0ZW0kID09PSB2b2lkIDAgPyBlbGVtZW50IDogX3JlZjExJGdyYXBoaWNhbEl0ZW0kLFxuICAgICAgICAgICAgICBjaGlsZEluZGV4ID0gX3JlZjExJGdyYXBoaWNhbEl0ZW0uY2hpbGRJbmRleDtcbiAgICAgICAgICAgIHZhciBlbGVtZW50UHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbS5wcm9wcyksIGl0ZW1FdmVudHMpLCB7fSwge1xuICAgICAgICAgICAgICBhY3RpdmVJbmRleDogY2hpbGRJbmRleFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gWy8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoeHlJdGVtLCBlbGVtZW50UHJvcHMpLCBudWxsLCBudWxsXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUmFuZ2UpIHtcbiAgICAgICAgICByZXR1cm4gW2dyYXBoaWNhbEl0ZW0sIG51bGwsIG51bGxdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbZ3JhcGhpY2FsSXRlbSwgbnVsbF07XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJyZW5kZXJDdXN0b21pemVkXCIsIGZ1bmN0aW9uIChlbGVtZW50LCBkaXNwbGF5TmFtZSwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoZWxlbWVudCwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICBrZXk6IFwicmVjaGFydHMtY3VzdG9taXplZC1cIi5jb25jYXQoaW5kZXgpXG4gICAgICAgIH0sIF90aGlzLnByb3BzKSwgX3RoaXMuc3RhdGUpKTtcbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInJlbmRlck1hcFwiLCB7XG4gICAgICAgIENhcnRlc2lhbkdyaWQ6IHtcbiAgICAgICAgICBoYW5kbGVyOiByZW5kZXJBc0lzLFxuICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgUmVmZXJlbmNlQXJlYToge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlclJlZmVyZW5jZUVsZW1lbnRcbiAgICAgICAgfSxcbiAgICAgICAgUmVmZXJlbmNlTGluZToge1xuICAgICAgICAgIGhhbmRsZXI6IHJlbmRlckFzSXNcbiAgICAgICAgfSxcbiAgICAgICAgUmVmZXJlbmNlRG90OiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyUmVmZXJlbmNlRWxlbWVudFxuICAgICAgICB9LFxuICAgICAgICBYQXhpczoge1xuICAgICAgICAgIGhhbmRsZXI6IHJlbmRlckFzSXNcbiAgICAgICAgfSxcbiAgICAgICAgWUF4aXM6IHtcbiAgICAgICAgICBoYW5kbGVyOiByZW5kZXJBc0lzXG4gICAgICAgIH0sXG4gICAgICAgIEJydXNoOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyQnJ1c2gsXG4gICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBCYXI6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJHcmFwaGljQ2hpbGRcbiAgICAgICAgfSxcbiAgICAgICAgTGluZToge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckdyYXBoaWNDaGlsZFxuICAgICAgICB9LFxuICAgICAgICBBcmVhOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyR3JhcGhpY0NoaWxkXG4gICAgICAgIH0sXG4gICAgICAgIFJhZGFyOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyR3JhcGhpY0NoaWxkXG4gICAgICAgIH0sXG4gICAgICAgIFJhZGlhbEJhcjoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckdyYXBoaWNDaGlsZFxuICAgICAgICB9LFxuICAgICAgICBTY2F0dGVyOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyR3JhcGhpY0NoaWxkXG4gICAgICAgIH0sXG4gICAgICAgIFBpZToge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckdyYXBoaWNDaGlsZFxuICAgICAgICB9LFxuICAgICAgICBGdW5uZWw6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJHcmFwaGljQ2hpbGRcbiAgICAgICAgfSxcbiAgICAgICAgVG9vbHRpcDoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckN1cnNvcixcbiAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFBvbGFyR3JpZDoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlclBvbGFyR3JpZCxcbiAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFBvbGFyQW5nbGVBeGlzOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyUG9sYXJBeGlzXG4gICAgICAgIH0sXG4gICAgICAgIFBvbGFyUmFkaXVzQXhpczoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlclBvbGFyQXhpc1xuICAgICAgICB9LFxuICAgICAgICBDdXN0b21pemVkOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyQ3VzdG9taXplZFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF90aGlzLmNsaXBQYXRoSWQgPSBcIlwiLmNvbmNhdCgoX3Byb3BzJGlkID0gX3Byb3BzLmlkKSAhPT0gbnVsbCAmJiBfcHJvcHMkaWQgIT09IHZvaWQgMCA/IF9wcm9wcyRpZCA6IHVuaXF1ZUlkKCdyZWNoYXJ0cycpLCBcIi1jbGlwXCIpO1xuXG4gICAgICAvLyB0cmlnZ2VyIDYwZnBzXG4gICAgICBfdGhpcy50aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlID0gdGhyb3R0bGUoX3RoaXMudHJpZ2dlcmVkQWZ0ZXJNb3VzZU1vdmUsIChfcHJvcHMkdGhyb3R0bGVEZWxheSA9IF9wcm9wcy50aHJvdHRsZURlbGF5KSAhPT0gbnVsbCAmJiBfcHJvcHMkdGhyb3R0bGVEZWxheSAhPT0gdm9pZCAwID8gX3Byb3BzJHRocm90dGxlRGVsYXkgOiAxMDAwIC8gNjApO1xuICAgICAgX3RoaXMuc3RhdGUgPSB7fTtcbiAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgX2luaGVyaXRzKENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLCBfQ29tcG9uZW50KTtcbiAgICByZXR1cm4gX2NyZWF0ZUNsYXNzKENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLCBbe1xuICAgICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyRtYXJnaW4kbGUsIF90aGlzJHByb3BzJG1hcmdpbiR0bztcbiAgICAgICAgdGhpcy5hZGRMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLnNldERldGFpbHMoe1xuICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5jb250YWluZXIsXG4gICAgICAgICAgb2Zmc2V0OiB7XG4gICAgICAgICAgICBsZWZ0OiAoX3RoaXMkcHJvcHMkbWFyZ2luJGxlID0gdGhpcy5wcm9wcy5tYXJnaW4ubGVmdCkgIT09IG51bGwgJiYgX3RoaXMkcHJvcHMkbWFyZ2luJGxlICE9PSB2b2lkIDAgPyBfdGhpcyRwcm9wcyRtYXJnaW4kbGUgOiAwLFxuICAgICAgICAgICAgdG9wOiAoX3RoaXMkcHJvcHMkbWFyZ2luJHRvID0gdGhpcy5wcm9wcy5tYXJnaW4udG9wKSAhPT0gbnVsbCAmJiBfdGhpcyRwcm9wcyRtYXJnaW4kdG8gIT09IHZvaWQgMCA/IF90aGlzJHByb3BzJG1hcmdpbiR0byA6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvb3JkaW5hdGVMaXN0OiB0aGlzLnN0YXRlLnRvb2x0aXBUaWNrcyxcbiAgICAgICAgICBtb3VzZUhhbmRsZXJDYWxsYmFjazogdGhpcy50cmlnZ2VyZWRBZnRlck1vdXNlTW92ZSxcbiAgICAgICAgICBsYXlvdXQ6IHRoaXMucHJvcHMubGF5b3V0XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRpc3BsYXlEZWZhdWx0VG9vbHRpcCgpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJkaXNwbGF5RGVmYXVsdFRvb2x0aXBcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBkaXNwbGF5RGVmYXVsdFRvb2x0aXAoKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczUgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHM1LmNoaWxkcmVuLFxuICAgICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczUuZGF0YSxcbiAgICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczUuaGVpZ2h0LFxuICAgICAgICAgIGxheW91dCA9IF90aGlzJHByb3BzNS5sYXlvdXQ7XG4gICAgICAgIHZhciB0b29sdGlwRWxlbSA9IGZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgVG9vbHRpcCk7XG4gICAgICAgIC8vIElmIHRoZSBjaGFydCBkb2Vzbid0IGluY2x1ZGUgYSA8VG9vbHRpcCAvPiBlbGVtZW50LCB0aGVyZSdzIG5vIHRvb2x0aXAgdG8gZGlzcGxheVxuICAgICAgICBpZiAoIXRvb2x0aXBFbGVtKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWZhdWx0SW5kZXggPSB0b29sdGlwRWxlbS5wcm9wcy5kZWZhdWx0SW5kZXg7XG5cbiAgICAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IHJ1bnRpbWUgZXJyb3JzXG4gICAgICAgIGlmICh0eXBlb2YgZGVmYXVsdEluZGV4ICE9PSAnbnVtYmVyJyB8fCBkZWZhdWx0SW5kZXggPCAwIHx8IGRlZmF1bHRJbmRleCA+IHRoaXMuc3RhdGUudG9vbHRpcFRpY2tzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFjdGl2ZUxhYmVsID0gdGhpcy5zdGF0ZS50b29sdGlwVGlja3NbZGVmYXVsdEluZGV4XSAmJiB0aGlzLnN0YXRlLnRvb2x0aXBUaWNrc1tkZWZhdWx0SW5kZXhdLnZhbHVlO1xuICAgICAgICB2YXIgYWN0aXZlUGF5bG9hZCA9IGdldFRvb2x0aXBDb250ZW50KHRoaXMuc3RhdGUsIGRhdGEsIGRlZmF1bHRJbmRleCwgYWN0aXZlTGFiZWwpO1xuICAgICAgICB2YXIgaW5kZXBlbmRlbnRBeGlzQ29vcmQgPSB0aGlzLnN0YXRlLnRvb2x0aXBUaWNrc1tkZWZhdWx0SW5kZXhdLmNvb3JkaW5hdGU7XG4gICAgICAgIHZhciBkZXBlbmRlbnRBeGlzQ29vcmQgPSAodGhpcy5zdGF0ZS5vZmZzZXQudG9wICsgaGVpZ2h0KSAvIDI7XG4gICAgICAgIHZhciBpc0hvcml6b250YWwgPSBsYXlvdXQgPT09ICdob3Jpem9udGFsJztcbiAgICAgICAgdmFyIGFjdGl2ZUNvb3JkaW5hdGUgPSBpc0hvcml6b250YWwgPyB7XG4gICAgICAgICAgeDogaW5kZXBlbmRlbnRBeGlzQ29vcmQsXG4gICAgICAgICAgeTogZGVwZW5kZW50QXhpc0Nvb3JkXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgeTogaW5kZXBlbmRlbnRBeGlzQ29vcmQsXG4gICAgICAgICAgeDogZGVwZW5kZW50QXhpc0Nvb3JkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gVW5saWtlIG90aGVyIGNoYXJ0IHR5cGVzLCBzY2F0dGVyIHBsb3QncyB0b29sdGlwIHBvc2l0aW9ucyByZWx5IG9uIGJvdGggWCBhbmQgWSBjb29yZGluYXRlcy4gT25seSB0aGUgc2NhdHRlciBwbG90XG4gICAgICAgIC8vIGVsZW1lbnQga25vd3MgaXRzIG93biBZIGNvb3JkaW5hdGVzLlxuICAgICAgICAvLyBJZiB0aGVyZSdzIGEgc2NhdHRlciBwbG90LCB3ZSdsbCB3YW50IHRvIGdyYWIgdGhhdCBlbGVtZW50IGZvciBhbiBpbnRlcnJvZ2F0aW9uLlxuICAgICAgICB2YXIgc2NhdHRlclBsb3RFbGVtZW50ID0gdGhpcy5zdGF0ZS5mb3JtYXR0ZWRHcmFwaGljYWxJdGVtcy5maW5kKGZ1bmN0aW9uIChfcmVmMTIpIHtcbiAgICAgICAgICB2YXIgaXRlbSA9IF9yZWYxMi5pdGVtO1xuICAgICAgICAgIHJldHVybiBpdGVtLnR5cGUubmFtZSA9PT0gJ1NjYXR0ZXInO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHNjYXR0ZXJQbG90RWxlbWVudCkge1xuICAgICAgICAgIGFjdGl2ZUNvb3JkaW5hdGUgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGFjdGl2ZUNvb3JkaW5hdGUpLCBzY2F0dGVyUGxvdEVsZW1lbnQucHJvcHMucG9pbnRzW2RlZmF1bHRJbmRleF0udG9vbHRpcFBvc2l0aW9uKTtcbiAgICAgICAgICBhY3RpdmVQYXlsb2FkID0gc2NhdHRlclBsb3RFbGVtZW50LnByb3BzLnBvaW50c1tkZWZhdWx0SW5kZXhdLnRvb2x0aXBQYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHZhciBuZXh0U3RhdGUgPSB7XG4gICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4OiBkZWZhdWx0SW5kZXgsXG4gICAgICAgICAgaXNUb29sdGlwQWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZUxhYmVsOiBhY3RpdmVMYWJlbCxcbiAgICAgICAgICBhY3RpdmVQYXlsb2FkOiBhY3RpdmVQYXlsb2FkLFxuICAgICAgICAgIGFjdGl2ZUNvb3JkaW5hdGU6IGFjdGl2ZUNvb3JkaW5hdGVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShuZXh0U3RhdGUpO1xuICAgICAgICB0aGlzLnJlbmRlckN1cnNvcih0b29sdGlwRWxlbSk7XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55b25lIHdobyBrZXlib2FyZC1vbmx5IHVzZXJzIHdobyB0YWIgdG8gdGhlIGNoYXJ0IHdpbGwgc3RhcnQgdGhlaXJcbiAgICAgICAgLy8gY3Vyc29ycyBhdCBkZWZhdWx0SW5kZXhcbiAgICAgICAgdGhpcy5hY2Nlc3NpYmlsaXR5TWFuYWdlci5zZXRJbmRleChkZWZhdWx0SW5kZXgpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5hY2Nlc3NpYmlsaXR5TGF5ZXIpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS50b29sdGlwVGlja3MgIT09IHByZXZTdGF0ZS50b29sdGlwVGlja3MpIHtcbiAgICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLnNldERldGFpbHMoe1xuICAgICAgICAgICAgY29vcmRpbmF0ZUxpc3Q6IHRoaXMuc3RhdGUudG9vbHRpcFRpY2tzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvcHMubGF5b3V0ICE9PSBwcmV2UHJvcHMubGF5b3V0KSB7XG4gICAgICAgICAgdGhpcy5hY2Nlc3NpYmlsaXR5TWFuYWdlci5zZXREZXRhaWxzKHtcbiAgICAgICAgICAgIGxheW91dDogdGhpcy5wcm9wcy5sYXlvdXRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5tYXJnaW4gIT09IHByZXZQcm9wcy5tYXJnaW4pIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcHJvcHMkbWFyZ2luJGxlMiwgX3RoaXMkcHJvcHMkbWFyZ2luJHRvMjtcbiAgICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLnNldERldGFpbHMoe1xuICAgICAgICAgICAgb2Zmc2V0OiB7XG4gICAgICAgICAgICAgIGxlZnQ6IChfdGhpcyRwcm9wcyRtYXJnaW4kbGUyID0gdGhpcy5wcm9wcy5tYXJnaW4ubGVmdCkgIT09IG51bGwgJiYgX3RoaXMkcHJvcHMkbWFyZ2luJGxlMiAhPT0gdm9pZCAwID8gX3RoaXMkcHJvcHMkbWFyZ2luJGxlMiA6IDAsXG4gICAgICAgICAgICAgIHRvcDogKF90aGlzJHByb3BzJG1hcmdpbiR0bzIgPSB0aGlzLnByb3BzLm1hcmdpbi50b3ApICE9PSBudWxsICYmIF90aGlzJHByb3BzJG1hcmdpbiR0bzIgIT09IHZvaWQgMCA/IF90aGlzJHByb3BzJG1hcmdpbiR0bzIgOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTb21ldGhpbmcgaGFzIHRvIGJlIHJldHVybmVkIGZvciBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIFRvb2x0aXAgdXBkYXRlZC4gSWYgc28sIHJlLWNoZWNrIGRlZmF1bHQgdG9vbHRpcCBwb3NpdGlvblxuICAgICAgICBpZiAoIWlzQ2hpbGRyZW5FcXVhbChbZmluZENoaWxkQnlUeXBlKHByZXZQcm9wcy5jaGlsZHJlbiwgVG9vbHRpcCldLCBbZmluZENoaWxkQnlUeXBlKHRoaXMucHJvcHMuY2hpbGRyZW4sIFRvb2x0aXApXSkpIHtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlEZWZhdWx0VG9vbHRpcCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy50aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlLmNhbmNlbCgpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRUb29sdGlwRXZlbnRUeXBlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VG9vbHRpcEV2ZW50VHlwZSgpIHtcbiAgICAgICAgdmFyIHRvb2x0aXBJdGVtID0gZmluZENoaWxkQnlUeXBlKHRoaXMucHJvcHMuY2hpbGRyZW4sIFRvb2x0aXApO1xuICAgICAgICBpZiAodG9vbHRpcEl0ZW0gJiYgdHlwZW9mIHRvb2x0aXBJdGVtLnByb3BzLnNoYXJlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdmFyIGV2ZW50VHlwZSA9IHRvb2x0aXBJdGVtLnByb3BzLnNoYXJlZCA/ICdheGlzJyA6ICdpdGVtJztcbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVUb29sdGlwRXZlbnRUeXBlcy5pbmRleE9mKGV2ZW50VHlwZSkgPj0gMCA/IGV2ZW50VHlwZSA6IGRlZmF1bHRUb29sdGlwRXZlbnRUeXBlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWZhdWx0VG9vbHRpcEV2ZW50VHlwZTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBHZXQgdGhlIGluZm9ybWF0aW9uIG9mIG1vdXNlIGluIGNoYXJ0LCByZXR1cm4gbnVsbCB3aGVuIHRoZSBtb3VzZSBpcyBub3QgaW4gdGhlIGNoYXJ0XG4gICAgICAgKiBAcGFyYW0gIHtNb3VzZVBvaW50ZXJ9IGV2ZW50ICAgIFRoZSBldmVudCBvYmplY3RcbiAgICAgICAqIEByZXR1cm4ge09iamVjdH0gICAgICAgICAgTW91c2UgZGF0YVxuICAgICAgICovXG4gICAgfSwge1xuICAgICAga2V5OiBcImdldE1vdXNlSW5mb1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldE1vdXNlSW5mbyhldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLmNvbnRhaW5lcjtcbiAgICAgICAgdmFyIGJvdW5kaW5nUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHZhciBjb250YWluZXJPZmZzZXQgPSBnZXRPZmZzZXQoYm91bmRpbmdSZWN0KTtcbiAgICAgICAgdmFyIGUgPSB7XG4gICAgICAgICAgY2hhcnRYOiBNYXRoLnJvdW5kKGV2ZW50LnBhZ2VYIC0gY29udGFpbmVyT2Zmc2V0LmxlZnQpLFxuICAgICAgICAgIGNoYXJ0WTogTWF0aC5yb3VuZChldmVudC5wYWdlWSAtIGNvbnRhaW5lck9mZnNldC50b3ApXG4gICAgICAgIH07XG4gICAgICAgIHZhciBzY2FsZSA9IGJvdW5kaW5nUmVjdC53aWR0aCAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgICAgICAgdmFyIHJhbmdlT2JqID0gdGhpcy5pblJhbmdlKGUuY2hhcnRYLCBlLmNoYXJ0WSwgc2NhbGUpO1xuICAgICAgICBpZiAoIXJhbmdlT2JqKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF90aGlzJHN0YXRlOSA9IHRoaXMuc3RhdGUsXG4gICAgICAgICAgeEF4aXNNYXAgPSBfdGhpcyRzdGF0ZTkueEF4aXNNYXAsXG4gICAgICAgICAgeUF4aXNNYXAgPSBfdGhpcyRzdGF0ZTkueUF4aXNNYXA7XG4gICAgICAgIHZhciB0b29sdGlwRXZlbnRUeXBlID0gdGhpcy5nZXRUb29sdGlwRXZlbnRUeXBlKCk7XG4gICAgICAgIHZhciB0b29sVGlwRGF0YSA9IGdldFRvb2x0aXBEYXRhKHRoaXMuc3RhdGUsIHRoaXMucHJvcHMuZGF0YSwgdGhpcy5wcm9wcy5sYXlvdXQsIHJhbmdlT2JqKTtcbiAgICAgICAgaWYgKHRvb2x0aXBFdmVudFR5cGUgIT09ICdheGlzJyAmJiB4QXhpc01hcCAmJiB5QXhpc01hcCkge1xuICAgICAgICAgIHZhciB4U2NhbGUgPSBnZXRBbnlFbGVtZW50T2ZPYmplY3QoeEF4aXNNYXApLnNjYWxlO1xuICAgICAgICAgIHZhciB5U2NhbGUgPSBnZXRBbnlFbGVtZW50T2ZPYmplY3QoeUF4aXNNYXApLnNjYWxlO1xuICAgICAgICAgIHZhciB4VmFsdWUgPSB4U2NhbGUgJiYgeFNjYWxlLmludmVydCA/IHhTY2FsZS5pbnZlcnQoZS5jaGFydFgpIDogbnVsbDtcbiAgICAgICAgICB2YXIgeVZhbHVlID0geVNjYWxlICYmIHlTY2FsZS5pbnZlcnQgPyB5U2NhbGUuaW52ZXJ0KGUuY2hhcnRZKSA6IG51bGw7XG4gICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZSksIHt9LCB7XG4gICAgICAgICAgICB4VmFsdWU6IHhWYWx1ZSxcbiAgICAgICAgICAgIHlWYWx1ZTogeVZhbHVlXG4gICAgICAgICAgfSwgdG9vbFRpcERhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b29sVGlwRGF0YSkge1xuICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGUpLCB0b29sVGlwRGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImluUmFuZ2VcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBpblJhbmdlKHgsIHkpIHtcbiAgICAgICAgdmFyIHNjYWxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAxO1xuICAgICAgICB2YXIgbGF5b3V0ID0gdGhpcy5wcm9wcy5sYXlvdXQ7XG4gICAgICAgIHZhciBzY2FsZWRYID0geCAvIHNjYWxlLFxuICAgICAgICAgIHNjYWxlZFkgPSB5IC8gc2NhbGU7XG4gICAgICAgIGlmIChsYXlvdXQgPT09ICdob3Jpem9udGFsJyB8fCBsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5zdGF0ZS5vZmZzZXQ7XG4gICAgICAgICAgdmFyIGlzSW5SYW5nZSA9IHNjYWxlZFggPj0gb2Zmc2V0LmxlZnQgJiYgc2NhbGVkWCA8PSBvZmZzZXQubGVmdCArIG9mZnNldC53aWR0aCAmJiBzY2FsZWRZID49IG9mZnNldC50b3AgJiYgc2NhbGVkWSA8PSBvZmZzZXQudG9wICsgb2Zmc2V0LmhlaWdodDtcbiAgICAgICAgICByZXR1cm4gaXNJblJhbmdlID8ge1xuICAgICAgICAgICAgeDogc2NhbGVkWCxcbiAgICAgICAgICAgIHk6IHNjYWxlZFlcbiAgICAgICAgICB9IDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX3RoaXMkc3RhdGUxMCA9IHRoaXMuc3RhdGUsXG4gICAgICAgICAgYW5nbGVBeGlzTWFwID0gX3RoaXMkc3RhdGUxMC5hbmdsZUF4aXNNYXAsXG4gICAgICAgICAgcmFkaXVzQXhpc01hcCA9IF90aGlzJHN0YXRlMTAucmFkaXVzQXhpc01hcDtcbiAgICAgICAgaWYgKGFuZ2xlQXhpc01hcCAmJiByYWRpdXNBeGlzTWFwKSB7XG4gICAgICAgICAgdmFyIGFuZ2xlQXhpcyA9IGdldEFueUVsZW1lbnRPZk9iamVjdChhbmdsZUF4aXNNYXApO1xuICAgICAgICAgIHJldHVybiBpblJhbmdlT2ZTZWN0b3Ioe1xuICAgICAgICAgICAgeDogc2NhbGVkWCxcbiAgICAgICAgICAgIHk6IHNjYWxlZFlcbiAgICAgICAgICB9LCBhbmdsZUF4aXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJwYXJzZUV2ZW50c09mV3JhcHBlclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlRXZlbnRzT2ZXcmFwcGVyKCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgICB2YXIgdG9vbHRpcEV2ZW50VHlwZSA9IHRoaXMuZ2V0VG9vbHRpcEV2ZW50VHlwZSgpO1xuICAgICAgICB2YXIgdG9vbHRpcEl0ZW0gPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIFRvb2x0aXApO1xuICAgICAgICB2YXIgdG9vbHRpcEV2ZW50cyA9IHt9O1xuICAgICAgICBpZiAodG9vbHRpcEl0ZW0gJiYgdG9vbHRpcEV2ZW50VHlwZSA9PT0gJ2F4aXMnKSB7XG4gICAgICAgICAgaWYgKHRvb2x0aXBJdGVtLnByb3BzLnRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICAgICAgICAgIHRvb2x0aXBFdmVudHMgPSB7XG4gICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2tcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvb2x0aXBFdmVudHMgPSB7XG4gICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5oYW5kbGVNb3VzZUVudGVyLFxuICAgICAgICAgICAgICBvbkRvdWJsZUNsaWNrOiB0aGlzLmhhbmRsZURvdWJsZUNsaWNrLFxuICAgICAgICAgICAgICBvbk1vdXNlTW92ZTogdGhpcy5oYW5kbGVNb3VzZU1vdmUsXG4gICAgICAgICAgICAgIG9uTW91c2VMZWF2ZTogdGhpcy5oYW5kbGVNb3VzZUxlYXZlLFxuICAgICAgICAgICAgICBvblRvdWNoTW92ZTogdGhpcy5oYW5kbGVUb3VjaE1vdmUsXG4gICAgICAgICAgICAgIG9uVG91Y2hTdGFydDogdGhpcy5oYW5kbGVUb3VjaFN0YXJ0LFxuICAgICAgICAgICAgICBvblRvdWNoRW5kOiB0aGlzLmhhbmRsZVRvdWNoRW5kLFxuICAgICAgICAgICAgICBvbkNvbnRleHRNZW51OiB0aGlzLmhhbmRsZUNvbnRleHRNZW51XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYWRhcHRFdmVudEhhbmRsZXJzIGV4cGVjdHMgRE9NIEV2ZW50IGJ1dCBnZW5lcmF0ZUNhdGVnb3JpY2FsQ2hhcnQgd29ya3Mgd2l0aCBSZWFjdCBVSUV2ZW50c1xuICAgICAgICB2YXIgb3V0ZXJFdmVudHMgPSBhZGFwdEV2ZW50SGFuZGxlcnModGhpcy5wcm9wcywgdGhpcy5oYW5kbGVPdXRlckV2ZW50KTtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3V0ZXJFdmVudHMpLCB0b29sdGlwRXZlbnRzKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiYWRkTGlzdGVuZXJcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRMaXN0ZW5lcigpIHtcbiAgICAgICAgZXZlbnRDZW50ZXIub24oU1lOQ19FVkVOVCwgdGhpcy5oYW5kbGVSZWNlaXZlU3luY0V2ZW50KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwicmVtb3ZlTGlzdGVuZXJcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcigpIHtcbiAgICAgICAgZXZlbnRDZW50ZXIucmVtb3ZlTGlzdGVuZXIoU1lOQ19FVkVOVCwgdGhpcy5oYW5kbGVSZWNlaXZlU3luY0V2ZW50KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZmlsdGVyRm9ybWF0SXRlbVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGZpbHRlckZvcm1hdEl0ZW0oaXRlbSwgZGlzcGxheU5hbWUsIGNoaWxkSW5kZXgpIHtcbiAgICAgICAgdmFyIGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zID0gdGhpcy5zdGF0ZS5mb3JtYXR0ZWRHcmFwaGljYWxJdGVtcztcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgdmFyIGVudHJ5ID0gZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXNbaV07XG4gICAgICAgICAgaWYgKGVudHJ5Lml0ZW0gPT09IGl0ZW0gfHwgZW50cnkucHJvcHMua2V5ID09PSBpdGVtLmtleSB8fCBkaXNwbGF5TmFtZSA9PT0gZ2V0RGlzcGxheU5hbWUoZW50cnkuaXRlbS50eXBlKSAmJiBjaGlsZEluZGV4ID09PSBlbnRyeS5jaGlsZEluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJyZW5kZXJDbGlwUGF0aFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckNsaXBQYXRoKCkge1xuICAgICAgICB2YXIgY2xpcFBhdGhJZCA9IHRoaXMuY2xpcFBhdGhJZDtcbiAgICAgICAgdmFyIF90aGlzJHN0YXRlJG9mZnNldCA9IHRoaXMuc3RhdGUub2Zmc2V0LFxuICAgICAgICAgIGxlZnQgPSBfdGhpcyRzdGF0ZSRvZmZzZXQubGVmdCxcbiAgICAgICAgICB0b3AgPSBfdGhpcyRzdGF0ZSRvZmZzZXQudG9wLFxuICAgICAgICAgIGhlaWdodCA9IF90aGlzJHN0YXRlJG9mZnNldC5oZWlnaHQsXG4gICAgICAgICAgd2lkdGggPSBfdGhpcyRzdGF0ZSRvZmZzZXQud2lkdGg7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRlZnNcIiwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjbGlwUGF0aFwiLCB7XG4gICAgICAgICAgaWQ6IGNsaXBQYXRoSWRcbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgIHk6IHRvcCxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICB3aWR0aDogd2lkdGhcbiAgICAgICAgfSkpKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZ2V0WFNjYWxlc1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFhTY2FsZXMoKSB7XG4gICAgICAgIHZhciB4QXhpc01hcCA9IHRoaXMuc3RhdGUueEF4aXNNYXA7XG4gICAgICAgIHJldHVybiB4QXhpc01hcCA/IE9iamVjdC5lbnRyaWVzKHhBeGlzTWFwKS5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgX3JlZjEzKSB7XG4gICAgICAgICAgdmFyIF9yZWYxNCA9IF9zbGljZWRUb0FycmF5KF9yZWYxMywgMiksXG4gICAgICAgICAgICBheGlzSWQgPSBfcmVmMTRbMF0sXG4gICAgICAgICAgICBheGlzUHJvcHMgPSBfcmVmMTRbMV07XG4gICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzKSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgYXhpc0lkLCBheGlzUHJvcHMuc2NhbGUpKTtcbiAgICAgICAgfSwge30pIDogbnVsbDtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZ2V0WVNjYWxlc1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFlTY2FsZXMoKSB7XG4gICAgICAgIHZhciB5QXhpc01hcCA9IHRoaXMuc3RhdGUueUF4aXNNYXA7XG4gICAgICAgIHJldHVybiB5QXhpc01hcCA/IE9iamVjdC5lbnRyaWVzKHlBeGlzTWFwKS5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgX3JlZjE1KSB7XG4gICAgICAgICAgdmFyIF9yZWYxNiA9IF9zbGljZWRUb0FycmF5KF9yZWYxNSwgMiksXG4gICAgICAgICAgICBheGlzSWQgPSBfcmVmMTZbMF0sXG4gICAgICAgICAgICBheGlzUHJvcHMgPSBfcmVmMTZbMV07XG4gICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzKSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgYXhpc0lkLCBheGlzUHJvcHMuc2NhbGUpKTtcbiAgICAgICAgfSwge30pIDogbnVsbDtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZ2V0WFNjYWxlQnlBeGlzSWRcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRYU2NhbGVCeUF4aXNJZChheGlzSWQpIHtcbiAgICAgICAgdmFyIF90aGlzJHN0YXRlJHhBeGlzTWFwO1xuICAgICAgICByZXR1cm4gKF90aGlzJHN0YXRlJHhBeGlzTWFwID0gdGhpcy5zdGF0ZS54QXhpc01hcCkgPT09IG51bGwgfHwgX3RoaXMkc3RhdGUkeEF4aXNNYXAgPT09IHZvaWQgMCB8fCAoX3RoaXMkc3RhdGUkeEF4aXNNYXAgPSBfdGhpcyRzdGF0ZSR4QXhpc01hcFtheGlzSWRdKSA9PT0gbnVsbCB8fCBfdGhpcyRzdGF0ZSR4QXhpc01hcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkc3RhdGUkeEF4aXNNYXAuc2NhbGU7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldFlTY2FsZUJ5QXhpc0lkXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0WVNjYWxlQnlBeGlzSWQoYXhpc0lkKSB7XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZSR5QXhpc01hcDtcbiAgICAgICAgcmV0dXJuIChfdGhpcyRzdGF0ZSR5QXhpc01hcCA9IHRoaXMuc3RhdGUueUF4aXNNYXApID09PSBudWxsIHx8IF90aGlzJHN0YXRlJHlBeGlzTWFwID09PSB2b2lkIDAgfHwgKF90aGlzJHN0YXRlJHlBeGlzTWFwID0gX3RoaXMkc3RhdGUkeUF4aXNNYXBbYXhpc0lkXSkgPT09IG51bGwgfHwgX3RoaXMkc3RhdGUkeUF4aXNNYXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHN0YXRlJHlBeGlzTWFwLnNjYWxlO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRJdGVtQnlYWVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldEl0ZW1CeVhZKGNoYXJ0WFkpIHtcbiAgICAgICAgdmFyIF90aGlzJHN0YXRlMTEgPSB0aGlzLnN0YXRlLFxuICAgICAgICAgIGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zID0gX3RoaXMkc3RhdGUxMS5mb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyxcbiAgICAgICAgICBhY3RpdmVJdGVtID0gX3RoaXMkc3RhdGUxMS5hY3RpdmVJdGVtO1xuICAgICAgICBpZiAoZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgJiYgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZ3JhcGhpY2FsSXRlbSA9IGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zW2ldO1xuICAgICAgICAgICAgLy8gZ3JhcGhpY2FsSXRlbSBpcyBub3QgYSBSZWFjdCBFbGVtZW50IHNvIHdlIGRvbid0IG5lZWQgdG8gcmVzb2x2ZSBkZWZhdWx0UHJvcHNcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IGdyYXBoaWNhbEl0ZW0ucHJvcHMsXG4gICAgICAgICAgICAgIGl0ZW0gPSBncmFwaGljYWxJdGVtLml0ZW07XG4gICAgICAgICAgICB2YXIgaXRlbVByb3BzID0gaXRlbS50eXBlLmRlZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkID8gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpdGVtLnR5cGUuZGVmYXVsdFByb3BzKSwgaXRlbS5wcm9wcykgOiBpdGVtLnByb3BzO1xuICAgICAgICAgICAgdmFyIGl0ZW1EaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lKGl0ZW0udHlwZSk7XG4gICAgICAgICAgICBpZiAoaXRlbURpc3BsYXlOYW1lID09PSAnQmFyJykge1xuICAgICAgICAgICAgICB2YXIgYWN0aXZlQmFySXRlbSA9IChwcm9wcy5kYXRhIHx8IFtdKS5maW5kKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0luUmVjdGFuZ2xlKGNoYXJ0WFksIGVudHJ5KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChhY3RpdmVCYXJJdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGdyYXBoaWNhbEl0ZW06IGdyYXBoaWNhbEl0ZW0sXG4gICAgICAgICAgICAgICAgICBwYXlsb2FkOiBhY3RpdmVCYXJJdGVtXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtRGlzcGxheU5hbWUgPT09ICdSYWRpYWxCYXInKSB7XG4gICAgICAgICAgICAgIHZhciBfYWN0aXZlQmFySXRlbSA9IChwcm9wcy5kYXRhIHx8IFtdKS5maW5kKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpblJhbmdlT2ZTZWN0b3IoY2hhcnRYWSwgZW50cnkpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKF9hY3RpdmVCYXJJdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGdyYXBoaWNhbEl0ZW06IGdyYXBoaWNhbEl0ZW0sXG4gICAgICAgICAgICAgICAgICBwYXlsb2FkOiBfYWN0aXZlQmFySXRlbVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNGdW5uZWwoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkgfHwgaXNQaWUoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkgfHwgaXNTY2F0dGVyKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgICAgICAgICAgIHZhciBhY3RpdmVJbmRleCA9IGdldEFjdGl2ZVNoYXBlSW5kZXhGb3JUb29sdGlwKHtcbiAgICAgICAgICAgICAgICBncmFwaGljYWxJdGVtOiBncmFwaGljYWxJdGVtLFxuICAgICAgICAgICAgICAgIGFjdGl2ZVRvb2x0aXBJdGVtOiBhY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtUHJvcHMuZGF0YVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgdmFyIGNoaWxkSW5kZXggPSBpdGVtUHJvcHMuYWN0aXZlSW5kZXggPT09IHVuZGVmaW5lZCA/IGFjdGl2ZUluZGV4IDogaXRlbVByb3BzLmFjdGl2ZUluZGV4O1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGdyYXBoaWNhbEl0ZW06IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZ3JhcGhpY2FsSXRlbSksIHt9LCB7XG4gICAgICAgICAgICAgICAgICBjaGlsZEluZGV4OiBjaGlsZEluZGV4XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogaXNTY2F0dGVyKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pID8gaXRlbVByb3BzLmRhdGFbYWN0aXZlSW5kZXhdIDogZ3JhcGhpY2FsSXRlbS5wcm9wcy5kYXRhW2FjdGl2ZUluZGV4XVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICB2YXIgX3RoaXMzID0gdGhpcztcbiAgICAgICAgaWYgKCF2YWxpZGF0ZVdpZHRoSGVpZ2h0KHRoaXMpKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczYuY2hpbGRyZW4sXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM2LmNsYXNzTmFtZSxcbiAgICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzNi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczYuaGVpZ2h0LFxuICAgICAgICAgIHN0eWxlID0gX3RoaXMkcHJvcHM2LnN0eWxlLFxuICAgICAgICAgIGNvbXBhY3QgPSBfdGhpcyRwcm9wczYuY29tcGFjdCxcbiAgICAgICAgICB0aXRsZSA9IF90aGlzJHByb3BzNi50aXRsZSxcbiAgICAgICAgICBkZXNjID0gX3RoaXMkcHJvcHM2LmRlc2MsXG4gICAgICAgICAgb3RoZXJzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNiwgX2V4Y2x1ZGVkMik7XG4gICAgICAgIHZhciBhdHRycyA9IGZpbHRlclByb3BzKG90aGVycywgZmFsc2UpO1xuXG4gICAgICAgIC8vIFRoZSBcImNvbXBhY3RcIiBtb2RlIGlzIG1haW5seSB1c2VkIGFzIHRoZSBwYW5vcmFtYSB3aXRoaW4gQnJ1c2hcbiAgICAgICAgaWYgKGNvbXBhY3QpIHtcbiAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hhcnRMYXlvdXRDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMucHJvcHMud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMucHJvcHMuaGVpZ2h0LFxuICAgICAgICAgICAgY2xpcFBhdGhJZDogdGhpcy5jbGlwUGF0aElkXG4gICAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3VyZmFjZSwgX2V4dGVuZHMoe30sIGF0dHJzLCB7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgICAgIGRlc2M6IGRlc2NcbiAgICAgICAgICB9KSwgdGhpcy5yZW5kZXJDbGlwUGF0aCgpLCByZW5kZXJCeU9yZGVyKGNoaWxkcmVuLCB0aGlzLnJlbmRlck1hcCkpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5hY2Nlc3NpYmlsaXR5TGF5ZXIpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcHJvcHMkdGFiSW5kZXgsIF90aGlzJHByb3BzJHJvbGU7XG4gICAgICAgICAgLy8gU2V0IHRhYkluZGV4IHRvIDAgYnkgZGVmYXVsdCAoY2FuIGJlIG92ZXJ3cml0dGVuKVxuICAgICAgICAgIGF0dHJzLnRhYkluZGV4ID0gKF90aGlzJHByb3BzJHRhYkluZGV4ID0gdGhpcy5wcm9wcy50YWJJbmRleCkgIT09IG51bGwgJiYgX3RoaXMkcHJvcHMkdGFiSW5kZXggIT09IHZvaWQgMCA/IF90aGlzJHByb3BzJHRhYkluZGV4IDogMDtcbiAgICAgICAgICAvLyBTZXQgcm9sZSB0byBpbWcgYnkgZGVmYXVsdCAoY2FuIGJlIG92ZXJ3cml0dGVuKVxuICAgICAgICAgIGF0dHJzLnJvbGUgPSAoX3RoaXMkcHJvcHMkcm9sZSA9IHRoaXMucHJvcHMucm9sZSkgIT09IG51bGwgJiYgX3RoaXMkcHJvcHMkcm9sZSAhPT0gdm9pZCAwID8gX3RoaXMkcHJvcHMkcm9sZSA6ICdhcHBsaWNhdGlvbic7XG4gICAgICAgICAgYXR0cnMub25LZXlEb3duID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIF90aGlzMy5hY2Nlc3NpYmlsaXR5TWFuYWdlci5rZXlib2FyZEV2ZW50KGUpO1xuICAgICAgICAgICAgLy8gJ29uS2V5RG93bicgaXMgbm90IGN1cnJlbnRseSBhIHN1cHBvcnRlZCBwcm9wIHRoYXQgY2FuIGJlIHBhc3NlZCB0aHJvdWdoXG4gICAgICAgICAgICAvLyBpZiBpdCdzIGFkZGVkLCB0aGlzIHNob3VsZCBiZSBhZGRlZDogdGhpcy5wcm9wcy5vbktleURvd24oZSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBhdHRycy5vbkZvY3VzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLmZvY3VzKCk7XG4gICAgICAgICAgICAvLyAnb25Gb2N1cycgaXMgbm90IGN1cnJlbnRseSBhIHN1cHBvcnRlZCBwcm9wIHRoYXQgY2FuIGJlIHBhc3NlZCB0aHJvdWdoXG4gICAgICAgICAgICAvLyBpZiBpdCdzIGFkZGVkLCB0aGUgZm9jdXMgZXZlbnQgc2hvdWxkIGJlIGZvcndhcmRlZCB0byB0aGUgcHJvcFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGV2ZW50cyA9IHRoaXMucGFyc2VFdmVudHNPZldyYXBwZXIoKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENoYXJ0TGF5b3V0Q29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICAgICAgd2lkdGg6IHRoaXMucHJvcHMud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLnByb3BzLmhlaWdodCxcbiAgICAgICAgICBjbGlwUGF0aElkOiB0aGlzLmNsaXBQYXRoSWRcbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtd3JhcHBlcicsIGNsYXNzTmFtZSksXG4gICAgICAgICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgfSwgc3R5bGUpXG4gICAgICAgIH0sIGV2ZW50cywge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKG5vZGUpIHtcbiAgICAgICAgICAgIF90aGlzMy5jb250YWluZXIgPSBub2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFN1cmZhY2UsIF9leHRlbmRzKHt9LCBhdHRycywge1xuICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgICAgZGVzYzogZGVzYyxcbiAgICAgICAgICBzdHlsZTogRlVMTF9XSURUSF9BTkRfSEVJR0hUXG4gICAgICAgIH0pLCB0aGlzLnJlbmRlckNsaXBQYXRoKCksIHJlbmRlckJ5T3JkZXIoY2hpbGRyZW4sIHRoaXMucmVuZGVyTWFwKSksIHRoaXMucmVuZGVyTGVnZW5kKCksIHRoaXMucmVuZGVyVG9vbHRpcCgpKSk7XG4gICAgICB9XG4gICAgfV0pO1xuICB9KENvbXBvbmVudCk7XG4gIF9kZWZpbmVQcm9wZXJ0eShDYXRlZ29yaWNhbENoYXJ0V3JhcHBlciwgXCJkaXNwbGF5TmFtZVwiLCBjaGFydE5hbWUpO1xuICAvLyB0b2RvIGpvaW4gc3BlY2lmaWMgY2hhcnQgcHJvcFR5cGVzXG4gIF9kZWZpbmVQcm9wZXJ0eShDYXRlZ29yaWNhbENoYXJ0V3JhcHBlciwgXCJkZWZhdWx0UHJvcHNcIiwgX29iamVjdFNwcmVhZCh7XG4gICAgbGF5b3V0OiAnaG9yaXpvbnRhbCcsXG4gICAgc3RhY2tPZmZzZXQ6ICdub25lJyxcbiAgICBiYXJDYXRlZ29yeUdhcDogJzEwJScsXG4gICAgYmFyR2FwOiA0LFxuICAgIG1hcmdpbjoge1xuICAgICAgdG9wOiA1LFxuICAgICAgcmlnaHQ6IDUsXG4gICAgICBib3R0b206IDUsXG4gICAgICBsZWZ0OiA1XG4gICAgfSxcbiAgICByZXZlcnNlU3RhY2tPcmRlcjogZmFsc2UsXG4gICAgc3luY01ldGhvZDogJ2luZGV4J1xuICB9LCBkZWZhdWx0UHJvcHMpKTtcbiAgX2RlZmluZVByb3BlcnR5KENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLCBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLCBmdW5jdGlvbiAobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICB2YXIgZGF0YUtleSA9IG5leHRQcm9wcy5kYXRhS2V5LFxuICAgICAgZGF0YSA9IG5leHRQcm9wcy5kYXRhLFxuICAgICAgY2hpbGRyZW4gPSBuZXh0UHJvcHMuY2hpbGRyZW4sXG4gICAgICB3aWR0aCA9IG5leHRQcm9wcy53aWR0aCxcbiAgICAgIGhlaWdodCA9IG5leHRQcm9wcy5oZWlnaHQsXG4gICAgICBsYXlvdXQgPSBuZXh0UHJvcHMubGF5b3V0LFxuICAgICAgc3RhY2tPZmZzZXQgPSBuZXh0UHJvcHMuc3RhY2tPZmZzZXQsXG4gICAgICBtYXJnaW4gPSBuZXh0UHJvcHMubWFyZ2luO1xuICAgIHZhciBkYXRhU3RhcnRJbmRleCA9IHByZXZTdGF0ZS5kYXRhU3RhcnRJbmRleCxcbiAgICAgIGRhdGFFbmRJbmRleCA9IHByZXZTdGF0ZS5kYXRhRW5kSW5kZXg7XG4gICAgaWYgKHByZXZTdGF0ZS51cGRhdGVJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgZGVmYXVsdFN0YXRlID0gY3JlYXRlRGVmYXVsdFN0YXRlKG5leHRQcm9wcyk7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRTdGF0ZSksIHt9LCB7XG4gICAgICAgIHVwZGF0ZUlkOiAwXG4gICAgICB9LCB1cGRhdGVTdGF0ZU9mQXhpc01hcHNPZmZzZXRBbmRTdGFja0dyb3Vwcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBwcm9wczogbmV4dFByb3BzXG4gICAgICB9LCBkZWZhdWx0U3RhdGUpLCB7fSwge1xuICAgICAgICB1cGRhdGVJZDogMFxuICAgICAgfSksIHByZXZTdGF0ZSkpLCB7fSwge1xuICAgICAgICBwcmV2RGF0YUtleTogZGF0YUtleSxcbiAgICAgICAgcHJldkRhdGE6IGRhdGEsXG4gICAgICAgIHByZXZXaWR0aDogd2lkdGgsXG4gICAgICAgIHByZXZIZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgcHJldkxheW91dDogbGF5b3V0LFxuICAgICAgICBwcmV2U3RhY2tPZmZzZXQ6IHN0YWNrT2Zmc2V0LFxuICAgICAgICBwcmV2TWFyZ2luOiBtYXJnaW4sXG4gICAgICAgIHByZXZDaGlsZHJlbjogY2hpbGRyZW5cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZGF0YUtleSAhPT0gcHJldlN0YXRlLnByZXZEYXRhS2V5IHx8IGRhdGEgIT09IHByZXZTdGF0ZS5wcmV2RGF0YSB8fCB3aWR0aCAhPT0gcHJldlN0YXRlLnByZXZXaWR0aCB8fCBoZWlnaHQgIT09IHByZXZTdGF0ZS5wcmV2SGVpZ2h0IHx8IGxheW91dCAhPT0gcHJldlN0YXRlLnByZXZMYXlvdXQgfHwgc3RhY2tPZmZzZXQgIT09IHByZXZTdGF0ZS5wcmV2U3RhY2tPZmZzZXQgfHwgIXNoYWxsb3dFcXVhbChtYXJnaW4sIHByZXZTdGF0ZS5wcmV2TWFyZ2luKSkge1xuICAgICAgdmFyIF9kZWZhdWx0U3RhdGUgPSBjcmVhdGVEZWZhdWx0U3RhdGUobmV4dFByb3BzKTtcblxuICAgICAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL3JlY2hhcnRzL3JlY2hhcnRzL2lzc3Vlcy8yMTQzXG4gICAgICB2YXIga2VlcEZyb21QcmV2U3RhdGUgPSB7XG4gICAgICAgIC8vIChjaGFydFgsIGNoYXJ0WSkgYXJlICgwLDApIGluIGRlZmF1bHQgc3RhdGUsIGJ1dCB3ZSB3YW50IHRvIGtlZXAgdGhlIGxhc3QgbW91c2UgcG9zaXRpb24gdG8gYXZvaWRcbiAgICAgICAgLy8gYW55IGZsaWNrZXJpbmdcbiAgICAgICAgY2hhcnRYOiBwcmV2U3RhdGUuY2hhcnRYLFxuICAgICAgICBjaGFydFk6IHByZXZTdGF0ZS5jaGFydFksXG4gICAgICAgIC8vIFRoZSB0b29sdGlwIHNob3VsZCBzdGF5IGFjdGl2ZSB3aGVuIGl0IHdhcyBhY3RpdmUgaW4gdGhlIHByZXZpb3VzIHJlbmRlci4gSWYgdGhpcyBpcyBub3RcbiAgICAgICAgLy8gdGhlIGNhc2UsIHRoZSB0b29sdGlwIGRpc2FwcGVhcnMgYW5kIGltbWVkaWF0ZWx5IHJlLWFwcGVhcnMsIGNhdXNpbmcgYSBmbGlja2VyaW5nIGVmZmVjdFxuICAgICAgICBpc1Rvb2x0aXBBY3RpdmU6IHByZXZTdGF0ZS5pc1Rvb2x0aXBBY3RpdmVcbiAgICAgIH07XG4gICAgICB2YXIgdXBkYXRlc1RvU3RhdGUgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdldFRvb2x0aXBEYXRhKHByZXZTdGF0ZSwgZGF0YSwgbGF5b3V0KSksIHt9LCB7XG4gICAgICAgIHVwZGF0ZUlkOiBwcmV2U3RhdGUudXBkYXRlSWQgKyAxXG4gICAgICB9KTtcbiAgICAgIHZhciBuZXdTdGF0ZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfZGVmYXVsdFN0YXRlKSwga2VlcEZyb21QcmV2U3RhdGUpLCB1cGRhdGVzVG9TdGF0ZSk7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG5ld1N0YXRlKSwgdXBkYXRlU3RhdGVPZkF4aXNNYXBzT2Zmc2V0QW5kU3RhY2tHcm91cHMoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHByb3BzOiBuZXh0UHJvcHNcbiAgICAgIH0sIG5ld1N0YXRlKSwgcHJldlN0YXRlKSksIHt9LCB7XG4gICAgICAgIHByZXZEYXRhS2V5OiBkYXRhS2V5LFxuICAgICAgICBwcmV2RGF0YTogZGF0YSxcbiAgICAgICAgcHJldldpZHRoOiB3aWR0aCxcbiAgICAgICAgcHJldkhlaWdodDogaGVpZ2h0LFxuICAgICAgICBwcmV2TGF5b3V0OiBsYXlvdXQsXG4gICAgICAgIHByZXZTdGFja09mZnNldDogc3RhY2tPZmZzZXQsXG4gICAgICAgIHByZXZNYXJnaW46IG1hcmdpbixcbiAgICAgICAgcHJldkNoaWxkcmVuOiBjaGlsZHJlblxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghaXNDaGlsZHJlbkVxdWFsKGNoaWxkcmVuLCBwcmV2U3RhdGUucHJldkNoaWxkcmVuKSkge1xuICAgICAgdmFyIF9icnVzaCRwcm9wcyRzdGFydEluZCwgX2JydXNoJHByb3BzLCBfYnJ1c2gkcHJvcHMkZW5kSW5kZXgsIF9icnVzaCRwcm9wczI7XG4gICAgICAvLyBzcGVjaWZpY2FsbHkgY2hlY2sgZm9yIEJydXNoIC0gaWYgaXQgZXhpc3RzIGFuZCB0aGUgc3RhcnQgYW5kIGVuZCBpbmRleGVzIGFyZSBkaWZmZXJlbnQsIHJlLXJlbmRlciB3aXRoIHRoZSBuZXcgb25lc1xuICAgICAgdmFyIGJydXNoID0gZmluZENoaWxkQnlUeXBlKGNoaWxkcmVuLCBCcnVzaCk7XG4gICAgICB2YXIgc3RhcnRJbmRleCA9IGJydXNoID8gKF9icnVzaCRwcm9wcyRzdGFydEluZCA9IChfYnJ1c2gkcHJvcHMgPSBicnVzaC5wcm9wcykgPT09IG51bGwgfHwgX2JydXNoJHByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYnJ1c2gkcHJvcHMuc3RhcnRJbmRleCkgIT09IG51bGwgJiYgX2JydXNoJHByb3BzJHN0YXJ0SW5kICE9PSB2b2lkIDAgPyBfYnJ1c2gkcHJvcHMkc3RhcnRJbmQgOiBkYXRhU3RhcnRJbmRleCA6IGRhdGFTdGFydEluZGV4O1xuICAgICAgdmFyIGVuZEluZGV4ID0gYnJ1c2ggPyAoX2JydXNoJHByb3BzJGVuZEluZGV4ID0gKF9icnVzaCRwcm9wczIgPSBicnVzaC5wcm9wcykgPT09IG51bGwgfHwgX2JydXNoJHByb3BzMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JydXNoJHByb3BzMi5lbmRJbmRleCkgIT09IG51bGwgJiYgX2JydXNoJHByb3BzJGVuZEluZGV4ICE9PSB2b2lkIDAgPyBfYnJ1c2gkcHJvcHMkZW5kSW5kZXggOiBkYXRhRW5kSW5kZXggOiBkYXRhRW5kSW5kZXg7XG4gICAgICB2YXIgaGFzRGlmZmVyZW50U3RhcnRPckVuZEluZGV4ID0gc3RhcnRJbmRleCAhPT0gZGF0YVN0YXJ0SW5kZXggfHwgZW5kSW5kZXggIT09IGRhdGFFbmRJbmRleDtcblxuICAgICAgLy8gdXBkYXRlIGNvbmZpZ3VyYXRpb24gaW4gY2hpbGRyZW5cbiAgICAgIHZhciBoYXNHbG9iYWxEYXRhID0gIWlzTmlsKGRhdGEpO1xuICAgICAgdmFyIG5ld1VwZGF0ZUlkID0gaGFzR2xvYmFsRGF0YSAmJiAhaGFzRGlmZmVyZW50U3RhcnRPckVuZEluZGV4ID8gcHJldlN0YXRlLnVwZGF0ZUlkIDogcHJldlN0YXRlLnVwZGF0ZUlkICsgMTtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB1cGRhdGVJZDogbmV3VXBkYXRlSWRcbiAgICAgIH0sIHVwZGF0ZVN0YXRlT2ZBeGlzTWFwc09mZnNldEFuZFN0YWNrR3JvdXBzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHByb3BzOiBuZXh0UHJvcHNcbiAgICAgIH0sIHByZXZTdGF0ZSksIHt9LCB7XG4gICAgICAgIHVwZGF0ZUlkOiBuZXdVcGRhdGVJZCxcbiAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IHN0YXJ0SW5kZXgsXG4gICAgICAgIGRhdGFFbmRJbmRleDogZW5kSW5kZXhcbiAgICAgIH0pLCBwcmV2U3RhdGUpKSwge30sIHtcbiAgICAgICAgcHJldkNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IHN0YXJ0SW5kZXgsXG4gICAgICAgIGRhdGFFbmRJbmRleDogZW5kSW5kZXhcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSk7XG4gIF9kZWZpbmVQcm9wZXJ0eShDYXRlZ29yaWNhbENoYXJ0V3JhcHBlciwgXCJyZW5kZXJBY3RpdmVEb3RcIiwgZnVuY3Rpb24gKG9wdGlvbiwgcHJvcHMsIGtleSkge1xuICAgIHZhciBkb3Q7XG4gICAgaWYgKCAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQob3B0aW9uKSkge1xuICAgICAgZG90ID0gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChvcHRpb24sIHByb3BzKTtcbiAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgICAgZG90ID0gb3B0aW9uKHByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG90ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRG90LCBwcm9wcyk7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWFjdGl2ZS1kb3RcIixcbiAgICAgIGtleToga2V5XG4gICAgfSwgZG90KTtcbiAgfSk7XG4gIHZhciBDYXRlZ29yaWNhbENoYXJ0ID0gLyojX19QVVJFX18qL2ZvcndhcmRSZWYoZnVuY3Rpb24gQ2F0ZWdvcmljYWxDaGFydChwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgIHJlZjogcmVmXG4gICAgfSkpO1xuICB9KTtcbiAgQ2F0ZWdvcmljYWxDaGFydC5kaXNwbGF5TmFtZSA9IENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLmRpc3BsYXlOYW1lO1xuICByZXR1cm4gQ2F0ZWdvcmljYWxDaGFydDtcbn07Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJyIiwibCIsInQiLCJlIiwibiIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzZWxmIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJpdGVyIiwibGVuIiwiYXJyMiIsIm93bktleXMiLCJrZXlzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjbG9uZUVsZW1lbnQiLCJpc1ZhbGlkRWxlbWVudCIsImZvcndhcmRSZWYiLCJpc05pbCIsImlzRnVuY3Rpb24iLCJyYW5nZSIsImdldCIsInNvcnRCeSIsInRocm90dGxlIiwiY2xzeCIsImludmFyaWFudCIsIlN1cmZhY2UiLCJMYXllciIsIlRvb2x0aXAiLCJMZWdlbmQiLCJEb3QiLCJpc0luUmVjdGFuZ2xlIiwiZmlsdGVyUHJvcHMiLCJmaW5kQWxsQnlUeXBlIiwiZmluZENoaWxkQnlUeXBlIiwiZ2V0RGlzcGxheU5hbWUiLCJnZXRSZWFjdEV2ZW50QnlUeXBlIiwiaXNDaGlsZHJlbkVxdWFsIiwicGFyc2VDaGlsZEluZGV4IiwicmVuZGVyQnlPcmRlciIsInZhbGlkYXRlV2lkdGhIZWlnaHQiLCJCcnVzaCIsImdldE9mZnNldCIsImZpbmRFbnRyeUluQXJyYXkiLCJnZXRBbnlFbGVtZW50T2ZPYmplY3QiLCJoYXNEdXBsaWNhdGUiLCJpc051bWJlciIsInVuaXF1ZUlkIiwiYXBwZW5kT2Zmc2V0T2ZMZWdlbmQiLCJjYWxjdWxhdGVBY3RpdmVUaWNrSW5kZXgiLCJjb21iaW5lRXZlbnRIYW5kbGVycyIsImdldEJhbmRTaXplT2ZBeGlzIiwiZ2V0QmFyUG9zaXRpb24iLCJnZXRCYXJTaXplTGlzdCIsImdldERvbWFpbk9mRGF0YUJ5S2V5IiwiZ2V0RG9tYWluT2ZJdGVtc1dpdGhTYW1lQXhpcyIsImdldERvbWFpbk9mU3RhY2tHcm91cHMiLCJnZXRMZWdlbmRQcm9wcyIsImdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0iLCJnZXRTdGFja2VkRGF0YU9mSXRlbSIsImdldFN0YWNrR3JvdXBzQnlBeGlzSWQiLCJnZXRUaWNrc09mQXhpcyIsImdldFRvb2x0aXBJdGVtIiwiaXNDYXRlZ29yaWNhbEF4aXMiLCJwYXJzZURvbWFpbk9mQ2F0ZWdvcnlBeGlzIiwicGFyc2VFcnJvckJhcnNPZkF4aXMiLCJwYXJzZVNwZWNpZmllZERvbWFpbiIsImRldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluIiwiaW5SYW5nZU9mU2VjdG9yIiwicG9sYXJUb0NhcnRlc2lhbiIsInNoYWxsb3dFcXVhbCIsImV2ZW50Q2VudGVyIiwiU1lOQ19FVkVOVCIsImFkYXB0RXZlbnRIYW5kbGVycyIsIkFjY2Vzc2liaWxpdHlNYW5hZ2VyIiwiaXNEb21haW5TcGVjaWZpZWRCeVVzZXIiLCJnZXRBY3RpdmVTaGFwZUluZGV4Rm9yVG9vbHRpcCIsImlzRnVubmVsIiwiaXNQaWUiLCJpc1NjYXR0ZXIiLCJDdXJzb3IiLCJDaGFydExheW91dENvbnRleHRQcm92aWRlciIsIk9SSUVOVF9NQVAiLCJ4QXhpcyIsInlBeGlzIiwiRlVMTF9XSURUSF9BTkRfSEVJR0hUIiwid2lkdGgiLCJoZWlnaHQiLCJvcmlnaW5Db29yZGluYXRlIiwieCIsInkiLCJyZW5kZXJBc0lzIiwiZWxlbWVudCIsImNhbGN1bGF0ZVRvb2x0aXBQb3MiLCJyYW5nZU9iaiIsImxheW91dCIsImFuZ2xlIiwicmFkaXVzIiwiZ2V0QWN0aXZlQ29vcmRpbmF0ZSIsInRvb2x0aXBUaWNrcyIsImFjdGl2ZUluZGV4IiwiZW50cnkiLCJmaW5kIiwidGljayIsImluZGV4IiwiY29vcmRpbmF0ZSIsIl9hbmdsZSIsIl9yYWRpdXMiLCJjeCIsImN5IiwiZ2V0RGlzcGxheWVkRGF0YSIsImRhdGEiLCJfcmVmIiwiZ3JhcGhpY2FsSXRlbXMiLCJkYXRhU3RhcnRJbmRleCIsImRhdGFFbmRJbmRleCIsIml0ZW1zRGF0YSIsInJlZHVjZSIsInJlc3VsdCIsImNoaWxkIiwiaXRlbURhdGEiLCJjb25jYXQiLCJnZXREZWZhdWx0RG9tYWluQnlBeGlzVHlwZSIsImF4aXNUeXBlIiwidW5kZWZpbmVkIiwiZ2V0VG9vbHRpcENvbnRlbnQiLCJzdGF0ZSIsImNoYXJ0RGF0YSIsImFjdGl2ZUxhYmVsIiwidG9vbHRpcEF4aXMiLCJkaXNwbGF5ZWREYXRhIiwiX2NoaWxkJHByb3BzJGRhdGEiLCJwYXlsb2FkIiwiZGF0YUtleSIsImFsbG93RHVwbGljYXRlZENhdGVnb3J5IiwiZW50cmllcyIsImdldFRvb2x0aXBEYXRhIiwicmFuZ2VEYXRhIiwiY2hhcnRYIiwiY2hhcnRZIiwicG9zIiwidGlja3MiLCJvcmRlcmVkVG9vbHRpcFRpY2tzIiwiYXhpcyIsImFjdGl2ZVBheWxvYWQiLCJhY3RpdmVDb29yZGluYXRlIiwiYWN0aXZlVG9vbHRpcEluZGV4IiwiZ2V0QXhpc01hcEJ5QXhlcyIsIl9yZWYyIiwiYXhlcyIsImF4aXNJZEtleSIsInN0YWNrR3JvdXBzIiwiY2hpbGRyZW4iLCJzdGFja09mZnNldCIsImlzQ2F0ZWdvcmljYWwiLCJfY2hpbGRQcm9wcyRkb21haW4yIiwiY2hpbGRQcm9wcyIsInR5cGUiLCJkZWZhdWx0UHJvcHMiLCJhbGxvd0RhdGFPdmVyZmxvdyIsInNjYWxlIiwiaW5jbHVkZUhpZGRlbiIsImF4aXNJZCIsIml0ZW0iLCJfZGVmYXVsdFByb3BzIiwiaXRlbUF4aXNJZCIsImRvbWFpbiIsImR1cGxpY2F0ZURvbWFpbiIsImNhdGVnb3JpY2FsRG9tYWluIiwiZGVmYXVsdERvbWFpbiIsIl9jaGlsZFByb3BzJGRvbWFpbiIsImNoaWxkRG9tYWluIiwiZHVwbGljYXRlIiwiZmluYWxEb21haW4iLCJlcnJvckJhcnNEb21haW4iLCJfZGVmYXVsdFByb3BzMiIsIl9kZWZhdWx0UHJvcHMzIiwiaXRlbUhpZGUiLCJoaWRlIiwiaGFzU3RhY2siLCJheGlzRG9tYWluIiwiaXNEb21haW5WYWxpZCIsImV2ZXJ5Iiwib3JpZ2luYWxEb21haW4iLCJnZXRBeGlzTWFwQnlJdGVtcyIsIl9yZWYzIiwiQXhpcyIsIl9kZWZhdWx0UHJvcHM0IiwiX2RlZmF1bHRQcm9wczUiLCJvcmllbnRhdGlvbiIsImdldEF4aXNNYXAiLCJfcmVmNCIsIl9yZWY0JGF4aXNUeXBlIiwiQXhpc0NvbXAiLCJheGlzTWFwIiwidG9vbHRpcFRpY2tzR2VuZXJhdG9yIiwidG9vbHRpcEF4aXNCYW5kU2l6ZSIsImNyZWF0ZURlZmF1bHRTdGF0ZSIsImRlZmF1bHRTaG93VG9vbHRpcCIsImJydXNoSXRlbSIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsImlzVG9vbHRpcEFjdGl2ZSIsImhhc0dyYXBoaWNhbEJhckl0ZW0iLCJzb21lIiwiZ2V0QXhpc05hbWVCeUxheW91dCIsIm51bWVyaWNBeGlzTmFtZSIsImNhdGVBeGlzTmFtZSIsImNhbGN1bGF0ZU9mZnNldCIsIl9yZWY1IiwicHJldkxlZ2VuZEJCb3giLCJfcmVmNSR4QXhpc01hcCIsInhBeGlzTWFwIiwiX3JlZjUkeUF4aXNNYXAiLCJ5QXhpc01hcCIsIm1hcmdpbiIsImxlZ2VuZEl0ZW0iLCJvZmZzZXRIIiwiaWQiLCJtaXJyb3IiLCJsZWZ0IiwicmlnaHQiLCJvZmZzZXRWIiwidG9wIiwiYm90dG9tIiwib2Zmc2V0IiwiYnJ1c2hCb3R0b20iLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsIk1hdGgiLCJtYXgiLCJnZXRDYXJ0ZXNpYW5BeGlzU2l6ZSIsImF4aXNPYmoiLCJheGlzTmFtZSIsImdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCIsIl9yZWY2IiwiY2hhcnROYW1lIiwiR3JhcGhpY2FsQ2hpbGQiLCJfcmVmNiRkZWZhdWx0VG9vbHRpcEUiLCJkZWZhdWx0VG9vbHRpcEV2ZW50VHlwZSIsIl9yZWY2JHZhbGlkYXRlVG9vbHRpcCIsInZhbGlkYXRlVG9vbHRpcEV2ZW50VHlwZXMiLCJheGlzQ29tcG9uZW50cyIsImxlZ2VuZENvbnRlbnQiLCJmb3JtYXRBeGlzTWFwIiwiZ2V0Rm9ybWF0SXRlbXMiLCJjdXJyZW50U3RhdGUiLCJ1cGRhdGVJZCIsImJhclNpemUiLCJiYXJHYXAiLCJiYXJDYXRlZ29yeUdhcCIsImdsb2JhbE1heEJhclNpemUiLCJtYXhCYXJTaXplIiwiX2dldEF4aXNOYW1lQnlMYXlvdXQiLCJoYXNCYXIiLCJmb3JtYXR0ZWRJdGVtcyIsIml0ZW1Qcm9wcyIsImNoaWxkTWF4QmFyU2l6ZSIsIm51bWVyaWNBeGlzSWQiLCJjYXRlQXhpc0lkIiwiYXhpc09iakluaXRpYWxWYWx1ZSIsIl9pdGVtJHR5cGUkZGlzcGxheU5hbSIsIl9pdGVtJHR5cGUiLCJwcm9jZXNzIiwiZGlzcGxheU5hbWUiLCJjYXRlQXhpcyIsImNhdGVUaWNrcyIsInN0YWNrZWREYXRhIiwiaXRlbUlzQmFyIiwiYmFuZFNpemUiLCJiYXJQb3NpdGlvbiIsInNpemVMaXN0IiwidG90YWxTaXplIiwiX3JlZjciLCJfZ2V0QmFuZFNpemVPZkF4aXMiLCJiYXJCYW5kU2l6ZSIsIm1hcCIsInBvc2l0aW9uIiwiY29tcG9zZWRGbiIsImdldENvbXBvc2VkRGF0YSIsImNoaWxkSW5kZXgiLCJ1cGRhdGVTdGF0ZU9mQXhpc01hcHNPZmZzZXRBbmRTdGFja0dyb3VwcyIsIl9yZWY4IiwicHJldlN0YXRlIiwicmV2ZXJzZVN0YWNrT3JkZXIiLCJfZ2V0QXhpc05hbWVCeUxheW91dDIiLCJsZWdlbmRCQm94IiwicmVwbGFjZSIsImNhdGVBeGlzTWFwIiwidGlja3NPYmoiLCJmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyIsIkNhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyIiwiX0NvbXBvbmVudCIsIl9wcm9wcyIsIl9wcm9wcyRpZCIsIl9wcm9wcyR0aHJvdHRsZURlbGF5IiwiX3RoaXMiLCJib3giLCJfdGhpcyRzdGF0ZSIsInNldFN0YXRlIiwiY0lkIiwiZW1pdHRlciIsInN5bmNJZCIsImV2ZW50RW1pdHRlclN5bWJvbCIsInN5bmNNZXRob2QiLCJhcHBseVN5bmNFdmVudCIsIl9yZWY5IiwidHJpZ2dlclN5bmNFdmVudCIsIm1vdXNlIiwiZ2V0TW91c2VJbmZvIiwiX25leHRTdGF0ZSIsIm9uTW91c2VFbnRlciIsIm5leHRTdGF0ZSIsIm9uTW91c2VNb3ZlIiwiZWwiLCJhY3RpdmVJdGVtIiwidG9vbHRpcFBheWxvYWQiLCJ0b29sdGlwUG9zaXRpb24iLCJwZXJzaXN0IiwidGhyb3R0bGVUcmlnZ2VyZWRBZnRlck1vdXNlTW92ZSIsImNhbmNlbCIsIm9uTW91c2VMZWF2ZSIsImV2ZW50TmFtZSIsImV2ZW50IiwiX21vdXNlIiwiY2hhbmdlZFRvdWNoZXMiLCJfbmV4dFN0YXRlMiIsIm9uQ2xpY2siLCJvbk1vdXNlRG93biIsIl9uZXh0U3RhdGUzIiwib25Nb3VzZVVwIiwiX25leHRTdGF0ZTQiLCJoYW5kbGVNb3VzZURvd24iLCJoYW5kbGVNb3VzZVVwIiwib25Eb3VibGVDbGljayIsIl9uZXh0U3RhdGU1Iiwib25Db250ZXh0TWVudSIsIl9uZXh0U3RhdGU2IiwiZW1pdCIsIl90aGlzJHByb3BzIiwiX3RoaXMkc3RhdGUyIiwidmlld0JveCIsInZhbGlkYXRlQ2hhcnRYIiwibWluIiwidmFsaWRhdGVDaGFydFkiLCJfZWxlbWVudCRwcm9wcyRhY3RpdmUiLCJfdGhpcyRzdGF0ZTMiLCJ0b29sdGlwRXZlbnRUeXBlIiwiZ2V0VG9vbHRpcEV2ZW50VHlwZSIsImlzQWN0aXZlIiwiYWN0aXZlIiwiY3JlYXRlRWxlbWVudCIsImVsZW1lbnREZWZhdWx0UHJvcHMiLCJlbGVtZW50UHJvcHMiLCJheGlzT3B0aW9uIiwiY2xhc3NOYW1lIiwiX2VsZW1lbnQkcHJvcHMiLCJyYWRpYWxMaW5lcyIsInBvbGFyQW5nbGVzIiwicG9sYXJSYWRpdXMiLCJfdGhpcyRzdGF0ZTQiLCJyYWRpdXNBeGlzTWFwIiwiYW5nbGVBeGlzTWFwIiwicmFkaXVzQXhpcyIsImFuZ2xlQXhpcyIsImlubmVyUmFkaXVzIiwib3V0ZXJSYWRpdXMiLCJfdGhpcyRwcm9wczIiLCJsZWdlbmRXaWR0aCIsIm90aGVyUHJvcHMiLCJjaGFydFdpZHRoIiwiY2hhcnRIZWlnaHQiLCJvbkJCb3hVcGRhdGUiLCJoYW5kbGVMZWdlbmRCQm94VXBkYXRlIiwiX3Rvb2x0aXBJdGVtJHByb3BzJGFjIiwiX3RoaXMkcHJvcHMzIiwiYWNjZXNzaWJpbGl0eUxheWVyIiwidG9vbHRpcEl0ZW0iLCJfdGhpcyRzdGF0ZTUiLCJsYWJlbCIsIl90aGlzJHByb3BzNCIsIl90aGlzJHN0YXRlNiIsIm9uQ2hhbmdlIiwiaGFuZGxlQnJ1c2hDaGFuZ2UiLCJfdGhpczIiLCJjbGlwUGF0aElkIiwiX3RoaXMkc3RhdGU3IiwiX2VsZW1lbnQkcHJvcHMyIiwiX2VsZW1lbnQkcHJvcHMyJHhBeGlzIiwieEF4aXNJZCIsIl9lbGVtZW50JHByb3BzMiR5QXhpcyIsInlBeGlzSWQiLCJfcmVmMTAiLCJhY3RpdmVQb2ludCIsImJhc2VQb2ludCIsImlzUmFuZ2UiLCJpdGVtSXRlbVByb3BzIiwiYWN0aXZlRG90IiwiZG90UHJvcHMiLCJmaWxsIiwic3Ryb2tlV2lkdGgiLCJzdHJva2UiLCJyZW5kZXJBY3RpdmVEb3QiLCJmaWx0ZXJGb3JtYXRJdGVtIiwiX3RoaXMkc3RhdGU4IiwiX2l0ZW0kcHJvcHMiLCJwb2ludHMiLCJiYXNlTGluZSIsImFjdGl2ZUJhciIsImFjdGl2ZVNoYXBlIiwiaGFzQWN0aXZlIiwiaXRlbUV2ZW50cyIsInRyaWdnZXIiLCJoYW5kbGVJdGVtTW91c2VFbnRlciIsImhhbmRsZUl0ZW1Nb3VzZUxlYXZlIiwiZ3JhcGhpY2FsSXRlbSIsImZpbmRXaXRoUGF5bG9hZCIsInNwZWNpZmllZEtleSIsInJlbmRlckFjdGl2ZVBvaW50cyIsIl90aGlzJGdldEl0ZW1CeVhZIiwiX3JlZjExIiwiZ2V0SXRlbUJ5WFkiLCJfcmVmMTEkZ3JhcGhpY2FsSXRlbSIsIl9yZWYxMSRncmFwaGljYWxJdGVtJCIsInh5SXRlbSIsIkNhcnRlc2lhbkdyaWQiLCJoYW5kbGVyIiwib25jZSIsIlJlZmVyZW5jZUFyZWEiLCJyZW5kZXJSZWZlcmVuY2VFbGVtZW50IiwiUmVmZXJlbmNlTGluZSIsIlJlZmVyZW5jZURvdCIsIlhBeGlzIiwiWUF4aXMiLCJyZW5kZXJCcnVzaCIsIkJhciIsInJlbmRlckdyYXBoaWNDaGlsZCIsIkxpbmUiLCJBcmVhIiwiUmFkYXIiLCJSYWRpYWxCYXIiLCJTY2F0dGVyIiwiUGllIiwiRnVubmVsIiwicmVuZGVyQ3Vyc29yIiwiUG9sYXJHcmlkIiwicmVuZGVyUG9sYXJHcmlkIiwiUG9sYXJBbmdsZUF4aXMiLCJyZW5kZXJQb2xhckF4aXMiLCJQb2xhclJhZGl1c0F4aXMiLCJDdXN0b21pemVkIiwicmVuZGVyQ3VzdG9taXplZCIsInRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlIiwidGhyb3R0bGVEZWxheSIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMkcHJvcHMkbWFyZ2luJGxlIiwiX3RoaXMkcHJvcHMkbWFyZ2luJHRvIiwiYWRkTGlzdGVuZXIiLCJhY2Nlc3NpYmlsaXR5TWFuYWdlciIsInNldERldGFpbHMiLCJjb250YWluZXIiLCJjb29yZGluYXRlTGlzdCIsIm1vdXNlSGFuZGxlckNhbGxiYWNrIiwiZGlzcGxheURlZmF1bHRUb29sdGlwIiwiX3RoaXMkcHJvcHM1IiwidG9vbHRpcEVsZW0iLCJkZWZhdWx0SW5kZXgiLCJpbmRlcGVuZGVudEF4aXNDb29yZCIsImRlcGVuZGVudEF4aXNDb29yZCIsImlzSG9yaXpvbnRhbCIsInNjYXR0ZXJQbG90RWxlbWVudCIsIl9yZWYxMiIsInNldEluZGV4IiwiZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUiLCJwcmV2UHJvcHMiLCJfdGhpcyRwcm9wcyRtYXJnaW4kbGUyIiwiX3RoaXMkcHJvcHMkbWFyZ2luJHRvMiIsImNvbXBvbmVudERpZFVwZGF0ZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlTGlzdGVuZXIiLCJzaGFyZWQiLCJldmVudFR5cGUiLCJib3VuZGluZ1JlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjb250YWluZXJPZmZzZXQiLCJyb3VuZCIsInBhZ2VYIiwicGFnZVkiLCJpblJhbmdlIiwiX3RoaXMkc3RhdGU5IiwidG9vbFRpcERhdGEiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJ4VmFsdWUiLCJpbnZlcnQiLCJ5VmFsdWUiLCJzY2FsZWRYIiwic2NhbGVkWSIsImlzSW5SYW5nZSIsIl90aGlzJHN0YXRlMTAiLCJwYXJzZUV2ZW50c09mV3JhcHBlciIsInRvb2x0aXBFdmVudHMiLCJoYW5kbGVDbGljayIsImhhbmRsZU1vdXNlRW50ZXIiLCJoYW5kbGVEb3VibGVDbGljayIsImhhbmRsZU1vdXNlTW92ZSIsImhhbmRsZU1vdXNlTGVhdmUiLCJvblRvdWNoTW92ZSIsImhhbmRsZVRvdWNoTW92ZSIsIm9uVG91Y2hTdGFydCIsImhhbmRsZVRvdWNoU3RhcnQiLCJvblRvdWNoRW5kIiwiaGFuZGxlVG91Y2hFbmQiLCJoYW5kbGVDb250ZXh0TWVudSIsIm91dGVyRXZlbnRzIiwiaGFuZGxlT3V0ZXJFdmVudCIsIm9uIiwiaGFuZGxlUmVjZWl2ZVN5bmNFdmVudCIsInJlbmRlckNsaXBQYXRoIiwiX3RoaXMkc3RhdGUkb2Zmc2V0IiwiZ2V0WFNjYWxlcyIsInJlcyIsIl9yZWYxMyIsIl9yZWYxNCIsImF4aXNQcm9wcyIsImdldFlTY2FsZXMiLCJfcmVmMTUiLCJfcmVmMTYiLCJnZXRYU2NhbGVCeUF4aXNJZCIsIl90aGlzJHN0YXRlJHhBeGlzTWFwIiwiZ2V0WVNjYWxlQnlBeGlzSWQiLCJfdGhpcyRzdGF0ZSR5QXhpc01hcCIsImNoYXJ0WFkiLCJfdGhpcyRzdGF0ZTExIiwiaXRlbURpc3BsYXlOYW1lIiwiYWN0aXZlQmFySXRlbSIsIl9hY3RpdmVCYXJJdGVtIiwiYWN0aXZlVG9vbHRpcEl0ZW0iLCJyZW5kZXIiLCJfdGhpczMiLCJfdGhpcyRwcm9wczYiLCJzdHlsZSIsImNvbXBhY3QiLCJ0aXRsZSIsImRlc2MiLCJvdGhlcnMiLCJhdHRycyIsInJlbmRlck1hcCIsIl90aGlzJHByb3BzJHRhYkluZGV4IiwiX3RoaXMkcHJvcHMkcm9sZSIsInRhYkluZGV4Iiwicm9sZSIsIm9uS2V5RG93biIsImtleWJvYXJkRXZlbnQiLCJvbkZvY3VzIiwiZm9jdXMiLCJldmVudHMiLCJjdXJzb3IiLCJyZWYiLCJub2RlIiwicmVuZGVyTGVnZW5kIiwicmVuZGVyVG9vbHRpcCIsIm5leHRQcm9wcyIsImRlZmF1bHRTdGF0ZSIsInByZXZEYXRhS2V5IiwicHJldkRhdGEiLCJwcmV2V2lkdGgiLCJwcmV2SGVpZ2h0IiwicHJldkxheW91dCIsInByZXZTdGFja09mZnNldCIsInByZXZNYXJnaW4iLCJwcmV2Q2hpbGRyZW4iLCJfZGVmYXVsdFN0YXRlIiwia2VlcEZyb21QcmV2U3RhdGUiLCJ1cGRhdGVzVG9TdGF0ZSIsIm5ld1N0YXRlIiwiX2JydXNoJHByb3BzJHN0YXJ0SW5kIiwiX2JydXNoJHByb3BzIiwiX2JydXNoJHByb3BzJGVuZEluZGV4IiwiX2JydXNoJHByb3BzMiIsImJydXNoIiwiaGFzRGlmZmVyZW50U3RhcnRPckVuZEluZGV4IiwiaGFzR2xvYmFsRGF0YSIsIm5ld1VwZGF0ZUlkIiwib3B0aW9uIiwiZG90IiwiQ2F0ZWdvcmljYWxDaGFydCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/chart/generateCategoricalChart.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Cell.js":
/*!*****************************************************!*\
!*** ./node_modules/recharts/es6/component/Cell.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Cell: () => (/* binding */ Cell)\n/* harmony export */ });\n/**\n * @fileOverview Cross\n */ var Cell = function Cell(_props) {\n return null;\n};\nCell.displayName = 'Cell';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9DZWxsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Q0FFQyxHQUVNLElBQUlBLE9BQU8sU0FBU0EsS0FBS0MsTUFBTTtJQUNwQyxPQUFPO0FBQ1QsRUFBRTtBQUNGRCxLQUFLRSxXQUFXLEdBQUciLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9DZWxsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBDcm9zc1xuICovXG5cbmV4cG9ydCB2YXIgQ2VsbCA9IGZ1bmN0aW9uIENlbGwoX3Byb3BzKSB7XG4gIHJldHVybiBudWxsO1xufTtcbkNlbGwuZGlzcGxheU5hbWUgPSAnQ2VsbCc7Il0sIm5hbWVzIjpbIkNlbGwiLCJfcHJvcHMiLCJkaXNwbGF5TmFtZSJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Cell.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Cursor.js":
/*!*******************************************************!*\
!*** ./node_modules/recharts/es6/component/Cursor.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Cursor: () => (/* binding */ Cursor)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _shape_Curve__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shape/Curve */ \"(ssr)/./node_modules/recharts/es6/shape/Curve.js\");\n/* harmony import */ var _shape_Cross__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape/Cross */ \"(ssr)/./node_modules/recharts/es6/shape/Cross.js\");\n/* harmony import */ var _util_cursor_getCursorRectangle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/cursor/getCursorRectangle */ \"(ssr)/./node_modules/recharts/es6/util/cursor/getCursorRectangle.js\");\n/* harmony import */ var _shape_Rectangle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shape/Rectangle */ \"(ssr)/./node_modules/recharts/es6/shape/Rectangle.js\");\n/* harmony import */ var _util_cursor_getRadialCursorPoints__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/cursor/getRadialCursorPoints */ \"(ssr)/./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js\");\n/* harmony import */ var _shape_Sector__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../shape/Sector */ \"(ssr)/./node_modules/recharts/es6/shape/Sector.js\");\n/* harmony import */ var _util_cursor_getCursorPoints__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/cursor/getCursorPoints */ \"(ssr)/./node_modules/recharts/es6/util/cursor/getCursorPoints.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\n\n\n\n\n/*\n * Cursor is the background, or a highlight,\n * that shows when user mouses over or activates\n * an area.\n *\n * It usually shows together with a tooltip\n * to emphasise which part of the chart does the tooltip refer to.\n */ function Cursor(props) {\n var _element$props$cursor, _defaultProps;\n var element = props.element, tooltipEventType = props.tooltipEventType, isActive = props.isActive, activeCoordinate = props.activeCoordinate, activePayload = props.activePayload, offset = props.offset, activeTooltipIndex = props.activeTooltipIndex, tooltipAxisBandSize = props.tooltipAxisBandSize, layout = props.layout, chartName = props.chartName;\n var elementPropsCursor = (_element$props$cursor = element.props.cursor) !== null && _element$props$cursor !== void 0 ? _element$props$cursor : (_defaultProps = element.type.defaultProps) === null || _defaultProps === void 0 ? void 0 : _defaultProps.cursor;\n if (!element || !elementPropsCursor || !isActive || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {\n return null;\n }\n var restProps;\n var cursorComp = _shape_Curve__WEBPACK_IMPORTED_MODULE_2__.Curve;\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = _shape_Cross__WEBPACK_IMPORTED_MODULE_3__.Cross;\n } else if (chartName === 'BarChart') {\n restProps = (0,_util_cursor_getCursorRectangle__WEBPACK_IMPORTED_MODULE_4__.getCursorRectangle)(layout, activeCoordinate, offset, tooltipAxisBandSize);\n cursorComp = _shape_Rectangle__WEBPACK_IMPORTED_MODULE_5__.Rectangle;\n } else if (layout === 'radial') {\n var _getRadialCursorPoint = (0,_util_cursor_getRadialCursorPoints__WEBPACK_IMPORTED_MODULE_6__.getRadialCursorPoints)(activeCoordinate), cx = _getRadialCursorPoint.cx, cy = _getRadialCursorPoint.cy, radius = _getRadialCursorPoint.radius, startAngle = _getRadialCursorPoint.startAngle, endAngle = _getRadialCursorPoint.endAngle;\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = _shape_Sector__WEBPACK_IMPORTED_MODULE_7__.Sector;\n } else {\n restProps = {\n points: (0,_util_cursor_getCursorPoints__WEBPACK_IMPORTED_MODULE_8__.getCursorPoints)(layout, activeCoordinate, offset)\n };\n cursorComp = _shape_Curve__WEBPACK_IMPORTED_MODULE_2__.Curve;\n }\n var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset), restProps), (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_9__.filterProps)(elementPropsCursor, false)), {}, {\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('recharts-tooltip-cursor', elementPropsCursor.className)\n });\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(elementPropsCursor) ? /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(elementPropsCursor, cursorProps) : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(cursorComp, cursorProps);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9DdXJzb3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlDLE9BQU9DLElBQUksQ0FBQ0o7SUFBSSxJQUFJRyxPQUFPRSxxQkFBcUIsRUFBRTtRQUFFLElBQUlYLElBQUlTLE9BQU9FLHFCQUFxQixDQUFDTDtRQUFJQyxLQUFNUCxDQUFBQSxJQUFJQSxFQUFFWSxNQUFNLENBQUMsU0FBVUwsQ0FBQztZQUFJLE9BQU9FLE9BQU9JLHdCQUF3QixDQUFDUCxHQUFHQyxHQUFHTyxVQUFVO1FBQUUsRUFBQyxHQUFJTixFQUFFTyxJQUFJLENBQUNDLEtBQUssQ0FBQ1IsR0FBR1I7SUFBSTtJQUFFLE9BQU9RO0FBQUc7QUFDOVAsU0FBU1MsY0FBY1gsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVyxVQUFVQyxNQUFNLEVBQUVaLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFVLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHVyxTQUFTLENBQUNYLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUUksT0FBT0QsSUFBSSxDQUFDLEdBQUdZLE9BQU8sQ0FBQyxTQUFVYixDQUFDO1lBQUljLGdCQUFnQmYsR0FBR0MsR0FBR0MsQ0FBQyxDQUFD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QzdCQyxLQUFLRixzQkFBc0JFLEVBQUUsRUFDN0JDLFNBQVNILHNCQUFzQkcsTUFBTSxFQUNyQ0MsYUFBYUosc0JBQXNCSSxVQUFVLEVBQzdDQyxXQUFXTCxzQkFBc0JLLFFBQVE7UUFDM0NQLFlBQVk7WUFDVkcsSUFBSUE7WUFDSkMsSUFBSUE7WUFDSkUsWUFBWUE7WUFDWkMsVUFBVUE7WUFDVkMsYUFBYUg7WUFDYkksYUFBYUo7UUFDZjtRQUNBSixhQUFhdEIsaURBQU1BO0lBQ3JCLE9BQU87UUFDTHFCLFlBQVk7WUFDVlUsUUFBUTlCLDZFQUFlQSxDQUFDYyxRQUFRTCxrQkFBa0JFO1FBQ3BEO1FBQ0FVLGFBQWEzQiwrQ0FBS0E7SUFDcEI7SUFDQSxJQUFJcUMsY0FBYzlELGNBQWNBLGNBQWNBLGNBQWNBLGNBQWM7UUFDeEUrRCxRQUFRO1FBQ1JDLGVBQWU7SUFDakIsR0FBR3RCLFNBQVNTLFlBQVluQiw2REFBV0EsQ0FBQ2Usb0JBQW9CLFNBQVMsQ0FBQyxHQUFHO1FBQ25Fa0IsU0FBU3hCO1FBQ1R5QixjQUFjdkI7UUFDZHdCLFdBQVczQyxnREFBSUEsQ0FBQywyQkFBMkJ1QixtQkFBbUJvQixTQUFTO0lBQ3pFO0lBQ0EsT0FBTyxXQUFXLEdBQUU1QyxxREFBY0EsQ0FBQ3dCLHNCQUFzQixXQUFXLEdBQUUxQixtREFBWUEsQ0FBQzBCLG9CQUFvQmUsZUFBZSxXQUFXLEdBQUV4QyxvREFBYUEsQ0FBQzhCLFlBQVlVO0FBQy9KIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvQ3Vyc29yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgeyBjbG9uZUVsZW1lbnQsIGNyZWF0ZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBDdXJ2ZSB9IGZyb20gJy4uL3NoYXBlL0N1cnZlJztcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnLi4vc2hhcGUvQ3Jvc3MnO1xuaW1wb3J0IHsgZ2V0Q3Vyc29yUmVjdGFuZ2xlIH0gZnJvbSAnLi4vdXRpbC9jdXJzb3IvZ2V0Q3Vyc29yUmVjdGFuZ2xlJztcbmltcG9ydCB7IFJlY3RhbmdsZSB9IGZyb20gJy4uL3NoYXBlL1JlY3RhbmdsZSc7XG5pbXBvcnQgeyBnZXRSYWRpYWxDdXJzb3JQb2ludHMgfSBmcm9tICcuLi91dGlsL2N1cnNvci9nZXRSYWRpYWxDdXJzb3JQb2ludHMnO1xuaW1wb3J0IHsgU2VjdG9yIH0gZnJvbSAnLi4vc2hhcGUvU2VjdG9yJztcbmltcG9ydCB7IGdldEN1cnNvclBvaW50cyB9IGZyb20gJy4uL3V0aWwvY3Vyc29yL2dldEN1cnNvclBvaW50cyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG4vKlxuICogQ3Vyc29yIGlzIHRoZSBiYWNrZ3JvdW5kLCBvciBhIGhpZ2hsaWdodCxcbiAqIHRoYXQgc2hvd3Mgd2hlbiB1c2VyIG1vdXNlcyBvdmVyIG9yIGFjdGl2YXRlc1xuICogYW4gYXJlYS5cbiAqXG4gKiBJdCB1c3VhbGx5IHNob3dzIHRvZ2V0aGVyIHdpdGggYSB0b29sdGlwXG4gKiB0byBlbXBoYXNpc2Ugd2hpY2ggcGFydCBvZiB0aGUgY2hhcnQgZG9lcyB0aGUgdG9vbHRpcCByZWZlciB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEN1cnNvcihwcm9wcykge1xuICB2YXIgX2VsZW1lbnQkcHJvcHMkY3Vyc29yLCBfZGVmYXVsdFByb3BzO1xuICB2YXIgZWxlbWVudCA9IHByb3BzLmVsZW1lbnQsXG4gICAgdG9vbHRpcEV2ZW50VHlwZSA9IHByb3BzLnRvb2x0aXBFdmVudFR5cGUsXG4gICAgaXNBY3RpdmUgPSBwcm9wcy5pc0FjdGl2ZSxcbiAgICBhY3RpdmVDb29yZGluYXRlID0gcHJvcHMuYWN0aXZlQ29vcmRpbmF0ZSxcbiAgICBhY3RpdmVQYXlsb2FkID0gcHJvcHMuYWN0aXZlUGF5bG9hZCxcbiAgICBvZmZzZXQgPSBwcm9wcy5vZmZzZXQsXG4gICAgYWN0aXZlVG9vbHRpcEluZGV4ID0gcHJvcHMuYWN0aXZlVG9vbHRpcEluZGV4LFxuICAgIHRvb2x0aXBBeGlzQmFuZFNpemUgPSBwcm9wcy50b29sdGlwQXhpc0JhbmRTaXplLFxuICAgIGxheW91dCA9IHByb3BzLmxheW91dCxcbiAgICBjaGFydE5hbWUgPSBwcm9wcy5jaGFydE5hbWU7XG4gIHZhciBlbGVtZW50UHJvcHNDdXJzb3IgPSAoX2VsZW1lbnQkcHJvcHMkY3Vyc29yID0gZWxlbWVudC5wcm9wcy5jdXJzb3IpICE9PSBudWxsICYmIF9lbGVtZW50JHByb3BzJGN1cnNvciAhPT0gdm9pZCAwID8gX2VsZW1lbnQkcHJvcHMkY3Vyc29yIDogKF9kZWZhdWx0UHJvcHMgPSBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzKSA9PT0gbnVsbCB8fCBfZGVmYXVsdFByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdFByb3BzLmN1cnNvcjtcbiAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50UHJvcHNDdXJzb3IgfHwgIWlzQWN0aXZlIHx8ICFhY3RpdmVDb29yZGluYXRlIHx8IGNoYXJ0TmFtZSAhPT0gJ1NjYXR0ZXJDaGFydCcgJiYgdG9vbHRpcEV2ZW50VHlwZSAhPT0gJ2F4aXMnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIHJlc3RQcm9wcztcbiAgdmFyIGN1cnNvckNvbXAgPSBDdXJ2ZTtcbiAgaWYgKGNoYXJ0TmFtZSA9PT0gJ1NjYXR0ZXJDaGFydCcpIHtcbiAgICByZXN0UHJvcHMgPSBhY3RpdmVDb29yZGluYXRlO1xuICAgIGN1cnNvckNvbXAgPSBDcm9zcztcbiAgfSBlbHNlIGlmIChjaGFydE5hbWUgPT09ICdCYXJDaGFydCcpIHtcbiAgICByZXN0UHJvcHMgPSBnZXRDdXJzb3JSZWN0YW5nbGUobGF5b3V0LCBhY3RpdmVDb29yZGluYXRlLCBvZmZzZXQsIHRvb2x0aXBBeGlzQmFuZFNpemUpO1xuICAgIGN1cnNvckNvbXAgPSBSZWN0YW5nbGU7XG4gIH0gZWxzZSBpZiAobGF5b3V0ID09PSAncmFkaWFsJykge1xuICAgIHZhciBfZ2V0UmFkaWFsQ3Vyc29yUG9pbnQgPSBnZXRSYWRpYWxDdXJzb3JQb2ludHMoYWN0aXZlQ29vcmRpbmF0ZSksXG4gICAgICBjeCA9IF9nZXRSYWRpYWxDdXJzb3JQb2ludC5jeCxcbiAgICAgIGN5ID0gX2dldFJhZGlhbEN1cnNvclBvaW50LmN5LFxuICAgICAgcmFkaXVzID0gX2dldFJhZGlhbEN1cnNvclBvaW50LnJhZGl1cyxcbiAgICAgIHN0YXJ0QW5nbGUgPSBfZ2V0UmFkaWFsQ3Vyc29yUG9pbnQuc3RhcnRBbmdsZSxcbiAgICAgIGVuZEFuZ2xlID0gX2dldFJhZGlhbEN1cnNvclBvaW50LmVuZEFuZ2xlO1xuICAgIHJlc3RQcm9wcyA9IHtcbiAgICAgIGN4OiBjeCxcbiAgICAgIGN5OiBjeSxcbiAgICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUsXG4gICAgICBlbmRBbmdsZTogZW5kQW5nbGUsXG4gICAgICBpbm5lclJhZGl1czogcmFkaXVzLFxuICAgICAgb3V0ZXJSYWRpdXM6IHJhZGl1c1xuICAgIH07XG4gICAgY3Vyc29yQ29tcCA9IFNlY3RvcjtcbiAgfSBlbHNlIHtcbiAgICByZXN0UHJvcHMgPSB7XG4gICAgICBwb2ludHM6IGdldEN1cnNvclBvaW50cyhsYXlvdXQsIGFjdGl2ZUNvb3JkaW5hdGUsIG9mZnNldClcbiAgICB9O1xuICAgIGN1cnNvckNvbXAgPSBDdXJ2ZTtcbiAgfVxuICB2YXIgY3Vyc29yUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICBzdHJva2U6ICcjY2NjJyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZSdcbiAgfSwgb2Zmc2V0KSwgcmVzdFByb3BzKSwgZmlsdGVyUHJvcHMoZWxlbWVudFByb3BzQ3Vyc29yLCBmYWxzZSkpLCB7fSwge1xuICAgIHBheWxvYWQ6IGFjdGl2ZVBheWxvYWQsXG4gICAgcGF5bG9hZEluZGV4OiBhY3RpdmVUb29sdGlwSW5kZXgsXG4gICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy10b29sdGlwLWN1cnNvcicsIGVsZW1lbnRQcm9wc0N1cnNvci5jbGFzc05hbWUpXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KGVsZW1lbnRQcm9wc0N1cnNvcikgPyAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGVsZW1lbnRQcm9wc0N1cnNvciwgY3Vyc29yUHJvcHMpIDogLyojX19QVVJFX18qL2NyZWF0ZUVsZW1lbnQoY3Vyc29yQ29tcCwgY3Vyc29yUHJvcHMpO1xufSJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiY2xvbmVFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImlzVmFsaWRFbGVtZW50IiwiY2xzeCIsIkN1cnZlIiwiQ3Jvc3MiLCJnZXRDdXJzb3JSZWN0YW5nbGUiLCJSZWN0YW5nbGUiLCJnZXRSYWRpYWxDdXJzb3JQb2ludHMiLCJTZWN0b3IiLCJnZXRDdXJzb3JQb2ludHMiLCJmaWx0ZXJQcm9wcyIsIkN1cnNvciIsInByb3BzIiwiX2VsZW1lbnQkcHJvcHMkY3Vyc29yIiwiX2RlZmF1bHRQcm9wcyIsImVsZW1lbnQiLCJ0b29sdGlwRXZlbnRUeXBlIiwiaXNBY3RpdmUiLCJhY3RpdmVDb29yZGluYXRlIiwiYWN0aXZlUGF5bG9hZCIsIm9mZnNldCIsImFjdGl2ZVRvb2x0aXBJbmRleCIsInRvb2x0aXBBeGlzQmFuZFNpemUiLCJsYXlvdXQiLCJjaGFydE5hbWUiLCJlbGVtZW50UHJvcHNDdXJzb3IiLCJjdXJzb3IiLCJ0eXBlIiwiZGVmYXVsdFByb3BzIiwicmVzdFByb3BzIiwiY3Vyc29yQ29tcCIsIl9nZXRSYWRpYWxDdXJzb3JQb2ludCIsImN4IiwiY3kiLCJyYWRpdXMiLCJzdGFydEFuZ2xlIiwiZW5kQW5nbGUiLCJpbm5lclJhZGl1cyIsIm91dGVyUmFkaXVzIiwicG9pbnRzIiwiY3Vyc29yUHJvcHMiLCJzdHJva2UiLCJwb2ludGVyRXZlbnRzIiwicGF5bG9hZCIsInBheWxvYWRJbmRleCIsImNsYXNzTmFtZSJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Cursor.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/DefaultLegendContent.js":
/*!*********************************************************************!*\
!*** ./node_modules/recharts/es6/component/DefaultLegendContent.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DefaultLegendContent: () => (/* binding */ DefaultLegendContent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _container_Surface__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../container/Surface */ \"(ssr)/./node_modules/recharts/es6/container/Surface.js\");\n/* harmony import */ var _shape_Symbols__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape/Symbols */ \"(ssr)/./node_modules/recharts/es6/shape/Symbols.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Default Legend Content\n */ \n\n\n\n\n\n\nvar SIZE = 32;\nvar DefaultLegendContent = /*#__PURE__*/ function(_PureComponent) {\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n return _callSuper(this, DefaultLegendContent, arguments);\n }\n _inherits(DefaultLegendContent, _PureComponent);\n return _createClass(DefaultLegendContent, [\n {\n key: \"renderIcon\",\n value: /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */ function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n if (data.type === 'plainline') {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === 'line') {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === 'rect') {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n delete iconProps.legendIcon;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(data.legendIcon, iconProps);\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Symbols__WEBPACK_IMPORTED_MODULE_3__.Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n },\n {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n var _this$props = this.props, payload = _this$props.payload, iconSize = _this$props.iconSize, layout = _this$props.layout, formatter = _this$props.formatter, inactiveColor = _this$props.inactiveColor;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map(function(entry, i) {\n var finalFormatter = entry.formatter || formatter;\n var className = (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_defineProperty(_defineProperty({\n 'recharts-legend-item': true\n }, \"legend-item-\".concat(i), true), \"inactive\", entry.inactive));\n if (entry.type === 'none') {\n return null;\n }\n // Do not render entry.value as functions. Always require static string properties.\n var entryValue = !lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(entry.value) ? entry.value : null;\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_4__.warn)(!lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(entry.value), \"The name property is also required when using a function for the dataKey of a chart's cartesian components. Ex: <Bar name=\\\"Name of my Data\\\"/>\" // eslint-disable-line max-len\n );\n var color = entry.inactive ? inactiveColor : entry.color;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", _extends({\n className: className,\n style: itemStyle,\n key: \"legend-item-\".concat(i)\n }, (0,_util_types__WEBPACK_IMPORTED_MODULE_5__.adaptEventsOfChild)(_this.props, entry, i)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Surface__WEBPACK_IMPORTED_MODULE_6__.Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color: color\n }\n }, finalFormatter ? finalFormatter(entryValue, entry, i) : entryValue));\n });\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props, payload = _this$props2.payload, layout = _this$props2.layout, align = _this$props2.align;\n if (!payload || !payload.length) {\n return null;\n }\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(DefaultLegendContent, \"displayName\", 'Legend');\n_defineProperty(DefaultLegendContent, \"defaultProps\", {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9EZWZhdWx0TGVnZW5kQ29udGVudC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJZixPQUFPZ0IsSUFBSSxDQUFDSDtJQUFJLElBQUliLE9BQU9pQixxQkFBcUIsRUFBRTtRQUFFLElBQUl2QixJQUFJTSxPQUFPaUIscUJBQXFCLENBQUNKO1FBQUlDLEtBQU1wQixDQUFBQSxJQUFJQSxF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QixDQUFDLFFBQVE7d0JBQ3BFOEIsV0FBVzt3QkFDWCtCLE9BQU87NEJBQ0w1QyxPQUFPQTt3QkFDVDtvQkFDRixHQUFHMEMsaUJBQWlCQSxlQUFlQyxZQUFZRixPQUFPekgsS0FBSzJIO2dCQUM3RDtZQUNGO1FBQ0Y7UUFBRztZQUNEdkgsS0FBSztZQUNMbUQsT0FBTyxTQUFTc0U7Z0JBQ2QsSUFBSUMsZUFBZSxJQUFJLENBQUNqRyxLQUFLLEVBQzNCMkQsVUFBVXNDLGFBQWF0QyxPQUFPLEVBQzlCb0IsU0FBU2tCLGFBQWFsQixNQUFNLEVBQzVCbUIsUUFBUUQsYUFBYUMsS0FBSztnQkFDNUIsSUFBSSxDQUFDdkMsV0FBVyxDQUFDQSxRQUFRdEYsTUFBTSxFQUFFO29CQUMvQixPQUFPO2dCQUNUO2dCQUNBLElBQUk4SCxhQUFhO29CQUNmQyxTQUFTO29CQUNUQyxRQUFRO29CQUNSQyxXQUFXdkIsV0FBVyxlQUFlbUIsUUFBUTtnQkFDL0M7Z0JBQ0EsT0FBTyxXQUFXLEdBQUVoRSwwREFBbUIsQ0FBQyxNQUFNO29CQUM1QzhCLFdBQVc7b0JBQ1grQixPQUFPSTtnQkFDVCxHQUFHLElBQUksQ0FBQ3hCLFdBQVc7WUFDckI7UUFDRjtLQUFFO0FBQ0osRUFBRXhDLGdEQUFhQSxFQUFFO0FBQ2pCNUMsZ0JBQWdCb0Qsc0JBQXNCLGVBQWU7QUFDckRwRCxnQkFBZ0JvRCxzQkFBc0IsZ0JBQWdCO0lBQ3BEbUMsVUFBVTtJQUNWQyxRQUFRO0lBQ1JtQixPQUFPO0lBQ1BSLGVBQWU7SUFDZjNDLGVBQWU7QUFDakIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9EZWZhdWx0TGVnZW5kQ29udGVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IERlZmF1bHQgTGVnZW5kIENvbnRlbnRcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHdhcm4gfSBmcm9tICcuLi91dGlsL0xvZ1V0aWxzJztcbmltcG9ydCB7IFN1cmZhY2UgfSBmcm9tICcuLi9jb250YWluZXIvU3VyZmFjZSc7XG5pbXBvcnQgeyBTeW1ib2xzIH0gZnJvbSAnLi4vc2hhcGUvU3ltYm9scyc7XG5pbXBvcnQgeyBhZGFwdEV2ZW50c09mQ2hpbGQgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbnZhciBTSVpFID0gMzI7XG5leHBvcnQgdmFyIERlZmF1bHRMZWdlbmRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUHVyZUNvbXBvbmVudCkge1xuICBmdW5jdGlvbiBEZWZhdWx0TGVnZW5kQ29udGVudCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGVmYXVsdExlZ2VuZENvbnRlbnQpO1xuICAgIHJldHVybiBfY2FsbFN1cGVyKHRoaXMsIERlZmF1bHRMZWdlbmRDb250ZW50LCBhcmd1bWVudHMpO1xuICB9XG4gIF9pbmhlcml0cyhEZWZhdWx0TGVnZW5kQ29udGVudCwgX1B1cmVDb21wb25lbnQpO1xuICByZXR1cm4gX2NyZWF0ZUNsYXNzKERlZmF1bHRMZWdlbmRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJJY29uXCIsXG4gICAgdmFsdWU6XG4gICAgLyoqXG4gICAgICogUmVuZGVyIHRoZSBwYXRoIG9mIGljb25cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YSBEYXRhIG9mIGVhY2ggbGVnZW5kIGl0ZW1cbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IFBhdGggZWxlbWVudFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlbmRlckljb24oZGF0YSkge1xuICAgICAgdmFyIGluYWN0aXZlQ29sb3IgPSB0aGlzLnByb3BzLmluYWN0aXZlQ29sb3I7XG4gICAgICB2YXIgaGFsZlNpemUgPSBTSVpFIC8gMjtcbiAgICAgIHZhciBzaXh0aFNpemUgPSBTSVpFIC8gNjtcbiAgICAgIHZhciB0aGlyZFNpemUgPSBTSVpFIC8gMztcbiAgICAgIHZhciBjb2xvciA9IGRhdGEuaW5hY3RpdmUgPyBpbmFjdGl2ZUNvbG9yIDogZGF0YS5jb2xvcjtcbiAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdwbGFpbmxpbmUnKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwge1xuICAgICAgICAgIHN0cm9rZVdpZHRoOiA0LFxuICAgICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICAgIHN0cm9rZTogY29sb3IsXG4gICAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiBkYXRhLnBheWxvYWQuc3Ryb2tlRGFzaGFycmF5LFxuICAgICAgICAgIHgxOiAwLFxuICAgICAgICAgIHkxOiBoYWxmU2l6ZSxcbiAgICAgICAgICB4MjogU0laRSxcbiAgICAgICAgICB5MjogaGFsZlNpemUsXG4gICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWxlZ2VuZC1pY29uXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS50eXBlID09PSAnbGluZScpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgICAgc3Ryb2tlOiBjb2xvcixcbiAgICAgICAgICBkOiBcIk0wLFwiLmNvbmNhdChoYWxmU2l6ZSwgXCJoXCIpLmNvbmNhdCh0aGlyZFNpemUsIFwiXFxuICAgICAgICAgICAgQVwiKS5jb25jYXQoc2l4dGhTaXplLCBcIixcIikuY29uY2F0KHNpeHRoU2l6ZSwgXCIsMCwxLDEsXCIpLmNvbmNhdCgyICogdGhpcmRTaXplLCBcIixcIikuY29uY2F0KGhhbGZTaXplLCBcIlxcbiAgICAgICAgICAgIEhcIikuY29uY2F0KFNJWkUsIFwiTVwiKS5jb25jYXQoMiAqIHRoaXJkU2l6ZSwgXCIsXCIpLmNvbmNhdChoYWxmU2l6ZSwgXCJcXG4gICAgICAgICAgICBBXCIpLmNvbmNhdChzaXh0aFNpemUsIFwiLFwiKS5jb25jYXQoc2l4dGhTaXplLCBcIiwwLDEsMSxcIikuY29uY2F0KHRoaXJkU2l6ZSwgXCIsXCIpLmNvbmNhdChoYWxmU2l6ZSksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWxlZ2VuZC1pY29uXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS50eXBlID09PSAncmVjdCcpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgICAgICAgc3Ryb2tlOiBcIm5vbmVcIixcbiAgICAgICAgICBmaWxsOiBjb2xvcixcbiAgICAgICAgICBkOiBcIk0wLFwiLmNvbmNhdChTSVpFIC8gOCwgXCJoXCIpLmNvbmNhdChTSVpFLCBcInZcIikuY29uY2F0KFNJWkUgKiAzIC8gNCwgXCJoXCIpLmNvbmNhdCgtU0laRSwgXCJ6XCIpLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1sZWdlbmQtaWNvblwiXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoZGF0YS5sZWdlbmRJY29uKSkge1xuICAgICAgICB2YXIgaWNvblByb3BzID0gX29iamVjdFNwcmVhZCh7fSwgZGF0YSk7XG4gICAgICAgIGRlbGV0ZSBpY29uUHJvcHMubGVnZW5kSWNvbjtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoZGF0YS5sZWdlbmRJY29uLCBpY29uUHJvcHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFN5bWJvbHMsIHtcbiAgICAgICAgZmlsbDogY29sb3IsXG4gICAgICAgIGN4OiBoYWxmU2l6ZSxcbiAgICAgICAgY3k6IGhhbGZTaXplLFxuICAgICAgICBzaXplOiBTSVpFLFxuICAgICAgICBzaXplVHlwZTogXCJkaWFtZXRlclwiLFxuICAgICAgICB0eXBlOiBkYXRhLnR5cGVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERyYXcgaXRlbXMgb2YgbGVnZW5kXG4gICAgICogQHJldHVybiB7UmVhY3RFbGVtZW50fSBJdGVtc1xuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckl0ZW1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckl0ZW1zKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgIHBheWxvYWQgPSBfdGhpcyRwcm9wcy5wYXlsb2FkLFxuICAgICAgICBpY29uU2l6ZSA9IF90aGlzJHByb3BzLmljb25TaXplLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wcy5sYXlvdXQsXG4gICAgICAgIGZvcm1hdHRlciA9IF90aGlzJHByb3BzLmZvcm1hdHRlcixcbiAgICAgICAgaW5hY3RpdmVDb2xvciA9IF90aGlzJHByb3BzLmluYWN0aXZlQ29sb3I7XG4gICAgICB2YXIgdmlld0JveCA9IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgd2lkdGg6IFNJWkUsXG4gICAgICAgIGhlaWdodDogU0laRVxuICAgICAgfTtcbiAgICAgIHZhciBpdGVtU3R5bGUgPSB7XG4gICAgICAgIGRpc3BsYXk6IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gJ2lubGluZS1ibG9jaycgOiAnYmxvY2snLFxuICAgICAgICBtYXJnaW5SaWdodDogMTBcbiAgICAgIH07XG4gICAgICB2YXIgc3ZnU3R5bGUgPSB7XG4gICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgICAgICAgbWFyZ2luUmlnaHQ6IDRcbiAgICAgIH07XG4gICAgICByZXR1cm4gcGF5bG9hZC5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgICAgIHZhciBmaW5hbEZvcm1hdHRlciA9IGVudHJ5LmZvcm1hdHRlciB8fCBmb3JtYXR0ZXI7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSBjbHN4KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoe1xuICAgICAgICAgICdyZWNoYXJ0cy1sZWdlbmQtaXRlbSc6IHRydWVcbiAgICAgICAgfSwgXCJsZWdlbmQtaXRlbS1cIi5jb25jYXQoaSksIHRydWUpLCBcImluYWN0aXZlXCIsIGVudHJ5LmluYWN0aXZlKSk7XG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSAnbm9uZScpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERvIG5vdCByZW5kZXIgZW50cnkudmFsdWUgYXMgZnVuY3Rpb25zLiBBbHdheXMgcmVxdWlyZSBzdGF0aWMgc3RyaW5nIHByb3BlcnRpZXMuXG4gICAgICAgIHZhciBlbnRyeVZhbHVlID0gIWlzRnVuY3Rpb24oZW50cnkudmFsdWUpID8gZW50cnkudmFsdWUgOiBudWxsO1xuICAgICAgICB3YXJuKCFpc0Z1bmN0aW9uKGVudHJ5LnZhbHVlKSwgXCJUaGUgbmFtZSBwcm9wZXJ0eSBpcyBhbHNvIHJlcXVpcmVkIHdoZW4gdXNpbmcgYSBmdW5jdGlvbiBmb3IgdGhlIGRhdGFLZXkgb2YgYSBjaGFydCdzIGNhcnRlc2lhbiBjb21wb25lbnRzLiBFeDogPEJhciBuYW1lPVxcXCJOYW1lIG9mIG15IERhdGFcXFwiLz5cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1sZW5cbiAgICAgICAgKTtcbiAgICAgICAgdmFyIGNvbG9yID0gZW50cnkuaW5hY3RpdmUgPyBpbmFjdGl2ZUNvbG9yIDogZW50cnkuY29sb3I7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIF9leHRlbmRzKHtcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgICBzdHlsZTogaXRlbVN0eWxlXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgICAgICxcbiAgICAgICAgICBrZXk6IFwibGVnZW5kLWl0ZW0tXCIuY29uY2F0KGkpXG4gICAgICAgIH0sIGFkYXB0RXZlbnRzT2ZDaGlsZChfdGhpcy5wcm9wcywgZW50cnksIGkpKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3VyZmFjZSwge1xuICAgICAgICAgIHdpZHRoOiBpY29uU2l6ZSxcbiAgICAgICAgICBoZWlnaHQ6IGljb25TaXplLFxuICAgICAgICAgIHZpZXdCb3g6IHZpZXdCb3gsXG4gICAgICAgICAgc3R5bGU6IHN2Z1N0eWxlXG4gICAgICAgIH0sIF90aGlzLnJlbmRlckljb24oZW50cnkpKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtbGVnZW5kLWl0ZW0tdGV4dFwiLFxuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjogY29sb3JcbiAgICAgICAgICB9XG4gICAgICAgIH0sIGZpbmFsRm9ybWF0dGVyID8gZmluYWxGb3JtYXR0ZXIoZW50cnlWYWx1ZSwgZW50cnksIGkpIDogZW50cnlWYWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgcGF5bG9hZCA9IF90aGlzJHByb3BzMi5wYXlsb2FkLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wczIubGF5b3V0LFxuICAgICAgICBhbGlnbiA9IF90aGlzJHByb3BzMi5hbGlnbjtcbiAgICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgZmluYWxTdHlsZSA9IHtcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgICB0ZXh0QWxpZ246IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gYWxpZ24gOiAnbGVmdCdcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1kZWZhdWx0LWxlZ2VuZFwiLFxuICAgICAgICBzdHlsZTogZmluYWxTdHlsZVxuICAgICAgfSwgdGhpcy5yZW5kZXJJdGVtcygpKTtcbiAgICB9XG4gIH1dKTtcbn0oUHVyZUNvbXBvbmVudCk7XG5fZGVmaW5lUHJvcGVydHkoRGVmYXVsdExlZ2VuZENvbnRlbnQsIFwiZGlzcGxheU5hbWVcIiwgJ0xlZ2VuZCcpO1xuX2RlZmluZVByb3BlcnR5KERlZmF1bHRMZWdlbmRDb250ZW50LCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGljb25TaXplOiAxNCxcbiAgbGF5b3V0OiAnaG9yaXpvbnRhbCcsXG4gIGFsaWduOiAnY2VudGVyJyxcbiAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gIGluYWN0aXZlQ29sb3I6ICcjY2NjJ1xufSk7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIm93bktleXMiLCJlIiwiciIsInQiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1Byb3BlcnR5S2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzZWxmIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJwIiwib2JqIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJpc0Z1bmN0aW9uIiwiY2xzeCIsIndhcm4iLCJTdXJmYWNlIiwiU3ltYm9scyIsImFkYXB0RXZlbnRzT2ZDaGlsZCIsIlNJWkUiLCJEZWZhdWx0TGVnZW5kQ29udGVudCIsIl9QdXJlQ29tcG9uZW50IiwicmVuZGVySWNvbiIsImRhdGEiLCJpbmFjdGl2ZUNvbG9yIiwiaGFsZlNpemUiLCJzaXh0aFNpemUiLCJ0aGlyZFNpemUiLCJjb2xvciIsImluYWN0aXZlIiwidHlwZSIsImNyZWF0ZUVsZW1lbnQiLCJzdHJva2VXaWR0aCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VEYXNoYXJyYXkiLCJwYXlsb2FkIiwieDEiLCJ5MSIsIngyIiwieTIiLCJjbGFzc05hbWUiLCJkIiwiY29uY2F0IiwiaXNWYWxpZEVsZW1lbnQiLCJsZWdlbmRJY29uIiwiaWNvblByb3BzIiwiY2xvbmVFbGVtZW50IiwiY3giLCJjeSIsInNpemUiLCJzaXplVHlwZSIsInJlbmRlckl0ZW1zIiwiX3RoaXMiLCJfdGhpcyRwcm9wcyIsImljb25TaXplIiwibGF5b3V0IiwiZm9ybWF0dGVyIiwidmlld0JveCIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJpdGVtU3R5bGUiLCJkaXNwbGF5IiwibWFyZ2luUmlnaHQiLCJzdmdTdHlsZSIsInZlcnRpY2FsQWxpZ24iLCJtYXAiLCJlbnRyeSIsImZpbmFsRm9ybWF0dGVyIiwiZW50cnlWYWx1ZSIsInN0eWxlIiwicmVuZGVyIiwiX3RoaXMkcHJvcHMyIiwiYWxpZ24iLCJmaW5hbFN0eWxlIiwicGFkZGluZyIsIm1hcmdpbiIsInRleHRBbGlnbiJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/DefaultLegendContent.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/DefaultTooltipContent.js":
/*!**********************************************************************!*\
!*** ./node_modules/recharts/es6/component/DefaultTooltipContent.js ***!
\**********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DefaultTooltipContent: () => (/* binding */ DefaultTooltipContent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/sortBy */ \"(ssr)/./node_modules/lodash/sortBy.js\");\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_sortBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Default Tooltip Content\n */ \n\n\n\n\nfunction defaultFormatter(value) {\n return Array.isArray(value) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(value[0]) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(value[1]) ? value.join(' ~ ') : value;\n}\nvar DefaultTooltipContent = function DefaultTooltipContent(props) {\n var _props$separator = props.separator, separator = _props$separator === void 0 ? ' : ' : _props$separator, _props$contentStyle = props.contentStyle, contentStyle = _props$contentStyle === void 0 ? {} : _props$contentStyle, _props$itemStyle = props.itemStyle, itemStyle = _props$itemStyle === void 0 ? {} : _props$itemStyle, _props$labelStyle = props.labelStyle, labelStyle = _props$labelStyle === void 0 ? {} : _props$labelStyle, payload = props.payload, formatter = props.formatter, itemSorter = props.itemSorter, wrapperClassName = props.wrapperClassName, labelClassName = props.labelClassName, label = props.label, labelFormatter = props.labelFormatter, _props$accessibilityL = props.accessibilityLayer, accessibilityLayer = _props$accessibilityL === void 0 ? false : _props$accessibilityL;\n var renderContent = function renderContent() {\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? lodash_sortBy__WEBPACK_IMPORTED_MODULE_1___default()(payload, itemSorter) : payload).map(function(entry, i) {\n if (entry.type === 'none') {\n return null;\n }\n var finalItemStyle = _objectSpread({\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000'\n }, itemStyle);\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var value = entry.value, name = entry.name;\n var finalValue = value;\n var finalName = name;\n if (finalFormatter && finalValue != null && finalName != null) {\n var formatted = finalFormatter(value, name, entry, i, payload);\n if (Array.isArray(formatted)) {\n var _formatted = _slicedToArray(formatted, 2);\n finalValue = _formatted[0];\n finalName = _formatted[1];\n } else {\n finalValue = formatted;\n }\n }\n return(/*#__PURE__*/ // eslint-disable-next-line react/no-array-index-key\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(finalName) ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, finalName) : null, (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(finalName) ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, finalValue), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || '')));\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n return null;\n };\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap'\n }, contentStyle);\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n var hasLabel = !lodash_isNil__WEBPACK_IMPORTED_MODULE_2___default()(label);\n var finalLabel = hasLabel ? label : '';\n var wrapperCN = (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('recharts-default-tooltip', wrapperClassName);\n var labelCN = (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('recharts-tooltip-label', labelClassName);\n if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n finalLabel = labelFormatter(label, payload);\n }\n var accessibilityAttributes = accessibilityLayer ? {\n role: 'status',\n 'aria-live': 'assertive'\n } : {};\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", _extends({\n className: wrapperCN,\n style: finalStyle\n }, accessibilityAttributes), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), renderContent());\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9EZWZhdWx0VG9vbHRpcENvbnRlbnQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxlQUFlQyxHQUFHLEVBQUVULENBQUM7SUFBSSxPQUFPVSxnQkFBZ0JELFFBQVFFLHNCQUFzQkYsS0FBS1QsTUFBTVksNEJBQTRCSCxLQUFLVCxNQUFNYTtBQUFvQjtBQUM3SixTQUFTQTtJQUFxQixNQUFNLElBQUlDLFVBQVU7QUFBOEk7QUFDaE0sU0FBU0YsNEJBQTRC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QmxDLHFCQUFxQjtRQUNqRG1DLE1BQU07UUFDTixhQUFhO0lBQ2YsSUFBSSxDQUFDO0lBQ0wsT0FBTyxXQUFXLEdBQUU1RCwwREFBbUIsQ0FBQyxPQUFPL0QsU0FBUztRQUN0RDRHLFdBQVdXO1FBQ1hULE9BQU9FO0lBQ1QsR0FBR1UsMEJBQTBCLFdBQVcsR0FBRTNELDBEQUFtQixDQUFDLEtBQUs7UUFDakU2QyxXQUFXWTtRQUNYVixPQUFPTTtJQUNULEdBQUcsV0FBVyxHQUFFckQsMkRBQW9CLENBQUN1RCxjQUFjQSxhQUFhLEdBQUdULE1BQU0sQ0FBQ1MsY0FBYzdCO0FBQzFGLEVBQUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9EZWZhdWx0VG9vbHRpcENvbnRlbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHsgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTsgaWYgKG51bGwgIT0gdCkgeyB2YXIgZSwgbiwgaSwgdSwgYSA9IFtdLCBmID0gITAsIG8gPSAhMTsgdHJ5IHsgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkgeyBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47IGYgPSAhMTsgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApOyB9IGNhdGNoIChyKSB7IG8gPSAhMCwgbiA9IHI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjsgfSBmaW5hbGx5IHsgaWYgKG8pIHRocm93IG47IH0gfSByZXR1cm4gYTsgfSB9XG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgRGVmYXVsdCBUb29sdGlwIENvbnRlbnRcbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHNvcnRCeSBmcm9tICdsb2Rhc2gvc29ydEJ5JztcbmltcG9ydCBpc05pbCBmcm9tICdsb2Rhc2gvaXNOaWwnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBpc051bU9yU3RyIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuZnVuY3Rpb24gZGVmYXVsdEZvcm1hdHRlcih2YWx1ZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgaXNOdW1PclN0cih2YWx1ZVswXSkgJiYgaXNOdW1PclN0cih2YWx1ZVsxXSkgPyB2YWx1ZS5qb2luKCcgfiAnKSA6IHZhbHVlO1xufVxuZXhwb3J0IHZhciBEZWZhdWx0VG9vbHRpcENvbnRlbnQgPSBmdW5jdGlvbiBEZWZhdWx0VG9vbHRpcENvbnRlbnQocHJvcHMpIHtcbiAgdmFyIF9wcm9wcyRzZXBhcmF0b3IgPSBwcm9wcy5zZXBhcmF0b3IsXG4gICAgc2VwYXJhdG9yID0gX3Byb3BzJHNlcGFyYXRvciA9PT0gdm9pZCAwID8gJyA6ICcgOiBfcHJvcHMkc2VwYXJhdG9yLFxuICAgIF9wcm9wcyRjb250ZW50U3R5bGUgPSBwcm9wcy5jb250ZW50U3R5bGUsXG4gICAgY29udGVudFN0eWxlID0gX3Byb3BzJGNvbnRlbnRTdHlsZSA9PT0gdm9pZCAwID8ge30gOiBfcHJvcHMkY29udGVudFN0eWxlLFxuICAgIF9wcm9wcyRpdGVtU3R5bGUgPSBwcm9wcy5pdGVtU3R5bGUsXG4gICAgaXRlbVN0eWxlID0gX3Byb3BzJGl0ZW1TdHlsZSA9PT0gdm9pZCAwID8ge30gOiBfcHJvcHMkaXRlbVN0eWxlLFxuICAgIF9wcm9wcyRsYWJlbFN0eWxlID0gcHJvcHMubGFiZWxTdHlsZSxcbiAgICBsYWJlbFN0eWxlID0gX3Byb3BzJGxhYmVsU3R5bGUgPT09IHZvaWQgMCA/IHt9IDogX3Byb3BzJGxhYmVsU3R5bGUsXG4gICAgcGF5bG9hZCA9IHByb3BzLnBheWxvYWQsXG4gICAgZm9ybWF0dGVyID0gcHJvcHMuZm9ybWF0dGVyLFxuICAgIGl0ZW1Tb3J0ZXIgPSBwcm9wcy5pdGVtU29ydGVyLFxuICAgIHdyYXBwZXJDbGFzc05hbWUgPSBwcm9wcy53cmFwcGVyQ2xhc3NOYW1lLFxuICAgIGxhYmVsQ2xhc3NOYW1lID0gcHJvcHMubGFiZWxDbGFzc05hbWUsXG4gICAgbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICBsYWJlbEZvcm1hdHRlciA9IHByb3BzLmxhYmVsRm9ybWF0dGVyLFxuICAgIF9wcm9wcyRhY2Nlc3NpYmlsaXR5TCA9IHByb3BzLmFjY2Vzc2liaWxpdHlMYXllcixcbiAgICBhY2Nlc3NpYmlsaXR5TGF5ZXIgPSBfcHJvcHMkYWNjZXNzaWJpbGl0eUwgPT09IHZvaWQgMCA/IGZhbHNlIDogX3Byb3BzJGFjY2Vzc2liaWxpdHlMO1xuICB2YXIgcmVuZGVyQ29udGVudCA9IGZ1bmN0aW9uIHJlbmRlckNvbnRlbnQoKSB7XG4gICAgaWYgKHBheWxvYWQgJiYgcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgIHZhciBsaXN0U3R5bGUgPSB7XG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIG1hcmdpbjogMFxuICAgICAgfTtcbiAgICAgIHZhciBpdGVtcyA9IChpdGVtU29ydGVyID8gc29ydEJ5KHBheWxvYWQsIGl0ZW1Tb3J0ZXIpIDogcGF5bG9hZCkubWFwKGZ1bmN0aW9uIChlbnRyeSwgaSkge1xuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZpbmFsSXRlbVN0eWxlID0gX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICBwYWRkaW5nVG9wOiA0LFxuICAgICAgICAgIHBhZGRpbmdCb3R0b206IDQsXG4gICAgICAgICAgY29sb3I6IGVudHJ5LmNvbG9yIHx8ICcjMDAwJ1xuICAgICAgICB9LCBpdGVtU3R5bGUpO1xuICAgICAgICB2YXIgZmluYWxGb3JtYXR0ZXIgPSBlbnRyeS5mb3JtYXR0ZXIgfHwgZm9ybWF0dGVyIHx8IGRlZmF1bHRGb3JtYXR0ZXI7XG4gICAgICAgIHZhciB2YWx1ZSA9IGVudHJ5LnZhbHVlLFxuICAgICAgICAgIG5hbWUgPSBlbnRyeS5uYW1lO1xuICAgICAgICB2YXIgZmluYWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB2YXIgZmluYWxOYW1lID0gbmFtZTtcbiAgICAgICAgaWYgKGZpbmFsRm9ybWF0dGVyICYmIGZpbmFsVmFsdWUgIT0gbnVsbCAmJiBmaW5hbE5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWQgPSBmaW5hbEZvcm1hdHRlcih2YWx1ZSwgbmFtZSwgZW50cnksIGksIHBheWxvYWQpO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1hdHRlZCkpIHtcbiAgICAgICAgICAgIHZhciBfZm9ybWF0dGVkID0gX3NsaWNlZFRvQXJyYXkoZm9ybWF0dGVkLCAyKTtcbiAgICAgICAgICAgIGZpbmFsVmFsdWUgPSBfZm9ybWF0dGVkWzBdO1xuICAgICAgICAgICAgZmluYWxOYW1lID0gX2Zvcm1hdHRlZFsxXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmluYWxWYWx1ZSA9IGZvcm1hdHRlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtdG9vbHRpcC1pdGVtXCIsXG4gICAgICAgICAgICBrZXk6IFwidG9vbHRpcC1pdGVtLVwiLmNvbmNhdChpKSxcbiAgICAgICAgICAgIHN0eWxlOiBmaW5hbEl0ZW1TdHlsZVxuICAgICAgICAgIH0sIGlzTnVtT3JTdHIoZmluYWxOYW1lKSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtdG9vbHRpcC1pdGVtLW5hbWVcIlxuICAgICAgICAgIH0sIGZpbmFsTmFtZSkgOiBudWxsLCBpc051bU9yU3RyKGZpbmFsTmFtZSkgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLXRvb2x0aXAtaXRlbS1zZXBhcmF0b3JcIlxuICAgICAgICAgIH0sIHNlcGFyYXRvcikgOiBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLXRvb2x0aXAtaXRlbS12YWx1ZVwiXG4gICAgICAgICAgfSwgZmluYWxWYWx1ZSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtdG9vbHRpcC1pdGVtLXVuaXRcIlxuICAgICAgICAgIH0sIGVudHJ5LnVuaXQgfHwgJycpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy10b29sdGlwLWl0ZW0tbGlzdFwiLFxuICAgICAgICBzdHlsZTogbGlzdFN0eWxlXG4gICAgICB9LCBpdGVtcyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuICB2YXIgZmluYWxTdHlsZSA9IF9vYmplY3RTcHJlYWQoe1xuICAgIG1hcmdpbjogMCxcbiAgICBwYWRkaW5nOiAxMCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2NjYycsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgfSwgY29udGVudFN0eWxlKTtcbiAgdmFyIGZpbmFsTGFiZWxTdHlsZSA9IF9vYmplY3RTcHJlYWQoe1xuICAgIG1hcmdpbjogMFxuICB9LCBsYWJlbFN0eWxlKTtcbiAgdmFyIGhhc0xhYmVsID0gIWlzTmlsKGxhYmVsKTtcbiAgdmFyIGZpbmFsTGFiZWwgPSBoYXNMYWJlbCA/IGxhYmVsIDogJyc7XG4gIHZhciB3cmFwcGVyQ04gPSBjbHN4KCdyZWNoYXJ0cy1kZWZhdWx0LXRvb2x0aXAnLCB3cmFwcGVyQ2xhc3NOYW1lKTtcbiAgdmFyIGxhYmVsQ04gPSBjbHN4KCdyZWNoYXJ0cy10b29sdGlwLWxhYmVsJywgbGFiZWxDbGFzc05hbWUpO1xuICBpZiAoaGFzTGFiZWwgJiYgbGFiZWxGb3JtYXR0ZXIgJiYgcGF5bG9hZCAhPT0gdW5kZWZpbmVkICYmIHBheWxvYWQgIT09IG51bGwpIHtcbiAgICBmaW5hbExhYmVsID0gbGFiZWxGb3JtYXR0ZXIobGFiZWwsIHBheWxvYWQpO1xuICB9XG4gIHZhciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlcyA9IGFjY2Vzc2liaWxpdHlMYXllciA/IHtcbiAgICByb2xlOiAnc3RhdHVzJyxcbiAgICAnYXJpYS1saXZlJzogJ2Fzc2VydGl2ZSdcbiAgfSA6IHt9O1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogd3JhcHBlckNOLFxuICAgIHN0eWxlOiBmaW5hbFN0eWxlXG4gIH0sIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwXCIsIHtcbiAgICBjbGFzc05hbWU6IGxhYmVsQ04sXG4gICAgc3R5bGU6IGZpbmFsTGFiZWxTdHlsZVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoZmluYWxMYWJlbCkgPyBmaW5hbExhYmVsIDogXCJcIi5jb25jYXQoZmluYWxMYWJlbCkpLCByZW5kZXJDb250ZW50KCkpO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsInIiLCJsIiwidCIsImUiLCJ1IiwiYSIsImYiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImlzQXJyYXkiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJSZWFjdCIsInNvcnRCeSIsImlzTmlsIiwiY2xzeCIsImlzTnVtT3JTdHIiLCJkZWZhdWx0Rm9ybWF0dGVyIiwiam9pbiIsIkRlZmF1bHRUb29sdGlwQ29udGVudCIsInByb3BzIiwiX3Byb3BzJHNlcGFyYXRvciIsInNlcGFyYXRvciIsIl9wcm9wcyRjb250ZW50U3R5bGUiLCJjb250ZW50U3R5bGUiLCJfcHJvcHMkaXRlbVN0eWxlIiwiaXRlbVN0eWxlIiwiX3Byb3BzJGxhYmVsU3R5bGUiLCJsYWJlbFN0eWxlIiwicGF5bG9hZCIsImZvcm1hdHRlciIsIml0ZW1Tb3J0ZXIiLCJ3cmFwcGVyQ2xhc3NOYW1lIiwibGFiZWxDbGFzc05hbWUiLCJsYWJlbCIsImxhYmVsRm9ybWF0dGVyIiwiX3Byb3BzJGFjY2Vzc2liaWxpdHlMIiwiYWNjZXNzaWJpbGl0eUxheWVyIiwicmVuZGVyQ29udGVudCIsImxpc3RTdHlsZSIsInBhZGRpbmciLCJtYXJnaW4iLCJpdGVtcyIsIm1hcCIsImVudHJ5IiwidHlwZSIsImZpbmFsSXRlbVN0eWxlIiwiZGlzcGxheSIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiY29sb3IiLCJmaW5hbEZvcm1hdHRlciIsImZpbmFsVmFsdWUiLCJmaW5hbE5hbWUiLCJmb3JtYXR0ZWQiLCJfZm9ybWF0dGVkIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbmNhdCIsInN0eWxlIiwidW5pdCIsImZpbmFsU3R5bGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXIiLCJ3aGl0ZVNwYWNlIiwiZmluYWxMYWJlbFN0eWxlIiwiaGFzTGFiZWwiLCJmaW5hbExhYmVsIiwid3JhcHBlckNOIiwibGFiZWxDTiIsInVuZGVmaW5lZCIsImFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzIiwicm9sZSIsImlzVmFsaWRFbGVtZW50Il0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/DefaultTooltipContent.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Label.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/component/Label.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Label: () => (/* binding */ Label)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isObject */ \"(ssr)/./node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _Text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Text */ \"(ssr)/./node_modules/recharts/es6/component/Text.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_PolarUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nvar _excluded = [\n \"offset\"\n];\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n\n\n\n\n\n\n\n\nvar getLabel = function getLabel(props) {\n var value = props.value, formatter = props.formatter;\n var label = lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(props.children) ? value : props.children;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(formatter)) {\n return formatter(label);\n }\n return label;\n};\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.mathSign)(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position, viewBox = labelProps.viewBox, offset = labelProps.offset, className = labelProps.className;\n var _ref = viewBox, cx = _ref.cx, cy = _ref.cy, innerRadius = _ref.innerRadius, outerRadius = _ref.outerRadius, startAngle = _ref.startAngle, endAngle = _ref.endAngle, clockWise = _ref.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n if (position === 'insideStart') {\n labelAngle = startAngle + sign * offset;\n direction = clockWise;\n } else if (position === 'insideEnd') {\n labelAngle = endAngle - sign * offset;\n direction = !clockWise;\n } else if (position === 'end') {\n labelAngle = endAngle + sign * offset;\n direction = clockWise;\n }\n direction = deltaAngle <= 0 ? direction : !direction;\n var startPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_6__.polarToCartesian)(cx, cy, radius, labelAngle);\n var endPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_6__.polarToCartesian)(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(labelProps.id) ? (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.uniqueId)('recharts-radial-line-') : labelProps.id;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])('recharts-radial-bar-label', className)\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"defs\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n id: id,\n d: path\n })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox, offset = props.offset, position = props.position;\n var _ref2 = viewBox, cx = _ref2.cx, cy = _ref2.cy, innerRadius = _ref2.innerRadius, outerRadius = _ref2.outerRadius, startAngle = _ref2.startAngle, endAngle = _ref2.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n if (position === 'outside') {\n var _polarToCartesian = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_6__.polarToCartesian)(cx, cy, outerRadius + offset, midAngle), _x = _polarToCartesian.x, _y = _polarToCartesian.y;\n return {\n x: _x,\n y: _y,\n textAnchor: _x >= cx ? 'start' : 'end',\n verticalAnchor: 'middle'\n };\n }\n if (position === 'center') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n }\n if (position === 'centerTop') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n if (position === 'centerBottom') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n var r = (innerRadius + outerRadius) / 2;\n var _polarToCartesian2 = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_6__.polarToCartesian)(cx, cy, r, midAngle), x = _polarToCartesian2.x, y = _polarToCartesian2.y;\n return {\n x: x,\n y: y,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox, parentViewBox = props.parentViewBox, offset = props.offset, position = props.position;\n var _ref3 = viewBox, x = _ref3.x, y = _ref3.y, width = _ref3.width, height = _ref3.height;\n // Define vertical offsets and position inverts based on the value being positive or negative\n var verticalSign = height >= 0 ? 1 : -1;\n var verticalOffset = verticalSign * offset;\n var verticalEnd = verticalSign > 0 ? 'end' : 'start';\n var verticalStart = verticalSign > 0 ? 'start' : 'end';\n // Define horizontal offsets and position inverts based on the value being positive or negative\n var horizontalSign = width >= 0 ? 1 : -1;\n var horizontalOffset = horizontalSign * offset;\n var horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n var horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n if (position === 'top') {\n var attrs = {\n x: x + width / 2,\n y: y - verticalSign * offset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n };\n return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n height: Math.max(y - parentViewBox.y, 0),\n width: width\n } : {});\n }\n if (position === 'bottom') {\n var _attrs = {\n x: x + width / 2,\n y: y + height + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n };\n return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n width: width\n } : {});\n }\n if (position === 'left') {\n var _attrs2 = {\n x: x - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n width: Math.max(_attrs2.x - parentViewBox.x, 0),\n height: height\n } : {});\n }\n if (position === 'right') {\n var _attrs3 = {\n x: x + width + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n height: height\n } : {});\n }\n var sizeAttrs = parentViewBox ? {\n width: width,\n height: height\n } : {};\n if (position === 'insideLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n if (position === 'insideRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n if (position === 'insideTop') {\n return _objectSpread({\n x: x + width / 2,\n y: y + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideBottom') {\n return _objectSpread({\n x: x + width / 2,\n y: y + height - verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === 'insideTopLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideTopRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideBottomLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === 'insideBottomRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (lodash_isObject__WEBPACK_IMPORTED_MODULE_3___default()(position) && ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(position.x) || (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isPercent)(position.x)) && ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(position.y) || (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isPercent)(position.y))) {\n return _objectSpread({\n x: x + (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.getPercentValue)(position.x, width),\n y: y + (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.getPercentValue)(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end'\n }, sizeAttrs);\n }\n return _objectSpread({\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n }, sizeAttrs);\n};\nvar isPolar = function isPolar(viewBox) {\n return 'cx' in viewBox && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(viewBox.cx);\n};\nfunction Label(_ref4) {\n var _ref4$offset = _ref4.offset, offset = _ref4$offset === void 0 ? 5 : _ref4$offset, restProps = _objectWithoutProperties(_ref4, _excluded);\n var props = _objectSpread({\n offset: offset\n }, restProps);\n var viewBox = props.viewBox, position = props.position, value = props.value, children = props.children, content = props.content, _props$className = props.className, className = _props$className === void 0 ? '' : _props$className, textBreakAll = props.textBreakAll;\n if (!viewBox || lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(value) && lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(children) && !/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(content) && !lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(content)) {\n return null;\n }\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(content)) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(content, props);\n }\n var label;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(content)) {\n label = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(content, props);\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n var isPolarLabel = isPolar(viewBox);\n var attrs = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.filterProps)(props, true);\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Text__WEBPACK_IMPORTED_MODULE_8__.Text, _extends({\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])('recharts-label', className)\n }, attrs, positionAttrs, {\n breakAll: textBreakAll\n }), label);\n}\nLabel.displayName = 'Label';\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx, cy = props.cy, angle = props.angle, startAngle = props.startAngle, endAngle = props.endAngle, r = props.r, radius = props.radius, innerRadius = props.innerRadius, outerRadius = props.outerRadius, x = props.x, y = props.y, top = props.top, left = props.left, width = props.width, height = props.height, clockWise = props.clockWise, labelViewBox = props.labelViewBox;\n if (labelViewBox) {\n return labelViewBox;\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(width) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(height)) {\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(x) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(top) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(x) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(cx) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n if (props.viewBox) {\n return props.viewBox;\n }\n return {};\n};\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumOrStr)(label)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(label)) {\n if (label.type === Label) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(label, {\n key: 'label-implicit',\n viewBox: viewBox\n });\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(label)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (lodash_isObject__WEBPACK_IMPORTED_MODULE_3___default()(label)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n return null;\n};\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChildren = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.findAllByType)(children, Label).map(function(child, index) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n viewBox: viewBox || parentViewBox,\n // eslint-disable-next-line react/no-array-index-key\n key: \"label-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [\n implicitLabel\n ].concat(_toConsumableArray(explicitChildren));\n};\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9MYWJlbC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxJQUFJSyxZQUFZO0lBQUM7Q0FBUztBQUMxQixTQUFTQyxtQkFBbUJDLEdBQUc7SUFBSSxPQUFPQyxtQkFBbUJELFFBQVFFLGlCQUFpQkYsUUFBUUcsNEJBQTRCSCxRQUFRSTtBQUFzQjtBQUN4SixTQUFTQTtJQUF1QixNQUFNLElBQUlDLFVBQVU7QUFBeUk7QUFDN0wsU0FBU0YsNEJBQTRCVixDQUFDLEVBQUVhLE1BQU07SUFBSSxJQUFJLENBQUNiLEdBQUc7SUFBUSxJQUFJLE9BQU9BLE1BQU0sVUFBVSxPQUFPYyxrQkFBa0JkLEdBQUdhO0lBQVMsSUFBSUUsSUFBSUMsT0FBT1osU0FBUyxDQUFDYSxRQUFRLENBQUNDLElBQUksQ0FBQ2xCLEdBQUdtQixLQUFLLENBQUMsR0FBRyxDQUFDO0lBQUksSUFBSUosTUFBTSxZQUFZZixFQUFFRyxXQUFXLEVBQUVZLElBQUlmLEVBQUVHLFdBQVcsQ0FBQ2lCLElBQUk7SUFBRSxJQUFJTCxNQUFNLFNBQVNBLE1BQU0sT0FBTyxPQUFPTSxNQUFNQyxJQUFJLENBQUN0QjtJQUFJLElBQUllLE1BQU0sZUFBZSwyQ0FBMkNRLElBQUksQ0FBQ1IsSUFBSSxPQUFPRCxrQkFBa0JkLEdBQUdhO0FBQVM7QUFDL1osU0FBU0osaUJBQWlC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QUFxQixTQUFTQSxtQkFBbUJDLFdBQVcsRUFBRXJFLE9BQU87SUFDdkUsSUFBSXNFLGtCQUFrQjNILFVBQVV6QixNQUFNLEdBQUcsS0FBS3lCLFNBQVMsQ0FBQyxFQUFFLEtBQUs0SCxZQUFZNUgsU0FBUyxDQUFDLEVBQUUsR0FBRztJQUMxRixJQUFJLENBQUMwSCxlQUFlLENBQUNBLFlBQVlsRixRQUFRLElBQUltRixtQkFBbUIsQ0FBQ0QsWUFBWW5GLEtBQUssRUFBRTtRQUNsRixPQUFPO0lBQ1Q7SUFDQSxJQUFJQyxXQUFXa0YsWUFBWWxGLFFBQVE7SUFDbkMsSUFBSTZDLGdCQUFnQjZCLGFBQWFRO0lBQ2pDLElBQUlHLG1CQUFtQmxHLCtEQUFhQSxDQUFDYSxVQUFVK0QsT0FBT3VCLEdBQUcsQ0FBQyxTQUFVQyxLQUFLLEVBQUVDLEtBQUs7UUFDOUUsT0FBTyxXQUFXLEdBQUU3RyxtREFBWUEsQ0FBQzRHLE9BQU87WUFDdEMxRSxTQUFTQSxXQUFXZ0M7WUFDcEIsb0RBQW9EO1lBQ3BEdEcsS0FBSyxTQUFTcUYsTUFBTSxDQUFDNEQ7UUFDdkI7SUFDRjtJQUNBLElBQUksQ0FBQ0wsaUJBQWlCO1FBQ3BCLE9BQU9FO0lBQ1Q7SUFDQSxJQUFJSSxnQkFBZ0JWLFdBQVdHLFlBQVluRixLQUFLLEVBQUVjLFdBQVdnQztJQUM3RCxPQUFPO1FBQUM0QztLQUFjLENBQUM3RCxNQUFNLENBQUNsSCxtQkFBbUIySztBQUNuRDtBQUNBdEIsTUFBTVcsWUFBWSxHQUFHQTtBQUNyQlgsTUFBTWtCLGtCQUFrQixHQUFHQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY29tcG9uZW50L0xhYmVsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbnZhciBfZXhjbHVkZWQgPSBbXCJvZmZzZXRcIl07XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGl0ZXJbU3ltYm9sLml0ZXJhdG9yXSAhPSBudWxsIHx8IGl0ZXJbXCJAQGl0ZXJhdG9yXCJdICE9IG51bGwpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpOyB9XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShhcnIpOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50LCBjcmVhdGVFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vVGV4dCc7XG5pbXBvcnQgeyBmaW5kQWxsQnlUeXBlLCBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBpc051bU9yU3RyLCBpc051bWJlciwgaXNQZXJjZW50LCBnZXRQZXJjZW50VmFsdWUsIHVuaXF1ZUlkLCBtYXRoU2lnbiB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IHBvbGFyVG9DYXJ0ZXNpYW4gfSBmcm9tICcuLi91dGlsL1BvbGFyVXRpbHMnO1xudmFyIGdldExhYmVsID0gZnVuY3Rpb24gZ2V0TGFiZWwocHJvcHMpIHtcbiAgdmFyIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgZm9ybWF0dGVyID0gcHJvcHMuZm9ybWF0dGVyO1xuICB2YXIgbGFiZWwgPSBpc05pbChwcm9wcy5jaGlsZHJlbikgPyB2YWx1ZSA6IHByb3BzLmNoaWxkcmVuO1xuICBpZiAoaXNGdW5jdGlvbihmb3JtYXR0ZXIpKSB7XG4gICAgcmV0dXJuIGZvcm1hdHRlcihsYWJlbCk7XG4gIH1cbiAgcmV0dXJuIGxhYmVsO1xufTtcbnZhciBnZXREZWx0YUFuZ2xlID0gZnVuY3Rpb24gZ2V0RGVsdGFBbmdsZShzdGFydEFuZ2xlLCBlbmRBbmdsZSkge1xuICB2YXIgc2lnbiA9IG1hdGhTaWduKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSk7XG4gIHZhciBkZWx0YUFuZ2xlID0gTWF0aC5taW4oTWF0aC5hYnMoZW5kQW5nbGUgLSBzdGFydEFuZ2xlKSwgMzYwKTtcbiAgcmV0dXJuIHNpZ24gKiBkZWx0YUFuZ2xlO1xufTtcbnZhciByZW5kZXJSYWRpYWxMYWJlbCA9IGZ1bmN0aW9uIHJlbmRlclJhZGlhbExhYmVsKGxhYmVsUHJvcHMsIGxhYmVsLCBhdHRycykge1xuICB2YXIgcG9zaXRpb24gPSBsYWJlbFByb3BzLnBvc2l0aW9uLFxuICAgIHZpZXdCb3ggPSBsYWJlbFByb3BzLnZpZXdCb3gsXG4gICAgb2Zmc2V0ID0gbGFiZWxQcm9wcy5vZmZzZXQsXG4gICAgY2xhc3NOYW1lID0gbGFiZWxQcm9wcy5jbGFzc05hbWU7XG4gIHZhciBfcmVmID0gdmlld0JveCxcbiAgICBjeCA9IF9yZWYuY3gsXG4gICAgY3kgPSBfcmVmLmN5LFxuICAgIGlubmVyUmFkaXVzID0gX3JlZi5pbm5lclJhZGl1cyxcbiAgICBvdXRlclJhZGl1cyA9IF9yZWYub3V0ZXJSYWRpdXMsXG4gICAgc3RhcnRBbmdsZSA9IF9yZWYuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IF9yZWYuZW5kQW5nbGUsXG4gICAgY2xvY2tXaXNlID0gX3JlZi5jbG9ja1dpc2U7XG4gIHZhciByYWRpdXMgPSAoaW5uZXJSYWRpdXMgKyBvdXRlclJhZGl1cykgLyAyO1xuICB2YXIgZGVsdGFBbmdsZSA9IGdldERlbHRhQW5nbGUoc3RhcnRBbmdsZSwgZW5kQW5nbGUpO1xuICB2YXIgc2lnbiA9IGRlbHRhQW5nbGUgPj0gMCA/IDEgOiAtMTtcbiAgdmFyIGxhYmVsQW5nbGUsIGRpcmVjdGlvbjtcbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlU3RhcnQnKSB7XG4gICAgbGFiZWxBbmdsZSA9IHN0YXJ0QW5nbGUgKyBzaWduICogb2Zmc2V0O1xuICAgIGRpcmVjdGlvbiA9IGNsb2NrV2lzZTtcbiAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gJ2luc2lkZUVuZCcpIHtcbiAgICBsYWJlbEFuZ2xlID0gZW5kQW5nbGUgLSBzaWduICogb2Zmc2V0O1xuICAgIGRpcmVjdGlvbiA9ICFjbG9ja1dpc2U7XG4gIH0gZWxzZSBpZiAocG9zaXRpb24gPT09ICdlbmQnKSB7XG4gICAgbGFiZWxBbmdsZSA9IGVuZEFuZ2xlICsgc2lnbiAqIG9mZnNldDtcbiAgICBkaXJlY3Rpb24gPSBjbG9ja1dpc2U7XG4gIH1cbiAgZGlyZWN0aW9uID0gZGVsdGFBbmdsZSA8PSAwID8gZGlyZWN0aW9uIDogIWRpcmVjdGlvbjtcbiAgdmFyIHN0YXJ0UG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgcmFkaXVzLCBsYWJlbEFuZ2xlKTtcbiAgdmFyIGVuZFBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHJhZGl1cywgbGFiZWxBbmdsZSArIChkaXJlY3Rpb24gPyAxIDogLTEpICogMzU5KTtcbiAgdmFyIHBhdGggPSBcIk1cIi5jb25jYXQoc3RhcnRQb2ludC54LCBcIixcIikuY29uY2F0KHN0YXJ0UG9pbnQueSwgXCJcXG4gICAgQVwiKS5jb25jYXQocmFkaXVzLCBcIixcIikuY29uY2F0KHJhZGl1cywgXCIsMCwxLFwiKS5jb25jYXQoZGlyZWN0aW9uID8gMCA6IDEsIFwiLFxcbiAgICBcIikuY29uY2F0KGVuZFBvaW50LngsIFwiLFwiKS5jb25jYXQoZW5kUG9pbnQueSk7XG4gIHZhciBpZCA9IGlzTmlsKGxhYmVsUHJvcHMuaWQpID8gdW5pcXVlSWQoJ3JlY2hhcnRzLXJhZGlhbC1saW5lLScpIDogbGFiZWxQcm9wcy5pZDtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGV4dFwiLCBfZXh0ZW5kcyh7fSwgYXR0cnMsIHtcbiAgICBkb21pbmFudEJhc2VsaW5lOiBcImNlbnRyYWxcIixcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXJhZGlhbC1iYXItbGFiZWwnLCBjbGFzc05hbWUpXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRlZnNcIiwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBpZDogaWQsXG4gICAgZDogcGF0aFxuICB9KSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGV4dFBhdGhcIiwge1xuICAgIHhsaW5rSHJlZjogXCIjXCIuY29uY2F0KGlkKVxuICB9LCBsYWJlbCkpO1xufTtcbnZhciBnZXRBdHRyc09mUG9sYXJMYWJlbCA9IGZ1bmN0aW9uIGdldEF0dHJzT2ZQb2xhckxhYmVsKHByb3BzKSB7XG4gIHZhciB2aWV3Qm94ID0gcHJvcHMudmlld0JveCxcbiAgICBvZmZzZXQgPSBwcm9wcy5vZmZzZXQsXG4gICAgcG9zaXRpb24gPSBwcm9wcy5wb3NpdGlvbjtcbiAgdmFyIF9yZWYyID0gdmlld0JveCxcbiAgICBjeCA9IF9yZWYyLmN4LFxuICAgIGN5ID0gX3JlZjIuY3ksXG4gICAgaW5uZXJSYWRpdXMgPSBfcmVmMi5pbm5lclJhZGl1cyxcbiAgICBvdXRlclJhZGl1cyA9IF9yZWYyLm91dGVyUmFkaXVzLFxuICAgIHN0YXJ0QW5nbGUgPSBfcmVmMi5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gX3JlZjIuZW5kQW5nbGU7XG4gIHZhciBtaWRBbmdsZSA9IChzdGFydEFuZ2xlICsgZW5kQW5nbGUpIC8gMjtcbiAgaWYgKHBvc2l0aW9uID09PSAnb3V0c2lkZScpIHtcbiAgICB2YXIgX3BvbGFyVG9DYXJ0ZXNpYW4gPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgb3V0ZXJSYWRpdXMgKyBvZmZzZXQsIG1pZEFuZ2xlKSxcbiAgICAgIF94ID0gX3BvbGFyVG9DYXJ0ZXNpYW4ueCxcbiAgICAgIF95ID0gX3BvbGFyVG9DYXJ0ZXNpYW4ueTtcbiAgICByZXR1cm4ge1xuICAgICAgeDogX3gsXG4gICAgICB5OiBfeSxcbiAgICAgIHRleHRBbmNob3I6IF94ID49IGN4ID8gJ3N0YXJ0JyA6ICdlbmQnLFxuICAgICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gICAgfTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdjZW50ZXInKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGN4LFxuICAgICAgeTogY3ksXG4gICAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiAnbWlkZGxlJ1xuICAgIH07XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnY2VudGVyVG9wJykge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBjeCxcbiAgICAgIHk6IGN5LFxuICAgICAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogJ3N0YXJ0J1xuICAgIH07XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnY2VudGVyQm90dG9tJykge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBjeCxcbiAgICAgIHk6IGN5LFxuICAgICAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogJ2VuZCdcbiAgICB9O1xuICB9XG4gIHZhciByID0gKGlubmVyUmFkaXVzICsgb3V0ZXJSYWRpdXMpIC8gMjtcbiAgdmFyIF9wb2xhclRvQ2FydGVzaWFuMiA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByLCBtaWRBbmdsZSksXG4gICAgeCA9IF9wb2xhclRvQ2FydGVzaWFuMi54LFxuICAgIHkgPSBfcG9sYXJUb0NhcnRlc2lhbjIueTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHksXG4gICAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gIH07XG59O1xudmFyIGdldEF0dHJzT2ZDYXJ0ZXNpYW5MYWJlbCA9IGZ1bmN0aW9uIGdldEF0dHJzT2ZDYXJ0ZXNpYW5MYWJlbChwcm9wcykge1xuICB2YXIgdmlld0JveCA9IHByb3BzLnZpZXdCb3gsXG4gICAgcGFyZW50Vmlld0JveCA9IHByb3BzLnBhcmVudFZpZXdCb3gsXG4gICAgb2Zmc2V0ID0gcHJvcHMub2Zmc2V0LFxuICAgIHBvc2l0aW9uID0gcHJvcHMucG9zaXRpb247XG4gIHZhciBfcmVmMyA9IHZpZXdCb3gsXG4gICAgeCA9IF9yZWYzLngsXG4gICAgeSA9IF9yZWYzLnksXG4gICAgd2lkdGggPSBfcmVmMy53aWR0aCxcbiAgICBoZWlnaHQgPSBfcmVmMy5oZWlnaHQ7XG5cbiAgLy8gRGVmaW5lIHZlcnRpY2FsIG9mZnNldHMgYW5kIHBvc2l0aW9uIGludmVydHMgYmFzZWQgb24gdGhlIHZhbHVlIGJlaW5nIHBvc2l0aXZlIG9yIG5lZ2F0aXZlXG4gIHZhciB2ZXJ0aWNhbFNpZ24gPSBoZWlnaHQgPj0gMCA/IDEgOiAtMTtcbiAgdmFyIHZlcnRpY2FsT2Zmc2V0ID0gdmVydGljYWxTaWduICogb2Zmc2V0O1xuICB2YXIgdmVydGljYWxFbmQgPSB2ZXJ0aWNhbFNpZ24gPiAwID8gJ2VuZCcgOiAnc3RhcnQnO1xuICB2YXIgdmVydGljYWxTdGFydCA9IHZlcnRpY2FsU2lnbiA+IDAgPyAnc3RhcnQnIDogJ2VuZCc7XG5cbiAgLy8gRGVmaW5lIGhvcml6b250YWwgb2Zmc2V0cyBhbmQgcG9zaXRpb24gaW52ZXJ0cyBiYXNlZCBvbiB0aGUgdmFsdWUgYmVpbmcgcG9zaXRpdmUgb3IgbmVnYXRpdmVcbiAgdmFyIGhvcml6b250YWxTaWduID0gd2lkdGggPj0gMCA/IDEgOiAtMTtcbiAgdmFyIGhvcml6b250YWxPZmZzZXQgPSBob3Jpem9udGFsU2lnbiAqIG9mZnNldDtcbiAgdmFyIGhvcml6b250YWxFbmQgPSBob3Jpem9udGFsU2lnbiA+IDAgPyAnZW5kJyA6ICdzdGFydCc7XG4gIHZhciBob3Jpem9udGFsU3RhcnQgPSBob3Jpem9udGFsU2lnbiA+IDAgPyAnc3RhcnQnIDogJ2VuZCc7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICB2YXIgYXR0cnMgPSB7XG4gICAgICB4OiB4ICsgd2lkdGggLyAyLFxuICAgICAgeTogeSAtIHZlcnRpY2FsU2lnbiAqIG9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6ICdtaWRkbGUnLFxuICAgICAgdmVydGljYWxBbmNob3I6IHZlcnRpY2FsRW5kXG4gICAgfTtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBhdHRycyksIHBhcmVudFZpZXdCb3ggPyB7XG4gICAgICBoZWlnaHQ6IE1hdGgubWF4KHkgLSBwYXJlbnRWaWV3Qm94LnksIDApLFxuICAgICAgd2lkdGg6IHdpZHRoXG4gICAgfSA6IHt9KTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgdmFyIF9hdHRycyA9IHtcbiAgICAgIHg6IHggKyB3aWR0aCAvIDIsXG4gICAgICB5OiB5ICsgaGVpZ2h0ICsgdmVydGljYWxPZmZzZXQsXG4gICAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiB2ZXJ0aWNhbFN0YXJ0XG4gICAgfTtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfYXR0cnMpLCBwYXJlbnRWaWV3Qm94ID8ge1xuICAgICAgaGVpZ2h0OiBNYXRoLm1heChwYXJlbnRWaWV3Qm94LnkgKyBwYXJlbnRWaWV3Qm94LmhlaWdodCAtICh5ICsgaGVpZ2h0KSwgMCksXG4gICAgICB3aWR0aDogd2lkdGhcbiAgICB9IDoge30pO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgdmFyIF9hdHRyczIgPSB7XG4gICAgICB4OiB4IC0gaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyBoZWlnaHQgLyAyLFxuICAgICAgdGV4dEFuY2hvcjogaG9yaXpvbnRhbEVuZCxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiAnbWlkZGxlJ1xuICAgIH07XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX2F0dHJzMiksIHBhcmVudFZpZXdCb3ggPyB7XG4gICAgICB3aWR0aDogTWF0aC5tYXgoX2F0dHJzMi54IC0gcGFyZW50Vmlld0JveC54LCAwKSxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSA6IHt9KTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdyaWdodCcpIHtcbiAgICB2YXIgX2F0dHJzMyA9IHtcbiAgICAgIHg6IHggKyB3aWR0aCArIGhvcml6b250YWxPZmZzZXQsXG4gICAgICB5OiB5ICsgaGVpZ2h0IC8gMixcbiAgICAgIHRleHRBbmNob3I6IGhvcml6b250YWxTdGFydCxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiAnbWlkZGxlJ1xuICAgIH07XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX2F0dHJzMyksIHBhcmVudFZpZXdCb3ggPyB7XG4gICAgICB3aWR0aDogTWF0aC5tYXgocGFyZW50Vmlld0JveC54ICsgcGFyZW50Vmlld0JveC53aWR0aCAtIF9hdHRyczMueCwgMCksXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH0gOiB7fSk7XG4gIH1cbiAgdmFyIHNpemVBdHRycyA9IHBhcmVudFZpZXdCb3ggPyB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH0gOiB7fTtcbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlTGVmdCcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyBoZWlnaHQgLyAyLFxuICAgICAgdGV4dEFuY2hvcjogaG9yaXpvbnRhbFN0YXJ0LFxuICAgICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gICAgfSwgc2l6ZUF0dHJzKTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdpbnNpZGVSaWdodCcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgd2lkdGggLSBob3Jpem9udGFsT2Zmc2V0LFxuICAgICAgeTogeSArIGhlaWdodCAvIDIsXG4gICAgICB0ZXh0QW5jaG9yOiBob3Jpem9udGFsRW5kLFxuICAgICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gICAgfSwgc2l6ZUF0dHJzKTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdpbnNpZGVUb3AnKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgeDogeCArIHdpZHRoIC8gMixcbiAgICAgIHk6IHkgKyB2ZXJ0aWNhbE9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6ICdtaWRkbGUnLFxuICAgICAgdmVydGljYWxBbmNob3I6IHZlcnRpY2FsU3RhcnRcbiAgICB9LCBzaXplQXR0cnMpO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2luc2lkZUJvdHRvbScpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgd2lkdGggLyAyLFxuICAgICAgeTogeSArIGhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0LFxuICAgICAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogdmVydGljYWxFbmRcbiAgICB9LCBzaXplQXR0cnMpO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2luc2lkZVRvcExlZnQnKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgeDogeCArIGhvcml6b250YWxPZmZzZXQsXG4gICAgICB5OiB5ICsgdmVydGljYWxPZmZzZXQsXG4gICAgICB0ZXh0QW5jaG9yOiBob3Jpem9udGFsU3RhcnQsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogdmVydGljYWxTdGFydFxuICAgIH0sIHNpemVBdHRycyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlVG9wUmlnaHQnKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgeDogeCArIHdpZHRoIC0gaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyB2ZXJ0aWNhbE9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6IGhvcml6b250YWxFbmQsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogdmVydGljYWxTdGFydFxuICAgIH0sIHNpemVBdHRycyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlQm90dG9tTGVmdCcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyBoZWlnaHQgLSB2ZXJ0aWNhbE9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6IGhvcml6b250YWxTdGFydCxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiB2ZXJ0aWNhbEVuZFxuICAgIH0sIHNpemVBdHRycyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlQm90dG9tUmlnaHQnKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgeDogeCArIHdpZHRoIC0gaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyBoZWlnaHQgLSB2ZXJ0aWNhbE9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6IGhvcml6b250YWxFbmQsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogdmVydGljYWxFbmRcbiAgICB9LCBzaXplQXR0cnMpO1xuICB9XG4gIGlmIChpc09iamVjdChwb3NpdGlvbikgJiYgKGlzTnVtYmVyKHBvc2l0aW9uLngpIHx8IGlzUGVyY2VudChwb3NpdGlvbi54KSkgJiYgKGlzTnVtYmVyKHBvc2l0aW9uLnkpIHx8IGlzUGVyY2VudChwb3NpdGlvbi55KSkpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgZ2V0UGVyY2VudFZhbHVlKHBvc2l0aW9uLngsIHdpZHRoKSxcbiAgICAgIHk6IHkgKyBnZXRQZXJjZW50VmFsdWUocG9zaXRpb24ueSwgaGVpZ2h0KSxcbiAgICAgIHRleHRBbmNob3I6ICdlbmQnLFxuICAgICAgdmVydGljYWxBbmNob3I6ICdlbmQnXG4gICAgfSwgc2l6ZUF0dHJzKTtcbiAgfVxuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgeDogeCArIHdpZHRoIC8gMixcbiAgICB5OiB5ICsgaGVpZ2h0IC8gMixcbiAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICB2ZXJ0aWNhbEFuY2hvcjogJ21pZGRsZSdcbiAgfSwgc2l6ZUF0dHJzKTtcbn07XG52YXIgaXNQb2xhciA9IGZ1bmN0aW9uIGlzUG9sYXIodmlld0JveCkge1xuICByZXR1cm4gJ2N4JyBpbiB2aWV3Qm94ICYmIGlzTnVtYmVyKHZpZXdCb3guY3gpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBMYWJlbChfcmVmNCkge1xuICB2YXIgX3JlZjQkb2Zmc2V0ID0gX3JlZjQub2Zmc2V0LFxuICAgIG9mZnNldCA9IF9yZWY0JG9mZnNldCA9PT0gdm9pZCAwID8gNSA6IF9yZWY0JG9mZnNldCxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjQsIF9leGNsdWRlZCk7XG4gIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe1xuICAgIG9mZnNldDogb2Zmc2V0XG4gIH0sIHJlc3RQcm9wcyk7XG4gIHZhciB2aWV3Qm94ID0gcHJvcHMudmlld0JveCxcbiAgICBwb3NpdGlvbiA9IHByb3BzLnBvc2l0aW9uLFxuICAgIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb250ZW50ID0gcHJvcHMuY29udGVudCxcbiAgICBfcHJvcHMkY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgIGNsYXNzTmFtZSA9IF9wcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGNsYXNzTmFtZSxcbiAgICB0ZXh0QnJlYWtBbGwgPSBwcm9wcy50ZXh0QnJlYWtBbGw7XG4gIGlmICghdmlld0JveCB8fCBpc05pbCh2YWx1ZSkgJiYgaXNOaWwoY2hpbGRyZW4pICYmICEgLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KGNvbnRlbnQpICYmICFpc0Z1bmN0aW9uKGNvbnRlbnQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQoY29udGVudCkpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChjb250ZW50LCBwcm9wcyk7XG4gIH1cbiAgdmFyIGxhYmVsO1xuICBpZiAoaXNGdW5jdGlvbihjb250ZW50KSkge1xuICAgIGxhYmVsID0gLyojX19QVVJFX18qL2NyZWF0ZUVsZW1lbnQoY29udGVudCwgcHJvcHMpO1xuICAgIGlmICggLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KGxhYmVsKSkge1xuICAgICAgcmV0dXJuIGxhYmVsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsYWJlbCA9IGdldExhYmVsKHByb3BzKTtcbiAgfVxuICB2YXIgaXNQb2xhckxhYmVsID0gaXNQb2xhcih2aWV3Qm94KTtcbiAgdmFyIGF0dHJzID0gZmlsdGVyUHJvcHMocHJvcHMsIHRydWUpO1xuICBpZiAoaXNQb2xhckxhYmVsICYmIChwb3NpdGlvbiA9PT0gJ2luc2lkZVN0YXJ0JyB8fCBwb3NpdGlvbiA9PT0gJ2luc2lkZUVuZCcgfHwgcG9zaXRpb24gPT09ICdlbmQnKSkge1xuICAgIHJldHVybiByZW5kZXJSYWRpYWxMYWJlbChwcm9wcywgbGFiZWwsIGF0dHJzKTtcbiAgfVxuICB2YXIgcG9zaXRpb25BdHRycyA9IGlzUG9sYXJMYWJlbCA/IGdldEF0dHJzT2ZQb2xhckxhYmVsKHByb3BzKSA6IGdldEF0dHJzT2ZDYXJ0ZXNpYW5MYWJlbChwcm9wcyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1sYWJlbCcsIGNsYXNzTmFtZSlcbiAgfSwgYXR0cnMsIHBvc2l0aW9uQXR0cnMsIHtcbiAgICBicmVha0FsbDogdGV4dEJyZWFrQWxsXG4gIH0pLCBsYWJlbCk7XG59XG5MYWJlbC5kaXNwbGF5TmFtZSA9ICdMYWJlbCc7XG52YXIgcGFyc2VWaWV3Qm94ID0gZnVuY3Rpb24gcGFyc2VWaWV3Qm94KHByb3BzKSB7XG4gIHZhciBjeCA9IHByb3BzLmN4LFxuICAgIGN5ID0gcHJvcHMuY3ksXG4gICAgYW5nbGUgPSBwcm9wcy5hbmdsZSxcbiAgICBzdGFydEFuZ2xlID0gcHJvcHMuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IHByb3BzLmVuZEFuZ2xlLFxuICAgIHIgPSBwcm9wcy5yLFxuICAgIHJhZGl1cyA9IHByb3BzLnJhZGl1cyxcbiAgICBpbm5lclJhZGl1cyA9IHByb3BzLmlubmVyUmFkaXVzLFxuICAgIG91dGVyUmFkaXVzID0gcHJvcHMub3V0ZXJSYWRpdXMsXG4gICAgeCA9IHByb3BzLngsXG4gICAgeSA9IHByb3BzLnksXG4gICAgdG9wID0gcHJvcHMudG9wLFxuICAgIGxlZnQgPSBwcm9wcy5sZWZ0LFxuICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgIGNsb2NrV2lzZSA9IHByb3BzLmNsb2NrV2lzZSxcbiAgICBsYWJlbFZpZXdCb3ggPSBwcm9wcy5sYWJlbFZpZXdCb3g7XG4gIGlmIChsYWJlbFZpZXdCb3gpIHtcbiAgICByZXR1cm4gbGFiZWxWaWV3Qm94O1xuICB9XG4gIGlmIChpc051bWJlcih3aWR0aCkgJiYgaXNOdW1iZXIoaGVpZ2h0KSkge1xuICAgIGlmIChpc051bWJlcih4KSAmJiBpc051bWJlcih5KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGlzTnVtYmVyKHRvcCkgJiYgaXNOdW1iZXIobGVmdCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHRvcCxcbiAgICAgICAgeTogbGVmdCxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzTnVtYmVyKHgpICYmIGlzTnVtYmVyKHkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5LFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuICB9XG4gIGlmIChpc051bWJlcihjeCkgJiYgaXNOdW1iZXIoY3kpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN4OiBjeCxcbiAgICAgIGN5OiBjeSxcbiAgICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUgfHwgYW5nbGUgfHwgMCxcbiAgICAgIGVuZEFuZ2xlOiBlbmRBbmdsZSB8fCBhbmdsZSB8fCAwLFxuICAgICAgaW5uZXJSYWRpdXM6IGlubmVyUmFkaXVzIHx8IDAsXG4gICAgICBvdXRlclJhZGl1czogb3V0ZXJSYWRpdXMgfHwgcmFkaXVzIHx8IHIgfHwgMCxcbiAgICAgIGNsb2NrV2lzZTogY2xvY2tXaXNlXG4gICAgfTtcbiAgfVxuICBpZiAocHJvcHMudmlld0JveCkge1xuICAgIHJldHVybiBwcm9wcy52aWV3Qm94O1xuICB9XG4gIHJldHVybiB7fTtcbn07XG52YXIgcGFyc2VMYWJlbCA9IGZ1bmN0aW9uIHBhcnNlTGFiZWwobGFiZWwsIHZpZXdCb3gpIHtcbiAgaWYgKCFsYWJlbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChsYWJlbCA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbCwge1xuICAgICAga2V5OiBcImxhYmVsLWltcGxpY2l0XCIsXG4gICAgICB2aWV3Qm94OiB2aWV3Qm94XG4gICAgfSk7XG4gIH1cbiAgaWYgKGlzTnVtT3JTdHIobGFiZWwpKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExhYmVsLCB7XG4gICAgICBrZXk6IFwibGFiZWwtaW1wbGljaXRcIixcbiAgICAgIHZpZXdCb3g6IHZpZXdCb3gsXG4gICAgICB2YWx1ZTogbGFiZWxcbiAgICB9KTtcbiAgfVxuICBpZiAoIC8qI19fUFVSRV9fKi9pc1ZhbGlkRWxlbWVudChsYWJlbCkpIHtcbiAgICBpZiAobGFiZWwudHlwZSA9PT0gTGFiZWwpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGxhYmVsLCB7XG4gICAgICAgIGtleTogJ2xhYmVsLWltcGxpY2l0JyxcbiAgICAgICAgdmlld0JveDogdmlld0JveFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbCwge1xuICAgICAga2V5OiBcImxhYmVsLWltcGxpY2l0XCIsXG4gICAgICBjb250ZW50OiBsYWJlbCxcbiAgICAgIHZpZXdCb3g6IHZpZXdCb3hcbiAgICB9KTtcbiAgfVxuICBpZiAoaXNGdW5jdGlvbihsYWJlbCkpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGFiZWwsIHtcbiAgICAgIGtleTogXCJsYWJlbC1pbXBsaWNpdFwiLFxuICAgICAgY29udGVudDogbGFiZWwsXG4gICAgICB2aWV3Qm94OiB2aWV3Qm94XG4gICAgfSk7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KGxhYmVsKSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbCwgX2V4dGVuZHMoe1xuICAgICAgdmlld0JveDogdmlld0JveFxuICAgIH0sIGxhYmVsLCB7XG4gICAgICBrZXk6IFwibGFiZWwtaW1wbGljaXRcIlxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG52YXIgcmVuZGVyQ2FsbEJ5UGFyZW50ID0gZnVuY3Rpb24gcmVuZGVyQ2FsbEJ5UGFyZW50KHBhcmVudFByb3BzLCB2aWV3Qm94KSB7XG4gIHZhciBjaGVja1Byb3BzTGFiZWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHRydWU7XG4gIGlmICghcGFyZW50UHJvcHMgfHwgIXBhcmVudFByb3BzLmNoaWxkcmVuICYmIGNoZWNrUHJvcHNMYWJlbCAmJiAhcGFyZW50UHJvcHMubGFiZWwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgY2hpbGRyZW4gPSBwYXJlbnRQcm9wcy5jaGlsZHJlbjtcbiAgdmFyIHBhcmVudFZpZXdCb3ggPSBwYXJzZVZpZXdCb3gocGFyZW50UHJvcHMpO1xuICB2YXIgZXhwbGljaXRDaGlsZHJlbiA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIExhYmVsKS5tYXAoZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICB2aWV3Qm94OiB2aWV3Qm94IHx8IHBhcmVudFZpZXdCb3gsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICBrZXk6IFwibGFiZWwtXCIuY29uY2F0KGluZGV4KVxuICAgIH0pO1xuICB9KTtcbiAgaWYgKCFjaGVja1Byb3BzTGFiZWwpIHtcbiAgICByZXR1cm4gZXhwbGljaXRDaGlsZHJlbjtcbiAgfVxuICB2YXIgaW1wbGljaXRMYWJlbCA9IHBhcnNlTGFiZWwocGFyZW50UHJvcHMubGFiZWwsIHZpZXdCb3ggfHwgcGFyZW50Vmlld0JveCk7XG4gIHJldHVybiBbaW1wbGljaXRMYWJlbF0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShleHBsaWNpdENoaWxkcmVuKSk7XG59O1xuTGFiZWwucGFyc2VWaWV3Qm94ID0gcGFyc2VWaWV3Qm94O1xuTGFiZWwucmVuZGVyQ2FsbEJ5UGFyZW50ID0gcmVuZGVyQ2FsbEJ5UGFyZW50OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXhjbHVkZWQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJpc0FycmF5IiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwia2V5IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhc093blByb3BlcnR5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJSZWFjdCIsImNsb25lRWxlbWVudCIsImlzVmFsaWRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImlzTmlsIiwiaXNGdW5jdGlvbiIsImlzT2JqZWN0IiwiY2xzeCIsIlRleHQiLCJmaW5kQWxsQnlUeXBlIiwiZmlsdGVyUHJvcHMiLCJpc051bU9yU3RyIiwiaXNOdW1iZXIiLCJpc1BlcmNlbnQiLCJnZXRQZXJjZW50VmFsdWUiLCJ1bmlxdWVJZCIsIm1hdGhTaWduIiwicG9sYXJUb0NhcnRlc2lhbiIsImdldExhYmVsIiwicHJvcHMiLCJmb3JtYXR0ZXIiLCJsYWJlbCIsImNoaWxkcmVuIiwiZ2V0RGVsdGFBbmdsZSIsInN0YXJ0QW5nbGUiLCJlbmRBbmdsZSIsInNpZ24iLCJkZWx0YUFuZ2xlIiwiTWF0aCIsIm1pbiIsImFicyIsInJlbmRlclJhZGlhbExhYmVsIiwibGFiZWxQcm9wcyIsImF0dHJzIiwicG9zaXRpb24iLCJ2aWV3Qm94Iiwib2Zmc2V0IiwiY2xhc3NOYW1lIiwiX3JlZiIsImN4IiwiY3kiLCJpbm5lclJhZGl1cyIsIm91dGVyUmFkaXVzIiwiY2xvY2tXaXNlIiwicmFkaXVzIiwibGFiZWxBbmdsZSIsImRpcmVjdGlvbiIsInN0YXJ0UG9pbnQiLCJlbmRQb2ludCIsInBhdGgiLCJjb25jYXQiLCJ4IiwieSIsImlkIiwiZG9taW5hbnRCYXNlbGluZSIsImQiLCJ4bGlua0hyZWYiLCJnZXRBdHRyc09mUG9sYXJMYWJlbCIsIl9yZWYyIiwibWlkQW5nbGUiLCJfcG9sYXJUb0NhcnRlc2lhbiIsIl94IiwiX3kiLCJ0ZXh0QW5jaG9yIiwidmVydGljYWxBbmNob3IiLCJfcG9sYXJUb0NhcnRlc2lhbjIiLCJnZXRBdHRyc09mQ2FydGVzaWFuTGFiZWwiLCJwYXJlbnRWaWV3Qm94IiwiX3JlZjMiLCJ3aWR0aCIsImhlaWdodCIsInZlcnRpY2FsU2lnbiIsInZlcnRpY2FsT2Zmc2V0IiwidmVydGljYWxFbmQiLCJ2ZXJ0aWNhbFN0YXJ0IiwiaG9yaXpvbnRhbFNpZ24iLCJob3Jpem9udGFsT2Zmc2V0IiwiaG9yaXpvbnRhbEVuZCIsImhvcml6b250YWxTdGFydCIsIm1heCIsIl9hdHRycyIsIl9hdHRyczIiLCJfYXR0cnMzIiwic2l6ZUF0dHJzIiwiaXNQb2xhciIsIkxhYmVsIiwiX3JlZjQiLCJfcmVmNCRvZmZzZXQiLCJyZXN0UHJvcHMiLCJjb250ZW50IiwiX3Byb3BzJGNsYXNzTmFtZSIsInRleHRCcmVha0FsbCIsImlzUG9sYXJMYWJlbCIsInBvc2l0aW9uQXR0cnMiLCJicmVha0FsbCIsImRpc3BsYXlOYW1lIiwicGFyc2VWaWV3Qm94IiwiYW5nbGUiLCJ0b3AiLCJsZWZ0IiwibGFiZWxWaWV3Qm94IiwicGFyc2VMYWJlbCIsInR5cGUiLCJyZW5kZXJDYWxsQnlQYXJlbnQiLCJwYXJlbnRQcm9wcyIsImNoZWNrUHJvcHNMYWJlbCIsInVuZGVmaW5lZCIsImV4cGxpY2l0Q2hpbGRyZW4iLCJtYXAiLCJjaGlsZCIsImluZGV4IiwiaW1wbGljaXRMYWJlbCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Label.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/LabelList.js":
/*!**********************************************************!*\
!*** ./node_modules/recharts/es6/component/LabelList.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LabelList: () => (/* binding */ LabelList)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isObject */ \"(ssr)/./node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_last__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/last */ \"(ssr)/./node_modules/lodash/last.js\");\n/* harmony import */ var lodash_last__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_last__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Label__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nvar _excluded = [\n \"valueAccessor\"\n], _excluded2 = [\n \"data\",\n \"dataKey\",\n \"clockWise\",\n \"id\",\n \"textBreakAll\"\n];\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\n\n\n\n\n\n\n\n\nvar defaultAccessor = function defaultAccessor(entry) {\n return Array.isArray(entry.value) ? lodash_last__WEBPACK_IMPORTED_MODULE_4___default()(entry.value) : entry.value;\n};\nfunction LabelList(_ref) {\n var _ref$valueAccessor = _ref.valueAccessor, valueAccessor = _ref$valueAccessor === void 0 ? defaultAccessor : _ref$valueAccessor, restProps = _objectWithoutProperties(_ref, _excluded);\n var data = restProps.data, dataKey = restProps.dataKey, clockWise = restProps.clockWise, id = restProps.id, textBreakAll = restProps.textBreakAll, others = _objectWithoutProperties(restProps, _excluded2);\n if (!data || !data.length) {\n return null;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_5__.Layer, {\n className: \"recharts-label-list\"\n }, data.map(function(entry, index) {\n var value = lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(dataKey) ? valueAccessor(entry, index) : (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_6__.getValueByDataKey)(entry && entry.payload, dataKey);\n var idProps = lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Label__WEBPACK_IMPORTED_MODULE_7__.Label, _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.filterProps)(entry, true), others, idProps, {\n parentViewBox: entry.parentViewBox,\n value: value,\n textBreakAll: textBreakAll,\n viewBox: _Label__WEBPACK_IMPORTED_MODULE_7__.Label.parseViewBox(lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n ,\n index: index\n }));\n }));\n}\nLabelList.displayName = 'LabelList';\nfunction parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(label) || lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(label)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n if (lodash_isObject__WEBPACK_IMPORTED_MODULE_2___default()(label)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n return null;\n}\nfunction renderCallByParent(parentProps, data) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var explicitChildren = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.findAllByType)(children, LabelList).map(function(child, index) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n data: data,\n // eslint-disable-next-line react/no-array-index-key\n key: \"labelList-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [\n implicitLabelList\n ].concat(_toConsumableArray(explicitChildren));\n}\nLabelList.renderCallByParent = renderCallByParent;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9MYWJlbExpc3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULElBQUlLLFlBQVk7SUFBQztDQUFnQixFQUMvQkMsYUFBYTtJQUFDO0lBQVE7SUFBVztJQUFhO0lBQU07Q0FBZTtBQUNyRSxTQUFTQyxtQkFBbUJDLEdBQUc7SUFBSSxPQUFPQyxtQkFBbUJELFFBQVFFLGlCQUFpQkYsUUFBUUcsNEJBQTRCSCxRQUFRSTtBQUFzQjtBQUN4SixTQUFTQTtJQUF1QixNQUFNLElBQUlDLFVBQVU7QUFBeUk7QUFDN0wsU0FBU0YsNEJBQTRCWCxDQUFDLEVBQUVjLE1BQU07SUFBSSxJQUFJLENBQUNkLEdBQUc7SUFBUSxJQUFJLE9BQU9BLE1BQU0sVUFBVSxPQUFPZSxrQkFBa0JmLEdBQUdjO0lBQVMsSUFBSUUsSUFBSUMsT0FBT2IsU0FBUyxDQUFDYyxRQUFRLENBQUNDLElBQUksQ0FBQ25CLEdBQUdvQixLQUFLLENBQUMsR0FBRyxDQUFDO0lBQUksSUFBSUosTUFBTSxZQUFZaEIsRUFBRUcsV0FBVyxFQUFFYSxJQUFJaEIsRUFBRUcsV0FBVyxDQUFDa0IsSUFBSTtJQUFFLElBQUlMLE1BQU0sU0FBU0EsTUFBTSxPQUFPLE9BQU9NLE1BQU1DLElBQUksQ0FBQ3ZCO0lBQUksSUFBSWdCLE1BQU0sZUFBZSwyQ0FBMkNRLElBQUksQ0FB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L1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9MYWJlbExpc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxudmFyIF9leGNsdWRlZCA9IFtcInZhbHVlQWNjZXNzb3JcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJkYXRhXCIsIFwiZGF0YUtleVwiLCBcImNsb2NrV2lzZVwiLCBcImlkXCIsIFwidGV4dEJyZWFrQWxsXCJdO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkoYXJyKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgUmVhY3QsIHsgY2xvbmVFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBsYXN0IGZyb20gJ2xvZGFzaC9sYXN0JztcbmltcG9ydCB7IExhYmVsIH0gZnJvbSAnLi9MYWJlbCc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBmaW5kQWxsQnlUeXBlLCBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBnZXRWYWx1ZUJ5RGF0YUtleSB9IGZyb20gJy4uL3V0aWwvQ2hhcnRVdGlscyc7XG52YXIgZGVmYXVsdEFjY2Vzc29yID0gZnVuY3Rpb24gZGVmYXVsdEFjY2Vzc29yKGVudHJ5KSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGVudHJ5LnZhbHVlKSA/IGxhc3QoZW50cnkudmFsdWUpIDogZW50cnkudmFsdWU7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIExhYmVsTGlzdChfcmVmKSB7XG4gIHZhciBfcmVmJHZhbHVlQWNjZXNzb3IgPSBfcmVmLnZhbHVlQWNjZXNzb3IsXG4gICAgdmFsdWVBY2Nlc3NvciA9IF9yZWYkdmFsdWVBY2Nlc3NvciA9PT0gdm9pZCAwID8gZGVmYXVsdEFjY2Vzc29yIDogX3JlZiR2YWx1ZUFjY2Vzc29yLFxuICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuICB2YXIgZGF0YSA9IHJlc3RQcm9wcy5kYXRhLFxuICAgIGRhdGFLZXkgPSByZXN0UHJvcHMuZGF0YUtleSxcbiAgICBjbG9ja1dpc2UgPSByZXN0UHJvcHMuY2xvY2tXaXNlLFxuICAgIGlkID0gcmVzdFByb3BzLmlkLFxuICAgIHRleHRCcmVha0FsbCA9IHJlc3RQcm9wcy50ZXh0QnJlYWtBbGwsXG4gICAgb3RoZXJzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHJlc3RQcm9wcywgX2V4Y2x1ZGVkMik7XG4gIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtbGFiZWwtbGlzdFwiXG4gIH0sIGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICB2YXIgdmFsdWUgPSBpc05pbChkYXRhS2V5KSA/IHZhbHVlQWNjZXNzb3IoZW50cnksIGluZGV4KSA6IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5ICYmIGVudHJ5LnBheWxvYWQsIGRhdGFLZXkpO1xuICAgIHZhciBpZFByb3BzID0gaXNOaWwoaWQpID8ge30gOiB7XG4gICAgICBpZDogXCJcIi5jb25jYXQoaWQsIFwiLVwiKS5jb25jYXQoaW5kZXgpXG4gICAgfTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGFiZWwsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhlbnRyeSwgdHJ1ZSksIG90aGVycywgaWRQcm9wcywge1xuICAgICAgcGFyZW50Vmlld0JveDogZW50cnkucGFyZW50Vmlld0JveCxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHRleHRCcmVha0FsbDogdGV4dEJyZWFrQWxsLFxuICAgICAgdmlld0JveDogTGFiZWwucGFyc2VWaWV3Qm94KGlzTmlsKGNsb2NrV2lzZSkgPyBlbnRyeSA6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICBjbG9ja1dpc2U6IGNsb2NrV2lzZVxuICAgICAgfSkpLFxuICAgICAga2V5OiBcImxhYmVsLVwiLmNvbmNhdChpbmRleCkgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICxcbiAgICAgIGluZGV4OiBpbmRleFxuICAgIH0pKTtcbiAgfSkpO1xufVxuTGFiZWxMaXN0LmRpc3BsYXlOYW1lID0gJ0xhYmVsTGlzdCc7XG5mdW5jdGlvbiBwYXJzZUxhYmVsTGlzdChsYWJlbCwgZGF0YSkge1xuICBpZiAoIWxhYmVsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGxhYmVsID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExhYmVsTGlzdCwge1xuICAgICAga2V5OiBcImxhYmVsTGlzdC1pbXBsaWNpdFwiLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pO1xuICB9XG4gIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGxhYmVsKSB8fCBpc0Z1bmN0aW9uKGxhYmVsKSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbExpc3QsIHtcbiAgICAgIGtleTogXCJsYWJlbExpc3QtaW1wbGljaXRcIixcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICBjb250ZW50OiBsYWJlbFxuICAgIH0pO1xuICB9XG4gIGlmIChpc09iamVjdChsYWJlbCkpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGFiZWxMaXN0LCBfZXh0ZW5kcyh7XG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSwgbGFiZWwsIHtcbiAgICAgIGtleTogXCJsYWJlbExpc3QtaW1wbGljaXRcIlxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHJlbmRlckNhbGxCeVBhcmVudChwYXJlbnRQcm9wcywgZGF0YSkge1xuICB2YXIgY2hlY2tQcm9wc0xhYmVsID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB0cnVlO1xuICBpZiAoIXBhcmVudFByb3BzIHx8ICFwYXJlbnRQcm9wcy5jaGlsZHJlbiAmJiBjaGVja1Byb3BzTGFiZWwgJiYgIXBhcmVudFByb3BzLmxhYmVsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGNoaWxkcmVuID0gcGFyZW50UHJvcHMuY2hpbGRyZW47XG4gIHZhciBleHBsaWNpdENoaWxkcmVuID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgTGFiZWxMaXN0KS5tYXAoZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAga2V5OiBcImxhYmVsTGlzdC1cIi5jb25jYXQoaW5kZXgpXG4gICAgfSk7XG4gIH0pO1xuICBpZiAoIWNoZWNrUHJvcHNMYWJlbCkge1xuICAgIHJldHVybiBleHBsaWNpdENoaWxkcmVuO1xuICB9XG4gIHZhciBpbXBsaWNpdExhYmVsTGlzdCA9IHBhcnNlTGFiZWxMaXN0KHBhcmVudFByb3BzLmxhYmVsLCBkYXRhKTtcbiAgcmV0dXJuIFtpbXBsaWNpdExhYmVsTGlzdF0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShleHBsaWNpdENoaWxkcmVuKSk7XG59XG5MYWJlbExpc3QucmVuZGVyQ2FsbEJ5UGFyZW50ID0gcmVuZGVyQ2FsbEJ5UGFyZW50OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsIk9iamVjdCIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpdGVyIiwiaXNBcnJheSIsImxlbiIsImxlbmd0aCIsImkiLCJhcnIyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiYXJndW1lbnRzIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJhcHBseSIsIm93bktleXMiLCJlIiwiciIsInQiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiUmVhY3QiLCJjbG9uZUVsZW1lbnQiLCJpc05pbCIsImlzT2JqZWN0IiwiaXNGdW5jdGlvbiIsImxhc3QiLCJMYWJlbCIsIkxheWVyIiwiZmluZEFsbEJ5VHlwZSIsImZpbHRlclByb3BzIiwiZ2V0VmFsdWVCeURhdGFLZXkiLCJkZWZhdWx0QWNjZXNzb3IiLCJlbnRyeSIsIkxhYmVsTGlzdCIsIl9yZWYiLCJfcmVmJHZhbHVlQWNjZXNzb3IiLCJ2YWx1ZUFjY2Vzc29yIiwicmVzdFByb3BzIiwiZGF0YSIsImRhdGFLZXkiLCJjbG9ja1dpc2UiLCJpZCIsInRleHRCcmVha0FsbCIsIm90aGVycyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJtYXAiLCJpbmRleCIsInBheWxvYWQiLCJpZFByb3BzIiwiY29uY2F0IiwicGFyZW50Vmlld0JveCIsInZpZXdCb3giLCJwYXJzZVZpZXdCb3giLCJkaXNwbGF5TmFtZSIsInBhcnNlTGFiZWxMaXN0IiwibGFiZWwiLCJpc1ZhbGlkRWxlbWVudCIsImNvbnRlbnQiLCJyZW5kZXJDYWxsQnlQYXJlbnQiLCJwYXJlbnRQcm9wcyIsImNoZWNrUHJvcHNMYWJlbCIsInVuZGVmaW5lZCIsImNoaWxkcmVuIiwiZXhwbGljaXRDaGlsZHJlbiIsImNoaWxkIiwiaW1wbGljaXRMYWJlbExpc3QiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/LabelList.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Legend.js":
/*!*******************************************************!*\
!*** ./node_modules/recharts/es6/component/Legend.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Legend: () => (/* binding */ Legend)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _DefaultLegendContent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DefaultLegendContent */ \"(ssr)/./node_modules/recharts/es6/component/DefaultLegendContent.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_payload_getUniqPayload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/payload/getUniqPayload */ \"(ssr)/./node_modules/recharts/es6/util/payload/getUniqPayload.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nvar _excluded = [\n \"ref\"\n];\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n/**\n * @fileOverview Legend\n */ \n\n\n\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\nfunction renderContent(content, props) {\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(content)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(content, props);\n }\n var ref = props.ref, otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_DefaultLegendContent__WEBPACK_IMPORTED_MODULE_1__.DefaultLegendContent, otherProps);\n}\nvar EPS = 1;\nvar Legend = /*#__PURE__*/ function(_PureComponent) {\n function Legend() {\n var _this;\n _classCallCheck(this, Legend);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Legend, [].concat(args));\n _defineProperty(_this, \"lastBoundingBox\", {\n width: -1,\n height: -1\n });\n return _this;\n }\n _inherits(Legend, _PureComponent);\n return _createClass(Legend, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n },\n {\n key: \"getBBox\",\n value: function getBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n box.height = this.wrapperNode.offsetHeight;\n box.width = this.wrapperNode.offsetWidth;\n return box;\n }\n return null;\n }\n },\n {\n key: \"updateBBox\",\n value: function updateBBox() {\n var onBBoxUpdate = this.props.onBBoxUpdate;\n var box = this.getBBox();\n if (box) {\n if (Math.abs(box.width - this.lastBoundingBox.width) > EPS || Math.abs(box.height - this.lastBoundingBox.height) > EPS) {\n this.lastBoundingBox.width = box.width;\n this.lastBoundingBox.height = box.height;\n if (onBBoxUpdate) {\n onBBoxUpdate(box);\n }\n }\n } else if (this.lastBoundingBox.width !== -1 || this.lastBoundingBox.height !== -1) {\n this.lastBoundingBox.width = -1;\n this.lastBoundingBox.height = -1;\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n }\n }\n },\n {\n key: \"getBBoxSnapshot\",\n value: function getBBoxSnapshot() {\n if (this.lastBoundingBox.width >= 0 && this.lastBoundingBox.height >= 0) {\n return _objectSpread({}, this.lastBoundingBox);\n }\n return {\n width: 0,\n height: 0\n };\n }\n },\n {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props, layout = _this$props.layout, align = _this$props.align, verticalAlign = _this$props.verticalAlign, margin = _this$props.margin, chartWidth = _this$props.chartWidth, chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n var box = this.getBBoxSnapshot();\n hPos = {\n left: ((chartWidth || 0) - box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n var _box = this.getBBoxSnapshot();\n vPos = {\n top: ((chartHeight || 0) - _box.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n return _objectSpread(_objectSpread({}, hPos), vPos);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props2 = this.props, content = _this$props2.content, width = _this$props2.width, height = _this$props2.height, wrapperStyle = _this$props2.wrapperStyle, payloadUniqBy = _this$props2.payloadUniqBy, payload = _this$props2.payload;\n var outerStyle = _objectSpread(_objectSpread({\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto'\n }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: (0,_util_payload_getUniqPayload__WEBPACK_IMPORTED_MODULE_2__.getUniqPayload)(payload, payloadUniqBy, defaultUniqBy)\n })));\n }\n }\n ], [\n {\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var _this$defaultProps$it = _objectSpread(_objectSpread({}, this.defaultProps), item.props), layout = _this$defaultProps$it.layout;\n if (layout === 'vertical' && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_3__.isNumber)(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n if (layout === 'horizontal') {\n return {\n width: item.props.width || chartWidth\n };\n }\n return null;\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(Legend, \"displayName\", 'Legend');\n_defineProperty(Legend, \"defaultProps\", {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9MZWdlbmQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULElBQUlLLFlBQVk7SUFBQztDQUFNO0FBQ3ZCLFNBQVNDLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlDLE9BQU9DLElBQUksQ0FBQ0o7SUFBSSxJQUFJRyxPQUFPRSxxQkFBcUIsRUFBRTtRQUFFLElBQUlaLElBQUlVLE9BQU9FLHFCQUFxQixDQUFDTDtRQUFJQyxLQUFNUixDQUFBQSxJQUFJQSxFQUFFYSxNQUFNLENBQUMsU0FBVUwsQ0FBQztZQUFJLE9BQU9FLE9BQU9JLHdCQUF3QixDQUFDUCxHQUFHQyxHQUFHTyxVQUFVO1FBQUUsRUFBQyxHQUFJTixFQUFFTyxJQUFJLENBQUNDLEtBQUssQ0FBQ1IsR0FBR1Q7SUFBSTtJQUFFLE9BQU9TO0FBQUc7QUFDOVAsU0FBU1MsY0FBY1gsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVyxVQUFVQyxNQUFNLEVBQUVaLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFVLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHVyxTQUFTLENBQUNYLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUUksT0FBT0QsSUFBSSxDQUFDLEdBQUdZLE9BQU8sQ0FBQyxTQUFVYixDQUFDO1lBQUljLGdCQUFnQmYs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VUFBVTtJQUNWNUIsUUFBUTtJQUNSQyxPQUFPO0lBQ1BDLGVBQWU7QUFDakIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9MZWdlbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxudmFyIF9leGNsdWRlZCA9IFtcInJlZlwiXTtcbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBMZWdlbmRcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBEZWZhdWx0TGVnZW5kQ29udGVudCB9IGZyb20gJy4vRGVmYXVsdExlZ2VuZENvbnRlbnQnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBnZXRVbmlxUGF5bG9hZCB9IGZyb20gJy4uL3V0aWwvcGF5bG9hZC9nZXRVbmlxUGF5bG9hZCc7XG5mdW5jdGlvbiBkZWZhdWx0VW5pcUJ5KGVudHJ5KSB7XG4gIHJldHVybiBlbnRyeS52YWx1ZTtcbn1cbmZ1bmN0aW9uIHJlbmRlckNvbnRlbnQoY29udGVudCwgcHJvcHMpIHtcbiAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY29udGVudCkpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjb250ZW50LCBwcm9wcyk7XG4gIH1cbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KGNvbnRlbnQsIHByb3BzKTtcbiAgfVxuICB2YXIgcmVmID0gcHJvcHMucmVmLFxuICAgIG90aGVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChEZWZhdWx0TGVnZW5kQ29udGVudCwgb3RoZXJQcm9wcyk7XG59XG52YXIgRVBTID0gMTtcbmV4cG9ydCB2YXIgTGVnZW5kID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUHVyZUNvbXBvbmVudCkge1xuICBmdW5jdGlvbiBMZWdlbmQoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMZWdlbmQpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfY2FsbFN1cGVyKHRoaXMsIExlZ2VuZCwgW10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwibGFzdEJvdW5kaW5nQm94XCIsIHtcbiAgICAgIHdpZHRoOiAtMSxcbiAgICAgIGhlaWdodDogLTFcbiAgICB9KTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2luaGVyaXRzKExlZ2VuZCwgX1B1cmVDb21wb25lbnQpO1xuICByZXR1cm4gX2NyZWF0ZUNsYXNzKExlZ2VuZCwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLnVwZGF0ZUJCb3goKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIHRoaXMudXBkYXRlQkJveCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRCQm94XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEJCb3goKSB7XG4gICAgICBpZiAodGhpcy53cmFwcGVyTm9kZSAmJiB0aGlzLndyYXBwZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgICAgICB2YXIgYm94ID0gdGhpcy53cmFwcGVyTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgYm94LmhlaWdodCA9IHRoaXMud3JhcHBlck5vZGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBib3gud2lkdGggPSB0aGlzLndyYXBwZXJOb2RlLm9mZnNldFdpZHRoO1xuICAgICAgICByZXR1cm4gYm94O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZUJCb3hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlQkJveCgpIHtcbiAgICAgIHZhciBvbkJCb3hVcGRhdGUgPSB0aGlzLnByb3BzLm9uQkJveFVwZGF0ZTtcbiAgICAgIHZhciBib3ggPSB0aGlzLmdldEJCb3goKTtcbiAgICAgIGlmIChib3gpIHtcbiAgICAgICAgaWYgKE1hdGguYWJzKGJveC53aWR0aCAtIHRoaXMubGFzdEJvdW5kaW5nQm94LndpZHRoKSA+IEVQUyB8fCBNYXRoLmFicyhib3guaGVpZ2h0IC0gdGhpcy5sYXN0Qm91bmRpbmdCb3guaGVpZ2h0KSA+IEVQUykge1xuICAgICAgICAgIHRoaXMubGFzdEJvdW5kaW5nQm94LndpZHRoID0gYm94LndpZHRoO1xuICAgICAgICAgIHRoaXMubGFzdEJvdW5kaW5nQm94LmhlaWdodCA9IGJveC5oZWlnaHQ7XG4gICAgICAgICAgaWYgKG9uQkJveFVwZGF0ZSkge1xuICAgICAgICAgICAgb25CQm94VXBkYXRlKGJveCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubGFzdEJvdW5kaW5nQm94LndpZHRoICE9PSAtMSB8fCB0aGlzLmxhc3RCb3VuZGluZ0JveC5oZWlnaHQgIT09IC0xKSB7XG4gICAgICAgIHRoaXMubGFzdEJvdW5kaW5nQm94LndpZHRoID0gLTE7XG4gICAgICAgIHRoaXMubGFzdEJvdW5kaW5nQm94LmhlaWdodCA9IC0xO1xuICAgICAgICBpZiAob25CQm94VXBkYXRlKSB7XG4gICAgICAgICAgb25CQm94VXBkYXRlKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEJCb3hTbmFwc2hvdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRCQm94U25hcHNob3QoKSB7XG4gICAgICBpZiAodGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGggPj0gMCAmJiB0aGlzLmxhc3RCb3VuZGluZ0JveC5oZWlnaHQgPj0gMCkge1xuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7fSwgdGhpcy5sYXN0Qm91bmRpbmdCb3gpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMFxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RGVmYXVsdFBvc2l0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlZmF1bHRQb3NpdGlvbihzdHlsZSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgbGF5b3V0ID0gX3RoaXMkcHJvcHMubGF5b3V0LFxuICAgICAgICBhbGlnbiA9IF90aGlzJHByb3BzLmFsaWduLFxuICAgICAgICB2ZXJ0aWNhbEFsaWduID0gX3RoaXMkcHJvcHMudmVydGljYWxBbGlnbixcbiAgICAgICAgbWFyZ2luID0gX3RoaXMkcHJvcHMubWFyZ2luLFxuICAgICAgICBjaGFydFdpZHRoID0gX3RoaXMkcHJvcHMuY2hhcnRXaWR0aCxcbiAgICAgICAgY2hhcnRIZWlnaHQgPSBfdGhpcyRwcm9wcy5jaGFydEhlaWdodDtcbiAgICAgIHZhciBoUG9zLCB2UG9zO1xuICAgICAgaWYgKCFzdHlsZSB8fCAoc3R5bGUubGVmdCA9PT0gdW5kZWZpbmVkIHx8IHN0eWxlLmxlZnQgPT09IG51bGwpICYmIChzdHlsZS5yaWdodCA9PT0gdW5kZWZpbmVkIHx8IHN0eWxlLnJpZ2h0ID09PSBudWxsKSkge1xuICAgICAgICBpZiAoYWxpZ24gPT09ICdjZW50ZXInICYmIGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgIHZhciBib3ggPSB0aGlzLmdldEJCb3hTbmFwc2hvdCgpO1xuICAgICAgICAgIGhQb3MgPSB7XG4gICAgICAgICAgICBsZWZ0OiAoKGNoYXJ0V2lkdGggfHwgMCkgLSBib3gud2lkdGgpIC8gMlxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaFBvcyA9IGFsaWduID09PSAncmlnaHQnID8ge1xuICAgICAgICAgICAgcmlnaHQ6IG1hcmdpbiAmJiBtYXJnaW4ucmlnaHQgfHwgMFxuICAgICAgICAgIH0gOiB7XG4gICAgICAgICAgICBsZWZ0OiBtYXJnaW4gJiYgbWFyZ2luLmxlZnQgfHwgMFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghc3R5bGUgfHwgKHN0eWxlLnRvcCA9PT0gdW5kZWZpbmVkIHx8IHN0eWxlLnRvcCA9PT0gbnVsbCkgJiYgKHN0eWxlLmJvdHRvbSA9PT0gdW5kZWZpbmVkIHx8IHN0eWxlLmJvdHRvbSA9PT0gbnVsbCkpIHtcbiAgICAgICAgaWYgKHZlcnRpY2FsQWxpZ24gPT09ICdtaWRkbGUnKSB7XG4gICAgICAgICAgdmFyIF9ib3ggPSB0aGlzLmdldEJCb3hTbmFwc2hvdCgpO1xuICAgICAgICAgIHZQb3MgPSB7XG4gICAgICAgICAgICB0b3A6ICgoY2hhcnRIZWlnaHQgfHwgMCkgLSBfYm94LmhlaWdodCkgLyAyXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2UG9zID0gdmVydGljYWxBbGlnbiA9PT0gJ2JvdHRvbScgPyB7XG4gICAgICAgICAgICBib3R0b206IG1hcmdpbiAmJiBtYXJnaW4uYm90dG9tIHx8IDBcbiAgICAgICAgICB9IDoge1xuICAgICAgICAgICAgdG9wOiBtYXJnaW4gJiYgbWFyZ2luLnRvcCB8fCAwXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaFBvcyksIHZQb3MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY29udGVudCA9IF90aGlzJHByb3BzMi5jb250ZW50LFxuICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzMi53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHMyLmhlaWdodCxcbiAgICAgICAgd3JhcHBlclN0eWxlID0gX3RoaXMkcHJvcHMyLndyYXBwZXJTdHlsZSxcbiAgICAgICAgcGF5bG9hZFVuaXFCeSA9IF90aGlzJHByb3BzMi5wYXlsb2FkVW5pcUJ5LFxuICAgICAgICBwYXlsb2FkID0gX3RoaXMkcHJvcHMyLnBheWxvYWQ7XG4gICAgICB2YXIgb3V0ZXJTdHlsZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB3aWR0aDogd2lkdGggfHwgJ2F1dG8nLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCB8fCAnYXV0bydcbiAgICAgIH0sIHRoaXMuZ2V0RGVmYXVsdFBvc2l0aW9uKHdyYXBwZXJTdHlsZSkpLCB3cmFwcGVyU3R5bGUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWxlZ2VuZC13cmFwcGVyXCIsXG4gICAgICAgIHN0eWxlOiBvdXRlclN0eWxlLFxuICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihub2RlKSB7XG4gICAgICAgICAgX3RoaXMyLndyYXBwZXJOb2RlID0gbm9kZTtcbiAgICAgICAgfVxuICAgICAgfSwgcmVuZGVyQ29udGVudChjb250ZW50LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMucHJvcHMpLCB7fSwge1xuICAgICAgICBwYXlsb2FkOiBnZXRVbmlxUGF5bG9hZChwYXlsb2FkLCBwYXlsb2FkVW5pcUJ5LCBkZWZhdWx0VW5pcUJ5KVxuICAgICAgfSkpKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXRXaXRoSGVpZ2h0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFdpdGhIZWlnaHQoaXRlbSwgY2hhcnRXaWR0aCkge1xuICAgICAgdmFyIF90aGlzJGRlZmF1bHRQcm9wcyRpdCA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy5kZWZhdWx0UHJvcHMpLCBpdGVtLnByb3BzKSxcbiAgICAgICAgbGF5b3V0ID0gX3RoaXMkZGVmYXVsdFByb3BzJGl0LmxheW91dDtcbiAgICAgIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcgJiYgaXNOdW1iZXIoaXRlbS5wcm9wcy5oZWlnaHQpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGVpZ2h0OiBpdGVtLnByb3BzLmhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgd2lkdGg6IGl0ZW0ucHJvcHMud2lkdGggfHwgY2hhcnRXaWR0aFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XSk7XG59KFB1cmVDb21wb25lbnQpO1xuX2RlZmluZVByb3BlcnR5KExlZ2VuZCwgXCJkaXNwbGF5TmFtZVwiLCAnTGVnZW5kJyk7XG5fZGVmaW5lUHJvcGVydHkoTGVnZW5kLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGljb25TaXplOiAxNCxcbiAgbGF5b3V0OiAnaG9yaXpvbnRhbCcsXG4gIGFsaWduOiAnY2VudGVyJyxcbiAgdmVydGljYWxBbGlnbjogJ2JvdHRvbSdcbn0pOyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXhjbHVkZWQiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImkiLCJkZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsImNhbGwiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiX19wcm90b19fIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJwIiwib2JqIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhc093blByb3BlcnR5IiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiRGVmYXVsdExlZ2VuZENvbnRlbnQiLCJpc051bWJlciIsImdldFVuaXFQYXlsb2FkIiwiZGVmYXVsdFVuaXFCeSIsImVudHJ5IiwicmVuZGVyQ29udGVudCIsImNvbnRlbnQiLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJyZWYiLCJvdGhlclByb3BzIiwiRVBTIiwiTGVnZW5kIiwiX1B1cmVDb21wb25lbnQiLCJfdGhpcyIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0Iiwid2lkdGgiLCJoZWlnaHQiLCJjb21wb25lbnREaWRNb3VudCIsInVwZGF0ZUJCb3giLCJjb21wb25lbnREaWRVcGRhdGUiLCJnZXRCQm94Iiwid3JhcHBlck5vZGUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3giLCJvZmZzZXRIZWlnaHQiLCJvZmZzZXRXaWR0aCIsIm9uQkJveFVwZGF0ZSIsIk1hdGgiLCJhYnMiLCJsYXN0Qm91bmRpbmdCb3giLCJnZXRCQm94U25hcHNob3QiLCJnZXREZWZhdWx0UG9zaXRpb24iLCJzdHlsZSIsIl90aGlzJHByb3BzIiwibGF5b3V0IiwiYWxpZ24iLCJ2ZXJ0aWNhbEFsaWduIiwibWFyZ2luIiwiY2hhcnRXaWR0aCIsImNoYXJ0SGVpZ2h0IiwiaFBvcyIsInZQb3MiLCJsZWZ0IiwidW5kZWZpbmVkIiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJfYm94IiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMyIiwid3JhcHBlclN0eWxlIiwicGF5bG9hZFVuaXFCeSIsInBheWxvYWQiLCJvdXRlclN0eWxlIiwicG9zaXRpb24iLCJjbGFzc05hbWUiLCJub2RlIiwiZ2V0V2l0aEhlaWdodCIsIml0ZW0iLCJfdGhpcyRkZWZhdWx0UHJvcHMkaXQiLCJkZWZhdWx0UHJvcHMiLCJpY29uU2l6ZSJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Legend.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/ResponsiveContainer.js":
/*!********************************************************************!*\
!*** ./node_modules/recharts/es6/component/ResponsiveContainer.js ***!
\********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ResponsiveContainer: () => (/* binding */ ResponsiveContainer)\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/throttle */ \"(ssr)/./node_modules/lodash/throttle.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */ \n\n\n\n\n\nvar ResponsiveContainer = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function(_ref, ref) {\n var aspect = _ref.aspect, _ref$initialDimension = _ref.initialDimension, initialDimension = _ref$initialDimension === void 0 ? {\n width: -1,\n height: -1\n } : _ref$initialDimension, _ref$width = _ref.width, width = _ref$width === void 0 ? '100%' : _ref$width, _ref$height = _ref.height, height = _ref$height === void 0 ? '100%' : _ref$height, _ref$minWidth = _ref.minWidth, minWidth = _ref$minWidth === void 0 ? 0 : _ref$minWidth, minHeight = _ref.minHeight, maxHeight = _ref.maxHeight, children = _ref.children, _ref$debounce = _ref.debounce, debounce = _ref$debounce === void 0 ? 0 : _ref$debounce, id = _ref.id, className = _ref.className, onResize = _ref.onResize, _ref$style = _ref.style, style = _ref$style === void 0 ? {} : _ref$style;\n var containerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n var onResizeRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();\n onResizeRef.current = onResize;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useImperativeHandle)(ref, {\n \"ResponsiveContainer.useImperativeHandle\": function() {\n return Object.defineProperty(containerRef.current, 'current', {\n get: function get() {\n // eslint-disable-next-line no-console\n console.warn('The usage of ref.current.current is deprecated and will no longer be supported.');\n return containerRef.current;\n },\n configurable: true\n });\n }\n }[\"ResponsiveContainer.useImperativeHandle\"]);\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n containerWidth: initialDimension.width,\n containerHeight: initialDimension.height\n }), _useState2 = _slicedToArray(_useState, 2), sizes = _useState2[0], setSizes = _useState2[1];\n var setContainerSize = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)({\n \"ResponsiveContainer.useCallback[setContainerSize]\": function(newWidth, newHeight) {\n setSizes({\n \"ResponsiveContainer.useCallback[setContainerSize]\": function(prevState) {\n var roundedWidth = Math.round(newWidth);\n var roundedHeight = Math.round(newHeight);\n if (prevState.containerWidth === roundedWidth && prevState.containerHeight === roundedHeight) {\n return prevState;\n }\n return {\n containerWidth: roundedWidth,\n containerHeight: roundedHeight\n };\n }\n }[\"ResponsiveContainer.useCallback[setContainerSize]\"]);\n }\n }[\"ResponsiveContainer.useCallback[setContainerSize]\"], []);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ResponsiveContainer.useEffect\": function() {\n var callback = function callback(entries) {\n var _onResizeRef$current;\n var _entries$0$contentRec = entries[0].contentRect, containerWidth = _entries$0$contentRec.width, containerHeight = _entries$0$contentRec.height;\n setContainerSize(containerWidth, containerHeight);\n (_onResizeRef$current = onResizeRef.current) === null || _onResizeRef$current === void 0 || _onResizeRef$current.call(onResizeRef, containerWidth, containerHeight);\n };\n if (debounce > 0) {\n callback = lodash_throttle__WEBPACK_IMPORTED_MODULE_2___default()(callback, debounce, {\n trailing: true,\n leading: false\n });\n }\n var observer = new ResizeObserver(callback);\n var _containerRef$current = containerRef.current.getBoundingClientRect(), containerWidth = _containerRef$current.width, containerHeight = _containerRef$current.height;\n setContainerSize(containerWidth, containerHeight);\n observer.observe(containerRef.current);\n return ({\n \"ResponsiveContainer.useEffect\": function() {\n observer.disconnect();\n }\n })[\"ResponsiveContainer.useEffect\"];\n }\n }[\"ResponsiveContainer.useEffect\"], [\n setContainerSize,\n debounce\n ]);\n var chartContent = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)({\n \"ResponsiveContainer.useMemo[chartContent]\": function() {\n var containerWidth = sizes.containerWidth, containerHeight = sizes.containerHeight;\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_3__.warn)((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isPercent)(width) || (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isPercent)(height), \"The width(%s) and height(%s) are both fixed numbers,\\n maybe you don't need to use a ResponsiveContainer.\", width, height);\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_3__.warn)(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n var calculatedWidth = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isPercent)(width) ? containerWidth : width;\n var calculatedHeight = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isPercent)(height) ? containerHeight : height;\n if (aspect && aspect > 0) {\n // Preserve the desired aspect ratio\n if (calculatedWidth) {\n // Will default to using width for aspect ratio\n calculatedHeight = calculatedWidth / aspect;\n } else if (calculatedHeight) {\n // But we should also take height into consideration\n calculatedWidth = calculatedHeight * aspect;\n }\n // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n if (maxHeight && calculatedHeight > maxHeight) {\n calculatedHeight = maxHeight;\n }\n }\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_3__.warn)(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n please check the style of container, or the props width(%s) and height(%s),\\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n var isCharts = !Array.isArray(children) && (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__.getDisplayName)(children.type).endsWith('Chart');\n return react__WEBPACK_IMPORTED_MODULE_1___default().Children.map(children, {\n \"ResponsiveContainer.useMemo[chartContent]\": function(child) {\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1___default().isValidElement(child)) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.cloneElement)(child, _objectSpread({\n width: calculatedWidth,\n height: calculatedHeight\n }, isCharts ? {\n style: _objectSpread({\n height: '100%',\n width: '100%',\n maxHeight: calculatedHeight,\n maxWidth: calculatedWidth\n }, child.props.style)\n } : {}));\n }\n return child;\n }\n }[\"ResponsiveContainer.useMemo[chartContent]\"]);\n }\n }[\"ResponsiveContainer.useMemo[chartContent]\"], [\n aspect,\n children,\n height,\n maxHeight,\n minHeight,\n minWidth,\n sizes,\n width\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n id: id ? \"\".concat(id) : undefined,\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('recharts-responsive-container', className),\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: width,\n height: height,\n minWidth: minWidth,\n minHeight: minHeight,\n maxHeight: maxHeight\n }),\n ref: containerRef\n }, chartContent);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9SZXNwb25zaXZlQ29udGFpbmVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0QsRUFBRTtRQUFHLEtBQUtFLE9BQU9hLHlCQUF5QixHQUFHYixPQUFPYyxnQkFBZ0IsQ0FBQ2pCLEdBQUdHLE9BQU9hLHlCQUF5QixDQUFDZCxNQUFNSCxRQUFRSSxPQUFPRCxJQUFJWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJRSxPQUFPZSxjQUFjLENBQUNsQixHQUFHQyxHQUFHRSxPQUFPSSx3QkFBd0IsQ0FBQ0wsR0FBR0Q7UUFBSztJQUFJO0lBQUUsT0FBT0Q7QUFBRztBQUN0YixTQUFTZSxnQkFBZ0JJLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxLQUFLO0lBQUlELE1BQU1FLGVBQWVGO0lBQU0sSUFBSUEsT0FBT0QsS0FBSztRQUFFaEIsT0FBT2UsY0FBYyxDQUFDQyxLQUFLQyxLQUFLO1lBQUVDLE9BQU9BO1lBQU9iLFlBQVk7WUFBTWUsY0FBYztZQUFNQyxVQUFVO1FBQUs7SUFBSSxPQUFPO1FBQUVMLEdBQUcsQ0FBQ0MsSUFBSSxHQUFHQztJQUFPO0lBQUUsT0FBT0Y7QUFBSztBQUMzTyxTQUFTRyxlQUFlcEIsQ0FBQztJQUFJLElBQUl1QixJQUFJQyxhQUFheEIsR0FBRztJQUFXLE9BQU8sWUFBWVQsUUFBUWdDLEtBQUtBLElBQUlBLElBQUk7QUFBSTtBQUM1RyxTQUFTQyxhQUFheEIsQ0FBQyxFQUFFRCxDQUFDO0lBQUksSUFBSSxZQUFZUixRQUFRUyxNQUFNLENBQUNBLEdBQUcsT0FBT0E7SUFBRyxJQUFJRixJQUFJRSxDQUFDLENBQUNQLE9BQU9nQyxXQUFXLENBQUM7SUFBRSxJQUFJLEtBQUssTUFBTTNCLEdBQUc7UUFBRSxJQUFJeUIsSUFBSXpCLEVBQUU0QixJQUFJLENBQUMxQixHQUFHRCxLQUFLO1FBQVksSUFBSSxZQUFZUixRQUFRZ0MsSUFBSSxPQUFPQTtRQUFHLE1BQU0sSUFBSUksVUFBVTtJQUFpRDtJQUFFLE9BQU8sQ0FBQyxhQUFhNUIsSUFBSTZCLFNBQVNDLE1BQUssRUFBRzdCO0FBQUk7QUFDM1QsU0FBUzhCLGVBQWVDLEdBQUcsRUFBRVIsQ0FBQztJQUFJLE9BQU9TLGdCQUFnQkQsUUFBUUUsc0JBQXNCRixLQUFLUixNQUFNVyw0QkFBNEJILEtBQUtSLE1BQU1ZO0FBQW9CO0FBQzdKLFNBQVNBO0lBQXFCLE1BQU0sSUFBSVIsVUFBVTtBQUE4STtBQUNoTSxTQUFTTyw0QkFBNEIxQyxDQUFDLEVBQUU0QyxNQUFNO0lBQUksSUFBSSxDQUFDNUMsR0FBRztJQUFRLElBQUksT0FBT0EsTUFBTSxVQUFVLE9BQU82QyxrQkFBa0I3QyxHQUFHNEM7SUFBUyxJQUFJRSxJQUFJckMsT0FBT0wsU0FBUyxDQUFDMkMsUUFBUSxDQUFDYixJQUFJLENBQUNsQyxHQUFHZ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUFJLElBQUlGLE1BQU0sWUFBWTlDLEVBQUVHLFdBQVcsRUFBRTJDLElBQUk5QyxFQUFFRyxXQUFXLENBQUM4QyxJQUFJO0lBQUUsSUFBSUgsTUFBTSxTQUFTQSxNQUFNLE9BQU8sT0FBT0ksTUFBTUMsSUFBSSxDQUFDbkQ7SUFBSSxJQUFJOEMsTUFBTSxlQUFlLDJDQUEyQ00sSUFBSSxDQUFDTixJQUFJLE9BQU9ELGtCQUFrQjdDLEdBQUc0QztBQUFTO0FBQy9aLFNBQVNDLGtCQUFrQk4sR0FBRyxFQUFFYyxHQUFHO0lBQUksSUFBSUEsT0FBTyxRQUFRQSxNQUFNZCxJQUFJcEIsTUFBTSxFQUFFa0MsTUFBTWQsSUFBSXBCLE1BQU07SUFBRSxJQUFLLElBQUlZLElBQUksR0FBR3VCLE9BQU8sSUFBSUosTUFBTUcsTUFBTXRCLElBQUlzQixLQUFLdEIsSUFBS3VCLElBQUksQ0FBQ3ZCLEVBQUUsR0FBR1EsR0FBRyxDQUFDUixFQUFFO0lBQUUsT0FBT3VCO0FBQU07QUFDbEwsU0FBU2Isc0JBQXNCbEMsQ0FBQyxFQUFFZ0QsQ0FBQztJQUFJLElBQUkvQyxJQUFJLFFBQVFELElBQUksT0FBTyxlQUFlLE9BQU9OLFVBQVVNLENBQUMsQ0FBQ04sT0FBT0MsUUFBUSxDQUFDLElBQUlLLENBQUMsQ0FBQyxhQUFhO0lBQUUsSUFBSSxRQUFRQyxHQUFHO1FBQUUsSUFBSUYsR0FBR3dDLEdBQUdmLEdBQUd5QixHQUFHQyxJQUFJLEVBQUUsRUFBRUMsSUFBSSxDQUFDLEdBQUcxRCxJQUFJLENBQUM7UUFBRyxJQUFJO1lBQUUsSUFBSStCLElBQUksQ0FBQ3ZCLElBQUlBLEVBQUUwQixJQUFJLENBQUMzQixFQUFDLEVBQUdvRCxJQUFJLEVBQUUsTUFBTUosR0FBRztnQkFBRSxJQUFJOUMsT0FBT0QsT0FBT0EsR0FBRztnQkFBUWtELElBQUksQ0FBQztZQUFHLE9BQU8sTUFBTyxDQUFFQSxDQUFBQSxJQUFJLENBQUNwRCxJQUFJeUIsRUFBRUcsSUFBSSxDQUFDMUIsRUFBQyxFQUFHb0QsSUFBSSxLQUFNSCxDQUFBQSxFQUFFMUMsSUFBSSxDQUFDVCxFQUFFcUIsS0FBSyxHQUFHOEIsRUFBRXRDLE1BQU0sS0FBS29DLENBQUFBLEdBQUlHLElBQUksQ0FBQztRQUFJLEVBQUUsT0FBT25ELEdBQUc7WUFBRVAsSUFBSSxDQUFDLEdBQUc4QyxJQUFJdkM7UUFBRyxTQUFVO1lBQUUsSUFBSTtnQkFBRSxJQUFJLENBQUNtRCxLQUFLLFFBQVFsRCxDQUFDLENBQUMsU0FBUyxJQUFLZ0QsQ0FBQUEsSUFBSWhELENBQUMsQ0FBQyxTQUFTLElBQUlDLE9BQU8rQyxPQUFPQSxDQUFBQSxHQUFJO1lBQVEsU0FBVTtnQkFBRSxJQUFJeEQsR0FBRyxNQUFNOEM7WUFBRztRQUFFO1FBQUUsT0FBT1c7SUFBRztBQUFFO0FBQ3poQixTQUFTakIsZ0JBQWdCRCxHQUFHO0lBQUksSUFBSVcsTUFBTVcsT0FBTyxDQUFDdEIsTUFBTSxPQUFPQTtBQUFLO0FBQ3BFOztDQUVDLEdBQ3VCO0FBQ3dHO0FBQ3pGO0FBQ087QUFDTjtBQUNZO0FBQzdDLElBQUlxQyxzQkFBc0IsV0FBVyxHQUFFWixpREFBVUEsQ0FBQyxTQUFVYSxJQUFJLEVBQUVDLEdBQUc7SUFDMUUsSUFBSUMsU0FBU0YsS0FBS0UsTUFBTSxFQUN0QkMsd0JBQXdCSCxLQUFLSSxnQkFBZ0IsRUFDN0NBLG1CQUFtQkQsMEJBQTBCLEtBQUssSUFBSTtRQUNwREUsT0FBTyxDQUFDO1FBQ1JDLFFBQVEsQ0FBQztJQUNYLElBQUlILHVCQUNKSSxhQUFhUCxLQUFLSyxLQUFLLEVBQ3ZCQSxRQUFRRSxlQUFlLEtBQUssSUFBSSxTQUFTQSxZQUN6Q0MsY0FBY1IsS0FBS00sTUFBTSxFQUN6QkEsU0FBU0UsZ0JBQWdCLEtBQUssSUFBSSxTQUFTQSxhQUMzQ0MsZ0JBQWdCVCxLQUFLVSxRQUFRLEVBQzdCQSxXQUFXRCxrQkFBa0IsS0FBSyxJQUFJLElBQUlBLGVBQzFDRSxZQUFZWCxLQUFLVyxTQUFTLEVBQzFCQyxZQUFZWixLQUFLWSxTQUFTLEVBQzFCQyxXQUFXYixLQUFLYSxRQUFRLEVBQ3hCQyxnQkFBZ0JkLEtBQUtlLFFBQVEsRUFDN0JBLFdBQVdELGtCQUFrQixLQUFLLElBQUksSUFBSUEsZUFDMUNFLEtBQUtoQixLQUFLZ0IsRUFBRSxFQUNaQyxZQUFZakIsS0FBS2lCLFNBQVMsRUFDMUJDLFdBQVdsQixLQUFLa0IsUUFBUSxFQUN4QkMsYUFBYW5CLEtBQUtvQixLQUFLLEVBQ3ZCQSxRQUFRRCxlQUFlLEtBQUssSUFBSSxDQUFDLElBQUlBO0lBQ3ZDLElBQUlFLGVBQWU5Qiw2Q0FBTUEsQ0FBQztJQUMxQixJQUFJK0IsY0FBYy9CLDZDQUFNQTtJQUN4QitCLFlBQVlDLE9BQU8sR0FBR0w7SUFDdEI1QiwwREFBbUJBLENBQUNXO21EQUFLO1lBQ3ZCLE9BQU9yRSxPQUFPZSxjQUFjLENBQUMwRSxhQUFhRSxPQUFPLEVBQUUsV0FBVztnQkFDNURDLEtBQUssU0FBU0E7b0JBQ1osc0NBQXNDO29CQUN0Q0MsUUFBUTVCLElBQUksQ0FBQztvQkFDYixPQUFPd0IsYUFBYUUsT0FBTztnQkFDN0I7Z0JBQ0F2RSxjQUFjO1lBQ2hCO1FBQ0Y7O0lBQ0EsSUFBSTBFLFlBQVlyQywrQ0FBUUEsQ0FBQztRQUNyQnNDLGdCQUFnQnZCLGlCQUFpQkMsS0FBSztRQUN0Q3VCLGlCQUFpQnhCLGlCQUFpQkUsTUFBTTtJQUMxQyxJQUNBdUIsYUFBYXBFLGVBQWVpRSxXQUFXLElBQ3ZDSSxRQUFRRCxVQUFVLENBQUMsRUFBRSxFQUNyQkUsV0FBV0YsVUFBVSxDQUFDLEVBQUU7SUFDMUIsSUFBSUcsbUJBQW1CdEMsa0RBQVdBOzZEQUFDLFNBQVV1QyxRQUFRLEVBQUVDLFNBQVM7WUFDOURIO3FFQUFTLFNBQVVJLFNBQVM7b0JBQzFCLElBQUlDLGVBQWVDLEtBQUtDLEtBQUssQ0FBQ0w7b0JBQzlCLElBQUlNLGdCQUFnQkYsS0FBS0MsS0FBSyxDQUFDSjtvQkFDL0IsSUFBSUMsVUFBVVIsY0FBYyxLQUFLUyxnQkFBZ0JELFVBQVVQLGVBQWUsS0FBS1csZUFBZTt3QkFDNUYsT0FBT0o7b0JBQ1Q7b0JBQ0EsT0FBTzt3QkFDTFIsZ0JBQWdCUzt3QkFDaEJSLGlCQUFpQlc7b0JBQ25CO2dCQUNGOztRQUNGOzREQUFHLEVBQUU7SUFDTC9DLGdEQUFTQTt5Q0FBQztZQUNSLElBQUlnRCxXQUFXLFNBQVNBLFNBQVNDLE9BQU87Z0JBQ3RDLElBQUlDO2dCQUNKLElBQUlDLHdCQUF3QkYsT0FBTyxDQUFDLEVBQUUsQ0FBQ0csV0FBVyxFQUNoRGpCLGlCQUFpQmdCLHNCQUFzQnRDLEtBQUssRUFDNUN1QixrQkFBa0JlLHNCQUFzQnJDLE1BQU07Z0JBQ2hEMEIsaUJBQWlCTCxnQkFBZ0JDO2dCQUNoQ2MsQ0FBQUEsdUJBQXVCcEIsWUFBWUMsT0FBTyxNQUFNLFFBQVFtQix5QkFBeUIsS0FBSyxLQUFLQSxxQkFBcUJyRixJQUFJLENBQUNpRSxhQUFhSyxnQkFBZ0JDO1lBQ3JKO1lBQ0EsSUFBSWIsV0FBVyxHQUFHO2dCQUNoQnlCLFdBQVc3QyxzREFBUUEsQ0FBQzZDLFVBQVV6QixVQUFVO29CQUN0QzhCLFVBQVU7b0JBQ1ZDLFNBQVM7Z0JBQ1g7WUFDRjtZQUNBLElBQUlDLFdBQVcsSUFBSUMsZUFBZVI7WUFDbEMsSUFBSVMsd0JBQXdCNUIsYUFBYUUsT0FBTyxDQUFDMkIscUJBQXFCLElBQ3BFdkIsaUJBQWlCc0Isc0JBQXNCNUMsS0FBSyxFQUM1Q3VCLGtCQUFrQnFCLHNCQUFzQjNDLE1BQU07WUFDaEQwQixpQkFBaUJMLGdCQUFnQkM7WUFDakNtQixTQUFTSSxPQUFPLENBQUM5QixhQUFhRSxPQUFPO1lBQ3JDO2lEQUFPO29CQUNMd0IsU0FBU0ssVUFBVTtnQkFDckI7O1FBQ0Y7d0NBQUc7UUFBQ3BCO1FBQWtCakI7S0FBUztJQUMvQixJQUFJc0MsZUFBZTVELDhDQUFPQTtxREFBQztZQUN6QixJQUFJa0MsaUJBQWlCRyxNQUFNSCxjQUFjLEVBQ3ZDQyxrQkFBa0JFLE1BQU1GLGVBQWU7WUFDekMsSUFBSUQsaUJBQWlCLEtBQUtDLGtCQUFrQixHQUFHO2dCQUM3QyxPQUFPO1lBQ1Q7WUFDQS9CLG9EQUFJQSxDQUFDRCwwREFBU0EsQ0FBQ1MsVUFBVVQsMERBQVNBLENBQUNVLFNBQVMsbUhBQW1IRCxPQUFPQztZQUN0S1Qsb0RBQUlBLENBQUMsQ0FBQ0ssVUFBVUEsU0FBUyxHQUFHLDZDQUE2Q0E7WUFDekUsSUFBSW9ELGtCQUFrQjFELDBEQUFTQSxDQUFDUyxTQUFTc0IsaUJBQWlCdEI7WUFDMUQsSUFBSWtELG1CQUFtQjNELDBEQUFTQSxDQUFDVSxVQUFVc0Isa0JBQWtCdEI7WUFDN0QsSUFBSUosVUFBVUEsU0FBUyxHQUFHO2dCQUN4QixvQ0FBb0M7Z0JBQ3BDLElBQUlvRCxpQkFBaUI7b0JBQ25CLCtDQUErQztvQkFDL0NDLG1CQUFtQkQsa0JBQWtCcEQ7Z0JBQ3ZDLE9BQU8sSUFBSXFELGtCQUFrQjtvQkFDM0Isb0RBQW9EO29CQUNwREQsa0JBQWtCQyxtQkFBbUJyRDtnQkFDdkM7Z0JBRUEsK0VBQStFO2dCQUMvRSxJQUFJVSxhQUFhMkMsbUJBQW1CM0MsV0FBVztvQkFDN0MyQyxtQkFBbUIzQztnQkFDckI7WUFDRjtZQUNBZixvREFBSUEsQ0FBQ3lELGtCQUFrQixLQUFLQyxtQkFBbUIsR0FBRyxpUUFBaVFELGlCQUFpQkMsa0JBQWtCbEQsT0FBT0MsUUFBUUksVUFBVUMsV0FBV1Q7WUFDMVgsSUFBSXNELFdBQVcsQ0FBQ25GLE1BQU1XLE9BQU8sQ0FBQzZCLGFBQWFmLGdFQUFjQSxDQUFDZSxTQUFTNEMsSUFBSSxFQUFFQyxRQUFRLENBQUM7WUFDbEYsT0FBT3hFLHFEQUFjLENBQUMwRSxHQUFHLENBQUMvQzs2REFBVSxTQUFVZ0QsS0FBSztvQkFDakQsSUFBSyxXQUFXLEdBQUUzRSwyREFBb0IsQ0FBQzJFLFFBQVE7d0JBQzdDLE9BQU8sV0FBVyxHQUFFekUsbURBQVlBLENBQUN5RSxPQUFPekgsY0FBYzs0QkFDcERpRSxPQUFPaUQ7NEJBQ1BoRCxRQUFRaUQ7d0JBQ1YsR0FBR0MsV0FBVzs0QkFDWnBDLE9BQU9oRixjQUFjO2dDQUNuQmtFLFFBQVE7Z0NBQ1JELE9BQU87Z0NBQ1BPLFdBQVcyQztnQ0FDWFEsVUFBVVQ7NEJBQ1osR0FBR08sTUFBTUcsS0FBSyxDQUFDNUMsS0FBSzt3QkFDdEIsSUFBSSxDQUFDO29CQUNQO29CQUNBLE9BQU95QztnQkFDVDs7UUFDRjtvREFBRztRQUFDM0Q7UUFBUVc7UUFBVVA7UUFBUU07UUFBV0Q7UUFBV0Q7UUFBVW9CO1FBQU96QjtLQUFNO0lBQzNFLE9BQU8sV0FBVyxHQUFFbkIsMERBQW1CLENBQUMsT0FBTztRQUM3QzhCLElBQUlBLEtBQUssR0FBR2tELE1BQU0sQ0FBQ2xELE1BQU1tRDtRQUN6QmxELFdBQVdoQyxnREFBSUEsQ0FBQyxpQ0FBaUNnQztRQUNqREcsT0FBT2hGLGNBQWNBLGNBQWMsQ0FBQyxHQUFHZ0YsUUFBUSxDQUFDLEdBQUc7WUFDakRmLE9BQU9BO1lBQ1BDLFFBQVFBO1lBQ1JJLFVBQVVBO1lBQ1ZDLFdBQVdBO1lBQ1hDLFdBQVdBO1FBQ2I7UUFDQVgsS0FBS29CO0lBQ1AsR0FBR2dDO0FBQ0wsR0FBRyIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY29tcG9uZW50L1Jlc3BvbnNpdmVDb250YWluZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFdyYXBwZXIgY29tcG9uZW50IHRvIG1ha2UgY2hhcnRzIGFkYXB0IHRvIHRoZSBzaXplIG9mIHBhcmVudCAqIERPTVxuICovXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmLCBjbG9uZUVsZW1lbnQsIHVzZVN0YXRlLCB1c2VJbXBlcmF0aXZlSGFuZGxlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoL3Rocm90dGxlJztcbmltcG9ydCB7IGlzUGVyY2VudCB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IHdhcm4gfSBmcm9tICcuLi91dGlsL0xvZ1V0aWxzJztcbmltcG9ydCB7IGdldERpc3BsYXlOYW1lIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmV4cG9ydCB2YXIgUmVzcG9uc2l2ZUNvbnRhaW5lciA9IC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKGZ1bmN0aW9uIChfcmVmLCByZWYpIHtcbiAgdmFyIGFzcGVjdCA9IF9yZWYuYXNwZWN0LFxuICAgIF9yZWYkaW5pdGlhbERpbWVuc2lvbiA9IF9yZWYuaW5pdGlhbERpbWVuc2lvbixcbiAgICBpbml0aWFsRGltZW5zaW9uID0gX3JlZiRpbml0aWFsRGltZW5zaW9uID09PSB2b2lkIDAgPyB7XG4gICAgICB3aWR0aDogLTEsXG4gICAgICBoZWlnaHQ6IC0xXG4gICAgfSA6IF9yZWYkaW5pdGlhbERpbWVuc2lvbixcbiAgICBfcmVmJHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICB3aWR0aCA9IF9yZWYkd2lkdGggPT09IHZvaWQgMCA/ICcxMDAlJyA6IF9yZWYkd2lkdGgsXG4gICAgX3JlZiRoZWlnaHQgPSBfcmVmLmhlaWdodCxcbiAgICBoZWlnaHQgPSBfcmVmJGhlaWdodCA9PT0gdm9pZCAwID8gJzEwMCUnIDogX3JlZiRoZWlnaHQsXG4gICAgX3JlZiRtaW5XaWR0aCA9IF9yZWYubWluV2lkdGgsXG4gICAgbWluV2lkdGggPSBfcmVmJG1pbldpZHRoID09PSB2b2lkIDAgPyAwIDogX3JlZiRtaW5XaWR0aCxcbiAgICBtaW5IZWlnaHQgPSBfcmVmLm1pbkhlaWdodCxcbiAgICBtYXhIZWlnaHQgPSBfcmVmLm1heEhlaWdodCxcbiAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgX3JlZiRkZWJvdW5jZSA9IF9yZWYuZGVib3VuY2UsXG4gICAgZGVib3VuY2UgPSBfcmVmJGRlYm91bmNlID09PSB2b2lkIDAgPyAwIDogX3JlZiRkZWJvdW5jZSxcbiAgICBpZCA9IF9yZWYuaWQsXG4gICAgY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgb25SZXNpemUgPSBfcmVmLm9uUmVzaXplLFxuICAgIF9yZWYkc3R5bGUgPSBfcmVmLnN0eWxlLFxuICAgIHN0eWxlID0gX3JlZiRzdHlsZSA9PT0gdm9pZCAwID8ge30gOiBfcmVmJHN0eWxlO1xuICB2YXIgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgb25SZXNpemVSZWYgPSB1c2VSZWYoKTtcbiAgb25SZXNpemVSZWYuY3VycmVudCA9IG9uUmVzaXplO1xuICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udGFpbmVyUmVmLmN1cnJlbnQsICdjdXJyZW50Jywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybignVGhlIHVzYWdlIG9mIHJlZi5jdXJyZW50LmN1cnJlbnQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBubyBsb25nZXIgYmUgc3VwcG9ydGVkLicpO1xuICAgICAgICByZXR1cm4gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICB9LFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0pO1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoe1xuICAgICAgY29udGFpbmVyV2lkdGg6IGluaXRpYWxEaW1lbnNpb24ud2lkdGgsXG4gICAgICBjb250YWluZXJIZWlnaHQ6IGluaXRpYWxEaW1lbnNpb24uaGVpZ2h0XG4gICAgfSksXG4gICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgc2l6ZXMgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldFNpemVzID0gX3VzZVN0YXRlMlsxXTtcbiAgdmFyIHNldENvbnRhaW5lclNpemUgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAobmV3V2lkdGgsIG5ld0hlaWdodCkge1xuICAgIHNldFNpemVzKGZ1bmN0aW9uIChwcmV2U3RhdGUpIHtcbiAgICAgIHZhciByb3VuZGVkV2lkdGggPSBNYXRoLnJvdW5kKG5ld1dpZHRoKTtcbiAgICAgIHZhciByb3VuZGVkSGVpZ2h0ID0gTWF0aC5yb3VuZChuZXdIZWlnaHQpO1xuICAgICAgaWYgKHByZXZTdGF0ZS5jb250YWluZXJXaWR0aCA9PT0gcm91bmRlZFdpZHRoICYmIHByZXZTdGF0ZS5jb250YWluZXJIZWlnaHQgPT09IHJvdW5kZWRIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHByZXZTdGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRhaW5lcldpZHRoOiByb3VuZGVkV2lkdGgsXG4gICAgICAgIGNvbnRhaW5lckhlaWdodDogcm91bmRlZEhlaWdodFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSwgW10pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKGVudHJpZXMpIHtcbiAgICAgIHZhciBfb25SZXNpemVSZWYkY3VycmVudDtcbiAgICAgIHZhciBfZW50cmllcyQwJGNvbnRlbnRSZWMgPSBlbnRyaWVzWzBdLmNvbnRlbnRSZWN0LFxuICAgICAgICBjb250YWluZXJXaWR0aCA9IF9lbnRyaWVzJDAkY29udGVudFJlYy53aWR0aCxcbiAgICAgICAgY29udGFpbmVySGVpZ2h0ID0gX2VudHJpZXMkMCRjb250ZW50UmVjLmhlaWdodDtcbiAgICAgIHNldENvbnRhaW5lclNpemUoY29udGFpbmVyV2lkdGgsIGNvbnRhaW5lckhlaWdodCk7XG4gICAgICAoX29uUmVzaXplUmVmJGN1cnJlbnQgPSBvblJlc2l6ZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfb25SZXNpemVSZWYkY3VycmVudCA9PT0gdm9pZCAwIHx8IF9vblJlc2l6ZVJlZiRjdXJyZW50LmNhbGwob25SZXNpemVSZWYsIGNvbnRhaW5lcldpZHRoLCBjb250YWluZXJIZWlnaHQpO1xuICAgIH07XG4gICAgaWYgKGRlYm91bmNlID4gMCkge1xuICAgICAgY2FsbGJhY2sgPSB0aHJvdHRsZShjYWxsYmFjaywgZGVib3VuY2UsIHtcbiAgICAgICAgdHJhaWxpbmc6IHRydWUsXG4gICAgICAgIGxlYWRpbmc6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gICAgdmFyIG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGNhbGxiYWNrKTtcbiAgICB2YXIgX2NvbnRhaW5lclJlZiRjdXJyZW50ID0gY29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBjb250YWluZXJXaWR0aCA9IF9jb250YWluZXJSZWYkY3VycmVudC53aWR0aCxcbiAgICAgIGNvbnRhaW5lckhlaWdodCA9IF9jb250YWluZXJSZWYkY3VycmVudC5oZWlnaHQ7XG4gICAgc2V0Q29udGFpbmVyU2l6ZShjb250YWluZXJXaWR0aCwgY29udGFpbmVySGVpZ2h0KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lclJlZi5jdXJyZW50KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH07XG4gIH0sIFtzZXRDb250YWluZXJTaXplLCBkZWJvdW5jZV0pO1xuICB2YXIgY2hhcnRDb250ZW50ID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvbnRhaW5lcldpZHRoID0gc2l6ZXMuY29udGFpbmVyV2lkdGgsXG4gICAgICBjb250YWluZXJIZWlnaHQgPSBzaXplcy5jb250YWluZXJIZWlnaHQ7XG4gICAgaWYgKGNvbnRhaW5lcldpZHRoIDwgMCB8fCBjb250YWluZXJIZWlnaHQgPCAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgd2Fybihpc1BlcmNlbnQod2lkdGgpIHx8IGlzUGVyY2VudChoZWlnaHQpLCBcIlRoZSB3aWR0aCglcykgYW5kIGhlaWdodCglcykgYXJlIGJvdGggZml4ZWQgbnVtYmVycyxcXG4gICAgICAgbWF5YmUgeW91IGRvbid0IG5lZWQgdG8gdXNlIGEgUmVzcG9uc2l2ZUNvbnRhaW5lci5cIiwgd2lkdGgsIGhlaWdodCk7XG4gICAgd2FybighYXNwZWN0IHx8IGFzcGVjdCA+IDAsICdUaGUgYXNwZWN0KCVzKSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLicsIGFzcGVjdCk7XG4gICAgdmFyIGNhbGN1bGF0ZWRXaWR0aCA9IGlzUGVyY2VudCh3aWR0aCkgPyBjb250YWluZXJXaWR0aCA6IHdpZHRoO1xuICAgIHZhciBjYWxjdWxhdGVkSGVpZ2h0ID0gaXNQZXJjZW50KGhlaWdodCkgPyBjb250YWluZXJIZWlnaHQgOiBoZWlnaHQ7XG4gICAgaWYgKGFzcGVjdCAmJiBhc3BlY3QgPiAwKSB7XG4gICAgICAvLyBQcmVzZXJ2ZSB0aGUgZGVzaXJlZCBhc3BlY3QgcmF0aW9cbiAgICAgIGlmIChjYWxjdWxhdGVkV2lkdGgpIHtcbiAgICAgICAgLy8gV2lsbCBkZWZhdWx0IHRvIHVzaW5nIHdpZHRoIGZvciBhc3BlY3QgcmF0aW9cbiAgICAgICAgY2FsY3VsYXRlZEhlaWdodCA9IGNhbGN1bGF0ZWRXaWR0aCAvIGFzcGVjdDtcbiAgICAgIH0gZWxzZSBpZiAoY2FsY3VsYXRlZEhlaWdodCkge1xuICAgICAgICAvLyBCdXQgd2Ugc2hvdWxkIGFsc28gdGFrZSBoZWlnaHQgaW50byBjb25zaWRlcmF0aW9uXG4gICAgICAgIGNhbGN1bGF0ZWRXaWR0aCA9IGNhbGN1bGF0ZWRIZWlnaHQgKiBhc3BlY3Q7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIG1heEhlaWdodCBpcyBzZXQsIG92ZXJ3cml0ZSBpZiBjYWxjdWxhdGVkSGVpZ2h0IGlzIGdyZWF0ZXIgdGhhbiBtYXhIZWlnaHRcbiAgICAgIGlmIChtYXhIZWlnaHQgJiYgY2FsY3VsYXRlZEhlaWdodCA+IG1heEhlaWdodCkge1xuICAgICAgICBjYWxjdWxhdGVkSGVpZ2h0ID0gbWF4SGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgICB3YXJuKGNhbGN1bGF0ZWRXaWR0aCA+IDAgfHwgY2FsY3VsYXRlZEhlaWdodCA+IDAsIFwiVGhlIHdpZHRoKCVzKSBhbmQgaGVpZ2h0KCVzKSBvZiBjaGFydCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAsXFxuICAgICAgIHBsZWFzZSBjaGVjayB0aGUgc3R5bGUgb2YgY29udGFpbmVyLCBvciB0aGUgcHJvcHMgd2lkdGgoJXMpIGFuZCBoZWlnaHQoJXMpLFxcbiAgICAgICBvciBhZGQgYSBtaW5XaWR0aCglcykgb3IgbWluSGVpZ2h0KCVzKSBvciB1c2UgYXNwZWN0KCVzKSB0byBjb250cm9sIHRoZVxcbiAgICAgICBoZWlnaHQgYW5kIHdpZHRoLlwiLCBjYWxjdWxhdGVkV2lkdGgsIGNhbGN1bGF0ZWRIZWlnaHQsIHdpZHRoLCBoZWlnaHQsIG1pbldpZHRoLCBtaW5IZWlnaHQsIGFzcGVjdCk7XG4gICAgdmFyIGlzQ2hhcnRzID0gIUFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGdldERpc3BsYXlOYW1lKGNoaWxkcmVuLnR5cGUpLmVuZHNXaXRoKCdDaGFydCcpO1xuICAgIHJldHVybiBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNoaWxkLCBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB3aWR0aDogY2FsY3VsYXRlZFdpZHRoLFxuICAgICAgICAgIGhlaWdodDogY2FsY3VsYXRlZEhlaWdodFxuICAgICAgICB9LCBpc0NoYXJ0cyA/IHtcbiAgICAgICAgICBzdHlsZTogX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IGNhbGN1bGF0ZWRIZWlnaHQsXG4gICAgICAgICAgICBtYXhXaWR0aDogY2FsY3VsYXRlZFdpZHRoXG4gICAgICAgICAgfSwgY2hpbGQucHJvcHMuc3R5bGUpXG4gICAgICAgIH0gOiB7fSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH0pO1xuICB9LCBbYXNwZWN0LCBjaGlsZHJlbiwgaGVpZ2h0LCBtYXhIZWlnaHQsIG1pbkhlaWdodCwgbWluV2lkdGgsIHNpemVzLCB3aWR0aF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGlkOiBpZCA/IFwiXCIuY29uY2F0KGlkKSA6IHVuZGVmaW5lZCxcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXJlc3BvbnNpdmUtY29udGFpbmVyJywgY2xhc3NOYW1lKSxcbiAgICBzdHlsZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzdHlsZSksIHt9LCB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIG1pbldpZHRoOiBtaW5XaWR0aCxcbiAgICAgIG1pbkhlaWdodDogbWluSGVpZ2h0LFxuICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHRcbiAgICB9KSxcbiAgICByZWY6IGNvbnRhaW5lclJlZlxuICB9LCBjaGFydENvbnRlbnQpO1xufSk7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwibCIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwiaXNBcnJheSIsImNsc3giLCJSZWFjdCIsImZvcndhcmRSZWYiLCJjbG9uZUVsZW1lbnQiLCJ1c2VTdGF0ZSIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlQ2FsbGJhY2siLCJ0aHJvdHRsZSIsImlzUGVyY2VudCIsIndhcm4iLCJnZXREaXNwbGF5TmFtZSIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJfcmVmIiwicmVmIiwiYXNwZWN0IiwiX3JlZiRpbml0aWFsRGltZW5zaW9uIiwiaW5pdGlhbERpbWVuc2lvbiIsIndpZHRoIiwiaGVpZ2h0IiwiX3JlZiR3aWR0aCIsIl9yZWYkaGVpZ2h0IiwiX3JlZiRtaW5XaWR0aCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwiY2hpbGRyZW4iLCJfcmVmJGRlYm91bmNlIiwiZGVib3VuY2UiLCJpZCIsImNsYXNzTmFtZSIsIm9uUmVzaXplIiwiX3JlZiRzdHlsZSIsInN0eWxlIiwiY29udGFpbmVyUmVmIiwib25SZXNpemVSZWYiLCJjdXJyZW50IiwiZ2V0IiwiY29uc29sZSIsIl91c2VTdGF0ZSIsImNvbnRhaW5lcldpZHRoIiwiY29udGFpbmVySGVpZ2h0IiwiX3VzZVN0YXRlMiIsInNpemVzIiwic2V0U2l6ZXMiLCJzZXRDb250YWluZXJTaXplIiwibmV3V2lkdGgiLCJuZXdIZWlnaHQiLCJwcmV2U3RhdGUiLCJyb3VuZGVkV2lkdGgiLCJNYXRoIiwicm91bmQiLCJyb3VuZGVkSGVpZ2h0IiwiY2FsbGJhY2siLCJlbnRyaWVzIiwiX29uUmVzaXplUmVmJGN1cnJlbnQiLCJfZW50cmllcyQwJGNvbnRlbnRSZWMiLCJjb250ZW50UmVjdCIsInRyYWlsaW5nIiwibGVhZGluZyIsIm9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJfY29udGFpbmVyUmVmJGN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJvYnNlcnZlIiwiZGlzY29ubmVjdCIsImNoYXJ0Q29udGVudCIsImNhbGN1bGF0ZWRXaWR0aCIsImNhbGN1bGF0ZWRIZWlnaHQiLCJpc0NoYXJ0cyIsInR5cGUiLCJlbmRzV2l0aCIsIkNoaWxkcmVuIiwibWFwIiwiY2hpbGQiLCJpc1ZhbGlkRWxlbWVudCIsIm1heFdpZHRoIiwicHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0IiwidW5kZWZpbmVkIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/ResponsiveContainer.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Text.js":
/*!*****************************************************!*\
!*** ./node_modules/recharts/es6/component/Text.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Text: () => (/* binding */ Text)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_Global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_DOMUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/DOMUtils */ \"(ssr)/./node_modules/recharts/es6/util/DOMUtils.js\");\n/* harmony import */ var _util_ReduceCSSCalc__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ReduceCSSCalc */ \"(ssr)/./node_modules/recharts/es6/util/ReduceCSSCalc.js\");\nvar _excluded = [\n \"x\",\n \"y\",\n \"lineHeight\",\n \"capHeight\",\n \"scaleToFit\",\n \"textAnchor\",\n \"verticalAnchor\",\n \"fill\"\n], _excluded2 = [\n \"dx\",\n \"dy\",\n \"angle\",\n \"className\",\n \"breakAll\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\n\n\n\n\n\n\n\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\nvar calculateWordWidths = function calculateWordWidths(_ref) {\n var children = _ref.children, breakAll = _ref.breakAll, style = _ref.style;\n try {\n var words = [];\n if (!lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(children)) {\n if (breakAll) {\n words = children.toString().split('');\n } else {\n words = children.toString().split(BREAKING_SPACES);\n }\n }\n var wordsWithComputedWidth = words.map(function(word) {\n return {\n word: word,\n width: (0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_3__.getStringSize)(word, style).width\n };\n });\n var spaceWidth = breakAll ? 0 : (0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_3__.getStringSize)(\"\\xA0\", style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\nvar calculateWordsByLines = function calculateWordsByLines(_ref2, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n var maxLines = _ref2.maxLines, children = _ref2.children, style = _ref2.style, breakAll = _ref2.breakAll;\n var shouldLimitLines = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumber)(maxLines);\n var text = children;\n var calculate = function calculate() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return words.reduce(function(result, _ref3) {\n var word = _ref3.word, width = _ref3.width;\n var currentLine = result[result.length - 1];\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < Number(lineWidth))) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [\n word\n ],\n width: width\n };\n result.push(newLine);\n }\n return result;\n }, []);\n };\n var originalResult = calculate(initialWordsWithComputedWith);\n var findLongestLine = function findLongestLine(words) {\n return words.reduce(function(a, b) {\n return a.width > b.width ? a : b;\n });\n };\n if (!shouldLimitLines) {\n return originalResult;\n }\n var suffix = '…';\n var checkOverflow = function checkOverflow(index) {\n var tempText = text.slice(0, index);\n var words = calculateWordWidths({\n breakAll: breakAll,\n style: style,\n children: tempText + suffix\n }).wordsWithComputedWidth;\n var result = calculate(words);\n var doesOverflow = result.length > maxLines || findLongestLine(result).width > Number(lineWidth);\n return [\n doesOverflow,\n result\n ];\n };\n var start = 0;\n var end = text.length - 1;\n var iterations = 0;\n var trimmedResult;\n while(start <= end && iterations <= text.length - 1){\n var middle = Math.floor((start + end) / 2);\n var prev = middle - 1;\n var _checkOverflow = checkOverflow(prev), _checkOverflow2 = _slicedToArray(_checkOverflow, 2), doesPrevOverflow = _checkOverflow2[0], result = _checkOverflow2[1];\n var _checkOverflow3 = checkOverflow(middle), _checkOverflow4 = _slicedToArray(_checkOverflow3, 1), doesMiddleOverflow = _checkOverflow4[0];\n if (!doesPrevOverflow && !doesMiddleOverflow) {\n start = middle + 1;\n }\n if (doesPrevOverflow && doesMiddleOverflow) {\n end = middle - 1;\n }\n if (!doesPrevOverflow && doesMiddleOverflow) {\n trimmedResult = result;\n break;\n }\n iterations++;\n }\n // Fallback to originalResult (result without trimming) if we cannot find the\n // where to trim. This should not happen :tm:\n return trimmedResult || originalResult;\n};\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n var words = !lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(children) ? children.toString().split(BREAKING_SPACES) : [];\n return [\n {\n words: words\n }\n ];\n};\nvar getWordsByLines = function getWordsByLines(_ref4) {\n var width = _ref4.width, scaleToFit = _ref4.scaleToFit, children = _ref4.children, style = _ref4.style, breakAll = _ref4.breakAll, maxLines = _ref4.maxLines;\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((width || scaleToFit) && !_util_Global__WEBPACK_IMPORTED_MODULE_5__.Global.isSsr) {\n var wordsWithComputedWidth, spaceWidth;\n var wordWidths = calculateWordWidths({\n breakAll: breakAll,\n children: children,\n style: style\n });\n if (wordWidths) {\n var wcw = wordWidths.wordsWithComputedWidth, sw = wordWidths.spaceWidth;\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return getWordsWithoutCalculate(children);\n }\n return calculateWordsByLines({\n breakAll: breakAll,\n children: children,\n maxLines: maxLines,\n style: style\n }, wordsWithComputedWidth, spaceWidth, width, scaleToFit);\n }\n return getWordsWithoutCalculate(children);\n};\nvar DEFAULT_FILL = '#808080';\nvar Text = function Text(_ref5) {\n var _ref5$x = _ref5.x, propsX = _ref5$x === void 0 ? 0 : _ref5$x, _ref5$y = _ref5.y, propsY = _ref5$y === void 0 ? 0 : _ref5$y, _ref5$lineHeight = _ref5.lineHeight, lineHeight = _ref5$lineHeight === void 0 ? '1em' : _ref5$lineHeight, _ref5$capHeight = _ref5.capHeight, capHeight = _ref5$capHeight === void 0 ? '0.71em' : _ref5$capHeight, _ref5$scaleToFit = _ref5.scaleToFit, scaleToFit = _ref5$scaleToFit === void 0 ? false : _ref5$scaleToFit, _ref5$textAnchor = _ref5.textAnchor, textAnchor = _ref5$textAnchor === void 0 ? 'start' : _ref5$textAnchor, _ref5$verticalAnchor = _ref5.verticalAnchor, verticalAnchor = _ref5$verticalAnchor === void 0 ? 'end' : _ref5$verticalAnchor, _ref5$fill = _ref5.fill, fill = _ref5$fill === void 0 ? DEFAULT_FILL : _ref5$fill, props = _objectWithoutProperties(_ref5, _excluded);\n var wordsByLines = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)({\n \"Text.useMemo[wordsByLines]\": function() {\n return getWordsByLines({\n breakAll: props.breakAll,\n children: props.children,\n maxLines: props.maxLines,\n scaleToFit: scaleToFit,\n style: props.style,\n width: props.width\n });\n }\n }[\"Text.useMemo[wordsByLines]\"], [\n props.breakAll,\n props.children,\n props.maxLines,\n scaleToFit,\n props.style,\n props.width\n ]);\n var dx = props.dx, dy = props.dy, angle = props.angle, className = props.className, breakAll = props.breakAll, textProps = _objectWithoutProperties(props, _excluded2);\n if (!(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(propsX) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(propsY)) {\n return null;\n }\n var x = propsX + ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumber)(dx) ? dx : 0);\n var y = propsY + ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumber)(dy) ? dy : 0);\n var startDy;\n switch(verticalAnchor){\n case 'start':\n startDy = (0,_util_ReduceCSSCalc__WEBPACK_IMPORTED_MODULE_6__.reduceCSSCalc)(\"calc(\".concat(capHeight, \")\"));\n break;\n case 'middle':\n startDy = (0,_util_ReduceCSSCalc__WEBPACK_IMPORTED_MODULE_6__.reduceCSSCalc)(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n default:\n startDy = (0,_util_ReduceCSSCalc__WEBPACK_IMPORTED_MODULE_6__.reduceCSSCalc)(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n var transforms = [];\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n var width = props.width;\n transforms.push(\"scale(\".concat(((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumber)(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n }\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"text\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.filterProps)(textProps, true), {\n x: x,\n y: y,\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('recharts-text', className),\n textAnchor: textAnchor,\n fill: fill.includes('url') ? DEFAULT_FILL : fill\n }), wordsByLines.map(function(line, index) {\n var words = line.words.join(breakAll ? '' : ' ');\n return(/*#__PURE__*/ // duplicate words will cause duplicate keys\n // eslint-disable-next-line react/no-array-index-key\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: \"\".concat(words, \"-\").concat(index)\n }, words));\n }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9UZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0lBQUs7SUFBSztJQUFjO0lBQWE7SUFBYztJQUFjO0lBQWtCO0NBQU8sRUFDekdDLGFBQWE7SUFBQztJQUFNO0lBQU07SUFBUztJQUFhO0NBQVc7QUFDN0QsU0FBU0M7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTYSxLQUFLLENBQUMsSUFBSSxFQUFFUDtBQUFZO0FBQ2xWLFNBQVNRLHlCQUF5Qk4sTUFBTSxFQUFFTyxRQUFRO0lBQUksSUFBSVAsVUFBVSxNQUFNLE9BQU8sQ0FBQztJQUFHLElBQUlKLFNBQVNZLDhCQUE4QlIsUUFBUU87SUFBVyxJQUFJTixLQUFLSjtJQUFHLElBQUlKLE9BQU9nQixxQkFBcUIsRUFBRTtRQUFFLElBQUlDLG1CQUFtQmpCLE9BQU9nQixxQkFBcUIsQ0FBQ1Q7UUFBUyxJQUFLSCxJQUFJLEdBQUdBLElBQUlhLGlCQUFpQlgsTUFBTSxFQUFFRixJQUFLO1lBQUVJLE1BQU1TLGdCQUFnQixDQUFDYixFQUFFO1lBQUUsSUFBSVUsU0FBU0ksT0FBTyxDQUFDVixRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNS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QUN2QjRFLFdBQVdwRyxJQUFJLENBQUMsU0FBU21HLE1BQU0sQ0FBQyxDQUFDNUYseURBQVFBLENBQUNpQixTQUFTQSxRQUFRSyxZQUFZLEtBQUtBLFdBQVc7SUFDekY7SUFDQSxJQUFJa0UsT0FBTztRQUNUSyxXQUFXcEcsSUFBSSxDQUFDLFVBQVVtRyxNQUFNLENBQUNKLE9BQU8sTUFBTUksTUFBTSxDQUFDeEIsR0FBRyxNQUFNd0IsTUFBTSxDQUFDckIsR0FBRztJQUMxRTtJQUNBLElBQUlzQixXQUFXakosTUFBTSxFQUFFO1FBQ3JCOEksVUFBVUksU0FBUyxHQUFHRCxXQUFXRSxJQUFJLENBQUM7SUFDeEM7SUFDQSxPQUFPLFdBQVcsR0FBRW5HLDBEQUFtQixDQUFDLFFBQVF2RCxTQUFTLENBQUMsR0FBRzhELDZEQUFXQSxDQUFDdUYsV0FBVyxPQUFPO1FBQ3pGdEIsR0FBR0E7UUFDSEcsR0FBR0E7UUFDSGtCLFdBQVcxRixnREFBSUEsQ0FBQyxpQkFBaUIwRjtRQUNqQ1YsWUFBWUE7UUFDWkksTUFBTUEsS0FBS2MsUUFBUSxDQUFDLFNBQVNqQyxlQUFlbUI7SUFDOUMsSUFBSUUsYUFBYXRFLEdBQUcsQ0FBQyxTQUFVbUYsSUFBSSxFQUFFMUQsS0FBSztRQUN4QyxJQUFJNUIsUUFBUXNGLEtBQUt0RixLQUFLLENBQUNtRixJQUFJLENBQUNyRixXQUFXLEtBQUs7UUFDNUMsT0FDRSxXQUFXLEdBQ1gsNENBQTRDO1FBQzVDLG9EQUFvRDtRQUNwRGQsMERBQW1CLENBQUMsU0FBUztZQUMzQndFLEdBQUdBO1lBQ0htQixJQUFJL0MsVUFBVSxJQUFJbUQsVUFBVWpCO1lBQzVCNUgsS0FBSyxHQUFHOEksTUFBTSxDQUFDaEYsT0FBTyxLQUFLZ0YsTUFBTSxDQUFDcEQ7UUFDcEMsR0FBRzVCO0lBRVA7QUFDRixFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvVGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wieFwiLCBcInlcIiwgXCJsaW5lSGVpZ2h0XCIsIFwiY2FwSGVpZ2h0XCIsIFwic2NhbGVUb0ZpdFwiLCBcInRleHRBbmNob3JcIiwgXCJ2ZXJ0aWNhbEFuY2hvclwiLCBcImZpbGxcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJkeFwiLCBcImR5XCIsIFwiYW5nbGVcIiwgXCJjbGFzc05hbWVcIiwgXCJicmVha0FsbFwiXTtcbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTnVtT3JTdHIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuLi91dGlsL0dsb2JhbCc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBnZXRTdHJpbmdTaXplIH0gZnJvbSAnLi4vdXRpbC9ET01VdGlscyc7XG5pbXBvcnQgeyByZWR1Y2VDU1NDYWxjIH0gZnJvbSAnLi4vdXRpbC9SZWR1Y2VDU1NDYWxjJztcbnZhciBCUkVBS0lOR19TUEFDRVMgPSAvWyBcXGZcXG5cXHJcXHRcXHZcXHUyMDI4XFx1MjAyOV0rLztcbnZhciBjYWxjdWxhdGVXb3JkV2lkdGhzID0gZnVuY3Rpb24gY2FsY3VsYXRlV29yZFdpZHRocyhfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgYnJlYWtBbGwgPSBfcmVmLmJyZWFrQWxsLFxuICAgIHN0eWxlID0gX3JlZi5zdHlsZTtcbiAgdHJ5IHtcbiAgICB2YXIgd29yZHMgPSBbXTtcbiAgICBpZiAoIWlzTmlsKGNoaWxkcmVuKSkge1xuICAgICAgaWYgKGJyZWFrQWxsKSB7XG4gICAgICAgIHdvcmRzID0gY2hpbGRyZW4udG9TdHJpbmcoKS5zcGxpdCgnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3b3JkcyA9IGNoaWxkcmVuLnRvU3RyaW5nKCkuc3BsaXQoQlJFQUtJTkdfU1BBQ0VTKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHdvcmRzV2l0aENvbXB1dGVkV2lkdGggPSB3b3Jkcy5tYXAoZnVuY3Rpb24gKHdvcmQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdvcmQ6IHdvcmQsXG4gICAgICAgIHdpZHRoOiBnZXRTdHJpbmdTaXplKHdvcmQsIHN0eWxlKS53aWR0aFxuICAgICAgfTtcbiAgICB9KTtcbiAgICB2YXIgc3BhY2VXaWR0aCA9IGJyZWFrQWxsID8gMCA6IGdldFN0cmluZ1NpemUoXCJcXHhBMFwiLCBzdHlsZSkud2lkdGg7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdvcmRzV2l0aENvbXB1dGVkV2lkdGg6IHdvcmRzV2l0aENvbXB1dGVkV2lkdGgsXG4gICAgICBzcGFjZVdpZHRoOiBzcGFjZVdpZHRoXG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xudmFyIGNhbGN1bGF0ZVdvcmRzQnlMaW5lcyA9IGZ1bmN0aW9uIGNhbGN1bGF0ZVdvcmRzQnlMaW5lcyhfcmVmMiwgaW5pdGlhbFdvcmRzV2l0aENvbXB1dGVkV2l0aCwgc3BhY2VXaWR0aCwgbGluZVdpZHRoLCBzY2FsZVRvRml0KSB7XG4gIHZhciBtYXhMaW5lcyA9IF9yZWYyLm1heExpbmVzLFxuICAgIGNoaWxkcmVuID0gX3JlZjIuY2hpbGRyZW4sXG4gICAgc3R5bGUgPSBfcmVmMi5zdHlsZSxcbiAgICBicmVha0FsbCA9IF9yZWYyLmJyZWFrQWxsO1xuICB2YXIgc2hvdWxkTGltaXRMaW5lcyA9IGlzTnVtYmVyKG1heExpbmVzKTtcbiAgdmFyIHRleHQgPSBjaGlsZHJlbjtcbiAgdmFyIGNhbGN1bGF0ZSA9IGZ1bmN0aW9uIGNhbGN1bGF0ZSgpIHtcbiAgICB2YXIgd29yZHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuICAgIHJldHVybiB3b3Jkcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgX3JlZjMpIHtcbiAgICAgIHZhciB3b3JkID0gX3JlZjMud29yZCxcbiAgICAgICAgd2lkdGggPSBfcmVmMy53aWR0aDtcbiAgICAgIHZhciBjdXJyZW50TGluZSA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07XG4gICAgICBpZiAoY3VycmVudExpbmUgJiYgKGxpbmVXaWR0aCA9PSBudWxsIHx8IHNjYWxlVG9GaXQgfHwgY3VycmVudExpbmUud2lkdGggKyB3aWR0aCArIHNwYWNlV2lkdGggPCBOdW1iZXIobGluZVdpZHRoKSkpIHtcbiAgICAgICAgLy8gV29yZCBjYW4gYmUgYWRkZWQgdG8gYW4gZXhpc3RpbmcgbGluZVxuICAgICAgICBjdXJyZW50TGluZS53b3Jkcy5wdXNoKHdvcmQpO1xuICAgICAgICBjdXJyZW50TGluZS53aWR0aCArPSB3aWR0aCArIHNwYWNlV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgZmlyc3Qgd29yZCB0byBsaW5lIG9yIHdvcmQgaXMgdG9vIGxvbmcgdG8gc2NhbGVUb0ZpdCBvbiBleGlzdGluZyBsaW5lXG4gICAgICAgIHZhciBuZXdMaW5lID0ge1xuICAgICAgICAgIHdvcmRzOiBbd29yZF0sXG4gICAgICAgICAgd2lkdGg6IHdpZHRoXG4gICAgICAgIH07XG4gICAgICAgIHJlc3VsdC5wdXNoKG5ld0xpbmUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBbXSk7XG4gIH07XG4gIHZhciBvcmlnaW5hbFJlc3VsdCA9IGNhbGN1bGF0ZShpbml0aWFsV29yZHNXaXRoQ29tcHV0ZWRXaXRoKTtcbiAgdmFyIGZpbmRMb25nZXN0TGluZSA9IGZ1bmN0aW9uIGZpbmRMb25nZXN0TGluZSh3b3Jkcykge1xuICAgIHJldHVybiB3b3Jkcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLndpZHRoID4gYi53aWR0aCA/IGEgOiBiO1xuICAgIH0pO1xuICB9O1xuICBpZiAoIXNob3VsZExpbWl0TGluZXMpIHtcbiAgICByZXR1cm4gb3JpZ2luYWxSZXN1bHQ7XG4gIH1cbiAgdmFyIHN1ZmZpeCA9ICfigKYnO1xuICB2YXIgY2hlY2tPdmVyZmxvdyA9IGZ1bmN0aW9uIGNoZWNrT3ZlcmZsb3coaW5kZXgpIHtcbiAgICB2YXIgdGVtcFRleHQgPSB0ZXh0LnNsaWNlKDAsIGluZGV4KTtcbiAgICB2YXIgd29yZHMgPSBjYWxjdWxhdGVXb3JkV2lkdGhzKHtcbiAgICAgIGJyZWFrQWxsOiBicmVha0FsbCxcbiAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgIGNoaWxkcmVuOiB0ZW1wVGV4dCArIHN1ZmZpeFxuICAgIH0pLndvcmRzV2l0aENvbXB1dGVkV2lkdGg7XG4gICAgdmFyIHJlc3VsdCA9IGNhbGN1bGF0ZSh3b3Jkcyk7XG4gICAgdmFyIGRvZXNPdmVyZmxvdyA9IHJlc3VsdC5sZW5ndGggPiBtYXhMaW5lcyB8fCBmaW5kTG9uZ2VzdExpbmUocmVzdWx0KS53aWR0aCA+IE51bWJlcihsaW5lV2lkdGgpO1xuICAgIHJldHVybiBbZG9lc092ZXJmbG93LCByZXN1bHRdO1xuICB9O1xuICB2YXIgc3RhcnQgPSAwO1xuICB2YXIgZW5kID0gdGV4dC5sZW5ndGggLSAxO1xuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG4gIHZhciB0cmltbWVkUmVzdWx0O1xuICB3aGlsZSAoc3RhcnQgPD0gZW5kICYmIGl0ZXJhdGlvbnMgPD0gdGV4dC5sZW5ndGggLSAxKSB7XG4gICAgdmFyIG1pZGRsZSA9IE1hdGguZmxvb3IoKHN0YXJ0ICsgZW5kKSAvIDIpO1xuICAgIHZhciBwcmV2ID0gbWlkZGxlIC0gMTtcbiAgICB2YXIgX2NoZWNrT3ZlcmZsb3cgPSBjaGVja092ZXJmbG93KHByZXYpLFxuICAgICAgX2NoZWNrT3ZlcmZsb3cyID0gX3NsaWNlZFRvQXJyYXkoX2NoZWNrT3ZlcmZsb3csIDIpLFxuICAgICAgZG9lc1ByZXZPdmVyZmxvdyA9IF9jaGVja092ZXJmbG93MlswXSxcbiAgICAgIHJlc3VsdCA9IF9jaGVja092ZXJmbG93MlsxXTtcbiAgICB2YXIgX2NoZWNrT3ZlcmZsb3czID0gY2hlY2tPdmVyZmxvdyhtaWRkbGUpLFxuICAgICAgX2NoZWNrT3ZlcmZsb3c0ID0gX3NsaWNlZFRvQXJyYXkoX2NoZWNrT3ZlcmZsb3czLCAxKSxcbiAgICAgIGRvZXNNaWRkbGVPdmVyZmxvdyA9IF9jaGVja092ZXJmbG93NFswXTtcbiAgICBpZiAoIWRvZXNQcmV2T3ZlcmZsb3cgJiYgIWRvZXNNaWRkbGVPdmVyZmxvdykge1xuICAgICAgc3RhcnQgPSBtaWRkbGUgKyAxO1xuICAgIH1cbiAgICBpZiAoZG9lc1ByZXZPdmVyZmxvdyAmJiBkb2VzTWlkZGxlT3ZlcmZsb3cpIHtcbiAgICAgIGVuZCA9IG1pZGRsZSAtIDE7XG4gICAgfVxuICAgIGlmICghZG9lc1ByZXZPdmVyZmxvdyAmJiBkb2VzTWlkZGxlT3ZlcmZsb3cpIHtcbiAgICAgIHRyaW1tZWRSZXN1bHQgPSByZXN1bHQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaXRlcmF0aW9ucysrO1xuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gb3JpZ2luYWxSZXN1bHQgKHJlc3VsdCB3aXRob3V0IHRyaW1taW5nKSBpZiB3ZSBjYW5ub3QgZmluZCB0aGVcbiAgLy8gd2hlcmUgdG8gdHJpbS4gIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gOnRtOlxuICByZXR1cm4gdHJpbW1lZFJlc3VsdCB8fCBvcmlnaW5hbFJlc3VsdDtcbn07XG52YXIgZ2V0V29yZHNXaXRob3V0Q2FsY3VsYXRlID0gZnVuY3Rpb24gZ2V0V29yZHNXaXRob3V0Q2FsY3VsYXRlKGNoaWxkcmVuKSB7XG4gIHZhciB3b3JkcyA9ICFpc05pbChjaGlsZHJlbikgPyBjaGlsZHJlbi50b1N0cmluZygpLnNwbGl0KEJSRUFLSU5HX1NQQUNFUykgOiBbXTtcbiAgcmV0dXJuIFt7XG4gICAgd29yZHM6IHdvcmRzXG4gIH1dO1xufTtcbnZhciBnZXRXb3Jkc0J5TGluZXMgPSBmdW5jdGlvbiBnZXRXb3Jkc0J5TGluZXMoX3JlZjQpIHtcbiAgdmFyIHdpZHRoID0gX3JlZjQud2lkdGgsXG4gICAgc2NhbGVUb0ZpdCA9IF9yZWY0LnNjYWxlVG9GaXQsXG4gICAgY2hpbGRyZW4gPSBfcmVmNC5jaGlsZHJlbixcbiAgICBzdHlsZSA9IF9yZWY0LnN0eWxlLFxuICAgIGJyZWFrQWxsID0gX3JlZjQuYnJlYWtBbGwsXG4gICAgbWF4TGluZXMgPSBfcmVmNC5tYXhMaW5lcztcbiAgLy8gT25seSBwZXJmb3JtIGNhbGN1bGF0aW9ucyBpZiB1c2luZyBmZWF0dXJlcyB0aGF0IHJlcXVpcmUgdGhlbSAobXVsdGlsaW5lLCBzY2FsZVRvRml0KVxuICBpZiAoKHdpZHRoIHx8IHNjYWxlVG9GaXQpICYmICFHbG9iYWwuaXNTc3IpIHtcbiAgICB2YXIgd29yZHNXaXRoQ29tcHV0ZWRXaWR0aCwgc3BhY2VXaWR0aDtcbiAgICB2YXIgd29yZFdpZHRocyA9IGNhbGN1bGF0ZVdvcmRXaWR0aHMoe1xuICAgICAgYnJlYWtBbGw6IGJyZWFrQWxsLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgc3R5bGU6IHN0eWxlXG4gICAgfSk7XG4gICAgaWYgKHdvcmRXaWR0aHMpIHtcbiAgICAgIHZhciB3Y3cgPSB3b3JkV2lkdGhzLndvcmRzV2l0aENvbXB1dGVkV2lkdGgsXG4gICAgICAgIHN3ID0gd29yZFdpZHRocy5zcGFjZVdpZHRoO1xuICAgICAgd29yZHNXaXRoQ29tcHV0ZWRXaWR0aCA9IHdjdztcbiAgICAgIHNwYWNlV2lkdGggPSBzdztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdldFdvcmRzV2l0aG91dENhbGN1bGF0ZShjaGlsZHJlbik7XG4gICAgfVxuICAgIHJldHVybiBjYWxjdWxhdGVXb3Jkc0J5TGluZXMoe1xuICAgICAgYnJlYWtBbGw6IGJyZWFrQWxsLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgbWF4TGluZXM6IG1heExpbmVzLFxuICAgICAgc3R5bGU6IHN0eWxlXG4gICAgfSwgd29yZHNXaXRoQ29tcHV0ZWRXaWR0aCwgc3BhY2VXaWR0aCwgd2lkdGgsIHNjYWxlVG9GaXQpO1xuICB9XG4gIHJldHVybiBnZXRXb3Jkc1dpdGhvdXRDYWxjdWxhdGUoY2hpbGRyZW4pO1xufTtcbnZhciBERUZBVUxUX0ZJTEwgPSAnIzgwODA4MCc7XG5leHBvcnQgdmFyIFRleHQgPSBmdW5jdGlvbiBUZXh0KF9yZWY1KSB7XG4gIHZhciBfcmVmNSR4ID0gX3JlZjUueCxcbiAgICBwcm9wc1ggPSBfcmVmNSR4ID09PSB2b2lkIDAgPyAwIDogX3JlZjUkeCxcbiAgICBfcmVmNSR5ID0gX3JlZjUueSxcbiAgICBwcm9wc1kgPSBfcmVmNSR5ID09PSB2b2lkIDAgPyAwIDogX3JlZjUkeSxcbiAgICBfcmVmNSRsaW5lSGVpZ2h0ID0gX3JlZjUubGluZUhlaWdodCxcbiAgICBsaW5lSGVpZ2h0ID0gX3JlZjUkbGluZUhlaWdodCA9PT0gdm9pZCAwID8gJzFlbScgOiBfcmVmNSRsaW5lSGVpZ2h0LFxuICAgIF9yZWY1JGNhcEhlaWdodCA9IF9yZWY1LmNhcEhlaWdodCxcbiAgICBjYXBIZWlnaHQgPSBfcmVmNSRjYXBIZWlnaHQgPT09IHZvaWQgMCA/ICcwLjcxZW0nIDogX3JlZjUkY2FwSGVpZ2h0LFxuICAgIF9yZWY1JHNjYWxlVG9GaXQgPSBfcmVmNS5zY2FsZVRvRml0LFxuICAgIHNjYWxlVG9GaXQgPSBfcmVmNSRzY2FsZVRvRml0ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWY1JHNjYWxlVG9GaXQsXG4gICAgX3JlZjUkdGV4dEFuY2hvciA9IF9yZWY1LnRleHRBbmNob3IsXG4gICAgdGV4dEFuY2hvciA9IF9yZWY1JHRleHRBbmNob3IgPT09IHZvaWQgMCA/ICdzdGFydCcgOiBfcmVmNSR0ZXh0QW5jaG9yLFxuICAgIF9yZWY1JHZlcnRpY2FsQW5jaG9yID0gX3JlZjUudmVydGljYWxBbmNob3IsXG4gICAgdmVydGljYWxBbmNob3IgPSBfcmVmNSR2ZXJ0aWNhbEFuY2hvciA9PT0gdm9pZCAwID8gJ2VuZCcgOiBfcmVmNSR2ZXJ0aWNhbEFuY2hvcixcbiAgICBfcmVmNSRmaWxsID0gX3JlZjUuZmlsbCxcbiAgICBmaWxsID0gX3JlZjUkZmlsbCA9PT0gdm9pZCAwID8gREVGQVVMVF9GSUxMIDogX3JlZjUkZmlsbCxcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmNSwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHdvcmRzQnlMaW5lcyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRXb3Jkc0J5TGluZXMoe1xuICAgICAgYnJlYWtBbGw6IHByb3BzLmJyZWFrQWxsLFxuICAgICAgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuLFxuICAgICAgbWF4TGluZXM6IHByb3BzLm1heExpbmVzLFxuICAgICAgc2NhbGVUb0ZpdDogc2NhbGVUb0ZpdCxcbiAgICAgIHN0eWxlOiBwcm9wcy5zdHlsZSxcbiAgICAgIHdpZHRoOiBwcm9wcy53aWR0aFxuICAgIH0pO1xuICB9LCBbcHJvcHMuYnJlYWtBbGwsIHByb3BzLmNoaWxkcmVuLCBwcm9wcy5tYXhMaW5lcywgc2NhbGVUb0ZpdCwgcHJvcHMuc3R5bGUsIHByb3BzLndpZHRoXSk7XG4gIHZhciBkeCA9IHByb3BzLmR4LFxuICAgIGR5ID0gcHJvcHMuZHksXG4gICAgYW5nbGUgPSBwcm9wcy5hbmdsZSxcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgYnJlYWtBbGwgPSBwcm9wcy5icmVha0FsbCxcbiAgICB0ZXh0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZDIpO1xuICBpZiAoIWlzTnVtT3JTdHIocHJvcHNYKSB8fCAhaXNOdW1PclN0cihwcm9wc1kpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIHggPSBwcm9wc1ggKyAoaXNOdW1iZXIoZHgpID8gZHggOiAwKTtcbiAgdmFyIHkgPSBwcm9wc1kgKyAoaXNOdW1iZXIoZHkpID8gZHkgOiAwKTtcbiAgdmFyIHN0YXJ0RHk7XG4gIHN3aXRjaCAodmVydGljYWxBbmNob3IpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBzdGFydER5ID0gcmVkdWNlQ1NTQ2FsYyhcImNhbGMoXCIuY29uY2F0KGNhcEhlaWdodCwgXCIpXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICBzdGFydER5ID0gcmVkdWNlQ1NTQ2FsYyhcImNhbGMoXCIuY29uY2F0KCh3b3Jkc0J5TGluZXMubGVuZ3RoIC0gMSkgLyAyLCBcIiAqIC1cIikuY29uY2F0KGxpbmVIZWlnaHQsIFwiICsgKFwiKS5jb25jYXQoY2FwSGVpZ2h0LCBcIiAvIDIpKVwiKSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhcnREeSA9IHJlZHVjZUNTU0NhbGMoXCJjYWxjKFwiLmNvbmNhdCh3b3Jkc0J5TGluZXMubGVuZ3RoIC0gMSwgXCIgKiAtXCIpLmNvbmNhdChsaW5lSGVpZ2h0LCBcIilcIikpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgdmFyIHRyYW5zZm9ybXMgPSBbXTtcbiAgaWYgKHNjYWxlVG9GaXQpIHtcbiAgICB2YXIgbGluZVdpZHRoID0gd29yZHNCeUxpbmVzWzBdLndpZHRoO1xuICAgIHZhciB3aWR0aCA9IHByb3BzLndpZHRoO1xuICAgIHRyYW5zZm9ybXMucHVzaChcInNjYWxlKFwiLmNvbmNhdCgoaXNOdW1iZXIod2lkdGgpID8gd2lkdGggLyBsaW5lV2lkdGggOiAxKSAvIGxpbmVXaWR0aCwgXCIpXCIpKTtcbiAgfVxuICBpZiAoYW5nbGUpIHtcbiAgICB0cmFuc2Zvcm1zLnB1c2goXCJyb3RhdGUoXCIuY29uY2F0KGFuZ2xlLCBcIiwgXCIpLmNvbmNhdCh4LCBcIiwgXCIpLmNvbmNhdCh5LCBcIilcIikpO1xuICB9XG4gIGlmICh0cmFuc2Zvcm1zLmxlbmd0aCkge1xuICAgIHRleHRQcm9wcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1zLmpvaW4oJyAnKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0XCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyh0ZXh0UHJvcHMsIHRydWUpLCB7XG4gICAgeDogeCxcbiAgICB5OiB5LFxuICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtdGV4dCcsIGNsYXNzTmFtZSksXG4gICAgdGV4dEFuY2hvcjogdGV4dEFuY2hvcixcbiAgICBmaWxsOiBmaWxsLmluY2x1ZGVzKCd1cmwnKSA/IERFRkFVTFRfRklMTCA6IGZpbGxcbiAgfSksIHdvcmRzQnlMaW5lcy5tYXAoZnVuY3Rpb24gKGxpbmUsIGluZGV4KSB7XG4gICAgdmFyIHdvcmRzID0gbGluZS53b3Jkcy5qb2luKGJyZWFrQWxsID8gJycgOiAnICcpO1xuICAgIHJldHVybiAoXG4gICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAvLyBkdXBsaWNhdGUgd29yZHMgd2lsbCBjYXVzZSBkdXBsaWNhdGUga2V5c1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInRzcGFuXCIsIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgZHk6IGluZGV4ID09PSAwID8gc3RhcnREeSA6IGxpbmVIZWlnaHQsXG4gICAgICAgIGtleTogXCJcIi5jb25jYXQod29yZHMsIFwiLVwiKS5jb25jYXQoaW5kZXgpXG4gICAgICB9LCB3b3JkcylcbiAgICApO1xuICB9KSk7XG59OyJdLCJuYW1lcyI6WyJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiciIsImwiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJlIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJpc0FycmF5IiwiUmVhY3QiLCJ1c2VNZW1vIiwiaXNOaWwiLCJjbHN4IiwiaXNOdW1iZXIiLCJpc051bU9yU3RyIiwiR2xvYmFsIiwiZmlsdGVyUHJvcHMiLCJnZXRTdHJpbmdTaXplIiwicmVkdWNlQ1NTQ2FsYyIsIkJSRUFLSU5HX1NQQUNFUyIsImNhbGN1bGF0ZVdvcmRXaWR0aHMiLCJfcmVmIiwiY2hpbGRyZW4iLCJicmVha0FsbCIsInN0eWxlIiwid29yZHMiLCJzcGxpdCIsIndvcmRzV2l0aENvbXB1dGVkV2lkdGgiLCJtYXAiLCJ3b3JkIiwid2lkdGgiLCJzcGFjZVdpZHRoIiwiY2FsY3VsYXRlV29yZHNCeUxpbmVzIiwiX3JlZjIiLCJpbml0aWFsV29yZHNXaXRoQ29tcHV0ZWRXaXRoIiwibGluZVdpZHRoIiwic2NhbGVUb0ZpdCIsIm1heExpbmVzIiwic2hvdWxkTGltaXRMaW5lcyIsInRleHQiLCJjYWxjdWxhdGUiLCJ1bmRlZmluZWQiLCJyZWR1Y2UiLCJyZXN1bHQiLCJfcmVmMyIsImN1cnJlbnRMaW5lIiwiTnVtYmVyIiwibmV3TGluZSIsIm9yaWdpbmFsUmVzdWx0IiwiZmluZExvbmdlc3RMaW5lIiwiYiIsInN1ZmZpeCIsImNoZWNrT3ZlcmZsb3ciLCJpbmRleCIsInRlbXBUZXh0IiwiZG9lc092ZXJmbG93Iiwic3RhcnQiLCJlbmQiLCJpdGVyYXRpb25zIiwidHJpbW1lZFJlc3VsdCIsIm1pZGRsZSIsIk1hdGgiLCJmbG9vciIsInByZXYiLCJfY2hlY2tPdmVyZmxvdyIsIl9jaGVja092ZXJmbG93MiIsImRvZXNQcmV2T3ZlcmZsb3ciLCJfY2hlY2tPdmVyZmxvdzMiLCJfY2hlY2tPdmVyZmxvdzQiLCJkb2VzTWlkZGxlT3ZlcmZsb3ciLCJnZXRXb3Jkc1dpdGhvdXRDYWxjdWxhdGUiLCJnZXRXb3Jkc0J5TGluZXMiLCJfcmVmNCIsImlzU3NyIiwid29yZFdpZHRocyIsIndjdyIsInN3IiwiREVGQVVMVF9GSUxMIiwiVGV4dCIsIl9yZWY1IiwiX3JlZjUkeCIsIngiLCJwcm9wc1giLCJfcmVmNSR5IiwieSIsInByb3BzWSIsIl9yZWY1JGxpbmVIZWlnaHQiLCJsaW5lSGVpZ2h0IiwiX3JlZjUkY2FwSGVpZ2h0IiwiY2FwSGVpZ2h0IiwiX3JlZjUkc2NhbGVUb0ZpdCIsIl9yZWY1JHRleHRBbmNob3IiLCJ0ZXh0QW5jaG9yIiwiX3JlZjUkdmVydGljYWxBbmNob3IiLCJ2ZXJ0aWNhbEFuY2hvciIsIl9yZWY1JGZpbGwiLCJmaWxsIiwicHJvcHMiLCJ3b3Jkc0J5TGluZXMiLCJkeCIsImR5IiwiYW5nbGUiLCJjbGFzc05hbWUiLCJ0ZXh0UHJvcHMiLCJzdGFydER5IiwiY29uY2F0IiwidHJhbnNmb3JtcyIsInRyYW5zZm9ybSIsImpvaW4iLCJjcmVhdGVFbGVtZW50IiwiaW5jbHVkZXMiLCJsaW5lIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Text.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Tooltip.js":
/*!********************************************************!*\
!*** ./node_modules/recharts/es6/component/Tooltip.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Tooltip: () => (/* binding */ Tooltip)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _DefaultTooltipContent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DefaultTooltipContent */ \"(ssr)/./node_modules/recharts/es6/component/DefaultTooltipContent.js\");\n/* harmony import */ var _TooltipBoundingBox__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TooltipBoundingBox */ \"(ssr)/./node_modules/recharts/es6/component/TooltipBoundingBox.js\");\n/* harmony import */ var _util_Global__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_payload_getUniqPayload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/payload/getUniqPayload */ \"(ssr)/./node_modules/recharts/es6/util/payload/getUniqPayload.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Tooltip\n */ \n\n\n\n\nfunction defaultUniqBy(entry) {\n return entry.dataKey;\n}\nfunction renderContent(content, props) {\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(content)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(content, props);\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_DefaultTooltipContent__WEBPACK_IMPORTED_MODULE_1__.DefaultTooltipContent, props);\n}\nvar Tooltip = /*#__PURE__*/ function(_PureComponent) {\n function Tooltip() {\n _classCallCheck(this, Tooltip);\n return _callSuper(this, Tooltip, arguments);\n }\n _inherits(Tooltip, _PureComponent);\n return _createClass(Tooltip, [\n {\n key: \"render\",\n value: function render() {\n var _this = this;\n var _this$props = this.props, active = _this$props.active, allowEscapeViewBox = _this$props.allowEscapeViewBox, animationDuration = _this$props.animationDuration, animationEasing = _this$props.animationEasing, content = _this$props.content, coordinate = _this$props.coordinate, filterNull = _this$props.filterNull, isAnimationActive = _this$props.isAnimationActive, offset = _this$props.offset, payload = _this$props.payload, payloadUniqBy = _this$props.payloadUniqBy, position = _this$props.position, reverseDirection = _this$props.reverseDirection, useTranslate3d = _this$props.useTranslate3d, viewBox = _this$props.viewBox, wrapperStyle = _this$props.wrapperStyle;\n var finalPayload = payload !== null && payload !== void 0 ? payload : [];\n if (filterNull && finalPayload.length) {\n finalPayload = (0,_util_payload_getUniqPayload__WEBPACK_IMPORTED_MODULE_2__.getUniqPayload)(payload.filter(function(entry) {\n return entry.value != null && (entry.hide !== true || _this.props.includeHidden);\n }), payloadUniqBy, defaultUniqBy);\n }\n var hasPayload = finalPayload.length > 0;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TooltipBoundingBox__WEBPACK_IMPORTED_MODULE_3__.TooltipBoundingBox, {\n allowEscapeViewBox: allowEscapeViewBox,\n animationDuration: animationDuration,\n animationEasing: animationEasing,\n isAnimationActive: isAnimationActive,\n active: active,\n coordinate: coordinate,\n hasPayload: hasPayload,\n offset: offset,\n position: position,\n reverseDirection: reverseDirection,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox,\n wrapperStyle: wrapperStyle\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: finalPayload\n })));\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(Tooltip, \"displayName\", 'Tooltip');\n_defineProperty(Tooltip, \"defaultProps\", {\n accessibilityLayer: false,\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n animationDuration: 400,\n animationEasing: 'ease',\n contentStyle: {},\n coordinate: {\n x: 0,\n y: 0\n },\n cursor: true,\n cursorStyle: {},\n filterNull: true,\n isAnimationActive: !_util_Global__WEBPACK_IMPORTED_MODULE_4__.Global.isSsr,\n itemStyle: {},\n labelStyle: {},\n offset: 10,\n reverseDirection: {\n x: false,\n y: false\n },\n separator: ' : ',\n trigger: 'hover',\n useTranslate3d: false,\n viewBox: {\n x: 0,\n y: 0,\n height: 0,\n width: 0\n },\n wrapperStyle: {}\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9Ub29sdGlwLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0ssUUFBUUMsQ0FBQyxFQUFFQyxDQUFDO0lBQUksSUFBSUMsSUFBSUMsT0FBT0MsSUFBSSxDQUFDSjtJQUFJLElBQUlHLE9BQU9FLHFCQUFxQixFQUFFO1FBQUUsSUFBSVgsSUFBSVMsT0FBT0UscUJBQXFCLENBQUNMO1FBQUlDLEtBQU1QLENBQUFBLElBQUlBLEVBQUVZLE1BQU0sQ0FBQyxTQUFVTCxDQUFDO1lBQUksT0FBT0UsT0FBT0ksd0JBQXdCLENBQUNQLEdBQUdDLEdBQUdPLFVBQVU7UUFBRSxFQUFDLEdBQUlOLEVBQUVPLElBQUksQ0FBQ0MsS0FBSyxDQUFDUixHQUFHUjtJQUFJO0lBQUUsT0FBT1E7QUFBRztBQUM5UCxTQUFTUyxjQUFjWCxDQUFDO0lBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlXLFVBQVVDLE1BQU0sRUFBRVosSUFBSztRQUFFLElBQUlDLElBQUksUUFBUVUsU0FBUyxDQUFDWCxFQUFFLEdBQUdXLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHLENBQUM7UUFBR0EsSUFBSSxJQUFJRixRQUFRSSxPQUFPRCxJQUFJLENBQUMsR0FBR1ksT0FBTyxDQUFDLFNBQVViLENBQUM7WUFBSWMsZ0JBQWdCZixHQUFHQyxHQUFHQyxDQUFDLENBQUNELEVB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O29CQUN6RWlFLFNBQVNPO2dCQUNYO1lBQ0Y7UUFDRjtLQUFFO0FBQ0osRUFBRWpDLGdEQUFhQSxFQUFFO0FBQ2pCakQsZ0JBQWdCOEQsU0FBUyxlQUFlO0FBQ3hDOUQsZ0JBQWdCOEQsU0FBUyxnQkFBZ0I7SUFDdkN3QixvQkFBb0I7SUFDcEJsQixvQkFBb0I7UUFDbEJtQixHQUFHO1FBQ0hDLEdBQUc7SUFDTDtJQUNBbkIsbUJBQW1CO0lBQ25CQyxpQkFBaUI7SUFDakJtQixjQUFjLENBQUM7SUFDZmxCLFlBQVk7UUFDVmdCLEdBQUc7UUFDSEMsR0FBRztJQUNMO0lBQ0FFLFFBQVE7SUFDUkMsYUFBYSxDQUFDO0lBQ2RuQixZQUFZO0lBQ1pDLG1CQUFtQixDQUFDckIsZ0RBQU1BLENBQUN3QyxLQUFLO0lBQ2hDQyxXQUFXLENBQUM7SUFDWkMsWUFBWSxDQUFDO0lBQ2JwQixRQUFRO0lBQ1JJLGtCQUFrQjtRQUNoQlMsR0FBRztRQUNIQyxHQUFHO0lBQ0w7SUFDQU8sV0FBVztJQUNYQyxTQUFTO0lBQ1RqQixnQkFBZ0I7SUFDaEJDLFNBQVM7UUFDUE8sR0FBRztRQUNIQyxHQUFHO1FBQ0hTLFFBQVE7UUFDUkMsT0FBTztJQUNUO0lBQ0FqQixjQUFjLENBQUM7QUFDakIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9Ub29sdGlwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFRvb2x0aXBcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBEZWZhdWx0VG9vbHRpcENvbnRlbnQgfSBmcm9tICcuL0RlZmF1bHRUb29sdGlwQ29udGVudCc7XG5pbXBvcnQgeyBUb29sdGlwQm91bmRpbmdCb3ggfSBmcm9tICcuL1Rvb2x0aXBCb3VuZGluZ0JveCc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuLi91dGlsL0dsb2JhbCc7XG5pbXBvcnQgeyBnZXRVbmlxUGF5bG9hZCB9IGZyb20gJy4uL3V0aWwvcGF5bG9hZC9nZXRVbmlxUGF5bG9hZCc7XG5mdW5jdGlvbiBkZWZhdWx0VW5pcUJ5KGVudHJ5KSB7XG4gIHJldHVybiBlbnRyeS5kYXRhS2V5O1xufVxuZnVuY3Rpb24gcmVuZGVyQ29udGVudChjb250ZW50LCBwcm9wcykge1xuICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjb250ZW50KSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNvbnRlbnQsIHByb3BzKTtcbiAgfVxuICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoY29udGVudCwgcHJvcHMpO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChEZWZhdWx0VG9vbHRpcENvbnRlbnQsIHByb3BzKTtcbn1cbmV4cG9ydCB2YXIgVG9vbHRpcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1B1cmVDb21wb25lbnQpIHtcbiAgZnVuY3Rpb24gVG9vbHRpcCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVG9vbHRpcCk7XG4gICAgcmV0dXJuIF9jYWxsU3VwZXIodGhpcywgVG9vbHRpcCwgYXJndW1lbnRzKTtcbiAgfVxuICBfaW5oZXJpdHMoVG9vbHRpcCwgX1B1cmVDb21wb25lbnQpO1xuICByZXR1cm4gX2NyZWF0ZUNsYXNzKFRvb2x0aXAsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgYWN0aXZlID0gX3RoaXMkcHJvcHMuYWN0aXZlLFxuICAgICAgICBhbGxvd0VzY2FwZVZpZXdCb3ggPSBfdGhpcyRwcm9wcy5hbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gX3RoaXMkcHJvcHMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgIGFuaW1hdGlvbkVhc2luZyA9IF90aGlzJHByb3BzLmFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgY29udGVudCA9IF90aGlzJHByb3BzLmNvbnRlbnQsXG4gICAgICAgIGNvb3JkaW5hdGUgPSBfdGhpcyRwcm9wcy5jb29yZGluYXRlLFxuICAgICAgICBmaWx0ZXJOdWxsID0gX3RoaXMkcHJvcHMuZmlsdGVyTnVsbCxcbiAgICAgICAgaXNBbmltYXRpb25BY3RpdmUgPSBfdGhpcyRwcm9wcy5pc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgICAgb2Zmc2V0ID0gX3RoaXMkcHJvcHMub2Zmc2V0LFxuICAgICAgICBwYXlsb2FkID0gX3RoaXMkcHJvcHMucGF5bG9hZCxcbiAgICAgICAgcGF5bG9hZFVuaXFCeSA9IF90aGlzJHByb3BzLnBheWxvYWRVbmlxQnksXG4gICAgICAgIHBvc2l0aW9uID0gX3RoaXMkcHJvcHMucG9zaXRpb24sXG4gICAgICAgIHJldmVyc2VEaXJlY3Rpb24gPSBfdGhpcyRwcm9wcy5yZXZlcnNlRGlyZWN0aW9uLFxuICAgICAgICB1c2VUcmFuc2xhdGUzZCA9IF90aGlzJHByb3BzLnVzZVRyYW5zbGF0ZTNkLFxuICAgICAgICB2aWV3Qm94ID0gX3RoaXMkcHJvcHMudmlld0JveCxcbiAgICAgICAgd3JhcHBlclN0eWxlID0gX3RoaXMkcHJvcHMud3JhcHBlclN0eWxlO1xuICAgICAgdmFyIGZpbmFsUGF5bG9hZCA9IHBheWxvYWQgIT09IG51bGwgJiYgcGF5bG9hZCAhPT0gdm9pZCAwID8gcGF5bG9hZCA6IFtdO1xuICAgICAgaWYgKGZpbHRlck51bGwgJiYgZmluYWxQYXlsb2FkLmxlbmd0aCkge1xuICAgICAgICBmaW5hbFBheWxvYWQgPSBnZXRVbmlxUGF5bG9hZChwYXlsb2FkLmZpbHRlcihmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgICByZXR1cm4gZW50cnkudmFsdWUgIT0gbnVsbCAmJiAoZW50cnkuaGlkZSAhPT0gdHJ1ZSB8fCBfdGhpcy5wcm9wcy5pbmNsdWRlSGlkZGVuKTtcbiAgICAgICAgfSksIHBheWxvYWRVbmlxQnksIGRlZmF1bHRVbmlxQnkpO1xuICAgICAgfVxuICAgICAgdmFyIGhhc1BheWxvYWQgPSBmaW5hbFBheWxvYWQubGVuZ3RoID4gMDtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwQm91bmRpbmdCb3gsIHtcbiAgICAgICAgYWxsb3dFc2NhcGVWaWV3Qm94OiBhbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgYW5pbWF0aW9uRWFzaW5nOiBhbmltYXRpb25FYXNpbmcsXG4gICAgICAgIGlzQW5pbWF0aW9uQWN0aXZlOiBpc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgICAgYWN0aXZlOiBhY3RpdmUsXG4gICAgICAgIGNvb3JkaW5hdGU6IGNvb3JkaW5hdGUsXG4gICAgICAgIGhhc1BheWxvYWQ6IGhhc1BheWxvYWQsXG4gICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgIHJldmVyc2VEaXJlY3Rpb246IHJldmVyc2VEaXJlY3Rpb24sXG4gICAgICAgIHVzZVRyYW5zbGF0ZTNkOiB1c2VUcmFuc2xhdGUzZCxcbiAgICAgICAgdmlld0JveDogdmlld0JveCxcbiAgICAgICAgd3JhcHBlclN0eWxlOiB3cmFwcGVyU3R5bGVcbiAgICAgIH0sIHJlbmRlckNvbnRlbnQoY29udGVudCwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLnByb3BzKSwge30sIHtcbiAgICAgICAgcGF5bG9hZDogZmluYWxQYXlsb2FkXG4gICAgICB9KSkpO1xuICAgIH1cbiAgfV0pO1xufShQdXJlQ29tcG9uZW50KTtcbl9kZWZpbmVQcm9wZXJ0eShUb29sdGlwLCBcImRpc3BsYXlOYW1lXCIsICdUb29sdGlwJyk7XG5fZGVmaW5lUHJvcGVydHkoVG9vbHRpcCwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBhY2Nlc3NpYmlsaXR5TGF5ZXI6IGZhbHNlLFxuICBhbGxvd0VzY2FwZVZpZXdCb3g6IHtcbiAgICB4OiBmYWxzZSxcbiAgICB5OiBmYWxzZVxuICB9LFxuICBhbmltYXRpb25EdXJhdGlvbjogNDAwLFxuICBhbmltYXRpb25FYXNpbmc6ICdlYXNlJyxcbiAgY29udGVudFN0eWxlOiB7fSxcbiAgY29vcmRpbmF0ZToge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9LFxuICBjdXJzb3I6IHRydWUsXG4gIGN1cnNvclN0eWxlOiB7fSxcbiAgZmlsdGVyTnVsbDogdHJ1ZSxcbiAgaXNBbmltYXRpb25BY3RpdmU6ICFHbG9iYWwuaXNTc3IsXG4gIGl0ZW1TdHlsZToge30sXG4gIGxhYmVsU3R5bGU6IHt9LFxuICBvZmZzZXQ6IDEwLFxuICByZXZlcnNlRGlyZWN0aW9uOiB7XG4gICAgeDogZmFsc2UsXG4gICAgeTogZmFsc2VcbiAgfSxcbiAgc2VwYXJhdG9yOiAnIDogJyxcbiAgdHJpZ2dlcjogJ2hvdmVyJyxcbiAgdXNlVHJhbnNsYXRlM2Q6IGZhbHNlLFxuICB2aWV3Qm94OiB7XG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIGhlaWdodDogMCxcbiAgICB3aWR0aDogMFxuICB9LFxuICB3cmFwcGVyU3R5bGU6IHt9XG59KTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJpIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJjYWxsIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiYmluZCIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiRGVmYXVsdFRvb2x0aXBDb250ZW50IiwiVG9vbHRpcEJvdW5kaW5nQm94IiwiR2xvYmFsIiwiZ2V0VW5pcVBheWxvYWQiLCJkZWZhdWx0VW5pcUJ5IiwiZW50cnkiLCJkYXRhS2V5IiwicmVuZGVyQ29udGVudCIsImNvbnRlbnQiLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJUb29sdGlwIiwiX1B1cmVDb21wb25lbnQiLCJyZW5kZXIiLCJfdGhpcyIsIl90aGlzJHByb3BzIiwiYWN0aXZlIiwiYWxsb3dFc2NhcGVWaWV3Qm94IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJhbmltYXRpb25FYXNpbmciLCJjb29yZGluYXRlIiwiZmlsdGVyTnVsbCIsImlzQW5pbWF0aW9uQWN0aXZlIiwib2Zmc2V0IiwicGF5bG9hZCIsInBheWxvYWRVbmlxQnkiLCJwb3NpdGlvbiIsInJldmVyc2VEaXJlY3Rpb24iLCJ1c2VUcmFuc2xhdGUzZCIsInZpZXdCb3giLCJ3cmFwcGVyU3R5bGUiLCJmaW5hbFBheWxvYWQiLCJoaWRlIiwiaW5jbHVkZUhpZGRlbiIsImhhc1BheWxvYWQiLCJhY2Nlc3NpYmlsaXR5TGF5ZXIiLCJ4IiwieSIsImNvbnRlbnRTdHlsZSIsImN1cnNvciIsImN1cnNvclN0eWxlIiwiaXNTc3IiLCJpdGVtU3R5bGUiLCJsYWJlbFN0eWxlIiwic2VwYXJhdG9yIiwidHJpZ2dlciIsImhlaWdodCIsIndpZHRoIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Tooltip.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/TooltipBoundingBox.js":
/*!*******************************************************************!*\
!*** ./node_modules/recharts/es6/component/TooltipBoundingBox.js ***!
\*******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TooltipBoundingBox: () => (/* binding */ TooltipBoundingBox)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_tooltip_translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/tooltip/translate */ \"(ssr)/./node_modules/recharts/es6/util/tooltip/translate.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\nvar EPSILON = 1;\nvar TooltipBoundingBox = /*#__PURE__*/ function(_PureComponent) {\n function TooltipBoundingBox() {\n var _this;\n _classCallCheck(this, TooltipBoundingBox);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, TooltipBoundingBox, [].concat(args));\n _defineProperty(_this, \"state\", {\n dismissed: false,\n dismissedAtCoordinate: {\n x: 0,\n y: 0\n },\n lastBoundingBox: {\n width: -1,\n height: -1\n }\n });\n _defineProperty(_this, \"handleKeyDown\", function(event) {\n if (event.key === 'Escape') {\n var _this$props$coordinat, _this$props$coordinat2, _this$props$coordinat3, _this$props$coordinat4;\n _this.setState({\n dismissed: true,\n dismissedAtCoordinate: {\n x: (_this$props$coordinat = (_this$props$coordinat2 = _this.props.coordinate) === null || _this$props$coordinat2 === void 0 ? void 0 : _this$props$coordinat2.x) !== null && _this$props$coordinat !== void 0 ? _this$props$coordinat : 0,\n y: (_this$props$coordinat3 = (_this$props$coordinat4 = _this.props.coordinate) === null || _this$props$coordinat4 === void 0 ? void 0 : _this$props$coordinat4.y) !== null && _this$props$coordinat3 !== void 0 ? _this$props$coordinat3 : 0\n }\n });\n }\n });\n return _this;\n }\n _inherits(TooltipBoundingBox, _PureComponent);\n return _createClass(TooltipBoundingBox, [\n {\n key: \"updateBBox\",\n value: function updateBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n if (Math.abs(box.width - this.state.lastBoundingBox.width) > EPSILON || Math.abs(box.height - this.state.lastBoundingBox.height) > EPSILON) {\n this.setState({\n lastBoundingBox: {\n width: box.width,\n height: box.height\n }\n });\n }\n } else if (this.state.lastBoundingBox.width !== -1 || this.state.lastBoundingBox.height !== -1) {\n this.setState({\n lastBoundingBox: {\n width: -1,\n height: -1\n }\n });\n }\n }\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('keydown', this.handleKeyDown);\n this.updateBBox();\n }\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this$props$coordinat5, _this$props$coordinat6;\n if (this.props.active) {\n this.updateBBox();\n }\n if (!this.state.dismissed) {\n return;\n }\n if (((_this$props$coordinat5 = this.props.coordinate) === null || _this$props$coordinat5 === void 0 ? void 0 : _this$props$coordinat5.x) !== this.state.dismissedAtCoordinate.x || ((_this$props$coordinat6 = this.props.coordinate) === null || _this$props$coordinat6 === void 0 ? void 0 : _this$props$coordinat6.y) !== this.state.dismissedAtCoordinate.y) {\n this.state.dismissed = false;\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props, active = _this$props.active, allowEscapeViewBox = _this$props.allowEscapeViewBox, animationDuration = _this$props.animationDuration, animationEasing = _this$props.animationEasing, children = _this$props.children, coordinate = _this$props.coordinate, hasPayload = _this$props.hasPayload, isAnimationActive = _this$props.isAnimationActive, offset = _this$props.offset, position = _this$props.position, reverseDirection = _this$props.reverseDirection, useTranslate3d = _this$props.useTranslate3d, viewBox = _this$props.viewBox, wrapperStyle = _this$props.wrapperStyle;\n var _getTooltipTranslate = (0,_util_tooltip_translate__WEBPACK_IMPORTED_MODULE_1__.getTooltipTranslate)({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n offsetTopLeft: offset,\n position: position,\n reverseDirection: reverseDirection,\n tooltipBox: this.state.lastBoundingBox,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox\n }), cssClasses = _getTooltipTranslate.cssClasses, cssProperties = _getTooltipTranslate.cssProperties;\n var outerStyle = _objectSpread(_objectSpread({\n transition: isAnimationActive && active ? \"transform \".concat(animationDuration, \"ms \").concat(animationEasing) : undefined\n }, cssProperties), {}, {\n pointerEvents: 'none',\n visibility: !this.state.dismissed && active && hasPayload ? 'visible' : 'hidden',\n position: 'absolute',\n top: 0,\n left: 0\n }, wrapperStyle);\n return(/*#__PURE__*/ // This element allow listening to the `Escape` key.\n // See https://github.com/recharts/recharts/pull/2925\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n tabIndex: -1,\n className: cssClasses,\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, children));\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9Ub29sdGlwQm91bmRpbmdCb3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0QsRUFBRTtRQUFHLEtBQUtFLE9BQU9hLHlCQUF5QixHQUFHYixPQUFPYyxnQkFBZ0IsQ0FBQ2pCLEdBQUdHLE9BQU9hLHlCQUF5QixDQUFDZCxNQUFNSCxRQUFRSSxPQUFPRCxJQUFJWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJRSxPQUFPZSxjQUFjLENBQUNsQixHQUFHQyxHQUFHRSxPQUFPSSx3QkFBd0IsQ0FBQ0wsR0FBR0Q7UUFBSztJQUFJO0lBQUUsT0FBT0Q7QUFBRztBQUN0YixTQUFTbUIsZ0JBQWdCQyxRQUFRLEVBQUVDLFdBQVc7SUFBSSxJQUFJLENBQUVELENBQUFBLG9CQUFvQkMsV0FBVSxHQUFJO1FBQUUsTUFBTSxJQUFJQyxVQUFVO0lBQXNDO0FBQUU7QUFDeEosU0FBU0Msa0JBQWtCQyxNQUFNLEVBQUVDLEtBQUs7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUQsTUFBTVosTUFBTSxFQUFFYSxJQUFLO1FBQUUsSUFBSUMsYUFBYUYsS0FBSyxDQUFDQyxFQUFFO1FBQUVDLFdBQVduQixVQUFVLEdBQUdtQixXQUFXbkIsVUFBVSxJQUFJO1FBQU9tQixXQUFXQyxZQUFZLEdBQUc7UUFBTSxJQUFJLFdBQVdELFlBQVlBLFdBQVdFLFFBQVEsR0FBRztRQUFNMUIsT0FBT2UsY0FBYyxDQUFDTSxRQUFRTSxlQUFlSCxXQUFXSSxHQUFHLEdBQUdKO0lBQWE7QUFBRTtBQUM1VSxTQUFTSyxhQUFhWCxXQUFXLEVBQUVZLFVBQVUsRUFBRUMsV0FBVztJQUFJLElBQUlELFlBQVlWLGtCQUFrQkYsWUFBWXZCLFNBQVMsRUFBRW1DO0lBQWEsSUFBSUMsYUFBYVgsa0JBQWtCRixhQUFhYTtJQUFjL0IsT0FBT2UsY0FBYyxDQUFDRyxhQUFhLGFBQWE7UUFBRVEsVUFBVTtJQUFNO0lBQUksT0FBT1I7QUFBYTtBQUM1UixTQUFTYyxXQUFXakMsQ0FBQyxFQUFFUixDQUFDLEVBQUVNLENBQUM7SUFBSSxPQUFPTixJQUFJMEMsZ0JBQWdCMUMsSUFBSTJDLDJCQUEyQm5DLEdBQUdvQyw4QkFBOEJDLFFBQVFDLFNBQVMsQ0FBQzlDLEdBQUdNLEtBQUssRUFBRSxFQUFFb0MsZ0JBQWdCbEMsR0FBR0wsV0FBVyxJQUFJSCxFQUFFZ0IsS0FBSyxDQUFDUixHQUFHRjtBQUFLO0FBQzFNLFNBQVNxQywyQkFBMkJJLElBQUksRUFBRUMsSUFBSTtJQUFJLElBQUlBLFFBQVNqRCxDQUFBQSxRQUFRaUQsVUFBVSxZQUFZLE9BQU9BLFNBQVMsVUFBUyxHQUFJO1FBQUUsT0FBT0E7SUFBTSxPQUFPLElBQUlBLFNBQVMsS0FBSyxHQUFHO1FBQUUsTUFBTSxJQUFJcEIsVUFBVTtJQUE2RDtJQUFFLE9BQU9xQix1QkFBdUJGO0FBQU87QUFDL1IsU0FBU0UsdUJBQXVCRixJQUFJO0lBQUksSUFBSUEsU0FBUyxLQUFLLEdBQUc7UUFBRSxNQUFNLElBQUlHLGVBQWU7SUFBOEQ7SUFBRSxPQUFPSDtBQUFNO0FBQ3JLLFNBQVNIO0lBQThCLElBQUk7UUFBRSxJQUFJcEMsSUFBSSxDQUFDMkMsUUFBUS9DLFNBQVMsQ0FBQ2dELE9BQU8sQ0FBQ0osSUFBSSxDQUFDSCxRQUFRQyxTQUFTLENBQUNLLFNBQVMsRUFBRSxFQUFFLFlBQWE7SUFBSyxFQUFFLE9BQU8zQyxHQUFHLENBQUM7SUFBRSxPQUFPLENBQUNvQyw0QkFBNEIsU0FBU0E7UUFBOEIsT0FBTyxDQUFDLENBQUNwQztJQUFHO0FBQU07QUFDbFAsU0FBU2tDLGdCQUFnQjFDLENBQUM7SUFBSTBDLGtCQUFrQmpDLE9BQU80QyxjQUFjLEdBQUc1QyxPQUFPNkMsY0FBYyxDQUFDQyxJQUFJLEtBQUssU0FBU2IsZ0JBQWdCMUMsQ0FBQztRQUFJLE9BQU9BLEVBQUV3RCxTQUFTLElBQUkvQyxPQUFPNkMsY0FBYyxDQUFDdEQ7SUFBSTtJQUFHLE9BQU8wQyxnQkFBZ0IxQztBQUFJO0FBQ25OLFNBQVN5RCxVQUFVQyxRQUFRLEVBQUVDLFVBQVU7SUFBSSxJQUFJLE9BQU9BLGVBQWUsY0FBY0EsZUFBZSxNQUFNO1FBQUUsTUFBTSxJQUFJL0IsVUFBVTtJQUF1RDtJQUFFOEIsU0FBU3RELFNBQVMsR0FBR0ssT0FBT21ELE1BQU0sQ0FBQ0QsY0FBY0EsV0FBV3ZELFNBQVMsRUFBRTtRQUFFRCxhQUFhO1lBQUUwRCxPQUFPSDtZQUFVdkIsVUFBVTtZQUFNRCxjQUFjO1FBQUs7SUFBRTtJQUFJekIsT0FBT2UsY0FBYyxDQUFDa0MsVUFBVSxhQUFhO1FBQUV2QixVQUFVO0lBQU07SUFBSSxJQUFJd0IsWUFBWUcsZ0JBQWdCSixVQUFVQztBQUFhO0FBQ25jLFNBQVNHLGdCQUFnQjlELENBQUMsRUFBRStELENBQUM7SUFBSUQsa0JBQWtCckQsT0FBTzRDLGNBQWMsR0FBRzVDLE9BQU80QyxjQUFjLENBQUNFLElBQUksS0FBSyxTQUFTTyxnQkFBZ0I5RCxDQUFDLEVBQUUrRCxDQUFDO1FBQUkvRCxFQUFFd0QsU0FBUyxHQUFHTztRQUFHLE9BQU8vRDtJQUFHO0lBQUcsT0FBTzhELGdCQUFnQjlELEdBQUcrRDtBQUFJO0FBQ3ZNLFNBQVMxQyxnQkFBZ0IyQyxHQUFHLEVBQUUzQixHQUFHLEVBQUV3QixLQUFLO0lBQUl4QixNQUFNRCxlQUFlQztJQUFNLElBQUlBLE9BQU8yQixLQUFLO1FBQUV2RCxPQUFPZSxjQUFjLENBQUN3QyxLQUFLM0IsS0FBSztZQUFFd0IsT0FBT0E7WUFBTy9DLFlBQVk7WUFBTW9CLGNBQWM7WUFBTUMsVUFBVTtRQUFLO0lBQUksT0FBTztRQUFFNkIsR0FBRyxDQUFDM0IsSUFBSSxHQUFHd0I7SUFBTztJQUFFLE9BQU9HO0FBQUs7QUFDM08sU0FBUzVCLGVBQWU1QixDQUFDO0lBQUksSUFBSXdCLElBQUlpQyxhQUFhekQsR0FBRztJQUFXLE9BQU8sWUFBWVQsUUFBUWlDLEtBQUtBLElBQUlBLElBQUk7QUFBSTtBQUM1RyxTQUFTaUMsYUFBYXpELENBQUMsRUFBRUQsQ0FBQztJQUFJLElBQUksWUFBWVIsUUFBUVMsTUFBTSxDQUFDQSxHQUFHLE9BQU9BO0lBQUcsSUFBSUYsSUFBSUUsQ0FBQyxDQUFDUCxPQUFPaUUsV0FBVyxDQUFDO0lBQUUsSUFBSSxLQUFLLE1BQU01RCxHQUFHO1FBQUUsSUFBSTBCLElBQUkxQixFQUFFMEMsSUFBSSxDQUFDeEMsR0FBR0QsS0FBSztRQUFZLElBQUksWUFBWVIsUUFBUWlDLElBQUksT0FBT0E7UUFBRyxNQUFNLElBQUlKLFVBQVU7SUFBaUQ7SUFBRSxPQUFPLENBQUMsYUFBYXJCLElBQUk0RCxTQUFTQyxNQUFLLEVBQUc1RDtBQUFJO0FBQzlRO0FBQ21CO0FBQ2hFLElBQUlnRSxVQUFVO0FBQ1AsSUFBSUMscUJBQXFCLFdBQVcsR0FBRSxTQUFVQyxjQUFjO0lBQ25FLFNBQVNEO1FBQ1AsSUFBSUU7UUFDSmxELGdCQUFnQixJQUFJLEVBQUVnRDtRQUN0QixJQUFLLElBQUlHLE9BQU8xRCxVQUFVQyxNQUFNLEVBQUUwRCxPQUFPLElBQUlDLE1BQU1GLE9BQU9HLE9BQU8sR0FBR0EsT0FBT0gsTUFBTUcsT0FBUTtZQUN2RkYsSUFBSSxDQUFDRSxLQUFLLEdBQUc3RCxTQUFTLENBQUM2RCxLQUFLO1FBQzlCO1FBQ0FKLFFBQVFsQyxXQUFXLElBQUksRUFBRWdDLG9CQUFvQixFQUFFLENBQUNPLE1BQU0sQ0FBQ0g7UUFDdkR4RCxnQkFBZ0JzRCxPQUFPLFNBQVM7WUFDOUJNLFdBQVc7WUFDWEMsdUJBQXVCO2dCQUNyQkMsR0FBRztnQkFDSEMsR0FBRztZQUNMO1lBQ0FDLGlCQUFpQjtnQkFDZkMsT0FBTyxDQUFDO2dCQUNSQyxRQUFRLENBQUM7WUFDWDtRQUNGO1FBQ0FsRSxnQkFBZ0JzRCxPQUFPLGlCQUFpQixTQUFVYSxLQUFLO1lBQ3JELElBQUlBLE1BQU1uRCxHQUFHLEtBQUssVUFBVTtnQkFDMUIsSUFBSW9ELHVCQUF1QkMsd0JBQXdCQyx3QkFBd0JDO2dCQUMzRWpCLE1BQU1rQixRQUFRLENBQUM7b0JBQ2JaLFdBQVc7b0JBQ1hDLHVCQUF1Qjt3QkFDckJDLEdBQUcsQ0FBQ00sd0JBQXdCLENBQUNDLHlCQUF5QmYsTUFBTTVDLEtBQUssQ0FBQytELFVBQVUsTUFBTSxRQUFRSiwyQkFBMkIsS0FBSyxJQUFJLEtBQUssSUFBSUEsdUJBQXVCUCxDQUFDLE1BQU0sUUFBUU0sMEJBQTBCLEtBQUssSUFBSUEsd0JBQXdCO3dCQUN4T0wsR0FBRyxDQUFDTyx5QkFBeUIsQ0FBQ0MseUJBQXlCakIsTUFBTTVDLEtBQUssQ0FBQytELFVBQVUsTUFBTSxRQUFRRiwyQkFBMkIsS0FBSyxJQUFJLEtBQUssSUFBSUEsdUJBQXVCUixDQUFDLE1BQU0sUUFBUU8sMkJBQTJCLEtBQUssSUFBSUEseUJBQXlCO29CQUM3TztnQkFDRjtZQUNGO1FBQ0Y7UUFDQSxPQUFPaEI7SUFDVDtJQUNBbEIsVUFBVWdCLG9CQUFvQkM7SUFDOUIsT0FBT3BDLGFBQWFtQyxvQkFBb0I7UUFBQztZQUN2Q3BDLEtBQUs7WUFDTHdCLE9BQU8sU0FBU2tDO2dCQUNkLElBQUksSUFBSSxDQUFDQyxXQUFXLElBQUksSUFBSSxDQUFDQSxXQUFXLENBQUNDLHFCQUFxQixFQUFFO29CQUM5RCxJQUFJQyxNQUFNLElBQUksQ0FBQ0YsV0FBVyxDQUFDQyxxQkFBcUI7b0JBQ2hELElBQUlFLEtBQUtDLEdBQUcsQ0FBQ0YsSUFBSVosS0FBSyxHQUFHLElBQUksQ0FBQ2UsS0FBSyxDQUFDaEIsZUFBZSxDQUFDQyxLQUFLLElBQUlkLFdBQVcyQixLQUFLQyxHQUFHLENBQUNGLElBQUlYLE1BQU0sR0FBRyxJQUFJLENBQUNjLEtBQUssQ0FBQ2hCLGVBQWUsQ0FBQ0UsTUFBTSxJQUFJZixTQUFTO3dCQUMxSSxJQUFJLENBQUNxQixRQUFRLENBQUM7NEJBQ1pSLGlCQUFpQjtnQ0FDZkMsT0FBT1ksSUFBSVosS0FBSztnQ0FDaEJDLFFBQVFXLElBQUlYLE1BQU07NEJBQ3BCO3dCQUNGO29CQUNGO2dCQUNGLE9BQU8sSUFBSSxJQUFJLENBQUNjLEtBQUssQ0FBQ2hCLGVBQWUsQ0FBQ0MsS0FBSyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUNlLEtBQUssQ0FBQ2hCLGVBQWUsQ0FBQ0UsTUFBTSxLQUFLLENBQUMsR0FBRztvQkFDOUYsSUFBSSxDQUFDTSxRQUFRLENBQUM7d0JBQ1pSLGlCQUFpQjs0QkFDZkMsT0FBTyxDQUFDOzRCQUNSQyxRQUFRLENBQUM7d0JBQ1g7b0JBQ0Y7Z0JBQ0Y7WUFDRjtRQUNGO1FBQUc7WUFDRGxELEtBQUs7WUFDTHdCLE9BQU8sU0FBU3lDO2dCQUNkQyxTQUFTQyxnQkFBZ0IsQ0FBQyxXQUFXLElBQUksQ0FBQ0MsYUFBYTtnQkFDdkQsSUFBSSxDQUFDVixVQUFVO1lBQ2pCO1FBQ0Y7UUFBRztZQUNEMUQsS0FBSztZQUNMd0IsT0FBTyxTQUFTNkM7Z0JBQ2RILFNBQVNJLG1CQUFtQixDQUFDLFdBQVcsSUFBSSxDQUFDRixhQUFhO1lBQzVEO1FBQ0Y7UUFBRztZQUNEcEUsS0FBSztZQUNMd0IsT0FBTyxTQUFTK0M7Z0JBQ2QsSUFBSUMsd0JBQXdCQztnQkFDNUIsSUFBSSxJQUFJLENBQUMvRSxLQUFLLENBQUNnRixNQUFNLEVBQUU7b0JBQ3JCLElBQUksQ0FBQ2hCLFVBQVU7Z0JBQ2pCO2dCQUNBLElBQUksQ0FBQyxJQUFJLENBQUNNLEtBQUssQ0FBQ3BCLFNBQVMsRUFBRTtvQkFDekI7Z0JBQ0Y7Z0JBQ0EsSUFBSSxDQUFDLENBQUM0Qix5QkFBeUIsSUFBSSxDQUFDOUUsS0FBSyxDQUFDK0QsVUFBVSxNQUFNLFFBQVFlLDJCQUEyQixLQUFLLElBQUksS0FBSyxJQUFJQSx1QkFBdUIxQixDQUFDLE1BQU0sSUFBSSxDQUFDa0IsS0FBSyxDQUFDbkIscUJBQXFCLENBQUNDLENBQUMsSUFBSSxDQUFDLENBQUMyQix5QkFBeUIsSUFBSSxDQUFDL0UsS0FBSyxDQUFDK0QsVUFBVSxNQUFNLFFBQVFnQiwyQkFBMkIsS0FBSyxJQUFJLEtBQUssSUFBSUEsdUJBQXVCMUIsQ0FBQyxNQUFNLElBQUksQ0FBQ2lCLEtBQUssQ0FBQ25CLHFCQUFxQixDQUFDRSxDQUFDLEVBQUU7b0JBQzlWLElBQUksQ0FBQ2lCLEtBQUssQ0FBQ3BCLFNBQVMsR0FBRztnQkFDekI7WUFDRjtRQUNGO1FBQUc7WUFDRDVDLEtBQUs7WUFDTHdCLE9BQU8sU0FBU21EO2dCQUNkLElBQUlDLFNBQVMsSUFBSTtnQkFDakIsSUFBSUMsY0FBYyxJQUFJLENBQUNuRixLQUFLLEVBQzFCZ0YsU0FBU0csWUFBWUgsTUFBTSxFQUMzQkkscUJBQXFCRCxZQUFZQyxrQkFBa0IsRUFDbkRDLG9CQUFvQkYsWUFBWUUsaUJBQWlCLEVBQ2pEQyxrQkFBa0JILFlBQVlHLGVBQWUsRUFDN0NDLFdBQVdKLFlBQVlJLFFBQVEsRUFDL0J4QixhQUFhb0IsWUFBWXBCLFVBQVUsRUFDbkN5QixhQUFhTCxZQUFZSyxVQUFVLEVBQ25DQyxvQkFBb0JOLFlBQVlNLGlCQUFpQixFQUNqREMsU0FBU1AsWUFBWU8sTUFBTSxFQUMzQkMsV0FBV1IsWUFBWVEsUUFBUSxFQUMvQkMsbUJBQW1CVCxZQUFZUyxnQkFBZ0IsRUFDL0NDLGlCQUFpQlYsWUFBWVUsY0FBYyxFQUMzQ0MsVUFBVVgsWUFBWVcsT0FBTyxFQUM3QkMsZUFBZVosWUFBWVksWUFBWTtnQkFDekMsSUFBSUMsdUJBQXVCeEQsNEVBQW1CQSxDQUFDO29CQUMzQzRDLG9CQUFvQkE7b0JBQ3BCckIsWUFBWUE7b0JBQ1prQyxlQUFlUDtvQkFDZkMsVUFBVUE7b0JBQ1ZDLGtCQUFrQkE7b0JBQ2xCTSxZQUFZLElBQUksQ0FBQzVCLEtBQUssQ0FBQ2hCLGVBQWU7b0JBQ3RDdUMsZ0JBQWdCQTtvQkFDaEJDLFNBQVNBO2dCQUNYLElBQ0FLLGFBQWFILHFCQUFxQkcsVUFBVSxFQUM1Q0MsZ0JBQWdCSixxQkFBcUJJLGFBQWE7Z0JBQ3BELElBQUlDLGFBQWFuSCxjQUFjQSxjQUFjO29CQUMzQ29ILFlBQVliLHFCQUFxQlQsU0FBUyxhQUFhL0IsTUFBTSxDQUFDb0MsbUJBQW1CLE9BQU9wQyxNQUFNLENBQUNxQyxtQkFBbUJpQjtnQkFDcEgsR0FBR0gsZ0JBQWdCLENBQUMsR0FBRztvQkFDckJJLGVBQWU7b0JBQ2ZDLFlBQVksQ0FBQyxJQUFJLENBQUNuQyxLQUFLLENBQUNwQixTQUFTLElBQUk4QixVQUFVUSxhQUFhLFlBQVk7b0JBQ3hFRyxVQUFVO29CQUNWZSxLQUFLO29CQUNMQyxNQUFNO2dCQUNSLEdBQUdaO2dCQUNILE9BQ0UsV0FBVyxHQUNYLG9EQUFvRDtnQkFDcEQscURBQXFEO2dCQUNyRHpELDBEQUFtQixDQUFDLE9BQU87b0JBQ3pCdUUsVUFBVSxDQUFDO29CQUNYQyxXQUFXWDtvQkFDWFksT0FBT1Y7b0JBQ1BXLEtBQUssU0FBU0EsSUFBSUMsSUFBSTt3QkFDcEIvQixPQUFPakIsV0FBVyxHQUFHZ0Q7b0JBQ3ZCO2dCQUNGLEdBQUcxQjtZQUVQO1FBQ0Y7S0FBRTtBQUNKLEVBQUVoRCxnREFBYUEsRUFBRSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY29tcG9uZW50L1Rvb2x0aXBCb3VuZGluZ0JveC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIF9jYWxsU3VwZXIodCwgbywgZSkgeyByZXR1cm4gbyA9IF9nZXRQcm90b3R5cGVPZihvKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpID8gUmVmbGVjdC5jb25zdHJ1Y3QobywgZSB8fCBbXSwgX2dldFByb3RvdHlwZU9mKHQpLmNvbnN0cnVjdG9yKSA6IG8uYXBwbHkodCwgZSkpOyB9XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IGVsc2UgaWYgKGNhbGwgIT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgdHJ5IHsgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyB9IGNhdGNoICh0KSB7fSByZXR1cm4gKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyByZXR1cm4gISF0OyB9KSgpOyB9XG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0VG9vbHRpcFRyYW5zbGF0ZSB9IGZyb20gJy4uL3V0aWwvdG9vbHRpcC90cmFuc2xhdGUnO1xudmFyIEVQU0lMT04gPSAxO1xuZXhwb3J0IHZhciBUb29sdGlwQm91bmRpbmdCb3ggPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIFRvb2x0aXBCb3VuZGluZ0JveCgpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRvb2x0aXBCb3VuZGluZ0JveCk7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9jYWxsU3VwZXIodGhpcywgVG9vbHRpcEJvdW5kaW5nQm94LCBbXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJzdGF0ZVwiLCB7XG4gICAgICBkaXNtaXNzZWQ6IGZhbHNlLFxuICAgICAgZGlzbWlzc2VkQXRDb29yZGluYXRlOiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDBcbiAgICAgIH0sXG4gICAgICBsYXN0Qm91bmRpbmdCb3g6IHtcbiAgICAgICAgd2lkdGg6IC0xLFxuICAgICAgICBoZWlnaHQ6IC0xXG4gICAgICB9XG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZUtleURvd25cIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkY29vcmRpbmF0LCBfdGhpcyRwcm9wcyRjb29yZGluYXQyLCBfdGhpcyRwcm9wcyRjb29yZGluYXQzLCBfdGhpcyRwcm9wcyRjb29yZGluYXQ0O1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgZGlzbWlzc2VkOiB0cnVlLFxuICAgICAgICAgIGRpc21pc3NlZEF0Q29vcmRpbmF0ZToge1xuICAgICAgICAgICAgeDogKF90aGlzJHByb3BzJGNvb3JkaW5hdCA9IChfdGhpcyRwcm9wcyRjb29yZGluYXQyID0gX3RoaXMucHJvcHMuY29vcmRpbmF0ZSkgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkY29vcmRpbmF0MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkY29vcmRpbmF0Mi54KSAhPT0gbnVsbCAmJiBfdGhpcyRwcm9wcyRjb29yZGluYXQgIT09IHZvaWQgMCA/IF90aGlzJHByb3BzJGNvb3JkaW5hdCA6IDAsXG4gICAgICAgICAgICB5OiAoX3RoaXMkcHJvcHMkY29vcmRpbmF0MyA9IChfdGhpcyRwcm9wcyRjb29yZGluYXQ0ID0gX3RoaXMucHJvcHMuY29vcmRpbmF0ZSkgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkY29vcmRpbmF0NCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkY29vcmRpbmF0NC55KSAhPT0gbnVsbCAmJiBfdGhpcyRwcm9wcyRjb29yZGluYXQzICE9PSB2b2lkIDAgPyBfdGhpcyRwcm9wcyRjb29yZGluYXQzIDogMFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9pbmhlcml0cyhUb29sdGlwQm91bmRpbmdCb3gsIF9QdXJlQ29tcG9uZW50KTtcbiAgcmV0dXJuIF9jcmVhdGVDbGFzcyhUb29sdGlwQm91bmRpbmdCb3gsIFt7XG4gICAga2V5OiBcInVwZGF0ZUJCb3hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlQkJveCgpIHtcbiAgICAgIGlmICh0aGlzLndyYXBwZXJOb2RlICYmIHRoaXMud3JhcHBlck5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgICAgIHZhciBib3ggPSB0aGlzLndyYXBwZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAoTWF0aC5hYnMoYm94LndpZHRoIC0gdGhpcy5zdGF0ZS5sYXN0Qm91bmRpbmdCb3gud2lkdGgpID4gRVBTSUxPTiB8fCBNYXRoLmFicyhib3guaGVpZ2h0IC0gdGhpcy5zdGF0ZS5sYXN0Qm91bmRpbmdCb3guaGVpZ2h0KSA+IEVQU0lMT04pIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGxhc3RCb3VuZGluZ0JveDoge1xuICAgICAgICAgICAgICB3aWR0aDogYm94LndpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGJveC5oZWlnaHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmxhc3RCb3VuZGluZ0JveC53aWR0aCAhPT0gLTEgfHwgdGhpcy5zdGF0ZS5sYXN0Qm91bmRpbmdCb3guaGVpZ2h0ICE9PSAtMSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBsYXN0Qm91bmRpbmdCb3g6IHtcbiAgICAgICAgICAgIHdpZHRoOiAtMSxcbiAgICAgICAgICAgIGhlaWdodDogLTFcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleURvd24pO1xuICAgICAgdGhpcy51cGRhdGVCQm94KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMkY29vcmRpbmF0NSwgX3RoaXMkcHJvcHMkY29vcmRpbmF0NjtcbiAgICAgIGlmICh0aGlzLnByb3BzLmFjdGl2ZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUJCb3goKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5zdGF0ZS5kaXNtaXNzZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCgoX3RoaXMkcHJvcHMkY29vcmRpbmF0NSA9IHRoaXMucHJvcHMuY29vcmRpbmF0ZSkgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkY29vcmRpbmF0NSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkY29vcmRpbmF0NS54KSAhPT0gdGhpcy5zdGF0ZS5kaXNtaXNzZWRBdENvb3JkaW5hdGUueCB8fCAoKF90aGlzJHByb3BzJGNvb3JkaW5hdDYgPSB0aGlzLnByb3BzLmNvb3JkaW5hdGUpID09PSBudWxsIHx8IF90aGlzJHByb3BzJGNvb3JkaW5hdDYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGNvb3JkaW5hdDYueSkgIT09IHRoaXMuc3RhdGUuZGlzbWlzc2VkQXRDb29yZGluYXRlLnkpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5kaXNtaXNzZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgYWN0aXZlID0gX3RoaXMkcHJvcHMuYWN0aXZlLFxuICAgICAgICBhbGxvd0VzY2FwZVZpZXdCb3ggPSBfdGhpcyRwcm9wcy5hbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gX3RoaXMkcHJvcHMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgIGFuaW1hdGlvbkVhc2luZyA9IF90aGlzJHByb3BzLmFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgY29vcmRpbmF0ZSA9IF90aGlzJHByb3BzLmNvb3JkaW5hdGUsXG4gICAgICAgIGhhc1BheWxvYWQgPSBfdGhpcyRwcm9wcy5oYXNQYXlsb2FkLFxuICAgICAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IF90aGlzJHByb3BzLmlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBvZmZzZXQgPSBfdGhpcyRwcm9wcy5vZmZzZXQsXG4gICAgICAgIHBvc2l0aW9uID0gX3RoaXMkcHJvcHMucG9zaXRpb24sXG4gICAgICAgIHJldmVyc2VEaXJlY3Rpb24gPSBfdGhpcyRwcm9wcy5yZXZlcnNlRGlyZWN0aW9uLFxuICAgICAgICB1c2VUcmFuc2xhdGUzZCA9IF90aGlzJHByb3BzLnVzZVRyYW5zbGF0ZTNkLFxuICAgICAgICB2aWV3Qm94ID0gX3RoaXMkcHJvcHMudmlld0JveCxcbiAgICAgICAgd3JhcHBlclN0eWxlID0gX3RoaXMkcHJvcHMud3JhcHBlclN0eWxlO1xuICAgICAgdmFyIF9nZXRUb29sdGlwVHJhbnNsYXRlID0gZ2V0VG9vbHRpcFRyYW5zbGF0ZSh7XG4gICAgICAgICAgYWxsb3dFc2NhcGVWaWV3Qm94OiBhbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgICAgICAgY29vcmRpbmF0ZTogY29vcmRpbmF0ZSxcbiAgICAgICAgICBvZmZzZXRUb3BMZWZ0OiBvZmZzZXQsXG4gICAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgICAgIHJldmVyc2VEaXJlY3Rpb246IHJldmVyc2VEaXJlY3Rpb24sXG4gICAgICAgICAgdG9vbHRpcEJveDogdGhpcy5zdGF0ZS5sYXN0Qm91bmRpbmdCb3gsXG4gICAgICAgICAgdXNlVHJhbnNsYXRlM2Q6IHVzZVRyYW5zbGF0ZTNkLFxuICAgICAgICAgIHZpZXdCb3g6IHZpZXdCb3hcbiAgICAgICAgfSksXG4gICAgICAgIGNzc0NsYXNzZXMgPSBfZ2V0VG9vbHRpcFRyYW5zbGF0ZS5jc3NDbGFzc2VzLFxuICAgICAgICBjc3NQcm9wZXJ0aWVzID0gX2dldFRvb2x0aXBUcmFuc2xhdGUuY3NzUHJvcGVydGllcztcbiAgICAgIHZhciBvdXRlclN0eWxlID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgdHJhbnNpdGlvbjogaXNBbmltYXRpb25BY3RpdmUgJiYgYWN0aXZlID8gXCJ0cmFuc2Zvcm0gXCIuY29uY2F0KGFuaW1hdGlvbkR1cmF0aW9uLCBcIm1zIFwiKS5jb25jYXQoYW5pbWF0aW9uRWFzaW5nKSA6IHVuZGVmaW5lZFxuICAgICAgfSwgY3NzUHJvcGVydGllcyksIHt9LCB7XG4gICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgdmlzaWJpbGl0eTogIXRoaXMuc3RhdGUuZGlzbWlzc2VkICYmIGFjdGl2ZSAmJiBoYXNQYXlsb2FkID8gJ3Zpc2libGUnIDogJ2hpZGRlbicsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGxlZnQ6IDBcbiAgICAgIH0sIHdyYXBwZXJTdHlsZSk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAgIC8vIFRoaXMgZWxlbWVudCBhbGxvdyBsaXN0ZW5pbmcgdG8gdGhlIGBFc2NhcGVgIGtleS5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWNoYXJ0cy9yZWNoYXJ0cy9wdWxsLzI5MjVcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgIGNsYXNzTmFtZTogY3NzQ2xhc3NlcyxcbiAgICAgICAgICBzdHlsZTogb3V0ZXJTdHlsZSxcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihub2RlKSB7XG4gICAgICAgICAgICBfdGhpczIud3JhcHBlck5vZGUgPSBub2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgY2hpbGRyZW4pXG4gICAgICApO1xuICAgIH1cbiAgfV0pO1xufShQdXJlQ29tcG9uZW50KTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJpIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJjYWxsIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiYmluZCIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiZ2V0VG9vbHRpcFRyYW5zbGF0ZSIsIkVQU0lMT04iLCJUb29sdGlwQm91bmRpbmdCb3giLCJfUHVyZUNvbXBvbmVudCIsIl90aGlzIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJkaXNtaXNzZWQiLCJkaXNtaXNzZWRBdENvb3JkaW5hdGUiLCJ4IiwieSIsImxhc3RCb3VuZGluZ0JveCIsIndpZHRoIiwiaGVpZ2h0IiwiZXZlbnQiLCJfdGhpcyRwcm9wcyRjb29yZGluYXQiLCJfdGhpcyRwcm9wcyRjb29yZGluYXQyIiwiX3RoaXMkcHJvcHMkY29vcmRpbmF0MyIsIl90aGlzJHByb3BzJGNvb3JkaW5hdDQiLCJzZXRTdGF0ZSIsImNvb3JkaW5hdGUiLCJ1cGRhdGVCQm94Iiwid3JhcHBlck5vZGUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3giLCJNYXRoIiwiYWJzIiwic3RhdGUiLCJjb21wb25lbnREaWRNb3VudCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImhhbmRsZUtleURvd24iLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwcm9wcyRjb29yZGluYXQ1IiwiX3RoaXMkcHJvcHMkY29vcmRpbmF0NiIsImFjdGl2ZSIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHByb3BzIiwiYWxsb3dFc2NhcGVWaWV3Qm94IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJhbmltYXRpb25FYXNpbmciLCJjaGlsZHJlbiIsImhhc1BheWxvYWQiLCJpc0FuaW1hdGlvbkFjdGl2ZSIsIm9mZnNldCIsInBvc2l0aW9uIiwicmV2ZXJzZURpcmVjdGlvbiIsInVzZVRyYW5zbGF0ZTNkIiwidmlld0JveCIsIndyYXBwZXJTdHlsZSIsIl9nZXRUb29sdGlwVHJhbnNsYXRlIiwib2Zmc2V0VG9wTGVmdCIsInRvb2x0aXBCb3giLCJjc3NDbGFzc2VzIiwiY3NzUHJvcGVydGllcyIsIm91dGVyU3R5bGUiLCJ0cmFuc2l0aW9uIiwidW5kZWZpbmVkIiwicG9pbnRlckV2ZW50cyIsInZpc2liaWxpdHkiLCJ0b3AiLCJsZWZ0IiwiY3JlYXRlRWxlbWVudCIsInRhYkluZGV4IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJyZWYiLCJub2RlIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/TooltipBoundingBox.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/container/Layer.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/container/Layer.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Layer: () => (/* binding */ Layer)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nvar _excluded = [\n \"children\",\n \"className\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\n\n\nvar Layer = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().forwardRef(function(props, ref) {\n var children = props.children, className = props.className, others = _objectWithoutProperties(props, _excluded);\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('recharts-layer', className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", _extends({\n className: layerClass\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, true), {\n ref: ref\n }), children);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbnRhaW5lci9MYXllci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUlBLFlBQVk7SUFBQztJQUFZO0NBQVk7QUFDekMsU0FBU0M7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTYSxLQUFLLENBQUMsSUFBSSxFQUFFUDtBQUFZO0FBQ2xWLFNBQVNRLHlCQUF5Qk4sTUFBTSxFQUFFTyxRQUFRO0lBQUksSUFBSVAsVUFBVSxNQUFNLE9BQU8sQ0FBQztJQUFHLElBQUlKLFNBQVNZLDhCQUE4QlIsUUFBUU87SUFBVyxJQUFJTixLQUFLSjtJQUFHLElBQUlKLE9BQU9nQixxQkFBcUIsRUFBRTtRQUFFLElBQUlDLG1CQUFtQmpCLE9BQU9nQixxQkFBcUIsQ0FBQ1Q7UUFBUyxJQUFLSCxJQUFJLEdBQUdBLElBQUlhLGlCQUFpQlgsTUFBTSxFQUFFRixJQUFLO1lBQUVJLE1BQU1TLGdCQUFnQixDQUFDYixFQUFFO1lBQUUsSUFBSVUsU0FBU0ksT0FBTyxDQUFDVixRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNSLE9BQU9TLFNBQVMsQ0FBQ1Usb0JBQW9CLENBQUNSLElBQUksQ0FBQ0osUUFBUUMsTUFBTTtZQUFVTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO1FBQUU7SUFBRTtJQUFFLE9BQU9MO0FBQVE7QUFDM2UsU0FBU1ksOEJBQThCUixNQUFNLEVBQUVPLFFBQVE7SUFBSSxJQUFJUCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUosU0FBUyxDQUFDO0lBQUcsSUFBSyxJQUFJSyxPQUFPRCxPQUFRO1FBQUUsSUFBSVAsT0FBT1MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ0osUUFBUUMsTUFBTTtZQUFFLElBQUlNLFNBQVNJLE9BQU8sQ0FBQ1YsUUFBUSxHQUFHO1lBQVVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7UUFBRTtJQUFFO0lBQUUsT0FBT0w7QUFBUTtBQUM1UDtBQUNGO0FBQ3lCO0FBQzFDLElBQUlvQixRQUFRLFdBQVcsR0FBRUgsdURBQWdCLENBQUMsU0FBVUssS0FBSyxFQUFFQyxHQUFHO0lBQ25FLElBQUlDLFdBQVdGLE1BQU1FLFFBQVEsRUFDM0JDLFlBQVlILE1BQU1HLFNBQVMsRUFDM0JDLFNBQVNoQix5QkFBeUJZLE9BQU8zQjtJQUMzQyxJQUFJZ0MsYUFBYVQsZ0RBQUlBLENBQUMsa0JBQWtCTztJQUN4QyxPQUFPLFdBQVcsR0FBRVIsMERBQW1CLENBQUMsS0FBS3JCLFNBQVM7UUFDcEQ2QixXQUFXRTtJQUNiLEdBQUdSLDZEQUFXQSxDQUFDTyxRQUFRLE9BQU87UUFDNUJILEtBQUtBO0lBQ1AsSUFBSUM7QUFDTixHQUFHIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb250YWluZXIvTGF5ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCJdO1xuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuZXhwb3J0IHZhciBMYXllciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCk7XG4gIHZhciBsYXllckNsYXNzID0gY2xzeCgncmVjaGFydHMtbGF5ZXInLCBjbGFzc05hbWUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3NcbiAgfSwgZmlsdGVyUHJvcHMob3RoZXJzLCB0cnVlKSwge1xuICAgIHJlZjogcmVmXG4gIH0pLCBjaGlsZHJlbik7XG59KTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJSZWFjdCIsImNsc3giLCJmaWx0ZXJQcm9wcyIsIkxheWVyIiwiZm9yd2FyZFJlZiIsInByb3BzIiwicmVmIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJvdGhlcnMiLCJsYXllckNsYXNzIiwiY3JlYXRlRWxlbWVudCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/container/Layer.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/container/Surface.js":
/*!********************************************************!*\
!*** ./node_modules/recharts/es6/container/Surface.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Surface: () => (/* binding */ Surface)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nvar _excluded = [\n \"children\",\n \"width\",\n \"height\",\n \"viewBox\",\n \"className\",\n \"style\",\n \"title\",\n \"desc\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n/**\n * @fileOverview Surface\n */ \n\n\nfunction Surface(props) {\n var children = props.children, width = props.width, height = props.height, viewBox = props.viewBox, className = props.className, style = props.style, title = props.title, desc = props.desc, others = _objectWithoutProperties(props, _excluded);\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('recharts-surface', className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, true, 'svg'), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height)\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"title\", null, title), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"desc\", null, desc), children);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbnRhaW5lci9TdXJmYWNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0lBQVk7SUFBUztJQUFVO0lBQVc7SUFBYTtJQUFTO0lBQVM7Q0FBTztBQUNqRyxTQUFTQztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9TLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNhLEtBQUssQ0FBQyxJQUFJLEVBQUVQO0FBQVk7QUFDbFYsU0FBU1EseUJBQXlCTixNQUFNLEVBQUVPLFFBQVE7SUFBSSxJQUFJUCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUosU0FBU1ksOEJBQThCUixRQUFRTztJQUFXLElBQUlOLEtBQUtKO0lBQUcsSUFBSUosT0FBT2dCLHFCQUFxQixFQUFFO1FBQUUsSUFBSUMsbUJBQW1CakIsT0FBT2dCLHFCQUFxQixDQUFDVDtRQUFTLElBQUtILElBQUksR0FBR0EsSUFBSWEsaUJBQWlCWCxNQUFNLEVBQUVGLElBQUs7WUFBRUksTUFBTVMsZ0JBQWdCLENBQUNiLEVBQUU7WUFBRSxJQUFJVSxTQUFTSSxPQUFPLENBQUNWLFFBQVEsR0FBRztZQUFVLElBQUksQ0FBQ1IsT0FBT1MsU0FBUyxDQUFDVSxvQkFBb0IsQ0FBQ1IsSUFBSSxDQUFDSixRQUFRQyxNQUFNO1lBQVVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7UUFBRTtJQUFFO0lBQUUsT0FBT0w7QUFBUTtBQUMzZSxTQUFTWSw4QkFBOEJSLE1BQU0sRUFBRU8sUUFBUTtJQUFJLElBQUlQLFVBQVUsTUFBTSxPQUFPLENBQUM7SUFBRyxJQUFJSixTQUFTLENBQUM7SUFBRyxJQUFLLElBQUlLLE9BQU9ELE9BQVE7UUFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO1lBQUUsSUFBSU0sU0FBU0ksT0FBTyxDQUFDVixRQUFRLEdBQUc7WUFBVUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtRQUFFO0lBQUU7SUFBRSxPQUFPTDtBQUFRO0FBQ3RSOztDQUVDLEdBQ3lCO0FBQ0Y7QUFDeUI7QUFDMUMsU0FBU29CLFFBQVFDLEtBQUs7SUFDM0IsSUFBSUMsV0FBV0QsTUFBTUMsUUFBUSxFQUMzQkMsUUFBUUYsTUFBTUUsS0FBSyxFQUNuQkMsU0FBU0gsTUFBTUcsTUFBTSxFQUNyQkMsVUFBVUosTUFBTUksT0FBTyxFQUN2QkMsWUFBWUwsTUFBTUssU0FBUyxFQUMzQkMsUUFBUU4sTUFBTU0sS0FBSyxFQUNuQkMsUUFBUVAsTUFBTU8sS0FBSyxFQUNuQkMsT0FBT1IsTUFBTVEsSUFBSSxFQUNqQkMsU0FBU3BCLHlCQUF5QlcsT0FBTzFCO0lBQzNDLElBQUlvQyxVQUFVTixXQUFXO1FBQ3ZCRixPQUFPQTtRQUNQQyxRQUFRQTtRQUNSUSxHQUFHO1FBQ0hDLEdBQUc7SUFDTDtJQUNBLElBQUlDLGFBQWFoQixnREFBSUEsQ0FBQyxvQkFBb0JRO0lBQzFDLE9BQU8sV0FBVyxHQUFFVCwwREFBbUIsQ0FBQyxPQUFPckIsU0FBUyxDQUFDLEdBQUd1Qiw2REFBV0EsQ0FBQ1csUUFBUSxNQUFNLFFBQVE7UUFDNUZKLFdBQVdRO1FBQ1hYLE9BQU9BO1FBQ1BDLFFBQVFBO1FBQ1JHLE9BQU9BO1FBQ1BGLFNBQVMsR0FBR1csTUFBTSxDQUFDTCxRQUFRQyxDQUFDLEVBQUUsS0FBS0ksTUFBTSxDQUFDTCxRQUFRRSxDQUFDLEVBQUUsS0FBS0csTUFBTSxDQUFDTCxRQUFRUixLQUFLLEVBQUUsS0FBS2EsTUFBTSxDQUFDTCxRQUFRUCxNQUFNO0lBQzVHLElBQUksV0FBVyxHQUFFUCwwREFBbUIsQ0FBQyxTQUFTLE1BQU1XLFFBQVEsV0FBVyxHQUFFWCwwREFBbUIsQ0FBQyxRQUFRLE1BQU1ZLE9BQU9QO0FBQ3BIIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb250YWluZXIvU3VyZmFjZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJ3aWR0aFwiLCBcImhlaWdodFwiLCBcInZpZXdCb3hcIiwgXCJjbGFzc05hbWVcIiwgXCJzdHlsZVwiLCBcInRpdGxlXCIsIFwiZGVzY1wiXTtcbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBTdXJmYWNlXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmV4cG9ydCBmdW5jdGlvbiBTdXJmYWNlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgIHZpZXdCb3ggPSBwcm9wcy52aWV3Qm94LFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICBzdHlsZSA9IHByb3BzLnN0eWxlLFxuICAgIHRpdGxlID0gcHJvcHMudGl0bGUsXG4gICAgZGVzYyA9IHByb3BzLmRlc2MsXG4gICAgb3RoZXJzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQpO1xuICB2YXIgc3ZnVmlldyA9IHZpZXdCb3ggfHwge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbiAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1zdXJmYWNlJywgY2xhc3NOYW1lKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhvdGhlcnMsIHRydWUsICdzdmcnKSwge1xuICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzcyxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgc3R5bGU6IHN0eWxlLFxuICAgIHZpZXdCb3g6IFwiXCIuY29uY2F0KHN2Z1ZpZXcueCwgXCIgXCIpLmNvbmNhdChzdmdWaWV3LnksIFwiIFwiKS5jb25jYXQoc3ZnVmlldy53aWR0aCwgXCIgXCIpLmNvbmNhdChzdmdWaWV3LmhlaWdodClcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGl0bGVcIiwgbnVsbCwgdGl0bGUpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRlc2NcIiwgbnVsbCwgZGVzYyksIGNoaWxkcmVuKTtcbn0iXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJSZWFjdCIsImNsc3giLCJmaWx0ZXJQcm9wcyIsIlN1cmZhY2UiLCJwcm9wcyIsImNoaWxkcmVuIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJ0aXRsZSIsImRlc2MiLCJvdGhlcnMiLCJzdmdWaWV3IiwieCIsInkiLCJsYXllckNsYXNzIiwiY3JlYXRlRWxlbWVudCIsImNvbmNhdCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/container/Surface.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js":
/*!*****************************************************************!*\
!*** ./node_modules/recharts/es6/context/chartLayoutContext.js ***!
\*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ChartHeightContext: () => (/* binding */ ChartHeightContext),\n/* harmony export */ ChartLayoutContextProvider: () => (/* binding */ ChartLayoutContextProvider),\n/* harmony export */ ChartWidthContext: () => (/* binding */ ChartWidthContext),\n/* harmony export */ ClipPathIdContext: () => (/* binding */ ClipPathIdContext),\n/* harmony export */ OffsetContext: () => (/* binding */ OffsetContext),\n/* harmony export */ ViewBoxContext: () => (/* binding */ ViewBoxContext),\n/* harmony export */ XAxisContext: () => (/* binding */ XAxisContext),\n/* harmony export */ YAxisContext: () => (/* binding */ YAxisContext),\n/* harmony export */ useArbitraryXAxis: () => (/* binding */ useArbitraryXAxis),\n/* harmony export */ useArbitraryYAxis: () => (/* binding */ useArbitraryYAxis),\n/* harmony export */ useChartHeight: () => (/* binding */ useChartHeight),\n/* harmony export */ useChartWidth: () => (/* binding */ useChartWidth),\n/* harmony export */ useClipPathId: () => (/* binding */ useClipPathId),\n/* harmony export */ useOffset: () => (/* binding */ useOffset),\n/* harmony export */ useViewBox: () => (/* binding */ useViewBox),\n/* harmony export */ useXAxisOrThrow: () => (/* binding */ useXAxisOrThrow),\n/* harmony export */ useYAxisOrThrow: () => (/* binding */ useYAxisOrThrow),\n/* harmony export */ useYAxisWithFiniteDomainOrRandom: () => (/* binding */ useYAxisWithFiniteDomainOrRandom)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tiny-invariant */ \"(ssr)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/find */ \"(ssr)/./node_modules/lodash/find.js\");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_find__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_every__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/every */ \"(ssr)/./node_modules/lodash/every.js\");\n/* harmony import */ var lodash_every__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_every__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _util_calculateViewBox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/calculateViewBox */ \"(ssr)/./node_modules/recharts/es6/util/calculateViewBox.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\n\n\n\n\n\nvar XAxisContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);\nvar YAxisContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);\nvar ViewBoxContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);\nvar OffsetContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({});\nvar ClipPathIdContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);\nvar ChartHeightContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(0);\nvar ChartWidthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(0);\n/**\n * Will add all the properties required to render all individual Recharts components into a React Context.\n *\n * If you want to read these properties, see the collection of hooks exported from this file.\n *\n * @param {object} props CategoricalChartState, plus children\n * @returns {ReactElement} React Context Provider\n */ var ChartLayoutContextProvider = function ChartLayoutContextProvider(props) {\n var _props$state = props.state, xAxisMap = _props$state.xAxisMap, yAxisMap = _props$state.yAxisMap, offset = _props$state.offset, clipPathId = props.clipPathId, children = props.children, width = props.width, height = props.height;\n /**\n * Perhaps we should compute this property when reading? Let's see what is more often used\n */ var viewBox = (0,_util_calculateViewBox__WEBPACK_IMPORTED_MODULE_4__.calculateViewBox)(offset);\n /*\n * This pretends to be a single context but actually is split into multiple smaller ones.\n * Why?\n * Because one React Context only allows to set one value.\n * But we need to set multiple values.\n * If we do that with one context, then we force re-render on components that might not even be interested\n * in the part of the state that has changed.\n *\n * By splitting into smaller contexts, we allow each components to be optimized and only re-render when its dependencies change.\n *\n * To actually achieve the optimal re-render, it is necessary to use React.memo().\n * See the test file for details.\n */ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(XAxisContext.Provider, {\n value: xAxisMap\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(YAxisContext.Provider, {\n value: yAxisMap\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(OffsetContext.Provider, {\n value: offset\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ViewBoxContext.Provider, {\n value: viewBox\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ClipPathIdContext.Provider, {\n value: clipPathId\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ChartHeightContext.Provider, {\n value: height\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ChartWidthContext.Provider, {\n value: width\n }, children)))))));\n};\nvar useClipPathId = function useClipPathId() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ClipPathIdContext);\n};\nfunction getKeysForDebug(object) {\n var keys = Object.keys(object);\n if (keys.length === 0) {\n return 'There are no available ids.';\n }\n return \"Available ids are: \".concat(keys, \".\");\n}\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param xAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as <XAxis id='foo' />\n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */ var useXAxisOrThrow = function useXAxisOrThrow(xAxisId) {\n var xAxisMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(XAxisContext);\n !(xAxisMap != null) ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?') : 0 : void 0;\n var xAxis = xAxisMap[xAxisId];\n !(xAxis != null) ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, \"Could not find xAxis by id \\\"\".concat(xAxisId, \"\\\" [\").concat(_typeof(xAxisId), \"]. \").concat(getKeysForDebug(xAxisMap))) : 0 : void 0;\n return xAxis;\n};\n/**\n * This will find an arbitrary first XAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific XAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns X axisOptions, or undefined - if there are no X axes\n */ var useArbitraryXAxis = function useArbitraryXAxis() {\n var xAxisMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(XAxisContext);\n return (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.getAnyElementOfObject)(xAxisMap);\n};\n/**\n * This will find an arbitrary first YAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific YAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns Y axisOptions, or undefined - if there are no Y axes\n */ var useArbitraryYAxis = function useArbitraryYAxis() {\n var yAxisMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(YAxisContext);\n return (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.getAnyElementOfObject)(yAxisMap);\n};\n/**\n * This hooks will:\n * 1st attempt to find an YAxis that has all elements in its domain finite\n * If no such axis exists, it will return an arbitrary YAxis\n * if there are no Y axes then it returns undefined\n *\n * @returns Either Y axisOptions, or undefined if there are no Y axes\n */ var useYAxisWithFiniteDomainOrRandom = function useYAxisWithFiniteDomainOrRandom() {\n var yAxisMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(YAxisContext);\n var yAxisWithFiniteDomain = lodash_find__WEBPACK_IMPORTED_MODULE_2___default()(yAxisMap, function(axis) {\n return lodash_every__WEBPACK_IMPORTED_MODULE_3___default()(axis.domain, Number.isFinite);\n });\n return yAxisWithFiniteDomain || (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.getAnyElementOfObject)(yAxisMap);\n};\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param yAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as <YAxis id='foo' />\n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */ var useYAxisOrThrow = function useYAxisOrThrow(yAxisId) {\n var yAxisMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(YAxisContext);\n !(yAxisMap != null) ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?') : 0 : void 0;\n var yAxis = yAxisMap[yAxisId];\n !(yAxis != null) ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, \"Could not find yAxis by id \\\"\".concat(yAxisId, \"\\\" [\").concat(_typeof(yAxisId), \"]. \").concat(getKeysForDebug(yAxisMap))) : 0 : void 0;\n return yAxis;\n};\nvar useViewBox = function useViewBox() {\n var viewBox = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ViewBoxContext);\n return viewBox;\n};\nvar useOffset = function useOffset() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(OffsetContext);\n};\nvar useChartWidth = function useChartWidth() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ChartWidthContext);\n};\nvar useChartHeight = function useChartHeight() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ChartHeightContext);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbnRleHQvY2hhcnRMYXlvdXRDb250ZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUNwUTtBQUNsQjtBQUNSO0FBQ0U7QUFDMkI7QUFDRjtBQUNuRCxJQUFJYSxlQUFlLFdBQVcsR0FBRVAsb0RBQWFBLENBQUNRLFdBQVc7QUFDekQsSUFBSUMsZUFBZSxXQUFXLEdBQUVULG9EQUFhQSxDQUFDUSxXQUFXO0FBQ3pELElBQUlFLGlCQUFpQixXQUFXLEdBQUVWLG9EQUFhQSxDQUFDUSxXQUFXO0FBQzNELElBQUlHLGdCQUFnQixXQUFXLEdBQUVYLG9EQUFhQSxDQUFDLENBQUMsR0FBRztBQUNuRCxJQUFJWSxvQkFBb0IsV0FBVyxHQUFFWixvREFBYUEsQ0FBQ1EsV0FBVztBQUM5RCxJQUFJSyxxQkFBcUIsV0FBVyxHQUFFYixvREFBYUEsQ0FBQyxHQUFHO0FBQ3ZELElBQUljLG9CQUFvQixXQUFXLEdBQUVkLG9EQUFhQSxDQUFDLEdBQUc7QUFFN0Q7Ozs7Ozs7Q0FPQyxHQUNNLElBQUllLDZCQUE2QixTQUFTQSwyQkFBMkJDLEtBQUs7SUFDL0UsSUFBSUMsZUFBZUQsTUFBTUUsS0FBSyxFQUM1QkMsV0FBV0YsYUFBYUUsUUFBUSxFQUNoQ0MsV0FBV0gsYUFBYUcsUUFBUSxFQUNoQ0MsU0FBU0osYUFBYUksTUFBTSxFQUM1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VyxDQUFBQSxZQUFZLElBQUcsSUFBS21CLEtBQXFDLEdBQUdyQywwREFBU0EsQ0FBQyxPQUFPLHlHQUF5R0EsQ0FBZ0IsR0FBRyxLQUFLO0lBQ2hOLElBQUlpRCxRQUFRL0IsUUFBUSxDQUFDOEIsUUFBUTtJQUM3QixDQUFFQyxDQUFBQSxTQUFTLElBQUcsSUFBS1osS0FBcUMsR0FBR3JDLDBEQUFTQSxDQUFDLE9BQU8sZ0NBQWdDa0MsTUFBTSxDQUFDYyxTQUFTLFFBQVFkLE1BQU0sQ0FBQzNDLFFBQVF5RCxVQUFVLE9BQU9kLE1BQU0sQ0FBQ0wsZ0JBQWdCWCxjQUFjbEIsQ0FBZ0IsR0FBRyxLQUFLO0lBQ2pPLE9BQU9pRDtBQUNULEVBQUU7QUFDSyxJQUFJQyxhQUFhLFNBQVNBO0lBQy9CLElBQUkxQixVQUFVekIsaURBQVVBLENBQUNTO0lBQ3pCLE9BQU9nQjtBQUNULEVBQUU7QUFDSyxJQUFJMkIsWUFBWSxTQUFTQTtJQUM5QixPQUFPcEQsaURBQVVBLENBQUNVO0FBQ3BCLEVBQUU7QUFDSyxJQUFJMkMsZ0JBQWdCLFNBQVNBO0lBQ2xDLE9BQU9yRCxpREFBVUEsQ0FBQ2E7QUFDcEIsRUFBRTtBQUNLLElBQUl5QyxpQkFBaUIsU0FBU0E7SUFDbkMsT0FBT3RELGlEQUFVQSxDQUFDWTtBQUNwQixFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb250ZXh0L2NoYXJ0TGF5b3V0Q29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5pbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSAndGlueS1pbnZhcmlhbnQnO1xuaW1wb3J0IGZpbmQgZnJvbSAnbG9kYXNoL2ZpbmQnO1xuaW1wb3J0IGV2ZXJ5IGZyb20gJ2xvZGFzaC9ldmVyeSc7XG5pbXBvcnQgeyBjYWxjdWxhdGVWaWV3Qm94IH0gZnJvbSAnLi4vdXRpbC9jYWxjdWxhdGVWaWV3Qm94JztcbmltcG9ydCB7IGdldEFueUVsZW1lbnRPZk9iamVjdCB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmV4cG9ydCB2YXIgWEF4aXNDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcbmV4cG9ydCB2YXIgWUF4aXNDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcbmV4cG9ydCB2YXIgVmlld0JveENvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dCh1bmRlZmluZWQpO1xuZXhwb3J0IHZhciBPZmZzZXRDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQoe30pO1xuZXhwb3J0IHZhciBDbGlwUGF0aElkQ29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG5leHBvcnQgdmFyIENoYXJ0SGVpZ2h0Q29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KDApO1xuZXhwb3J0IHZhciBDaGFydFdpZHRoQ29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KDApO1xuXG4vKipcbiAqIFdpbGwgYWRkIGFsbCB0aGUgcHJvcGVydGllcyByZXF1aXJlZCB0byByZW5kZXIgYWxsIGluZGl2aWR1YWwgUmVjaGFydHMgY29tcG9uZW50cyBpbnRvIGEgUmVhY3QgQ29udGV4dC5cbiAqXG4gKiBJZiB5b3Ugd2FudCB0byByZWFkIHRoZXNlIHByb3BlcnRpZXMsIHNlZSB0aGUgY29sbGVjdGlvbiBvZiBob29rcyBleHBvcnRlZCBmcm9tIHRoaXMgZmlsZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgQ2F0ZWdvcmljYWxDaGFydFN0YXRlLCBwbHVzIGNoaWxkcmVuXG4gKiBAcmV0dXJucyB7UmVhY3RFbGVtZW50fSBSZWFjdCBDb250ZXh0IFByb3ZpZGVyXG4gKi9cbmV4cG9ydCB2YXIgQ2hhcnRMYXlvdXRDb250ZXh0UHJvdmlkZXIgPSBmdW5jdGlvbiBDaGFydExheW91dENvbnRleHRQcm92aWRlcihwcm9wcykge1xuICB2YXIgX3Byb3BzJHN0YXRlID0gcHJvcHMuc3RhdGUsXG4gICAgeEF4aXNNYXAgPSBfcHJvcHMkc3RhdGUueEF4aXNNYXAsXG4gICAgeUF4aXNNYXAgPSBfcHJvcHMkc3RhdGUueUF4aXNNYXAsXG4gICAgb2Zmc2V0ID0gX3Byb3BzJHN0YXRlLm9mZnNldCxcbiAgICBjbGlwUGF0aElkID0gcHJvcHMuY2xpcFBhdGhJZCxcbiAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0O1xuXG4gIC8qKlxuICAgKiBQZXJoYXBzIHdlIHNob3VsZCBjb21wdXRlIHRoaXMgcHJvcGVydHkgd2hlbiByZWFkaW5nPyBMZXQncyBzZWUgd2hhdCBpcyBtb3JlIG9mdGVuIHVzZWRcbiAgICovXG4gIHZhciB2aWV3Qm94ID0gY2FsY3VsYXRlVmlld0JveChvZmZzZXQpO1xuXG4gIC8qXG4gICAqIFRoaXMgcHJldGVuZHMgdG8gYmUgYSBzaW5nbGUgY29udGV4dCBidXQgYWN0dWFsbHkgaXMgc3BsaXQgaW50byBtdWx0aXBsZSBzbWFsbGVyIG9uZXMuXG4gICAqIFdoeT9cbiAgICogQmVjYXVzZSBvbmUgUmVhY3QgQ29udGV4dCBvbmx5IGFsbG93cyB0byBzZXQgb25lIHZhbHVlLlxuICAgKiBCdXQgd2UgbmVlZCB0byBzZXQgbXVsdGlwbGUgdmFsdWVzLlxuICAgKiBJZiB3ZSBkbyB0aGF0IHdpdGggb25lIGNvbnRleHQsIHRoZW4gd2UgZm9yY2UgcmUtcmVuZGVyIG9uIGNvbXBvbmVudHMgdGhhdCBtaWdodCBub3QgZXZlbiBiZSBpbnRlcmVzdGVkXG4gICAqIGluIHRoZSBwYXJ0IG9mIHRoZSBzdGF0ZSB0aGF0IGhhcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBCeSBzcGxpdHRpbmcgaW50byBzbWFsbGVyIGNvbnRleHRzLCB3ZSBhbGxvdyBlYWNoIGNvbXBvbmVudHMgdG8gYmUgb3B0aW1pemVkIGFuZCBvbmx5IHJlLXJlbmRlciB3aGVuIGl0cyBkZXBlbmRlbmNpZXMgY2hhbmdlLlxuICAgKlxuICAgKiBUbyBhY3R1YWxseSBhY2hpZXZlIHRoZSBvcHRpbWFsIHJlLXJlbmRlciwgaXQgaXMgbmVjZXNzYXJ5IHRvIHVzZSBSZWFjdC5tZW1vKCkuXG4gICAqIFNlZSB0aGUgdGVzdCBmaWxlIGZvciBkZXRhaWxzLlxuICAgKi9cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFhBeGlzQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiB4QXhpc01hcFxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChZQXhpc0NvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogeUF4aXNNYXBcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoT2Zmc2V0Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBvZmZzZXRcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVmlld0JveENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogdmlld0JveFxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDbGlwUGF0aElkQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjbGlwUGF0aElkXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENoYXJ0SGVpZ2h0Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBoZWlnaHRcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hhcnRXaWR0aENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogd2lkdGhcbiAgfSwgY2hpbGRyZW4pKSkpKSkpO1xufTtcbmV4cG9ydCB2YXIgdXNlQ2xpcFBhdGhJZCA9IGZ1bmN0aW9uIHVzZUNsaXBQYXRoSWQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KENsaXBQYXRoSWRDb250ZXh0KTtcbn07XG5mdW5jdGlvbiBnZXRLZXlzRm9yRGVidWcob2JqZWN0KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdUaGVyZSBhcmUgbm8gYXZhaWxhYmxlIGlkcy4nO1xuICB9XG4gIHJldHVybiBcIkF2YWlsYWJsZSBpZHMgYXJlOiBcIi5jb25jYXQoa2V5cywgXCIuXCIpO1xufVxuXG4vKipcbiAqIFRoaXMgZWl0aGVyIGZpbmRzIGFuZCByZXR1cm5zIEF4aXMgYnkgdGhlIHNwZWNpZmllZCBJRCwgb3IgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBhbiBheGlzIHdpdGggdGhpcyBJRCBkb2VzIG5vdCBleGlzdC5cbiAqXG4gKiBAcGFyYW0geEF4aXNJZCBpZGVudGlmaWVyIG9mIHRoZSBheGlzIC0gaXQncyBlaXRoZXIgYXV0b2dlbmVyYXRlZCAoJzAnKSwgb3IgcGFzc2VkIHZpYSBgaWRgIHByb3AgYXMgPFhBeGlzIGlkPSdmb28nIC8+XG4gKiBAcmV0dXJucyBheGlzIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gKiBAdGhyb3dzIEVycm9yIGlmIG5vIGF4aXMgd2l0aCB0aGlzIElEIGV4aXN0c1xuICovXG5leHBvcnQgdmFyIHVzZVhBeGlzT3JUaHJvdyA9IGZ1bmN0aW9uIHVzZVhBeGlzT3JUaHJvdyh4QXhpc0lkKSB7XG4gIHZhciB4QXhpc01hcCA9IHVzZUNvbnRleHQoWEF4aXNDb250ZXh0KTtcbiAgISh4QXhpc01hcCAhPSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0NvdWxkIG5vdCBmaW5kIFJlY2hhcnRzIGNvbnRleHQ7IGFyZSB5b3Ugc3VyZSB0aGlzIGlzIHJlbmRlcmVkIGluc2lkZSBhIFJlY2hhcnRzIHdyYXBwZXIgY29tcG9uZW50PycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgdmFyIHhBeGlzID0geEF4aXNNYXBbeEF4aXNJZF07XG4gICEoeEF4aXMgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIFwiQ291bGQgbm90IGZpbmQgeEF4aXMgYnkgaWQgXFxcIlwiLmNvbmNhdCh4QXhpc0lkLCBcIlxcXCIgW1wiKS5jb25jYXQoX3R5cGVvZih4QXhpc0lkKSwgXCJdLiBcIikuY29uY2F0KGdldEtleXNGb3JEZWJ1Zyh4QXhpc01hcCkpKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHJldHVybiB4QXhpcztcbn07XG5cbi8qKlxuICogVGhpcyB3aWxsIGZpbmQgYW4gYXJiaXRyYXJ5IGZpcnN0IFhBeGlzLiBJZiB0aGVyZSdzIGV4YWN0bHkgb25lIGl0IGFsd2F5cyByZXR1cm5zIHRoYXQgb25lXG4gKiAtIGJ1dCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdGhlbiBpdCBjYW4gcmV0dXJuIGFueSBvZiB0aG9zZS5cbiAqXG4gKiBJZiB5b3Ugd2FudCBzcGVjaWZpYyBYQXhpcyBvdXQgb2YgbXVsdGlwbGUgdGhlbiBwcmVmZXIgdXNpbmcgdXNlWEF4aXNPclRocm93XG4gKlxuICogQHJldHVybnMgWCBheGlzT3B0aW9ucywgb3IgdW5kZWZpbmVkIC0gaWYgdGhlcmUgYXJlIG5vIFggYXhlc1xuICovXG5leHBvcnQgdmFyIHVzZUFyYml0cmFyeVhBeGlzID0gZnVuY3Rpb24gdXNlQXJiaXRyYXJ5WEF4aXMoKSB7XG4gIHZhciB4QXhpc01hcCA9IHVzZUNvbnRleHQoWEF4aXNDb250ZXh0KTtcbiAgcmV0dXJuIGdldEFueUVsZW1lbnRPZk9iamVjdCh4QXhpc01hcCk7XG59O1xuXG4vKipcbiAqIFRoaXMgd2lsbCBmaW5kIGFuIGFyYml0cmFyeSBmaXJzdCBZQXhpcy4gSWYgdGhlcmUncyBleGFjdGx5IG9uZSBpdCBhbHdheXMgcmV0dXJucyB0aGF0IG9uZVxuICogLSBidXQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHRoZW4gaXQgY2FuIHJldHVybiBhbnkgb2YgdGhvc2UuXG4gKlxuICogSWYgeW91IHdhbnQgc3BlY2lmaWMgWUF4aXMgb3V0IG9mIG11bHRpcGxlIHRoZW4gcHJlZmVyIHVzaW5nIHVzZVhBeGlzT3JUaHJvd1xuICpcbiAqIEByZXR1cm5zIFkgYXhpc09wdGlvbnMsIG9yIHVuZGVmaW5lZCAtIGlmIHRoZXJlIGFyZSBubyBZIGF4ZXNcbiAqL1xuZXhwb3J0IHZhciB1c2VBcmJpdHJhcnlZQXhpcyA9IGZ1bmN0aW9uIHVzZUFyYml0cmFyeVlBeGlzKCkge1xuICB2YXIgeUF4aXNNYXAgPSB1c2VDb250ZXh0KFlBeGlzQ29udGV4dCk7XG4gIHJldHVybiBnZXRBbnlFbGVtZW50T2ZPYmplY3QoeUF4aXNNYXApO1xufTtcblxuLyoqXG4gKiBUaGlzIGhvb2tzIHdpbGw6XG4gKiAxc3QgYXR0ZW1wdCB0byBmaW5kIGFuIFlBeGlzIHRoYXQgaGFzIGFsbCBlbGVtZW50cyBpbiBpdHMgZG9tYWluIGZpbml0ZVxuICogSWYgbm8gc3VjaCBheGlzIGV4aXN0cywgaXQgd2lsbCByZXR1cm4gYW4gYXJiaXRyYXJ5IFlBeGlzXG4gKiBpZiB0aGVyZSBhcmUgbm8gWSBheGVzIHRoZW4gaXQgcmV0dXJucyB1bmRlZmluZWRcbiAqXG4gKiBAcmV0dXJucyBFaXRoZXIgWSBheGlzT3B0aW9ucywgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGFyZSBubyBZIGF4ZXNcbiAqL1xuZXhwb3J0IHZhciB1c2VZQXhpc1dpdGhGaW5pdGVEb21haW5PclJhbmRvbSA9IGZ1bmN0aW9uIHVzZVlBeGlzV2l0aEZpbml0ZURvbWFpbk9yUmFuZG9tKCkge1xuICB2YXIgeUF4aXNNYXAgPSB1c2VDb250ZXh0KFlBeGlzQ29udGV4dCk7XG4gIHZhciB5QXhpc1dpdGhGaW5pdGVEb21haW4gPSBmaW5kKHlBeGlzTWFwLCBmdW5jdGlvbiAoYXhpcykge1xuICAgIHJldHVybiBldmVyeShheGlzLmRvbWFpbiwgTnVtYmVyLmlzRmluaXRlKTtcbiAgfSk7XG4gIHJldHVybiB5QXhpc1dpdGhGaW5pdGVEb21haW4gfHwgZ2V0QW55RWxlbWVudE9mT2JqZWN0KHlBeGlzTWFwKTtcbn07XG5cbi8qKlxuICogVGhpcyBlaXRoZXIgZmluZHMgYW5kIHJldHVybnMgQXhpcyBieSB0aGUgc3BlY2lmaWVkIElELCBvciB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGFuIGF4aXMgd2l0aCB0aGlzIElEIGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSB5QXhpc0lkIGlkZW50aWZpZXIgb2YgdGhlIGF4aXMgLSBpdCdzIGVpdGhlciBhdXRvZ2VuZXJhdGVkICgnMCcpLCBvciBwYXNzZWQgdmlhIGBpZGAgcHJvcCBhcyA8WUF4aXMgaWQ9J2ZvbycgLz5cbiAqIEByZXR1cm5zIGF4aXMgY29uZmlndXJhdGlvbiBvYmplY3RcbiAqIEB0aHJvd3MgRXJyb3IgaWYgbm8gYXhpcyB3aXRoIHRoaXMgSUQgZXhpc3RzXG4gKi9cbmV4cG9ydCB2YXIgdXNlWUF4aXNPclRocm93ID0gZnVuY3Rpb24gdXNlWUF4aXNPclRocm93KHlBeGlzSWQpIHtcbiAgdmFyIHlBeGlzTWFwID0gdXNlQ29udGV4dChZQXhpc0NvbnRleHQpO1xuICAhKHlBeGlzTWFwICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ291bGQgbm90IGZpbmQgUmVjaGFydHMgY29udGV4dDsgYXJlIHlvdSBzdXJlIHRoaXMgaXMgcmVuZGVyZWQgaW5zaWRlIGEgUmVjaGFydHMgd3JhcHBlciBjb21wb25lbnQ/JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICB2YXIgeUF4aXMgPSB5QXhpc01hcFt5QXhpc0lkXTtcbiAgISh5QXhpcyAhPSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgXCJDb3VsZCBub3QgZmluZCB5QXhpcyBieSBpZCBcXFwiXCIuY29uY2F0KHlBeGlzSWQsIFwiXFxcIiBbXCIpLmNvbmNhdChfdHlwZW9mKHlBeGlzSWQpLCBcIl0uIFwiKS5jb25jYXQoZ2V0S2V5c0ZvckRlYnVnKHlBeGlzTWFwKSkpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgcmV0dXJuIHlBeGlzO1xufTtcbmV4cG9ydCB2YXIgdXNlVmlld0JveCA9IGZ1bmN0aW9uIHVzZVZpZXdCb3goKSB7XG4gIHZhciB2aWV3Qm94ID0gdXNlQ29udGV4dChWaWV3Qm94Q29udGV4dCk7XG4gIHJldHVybiB2aWV3Qm94O1xufTtcbmV4cG9ydCB2YXIgdXNlT2Zmc2V0ID0gZnVuY3Rpb24gdXNlT2Zmc2V0KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChPZmZzZXRDb250ZXh0KTtcbn07XG5leHBvcnQgdmFyIHVzZUNoYXJ0V2lkdGggPSBmdW5jdGlvbiB1c2VDaGFydFdpZHRoKCkge1xuICByZXR1cm4gdXNlQ29udGV4dChDaGFydFdpZHRoQ29udGV4dCk7XG59O1xuZXhwb3J0IHZhciB1c2VDaGFydEhlaWdodCA9IGZ1bmN0aW9uIHVzZUNoYXJ0SGVpZ2h0KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChDaGFydEhlaWdodENvbnRleHQpO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsImludmFyaWFudCIsImZpbmQiLCJldmVyeSIsImNhbGN1bGF0ZVZpZXdCb3giLCJnZXRBbnlFbGVtZW50T2ZPYmplY3QiLCJYQXhpc0NvbnRleHQiLCJ1bmRlZmluZWQiLCJZQXhpc0NvbnRleHQiLCJWaWV3Qm94Q29udGV4dCIsIk9mZnNldENvbnRleHQiLCJDbGlwUGF0aElkQ29udGV4dCIsIkNoYXJ0SGVpZ2h0Q29udGV4dCIsIkNoYXJ0V2lkdGhDb250ZXh0IiwiQ2hhcnRMYXlvdXRDb250ZXh0UHJvdmlkZXIiLCJwcm9wcyIsIl9wcm9wcyRzdGF0ZSIsInN0YXRlIiwieEF4aXNNYXAiLCJ5QXhpc01hcCIsIm9mZnNldCIsImNsaXBQYXRoSWQiLCJjaGlsZHJlbiIsIndpZHRoIiwiaGVpZ2h0Iiwidmlld0JveCIsImNyZWF0ZUVsZW1lbnQiLCJQcm92aWRlciIsInZhbHVlIiwidXNlQ2xpcFBhdGhJZCIsImdldEtleXNGb3JEZWJ1ZyIsIm9iamVjdCIsImtleXMiLCJPYmplY3QiLCJsZW5ndGgiLCJjb25jYXQiLCJ1c2VYQXhpc09yVGhyb3ciLCJ4QXhpc0lkIiwicHJvY2VzcyIsInhBeGlzIiwidXNlQXJiaXRyYXJ5WEF4aXMiLCJ1c2VBcmJpdHJhcnlZQXhpcyIsInVzZVlBeGlzV2l0aEZpbml0ZURvbWFpbk9yUmFuZG9tIiwieUF4aXNXaXRoRmluaXRlRG9tYWluIiwiYXhpcyIsImRvbWFpbiIsIk51bWJlciIsImlzRmluaXRlIiwidXNlWUF4aXNPclRocm93IiwieUF4aXNJZCIsInlBeGlzIiwidXNlVmlld0JveCIsInVzZU9mZnNldCIsInVzZUNoYXJ0V2lkdGgiLCJ1c2VDaGFydEhlaWdodCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Cross.js":
/*!**************************************************!*\
!*** ./node_modules/recharts/es6/shape/Cross.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Cross: () => (/* binding */ Cross)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nvar _excluded = [\n \"x\",\n \"y\",\n \"top\",\n \"left\",\n \"width\",\n \"height\",\n \"className\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n/**\n * @fileOverview Cross\n */ \n\n\n\nvar getPath = function getPath(x, y, width, height, top, left) {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n};\nvar Cross = function Cross(_ref) {\n var _ref$x = _ref.x, x = _ref$x === void 0 ? 0 : _ref$x, _ref$y = _ref.y, y = _ref$y === void 0 ? 0 : _ref$y, _ref$top = _ref.top, top = _ref$top === void 0 ? 0 : _ref$top, _ref$left = _ref.left, left = _ref$left === void 0 ? 0 : _ref$left, _ref$width = _ref.width, width = _ref$width === void 0 ? 0 : _ref$width, _ref$height = _ref.height, height = _ref$height === void 0 ? 0 : _ref$height, className = _ref.className, rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread({\n x: x,\n y: y,\n top: top,\n left: left,\n width: width,\n height: height\n }, rest);\n if (!(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(x) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(y) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(width) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(height) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(top) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(left)) {\n return null;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_3__.filterProps)(props, true), {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('recharts-cross', className),\n d: getPath(x, y, width, height, top, left)\n }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL0Nyb3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxJQUFJSyxZQUFZO0lBQUM7SUFBSztJQUFLO0lBQU87SUFBUTtJQUFTO0lBQVU7Q0FBWTtBQUN6RSxTQUFTQztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9ILFNBQVMsQ0FBQ1ksY0FBYyxDQUFDQyxJQUFJLENBQUNILFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNZLEtBQUssQ0FBQyxJQUFJLEVBQUVOO0FBQVk7QUFDbFYsU0FBU08sUUFBUUMsQ0FBQyxFQUFFQyxDQUFDO0lBQUksSUFBSUMsSUFBSWYsT0FBT2dCLElBQUksQ0FBQ0g7SUFBSSxJQUFJYixPQUFPaUIscUJBQXFCLEVBQUU7UUFBRSxJQUFJeEIsSUFBSU8sT0FBT2lCLHFCQUFxQixDQUFDSjtRQUFJQyxLQUFNckIsQ0FBQUEsSUFBSUEsRUFBRXlCLE1BQU0sQ0FBQyxTQUFVSixDQUFDO1lBQUksT0FBT2QsT0FBT21CLHdCQUF3QixDQUFDTixHQUFHQyxHQUFHTSxVQUFVO1FBQUUsRUFBQyxHQUFJTCxFQUFFTSxJQUFJLENBQUNWLEtBQUssQ0FBQ0ksR0FBR3RCO0lBQUk7SUFBRSxPQUFPc0I7QUFBRztBQUM5UCxTQUFTTyxjQUFjVCxDQUFDO0lBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlULFVBQVVDLE1BQU0sRUFBRVEsSUFBSztRQUFFLElBQUlDLElBQUksUUFBUVYsU0FBUyxDQUFDUyxFQUFFLEdBQUdULFNBQVMsQ0FBQ1MsRUFBRSxHQUFHLENBQUM7UUFBR0EsSUFBSSxJQUFJRixRQUFRWixPQUFPZSxJQUFJLENBQUMsR0FBR1EsT0FBTyxDQUFDLFNBQVVULENBQUM7WUFBSVUsZ0JBQWdCWCxHQUFHQyxHQUFHQyxDQUFDLENBQUNELEVBQUU7UUFBRyxLQUFLZCxPQUFPeUIseUJBQXlCLEdBQUd6QixPQUFPMEIsZ0JBQWdCLENBQUNiLEdBQUdiLE9BQU95Qix5QkFBeUIsQ0FBQ1YsTUFBTUgsUUFBUVosT0FBT2UsSUFBSVEsT0FBTyxDQUFDLFNBQVVULENBQUM7WUFBSWQsT0FBTzJCLGNBQWMsQ0FBQ2QsR0FBR0MsR0FBR2QsT0FBT21CLHdCQUF3QixDQUFDSixHQUFHRDtRQUFLO0lBQUk7SUFBRSxPQUFPRDtBQUFHO0FBQ3RiLFNBQVNXLGdCQUFnQkksR0FBRyxFQUFFcEIsR0FBRyxFQUFFcUIsS0FBSztJQUFJckIsTUFBTXNCLGVBQWV0QjtJQUFNLElBQUlBLE9BQU9vQixLQUFLO1FBQUU1QixPQUFPMkIsY0FBYyxDQUFDQyxLQUFLcEIsS0FBSztZQUFFcUIsT0FBT0E7WUFBT1QsWUFBWTtZQUFNVyxjQUFjO1lBQU1DLFVBQVU7UUFBSztJQUFJLE9BQU87UUFBRUosR0FBRyxDQUFDcEIsSUFBSSxHQUFHcUI7SUFBTztJQUFFLE9BQU9EO0FBQUs7QUFDM08sU0FBU0UsZUFBZWYsQ0FBQztJQUFJLElBQUlYLElBQUk2QixhQUFhbEIsR0FBRztJQUFXLE9BQU8sWUFBWXZCLFFBQVFZLEtBQUtBLElBQUlBLElBQUk7QUFBSTtBQUM1RyxTQUFTNkIsYUFBYWxCLENBQUMsRUFBRUQsQ0FBQztJQUFJLElBQUksWUFBWXRCLFFBQVF1QixNQUFNLENBQUNBLEdBQUcsT0FBT0E7SUFBRyxJQUFJRixJQUFJRSxDQUFDLENBQUNyQixPQUFPd0MsV0FBVyxDQUFDO0lBQUUsSUFBSSxLQUFLLE1BQU1yQixHQUFHO1FBQUUsSUFBSVQsSUFBSVMsRUFBRUgsSUFBSSxDQUFDSyxHQUFHRCxLQUFLO1FBQVksSUFBSSxZQUFZdEIsUUFBUVksSUFBSSxPQUFPQTtRQUFHLE1BQU0sSUFBSStCLFVBQVU7SUFBaUQ7SUFBRSxPQUFPLENBQUMsYUFBYXJCLElBQUlzQixTQUFTQyxNQUFLLEVBQUd0QjtBQUFJO0FBQzNULFNBQVN1Qix5QkFBeUIvQixNQUFNLEVBQUVnQyxRQUFRO0lBQUksSUFBSWhDLFVBQVUsTUFBTSxPQUFPLENBQUM7SUFBRyxJQUFJSixTQUFTcUMsOEJBQThCakMsUUFBUWdDO0lBQVcsSUFBSS9CLEtBQUtKO0lBQUcsSUFBSUosT0FBT2lCLHFCQUFxQixFQUFFO1FBQUUsSUFBSXdCLG1CQUFtQnpDLE9BQU9pQixxQkFBcUIsQ0FBQ1Y7UUFBUyxJQUFLSCxJQUFJLEdBQUdBLElBQUlxQyxpQkFBaUJuQyxNQUFNLEVBQUVGLElBQUs7WUFBRUksTUFBTWlDLGdCQUFnQixDQUFDckMsRUFBRTtZQUFFLElBQUltQyxTQUFTRyxPQUFPLENBQUNsQyxRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNSLE9BQU9ILFNBQVMsQ0FBQzhDLG9CQUFvQixDQUFDakMsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO1lBQVVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7UUFBRTtJQUFFO0lBQUUsT0FBT0w7QUFBUTtBQUMzZSxTQUFTcUMsOEJBQThCakMsTUFBTSxFQUFFZ0MsUUFBUTtJQUFJLElBQUloQyxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUosU0FBUyxDQUFDO0lBQUcsSUFBSyxJQUFJSyxPQUFPRCxPQUFRO1FBQUUsSUFBSVAsT0FBT0gsU0FBUyxDQUFDWSxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtZQUFFLElBQUkrQixTQUFTRyxPQUFPLENBQUNsQyxRQUFRLEdBQUc7WUFBVUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtRQUFFO0lBQUU7SUFBRSxPQUFPTDtBQUFRO0FBQ3RSOztDQUVDLEdBQ3lCO0FBQ0Y7QUFDcUI7QUFDSTtBQUNqRCxJQUFJNkMsVUFBVSxTQUFTQSxRQUFRQyxDQUFDLEVBQUVDLENBQUMsRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLEdBQUcsRUFBRUMsSUFBSTtJQUMzRCxPQUFPLElBQUlDLE1BQU0sQ0FBQ04sR0FBRyxLQUFLTSxNQUFNLENBQUNGLEtBQUssS0FBS0UsTUFBTSxDQUFDSCxRQUFRLEtBQUtHLE1BQU0sQ0FBQ0QsTUFBTSxLQUFLQyxNQUFNLENBQUNMLEdBQUcsS0FBS0ssTUFBTSxDQUFDSjtBQUN6RztBQUNPLElBQUlLLFFBQVEsU0FBU0EsTUFBTUMsSUFBSTtJQUNwQyxJQUFJQyxTQUFTRCxLQUFLUixDQUFDLEVBQ2pCQSxJQUFJUyxXQUFXLEtBQUssSUFBSSxJQUFJQSxRQUM1QkMsU0FBU0YsS0FBS1AsQ0FBQyxFQUNmQSxJQUFJUyxXQUFXLEtBQUssSUFBSSxJQUFJQSxRQUM1QkMsV0FBV0gsS0FBS0osR0FBRyxFQUNuQkEsTUFBTU8sYUFBYSxLQUFLLElBQUksSUFBSUEsVUFDaENDLFlBQVlKLEtBQUtILElBQUksRUFDckJBLE9BQU9PLGNBQWMsS0FBSyxJQUFJLElBQUlBLFdBQ2xDQyxhQUFhTCxLQUFLTixLQUFLLEVBQ3ZCQSxRQUFRVyxlQUFlLEtBQUssSUFBSSxJQUFJQSxZQUNwQ0MsY0FBY04sS0FBS0wsTUFBTSxFQUN6QkEsU0FBU1csZ0JBQWdCLEtBQUssSUFBSSxJQUFJQSxhQUN0Q0MsWUFBWVAsS0FBS08sU0FBUyxFQUMxQkMsT0FBTzNCLHlCQUF5Qm1CLE1BQU0zRDtJQUN4QyxJQUFJb0UsUUFBUTVDLGNBQWM7UUFDeEIyQixHQUFHQTtRQUNIQyxHQUFHQTtRQUNIRyxLQUFLQTtRQUNMQyxNQUFNQTtRQUNOSCxPQUFPQTtRQUNQQyxRQUFRQTtJQUNWLEdBQUdhO0lBQ0gsSUFBSSxDQUFDbkIseURBQVFBLENBQUNHLE1BQU0sQ0FBQ0gseURBQVFBLENBQUNJLE1BQU0sQ0FBQ0oseURBQVFBLENBQUNLLFVBQVUsQ0FBQ0wseURBQVFBLENBQUNNLFdBQVcsQ0FBQ04seURBQVFBLENBQUNPLFFBQVEsQ0FBQ1AseURBQVFBLENBQUNRLE9BQU87UUFDOUcsT0FBTztJQUNUO0lBQ0EsT0FBTyxXQUFXLEdBQUVWLDBEQUFtQixDQUFDLFFBQVE3QyxTQUFTLENBQUMsR0FBR2dELDZEQUFXQSxDQUFDbUIsT0FBTyxPQUFPO1FBQ3JGRixXQUFXbkIsZ0RBQUlBLENBQUMsa0JBQWtCbUI7UUFDbENJLEdBQUdwQixRQUFRQyxHQUFHQyxHQUFHQyxPQUFPQyxRQUFRQyxLQUFLQztJQUN2QztBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL0Nyb3NzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbnZhciBfZXhjbHVkZWQgPSBbXCJ4XCIsIFwieVwiLCBcInRvcFwiLCBcImxlZnRcIiwgXCJ3aWR0aFwiLCBcImhlaWdodFwiLCBcImNsYXNzTmFtZVwiXTtcbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgQ3Jvc3NcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG52YXIgZ2V0UGF0aCA9IGZ1bmN0aW9uIGdldFBhdGgoeCwgeSwgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0KSB7XG4gIHJldHVybiBcIk1cIi5jb25jYXQoeCwgXCIsXCIpLmNvbmNhdCh0b3AsIFwidlwiKS5jb25jYXQoaGVpZ2h0LCBcIk1cIikuY29uY2F0KGxlZnQsIFwiLFwiKS5jb25jYXQoeSwgXCJoXCIpLmNvbmNhdCh3aWR0aCk7XG59O1xuZXhwb3J0IHZhciBDcm9zcyA9IGZ1bmN0aW9uIENyb3NzKF9yZWYpIHtcbiAgdmFyIF9yZWYkeCA9IF9yZWYueCxcbiAgICB4ID0gX3JlZiR4ID09PSB2b2lkIDAgPyAwIDogX3JlZiR4LFxuICAgIF9yZWYkeSA9IF9yZWYueSxcbiAgICB5ID0gX3JlZiR5ID09PSB2b2lkIDAgPyAwIDogX3JlZiR5LFxuICAgIF9yZWYkdG9wID0gX3JlZi50b3AsXG4gICAgdG9wID0gX3JlZiR0b3AgPT09IHZvaWQgMCA/IDAgOiBfcmVmJHRvcCxcbiAgICBfcmVmJGxlZnQgPSBfcmVmLmxlZnQsXG4gICAgbGVmdCA9IF9yZWYkbGVmdCA9PT0gdm9pZCAwID8gMCA6IF9yZWYkbGVmdCxcbiAgICBfcmVmJHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICB3aWR0aCA9IF9yZWYkd2lkdGggPT09IHZvaWQgMCA/IDAgOiBfcmVmJHdpZHRoLFxuICAgIF9yZWYkaGVpZ2h0ID0gX3JlZi5oZWlnaHQsXG4gICAgaGVpZ2h0ID0gX3JlZiRoZWlnaHQgPT09IHZvaWQgMCA/IDAgOiBfcmVmJGhlaWdodCxcbiAgICBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe1xuICAgIHg6IHgsXG4gICAgeTogeSxcbiAgICB0b3A6IHRvcCxcbiAgICBsZWZ0OiBsZWZ0LFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9LCByZXN0KTtcbiAgaWYgKCFpc051bWJlcih4KSB8fCAhaXNOdW1iZXIoeSkgfHwgIWlzTnVtYmVyKHdpZHRoKSB8fCAhaXNOdW1iZXIoaGVpZ2h0KSB8fCAhaXNOdW1iZXIodG9wKSB8fCAhaXNOdW1iZXIobGVmdCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhwcm9wcywgdHJ1ZSksIHtcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLWNyb3NzJywgY2xhc3NOYW1lKSxcbiAgICBkOiBnZXRQYXRoKHgsIHksIHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdClcbiAgfSkpO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4Y2x1ZGVkIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJSZWFjdCIsImNsc3giLCJpc051bWJlciIsImZpbHRlclByb3BzIiwiZ2V0UGF0aCIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0IiwiY29uY2F0IiwiQ3Jvc3MiLCJfcmVmIiwiX3JlZiR4IiwiX3JlZiR5IiwiX3JlZiR0b3AiLCJfcmVmJGxlZnQiLCJfcmVmJHdpZHRoIiwiX3JlZiRoZWlnaHQiLCJjbGFzc05hbWUiLCJyZXN0IiwicHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiZCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Cross.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Curve.js":
/*!**************************************************!*\
!*** ./node_modules/recharts/es6/shape/Curve.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Curve: () => (/* binding */ Curve),\n/* harmony export */ getPath: () => (/* binding */ getPath)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! victory-vendor/d3-shape */ \"(ssr)/./node_modules/victory-vendor/es/d3-shape.js\");\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/upperFirst */ \"(ssr)/./node_modules/lodash/upperFirst.js\");\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Curve\n */ \n\n\n\n\n\n\n\nvar CURVE_FACTORIES = {\n curveBasisClosed: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveBasisClosed,\n curveBasisOpen: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveBasisOpen,\n curveBasis: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveBasis,\n curveBumpX: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveBumpX,\n curveBumpY: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveBumpY,\n curveLinearClosed: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveLinearClosed,\n curveLinear: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveLinear,\n curveMonotoneX: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveMonotoneX,\n curveMonotoneY: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveMonotoneY,\n curveNatural: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveNatural,\n curveStep: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveStep,\n curveStepAfter: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveStepAfter,\n curveStepBefore: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveStepBefore\n};\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\nvar getX = function getX(p) {\n return p.x;\n};\nvar getY = function getY(p) {\n return p.y;\n};\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(type)) {\n return type;\n }\n var name = \"curve\".concat(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_2___default()(type));\n if ((name === 'curveMonotone' || name === 'curveBump') && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n return CURVE_FACTORIES[name] || victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveLinear;\n};\n/**\n * Calculate the path of curve. Returns null if points is an empty array.\n * @return path or null\n */ var getPath = function getPath(_ref) {\n var _ref$type = _ref.type, type = _ref$type === void 0 ? 'linear' : _ref$type, _ref$points = _ref.points, points = _ref$points === void 0 ? [] : _ref$points, baseLine = _ref.baseLine, layout = _ref.layout, _ref$connectNulls = _ref.connectNulls, connectNulls = _ref$connectNulls === void 0 ? false : _ref$connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function(entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n if (Array.isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function(base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function(entry, index) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n base: formatBaseLine[index]\n });\n });\n if (layout === 'vertical') {\n lineFunction = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.area)().y(getY).x1(getX).x0(function(d) {\n return d.base.x;\n });\n } else {\n lineFunction = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.area)().x(getX).y1(getY).y0(function(d) {\n return d.base.y;\n });\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n if (layout === 'vertical' && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(baseLine)) {\n lineFunction = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.area)().y(getY).x1(getX).x0(baseLine);\n } else if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(baseLine)) {\n lineFunction = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.area)().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.line)().x(getX).y(getY);\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n};\nvar Curve = function Curve(props) {\n var className = props.className, points = props.points, path = props.path, pathRef = props.pathRef;\n if ((!points || !points.length) && !path) {\n return null;\n }\n var realPath = points && points.length ? getPath(props) : path;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(props, false), (0,_util_types__WEBPACK_IMPORTED_MODULE_7__.adaptEventHandlers)(props), {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])('recharts-curve', className),\n d: realPath,\n ref: pathRef\n }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL0N1cnZlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlmLE9BQU9nQixJQUFJLENBQUNIO0lBQUksSUFBSWIsT0FBT2lCLHFCQUFxQixFQUFFO1FBQUUsSUFBSXZCLElBQUlNLE9BQU9pQixxQkFBcUIsQ0FBQ0o7UUFBSUMsS0FBTXBCLENBQUFBLElBQUlBLEVBQUV3QixNQUFNLENBQUMs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SyxJQUFJZ0IsUUFBUSxTQUFTQSxNQUFNQyxLQUFLO0lBQ3JDLElBQUlDLFlBQVlELE1BQU1DLFNBQVMsRUFDN0J2QixTQUFTc0IsTUFBTXRCLE1BQU0sRUFDckJ3QixPQUFPRixNQUFNRSxJQUFJLEVBQ2pCQyxVQUFVSCxNQUFNRyxPQUFPO0lBQ3pCLElBQUksQ0FBQyxDQUFDekIsVUFBVSxDQUFDQSxPQUFPeEUsTUFBTSxLQUFLLENBQUNnRyxNQUFNO1FBQ3hDLE9BQU87SUFDVDtJQUNBLElBQUlFLFdBQVcxQixVQUFVQSxPQUFPeEUsTUFBTSxHQUFHb0UsUUFBUTBCLFNBQVNFO0lBQzFELE9BQU8sV0FBVyxHQUFFaEUsZ0RBQW1CLENBQUMsUUFBUXZDLFNBQVMsQ0FBQyxHQUFHNkQsNkRBQVdBLENBQUN3QyxPQUFPLFFBQVF6QywrREFBa0JBLENBQUN5QyxRQUFRO1FBQ2pIQyxXQUFXM0MsZ0RBQUlBLENBQUMsa0JBQWtCMkM7UUFDbENOLEdBQUdTO1FBQ0hFLEtBQUtIO0lBQ1A7QUFDRixFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9zaGFwZS9DdXJ2ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgQ3VydmVcbiAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbGluZSBhcyBzaGFwZUxpbmUsIGFyZWEgYXMgc2hhcGVBcmVhLCBjdXJ2ZUJhc2lzQ2xvc2VkLCBjdXJ2ZUJhc2lzT3BlbiwgY3VydmVCYXNpcywgY3VydmVCdW1wWCwgY3VydmVCdW1wWSwgY3VydmVMaW5lYXJDbG9zZWQsIGN1cnZlTGluZWFyLCBjdXJ2ZU1vbm90b25lWCwgY3VydmVNb25vdG9uZVksIGN1cnZlTmF0dXJhbCwgY3VydmVTdGVwLCBjdXJ2ZVN0ZXBBZnRlciwgY3VydmVTdGVwQmVmb3JlIH0gZnJvbSAndmljdG9yeS12ZW5kb3IvZDMtc2hhcGUnO1xuaW1wb3J0IHVwcGVyRmlyc3QgZnJvbSAnbG9kYXNoL3VwcGVyRmlyc3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBhZGFwdEV2ZW50SGFuZGxlcnMgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xudmFyIENVUlZFX0ZBQ1RPUklFUyA9IHtcbiAgY3VydmVCYXNpc0Nsb3NlZDogY3VydmVCYXNpc0Nsb3NlZCxcbiAgY3VydmVCYXNpc09wZW46IGN1cnZlQmFzaXNPcGVuLFxuICBjdXJ2ZUJhc2lzOiBjdXJ2ZUJhc2lzLFxuICBjdXJ2ZUJ1bXBYOiBjdXJ2ZUJ1bXBYLFxuICBjdXJ2ZUJ1bXBZOiBjdXJ2ZUJ1bXBZLFxuICBjdXJ2ZUxpbmVhckNsb3NlZDogY3VydmVMaW5lYXJDbG9zZWQsXG4gIGN1cnZlTGluZWFyOiBjdXJ2ZUxpbmVhcixcbiAgY3VydmVNb25vdG9uZVg6IGN1cnZlTW9ub3RvbmVYLFxuICBjdXJ2ZU1vbm90b25lWTogY3VydmVNb25vdG9uZVksXG4gIGN1cnZlTmF0dXJhbDogY3VydmVOYXR1cmFsLFxuICBjdXJ2ZVN0ZXA6IGN1cnZlU3RlcCxcbiAgY3VydmVTdGVwQWZ0ZXI6IGN1cnZlU3RlcEFmdGVyLFxuICBjdXJ2ZVN0ZXBCZWZvcmU6IGN1cnZlU3RlcEJlZm9yZVxufTtcbnZhciBkZWZpbmVkID0gZnVuY3Rpb24gZGVmaW5lZChwKSB7XG4gIHJldHVybiBwLnggPT09ICtwLnggJiYgcC55ID09PSArcC55O1xufTtcbnZhciBnZXRYID0gZnVuY3Rpb24gZ2V0WChwKSB7XG4gIHJldHVybiBwLng7XG59O1xudmFyIGdldFkgPSBmdW5jdGlvbiBnZXRZKHApIHtcbiAgcmV0dXJuIHAueTtcbn07XG52YXIgZ2V0Q3VydmVGYWN0b3J5ID0gZnVuY3Rpb24gZ2V0Q3VydmVGYWN0b3J5KHR5cGUsIGxheW91dCkge1xuICBpZiAoaXNGdW5jdGlvbih0eXBlKSkge1xuICAgIHJldHVybiB0eXBlO1xuICB9XG4gIHZhciBuYW1lID0gXCJjdXJ2ZVwiLmNvbmNhdCh1cHBlckZpcnN0KHR5cGUpKTtcbiAgaWYgKChuYW1lID09PSAnY3VydmVNb25vdG9uZScgfHwgbmFtZSA9PT0gJ2N1cnZlQnVtcCcpICYmIGxheW91dCkge1xuICAgIHJldHVybiBDVVJWRV9GQUNUT1JJRVNbXCJcIi5jb25jYXQobmFtZSkuY29uY2F0KGxheW91dCA9PT0gJ3ZlcnRpY2FsJyA/ICdZJyA6ICdYJyldO1xuICB9XG4gIHJldHVybiBDVVJWRV9GQUNUT1JJRVNbbmFtZV0gfHwgY3VydmVMaW5lYXI7XG59O1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHBhdGggb2YgY3VydmUuIFJldHVybnMgbnVsbCBpZiBwb2ludHMgaXMgYW4gZW1wdHkgYXJyYXkuXG4gKiBAcmV0dXJuIHBhdGggb3IgbnVsbFxuICovXG5leHBvcnQgdmFyIGdldFBhdGggPSBmdW5jdGlvbiBnZXRQYXRoKF9yZWYpIHtcbiAgdmFyIF9yZWYkdHlwZSA9IF9yZWYudHlwZSxcbiAgICB0eXBlID0gX3JlZiR0eXBlID09PSB2b2lkIDAgPyAnbGluZWFyJyA6IF9yZWYkdHlwZSxcbiAgICBfcmVmJHBvaW50cyA9IF9yZWYucG9pbnRzLFxuICAgIHBvaW50cyA9IF9yZWYkcG9pbnRzID09PSB2b2lkIDAgPyBbXSA6IF9yZWYkcG9pbnRzLFxuICAgIGJhc2VMaW5lID0gX3JlZi5iYXNlTGluZSxcbiAgICBsYXlvdXQgPSBfcmVmLmxheW91dCxcbiAgICBfcmVmJGNvbm5lY3ROdWxscyA9IF9yZWYuY29ubmVjdE51bGxzLFxuICAgIGNvbm5lY3ROdWxscyA9IF9yZWYkY29ubmVjdE51bGxzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkY29ubmVjdE51bGxzO1xuICB2YXIgY3VydmVGYWN0b3J5ID0gZ2V0Q3VydmVGYWN0b3J5KHR5cGUsIGxheW91dCk7XG4gIHZhciBmb3JtYXRQb2ludHMgPSBjb25uZWN0TnVsbHMgPyBwb2ludHMuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHJldHVybiBkZWZpbmVkKGVudHJ5KTtcbiAgfSkgOiBwb2ludHM7XG4gIHZhciBsaW5lRnVuY3Rpb247XG4gIGlmIChBcnJheS5pc0FycmF5KGJhc2VMaW5lKSkge1xuICAgIHZhciBmb3JtYXRCYXNlTGluZSA9IGNvbm5lY3ROdWxscyA/IGJhc2VMaW5lLmZpbHRlcihmdW5jdGlvbiAoYmFzZSkge1xuICAgICAgcmV0dXJuIGRlZmluZWQoYmFzZSk7XG4gICAgfSkgOiBiYXNlTGluZTtcbiAgICB2YXIgYXJlYVBvaW50cyA9IGZvcm1hdFBvaW50cy5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICBiYXNlOiBmb3JtYXRCYXNlTGluZVtpbmRleF1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIGxpbmVGdW5jdGlvbiA9IHNoYXBlQXJlYSgpLnkoZ2V0WSkueDEoZ2V0WCkueDAoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgcmV0dXJuIGQuYmFzZS54O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmVGdW5jdGlvbiA9IHNoYXBlQXJlYSgpLngoZ2V0WCkueTEoZ2V0WSkueTAoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgcmV0dXJuIGQuYmFzZS55O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGxpbmVGdW5jdGlvbi5kZWZpbmVkKGRlZmluZWQpLmN1cnZlKGN1cnZlRmFjdG9yeSk7XG4gICAgcmV0dXJuIGxpbmVGdW5jdGlvbihhcmVhUG9pbnRzKTtcbiAgfVxuICBpZiAobGF5b3V0ID09PSAndmVydGljYWwnICYmIGlzTnVtYmVyKGJhc2VMaW5lKSkge1xuICAgIGxpbmVGdW5jdGlvbiA9IHNoYXBlQXJlYSgpLnkoZ2V0WSkueDEoZ2V0WCkueDAoYmFzZUxpbmUpO1xuICB9IGVsc2UgaWYgKGlzTnVtYmVyKGJhc2VMaW5lKSkge1xuICAgIGxpbmVGdW5jdGlvbiA9IHNoYXBlQXJlYSgpLngoZ2V0WCkueTEoZ2V0WSkueTAoYmFzZUxpbmUpO1xuICB9IGVsc2Uge1xuICAgIGxpbmVGdW5jdGlvbiA9IHNoYXBlTGluZSgpLngoZ2V0WCkueShnZXRZKTtcbiAgfVxuICBsaW5lRnVuY3Rpb24uZGVmaW5lZChkZWZpbmVkKS5jdXJ2ZShjdXJ2ZUZhY3RvcnkpO1xuICByZXR1cm4gbGluZUZ1bmN0aW9uKGZvcm1hdFBvaW50cyk7XG59O1xuZXhwb3J0IHZhciBDdXJ2ZSA9IGZ1bmN0aW9uIEN1cnZlKHByb3BzKSB7XG4gIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgcG9pbnRzID0gcHJvcHMucG9pbnRzLFxuICAgIHBhdGggPSBwcm9wcy5wYXRoLFxuICAgIHBhdGhSZWYgPSBwcm9wcy5wYXRoUmVmO1xuICBpZiAoKCFwb2ludHMgfHwgIXBvaW50cy5sZW5ndGgpICYmICFwYXRoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIHJlYWxQYXRoID0gcG9pbnRzICYmIHBvaW50cy5sZW5ndGggPyBnZXRQYXRoKHByb3BzKSA6IHBhdGg7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKHByb3BzLCBmYWxzZSksIGFkYXB0RXZlbnRIYW5kbGVycyhwcm9wcyksIHtcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLWN1cnZlJywgY2xhc3NOYW1lKSxcbiAgICBkOiByZWFsUGF0aCxcbiAgICByZWY6IHBhdGhSZWZcbiAgfSkpO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJsaW5lIiwic2hhcGVMaW5lIiwiYXJlYSIsInNoYXBlQXJlYSIsImN1cnZlQmFzaXNDbG9zZWQiLCJjdXJ2ZUJhc2lzT3BlbiIsImN1cnZlQmFzaXMiLCJjdXJ2ZUJ1bXBYIiwiY3VydmVCdW1wWSIsImN1cnZlTGluZWFyQ2xvc2VkIiwiY3VydmVMaW5lYXIiLCJjdXJ2ZU1vbm90b25lWCIsImN1cnZlTW9ub3RvbmVZIiwiY3VydmVOYXR1cmFsIiwiY3VydmVTdGVwIiwiY3VydmVTdGVwQWZ0ZXIiLCJjdXJ2ZVN0ZXBCZWZvcmUiLCJ1cHBlckZpcnN0IiwiaXNGdW5jdGlvbiIsImNsc3giLCJhZGFwdEV2ZW50SGFuZGxlcnMiLCJmaWx0ZXJQcm9wcyIsImlzTnVtYmVyIiwiQ1VSVkVfRkFDVE9SSUVTIiwiZGVmaW5lZCIsInAiLCJ4IiwieSIsImdldFgiLCJnZXRZIiwiZ2V0Q3VydmVGYWN0b3J5IiwidHlwZSIsImxheW91dCIsIm5hbWUiLCJjb25jYXQiLCJnZXRQYXRoIiwiX3JlZiIsIl9yZWYkdHlwZSIsIl9yZWYkcG9pbnRzIiwicG9pbnRzIiwiYmFzZUxpbmUiLCJfcmVmJGNvbm5lY3ROdWxscyIsImNvbm5lY3ROdWxscyIsImN1cnZlRmFjdG9yeSIsImZvcm1hdFBvaW50cyIsImVudHJ5IiwibGluZUZ1bmN0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0QmFzZUxpbmUiLCJiYXNlIiwiYXJlYVBvaW50cyIsIm1hcCIsImluZGV4IiwieDEiLCJ4MCIsImQiLCJ5MSIsInkwIiwiY3VydmUiLCJDdXJ2ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwicGF0aCIsInBhdGhSZWYiLCJyZWFsUGF0aCIsImNyZWF0ZUVsZW1lbnQiLCJyZWYiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Curve.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Dot.js":
/*!************************************************!*\
!*** ./node_modules/recharts/es6/shape/Dot.js ***!
\************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Dot: () => (/* binding */ Dot)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n/**\n * @fileOverview Dot\n */ \n\n\n\nvar Dot = function Dot(props) {\n var cx = props.cx, cy = props.cy, r = props.r, className = props.className;\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('recharts-dot', className);\n if (cx === +cx && cy === +cy && r === +r) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"circle\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(props, false), (0,_util_types__WEBPACK_IMPORTED_MODULE_3__.adaptEventHandlers)(props), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n return null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL0RvdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxTQUFTQTtJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9TLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNhLEtBQUssQ0FBQyxJQUFJLEVBQUVQO0FBQVk7QUFDbFY7O0NBRUMsR0FDOEI7QUFDUDtBQUMyQjtBQUNGO0FBQzFDLElBQUlZLE1BQU0sU0FBU0EsSUFBSUMsS0FBSztJQUNqQyxJQUFJQyxLQUFLRCxNQUFNQyxFQUFFLEVBQ2ZDLEtBQUtGLE1BQU1FLEVBQUUsRUFDYkMsSUFBSUgsTUFBTUcsQ0FBQyxFQUNYQyxZQUFZSixNQUFNSSxTQUFTO0lBQzdCLElBQUlDLGFBQWFULGdEQUFJQSxDQUFDLGdCQUFnQlE7SUFDdEMsSUFBSUgsT0FBTyxDQUFDQSxNQUFNQyxPQUFPLENBQUNBLE1BQU1DLE1BQU0sQ0FBQ0EsR0FBRztRQUN4QyxPQUFPLFdBQVcsR0FBRVIsZ0RBQW1CLENBQUMsVUFBVWQsU0FBUyxDQUFDLEdBQUdpQiw2REFBV0EsQ0FBQ0UsT0FBTyxRQUFRSCwrREFBa0JBLENBQUNHLFFBQVE7WUFDbkhJLFdBQVdDO1lBQ1hKLElBQUlBO1lBQ0pDLElBQUlBO1lBQ0pDLEdBQUdBO1FBQ0w7SUFDRjtJQUNBLE9BQU87QUFDVCxFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9zaGFwZS9Eb3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgRG90XG4gKi9cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgYWRhcHRFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5leHBvcnQgdmFyIERvdCA9IGZ1bmN0aW9uIERvdChwcm9wcykge1xuICB2YXIgY3ggPSBwcm9wcy5jeCxcbiAgICBjeSA9IHByb3BzLmN5LFxuICAgIHIgPSBwcm9wcy5yLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1kb3QnLCBjbGFzc05hbWUpO1xuICBpZiAoY3ggPT09ICtjeCAmJiBjeSA9PT0gK2N5ICYmIHIgPT09ICtyKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY2lyY2xlXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhwcm9wcywgZmFsc2UpLCBhZGFwdEV2ZW50SGFuZGxlcnMocHJvcHMpLCB7XG4gICAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3MsXG4gICAgICBjeDogY3gsXG4gICAgICBjeTogY3ksXG4gICAgICByOiByXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTsiXSwibmFtZXMiOlsiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiUmVhY3QiLCJjbHN4IiwiYWRhcHRFdmVudEhhbmRsZXJzIiwiZmlsdGVyUHJvcHMiLCJEb3QiLCJwcm9wcyIsImN4IiwiY3kiLCJyIiwiY2xhc3NOYW1lIiwibGF5ZXJDbGFzcyIsImNyZWF0ZUVsZW1lbnQiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Dot.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Rectangle.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/shape/Rectangle.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Rectangle: () => (/* binding */ Rectangle),\n/* harmony export */ isInRectangle: () => (/* binding */ isInRectangle)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var react_smooth__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-smooth */ \"(ssr)/./node_modules/react-smooth/es6/index.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Rectangle\n */ \n\n\n\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [\n 0,\n 0,\n 0,\n 0\n ];\n for(var i = 0, len = 4; i < len; i++){\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n return path;\n};\nvar isInRectangle = function isInRectangle(point, rect) {\n if (!point || !rect) {\n return false;\n }\n var px = point.x, py = point.y;\n var x = rect.x, y = rect.y, width = rect.width, height = rect.height;\n if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n var minX = Math.min(x, x + width);\n var maxX = Math.max(x, x + width);\n var minY = Math.min(y, y + height);\n var maxY = Math.max(y, y + height);\n return px >= minX && px <= maxX && py >= minY && py <= maxY;\n }\n return false;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nvar Rectangle = function Rectangle(rectangleProps) {\n var props = _objectSpread(_objectSpread({}, defaultProps), rectangleProps);\n var pathRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(-1), _useState2 = _slicedToArray(_useState, 2), totalLength = _useState2[0], setTotalLength = _useState2[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)({\n \"Rectangle.useEffect\": function() {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }\n }[\"Rectangle.useEffect\"], []);\n var x = props.x, y = props.y, width = props.width, height = props.height, radius = props.radius, className = props.className;\n var animationEasing = props.animationEasing, animationDuration = props.animationDuration, animationBegin = props.animationBegin, isAnimationActive = props.isAnimationActive, isUpdateAnimationActive = props.isUpdateAnimationActive;\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('recharts-rectangle', className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(props, true), {\n className: layerClass,\n d: getRectanglePath(x, y, width, height, radius)\n }));\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function(_ref) {\n var currWidth = _ref.width, currHeight = _ref.height, currX = _ref.x, currY = _ref.y;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(props, true), {\n className: layerClass,\n d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n ref: pathRef\n })));\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1JlY3RhbmdsZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxlQUFlQyxHQUFHLEVBQUVULENBQUM7SUFBSSxPQUFPVSxnQkFBZ0JELFFBQVFFLHNCQUFzQkYsS0FBS1QsTUFBTVksNEJBQTRCSCxLQUFLVCxNQUFNYTtBQUFvQjtBQUM3SixTQUFTQTtJQUFxQixNQUFNLElBQUlDLFVBQVU7QUFBOEk7QUFDaE0sU0FBU0YsNEJBQTRCdEIsQ0FBQyxFQUFFeUIsTUFBTTtJQUFJLElBQUksQ0FBQ3pCLEdBQUc7SUFBUSxJQUFJLE9BQU9BLE1BQU0sVUFBVSxPQUFPMEIsa0JBQWtCMUIsR0FBR3lCO0lBQVMsSUFBSUUsSUFBSXJCLE9BQU9GLFNBQVMsQ0FBQ3dCLFFBQVEsQ0FBQ1osSUFBSSxDQUFDaEIsR0FBRzZCLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFBSSxJQUFJRixNQUFNLFlBQVkzQixFQUFFRyxXQUFXLEVBQUV3QixJQUFJM0IsRUFBRUcsV0FBVyxDQUFDMkIsSUFBSTtJQUFFLElBQUlILE1BQU0sU0FBU0EsTUFBTSxPQUFPLE9BQU9JLE1BQU1DLElBQUksQ0FBQ2hDO0lBQUksSUFBSTJCLE1BQU0sZUFBZSwyQ0FBMkNNLElBQUksQ0FBQ04sSUFBSSxPQUFPRCxrQkFBa0IxQixHQUFHeUI7QUFBUztBQUMvWixTQUFTQyxrQkFBa0JQLEdBQUcsRUFBRWUsR0FBRztJQUFJLElBQUlBLE9BQU8sUUFBUUEsTUFBTWYsSUFBSVAsTUFBTSxFQUFFc0IsTUFBTWYsSUFBSVAsTUFBTTtJQUFFLElBQUssSUFBSUYsSUFBSSxHQUFHeUIsT0FBTyxJQUFJSixNQUFNRyxNQUFNeEIsSUFBSXdCLEtBQUt4QixJQUFLeUIsSUFBSSxDQUFDekIsRUFBRSxHQUFHUyxHQUFHLENBQUNULEVBQUU7SUFBRSxPQUFPeUI7QUFBTTtBQUNsTCxTQUFTZCxzQkFBc0JlLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUksUUFBUUYsSUFBSSxPQUFPLGVBQWUsT0FBT25DLFVBQVVtQyxDQUFDLENBQUNuQyxPQUFPQyxRQUFRLENBQUMsSUFBSWtDLENBQUMsQ0FBQyxhQUFhO0lBQUUsSUFBSSxRQUFRRSxHQUFHO1FBQUUsSUFBSUMsR0FBR1osR0FBR2pCLEdBQUc4QixHQUFHQyxJQUFJLEVBQUUsRUFBRUMsSUFBSSxDQUFDLEdBQUcxQyxJQUFJLENBQUM7UUFBRyxJQUFJO1lBQUUsSUFBSVUsSUFBSSxDQUFDNEIsSUFBSUEsRUFBRXRCLElBQUksQ0FBQ29CLEVBQUMsRUFBR08sSUFBSSxFQUFFLE1BQU1OLEdBQUc7Z0JBQUUsSUFBSS9CLE9BQU9nQyxPQUFPQSxHQUFHO2dCQUFRSSxJQUFJLENBQUM7WUFBRyxPQUFPLE1BQU8sQ0FBRUEsQ0FBQUEsSUFBSSxDQUFDSCxJQUFJN0IsRUFBRU0sSUFBSSxDQUFDc0IsRUFBQyxFQUFHTSxJQUFJLEtBQU1ILENBQUFBLEVBQUVJLElBQUksQ0FBQ04sRUFBRU8sS0FBSyxHQUFHTCxFQUFFN0IsTUFBTSxLQUFLeUIsQ0FBQUEsR0FBSUssSUFBSSxDQUFDO1FBQUksRUFBRSxPQUFPTixHQUFHO1lBQUVwQyxJQUFJLENBQUMsR0FBRzJCLElBQUlTO1FBQUcsU0FBVTtZQUFFLElBQUk7Z0JBQUUsSUFBSSxDQUFDTSxLQUFLLFFBQVFKLENBQUMsQ0FBQyxTQUFTLElBQUtFLENBQUFBLElBQUlGLENBQUMsQ0FBQyxTQUFTLElBQUloQyxPQUFPa0MsT0FBT0EsQ0FBQUEsR0FBSTtZQUFRLFNBQVU7Z0JBQUUsSUFBSXhDLEdBQUcsTUFBTTJCO1lBQUc7UUFBRTtRQUFFLE9BQU9jO0lBQUc7QUFBRTtBQUN6aEIsU0FBU3JCLGdCQUFnQkQsR0FBRztJQUFJLElBQUlZLE1BQU1nQixPQUFPLENBQUM1QixNQUFNLE9BQU9BO0FBQUs7QUFDcEUsU0FBUzZCLFFBQVFULENBQUMsRUFBRUgsQ0FBQztJQUFJLElBQUlFLElBQUloQyxPQUFPMkMsSUFBSSxDQUFDVjtJQUFJLElBQUlqQyxPQUFPNEMscUJBQXFCLEVBQUU7UUFBRSxJQUFJbEQsSUFBSU0sT0FBTzRDLHFCQUFxQixDQUFDWDtRQUFJSCxLQUFNcEMsQ0FBQUEsSUFBSUEsRUFBRW1ELE1BQU0sQ0FBQyxTQUFVZixDQUFDO1lBQUksT0FBTzlCLE9BQU84Qyx3QkFBd0IsQ0FBQ2IsR0FBR0gsR0FBR2lCLFVBQVU7UUFBRSxFQUFDLEdBQUlmLEVBQUVPLElBQUksQ0FBQzVCLEtBQUssQ0FBQ3FCLEdBQUd0QztJQUFJO0lBQUUsT0FBT3NDO0FBQUc7QUFDOVAsU0FBU2dCLGNBQWNmLENBQUM7SUFBSSxJQUFLLElBQUlILElBQUksR0FBR0EsSUFBSXpCLFVBQVVDLE1BQU0sRUFBRXdCLElBQUs7UUFBRSxJQUFJRSxJQUFJLFFBQVEzQixTQUFTLENBQUN5QixFQUFFLEdBQUd6QixTQUFTLENBQUN5QixFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlZLFFBQVExQyxPQUFPZ0MsSUFBSSxDQUFDLEdBQUdpQixPQUFPLENBQUMsU0FBVW5CLENBQUM7WUFBSW9CLGdCQUFnQmpCLEdBQUdILEdBQUdFLENBQUMsQ0FBQ0YsRUFBRTtRQUFHLEtBQUs5QixPQUFPbUQseUJBQXlCLEdBQUduRCxPQUFPb0QsZ0JBQWdCLENBQUNuQixHQUFHakMsT0FBT21ELHlCQUF5QixDQUFDbkIsTUFBTVUsUUFBUTFDLE9BQU9nQyxJQUFJaUIsT0FBTyxDQUFDLFNBQVVuQixDQUFDO1lBQUk5QixPQUFPcUQsY0FBYyxDQUFDcEIsR0FBR0gsR0FBRzlCLE9BQU84Qyx3QkFBd0IsQ0FBQ2QsR0FBR0Y7UUFBSztJQUFJO0lBQUUsT0FBT0c7QUFBRztBQUN0YixTQUFTaUIsZ0JBQWdCSSxHQUFHLEVBQUU5QyxHQUFHLEVBQUVnQyxLQUFLO0lBQUloQyxNQUFNK0MsZUFBZS9DO0lBQU0sSUFBSUEsT0FBTzhDLEtBQUs7UUFBRXRELE9BQU9xRCxjQUFjLENBQUNDLEtBQUs5QyxLQUFLO1lBQUVnQyxPQUFPQTtZQUFPTyxZQUFZO1lBQU1TLGNBQWM7WUFBTUMsVUFBVTtRQUFLO0lBQUksT0FBTztRQUFFSCxHQUFHLENBQUM5QyxJQUFJLEdBQUdnQztJQUFPO0lBQUUsT0FBT2M7QUFBSztBQUMzTyxTQUFTQyxlQUFldkIsQ0FBQztJQUFJLElBQUk1QixJQUFJc0QsYUFBYTFCLEdBQUc7SUFBVyxPQUFPLFlBQVl2QyxRQUFRVyxLQUFLQSxJQUFJQSxJQUFJO0FBQUk7QUFDNUcsU0FBU3NELGFBQWExQixDQUFDLEVBQUVGLENBQUM7SUFBSSxJQUFJLFlBQVlyQyxRQUFRdUMsTUFBTSxDQUFDQSxHQUFHLE9BQU9BO0lBQUcsSUFBSUMsSUFBSUQsQ0FBQyxDQUFDckMsT0FBT2dFLFdBQVcsQ0FBQztJQUFFLElBQUksS0FBSyxNQUFNMUIsR0FBRztRQUFFLElBQUk3QixJQUFJNkIsRUFBRXZCLElBQUksQ0FBQ3NCLEdBQUdGLEtBQUs7UUFBWSxJQUFJLFlBQVlyQyxRQUFRVyxJQUFJLE9BQU9BO1FBQUcsTUFBTSxJQUFJYyxVQUFVO0lBQWlEO0lBQUUsT0FBTyxDQUFDLGFBQWFZLElBQUk4QixTQUFTQyxNQUFLLEVBQUc3QjtBQUFJO0FBQzNUOztDQUVDLEdBQzBEO0FBQ25DO0FBQ1c7QUFDYztBQUNqRCxJQUFJcUMsbUJBQW1CLFNBQVNBLGlCQUFpQkMsQ0FBQyxFQUFFQyxDQUFDLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxNQUFNO0lBQzFFLElBQUlDLFlBQVlDLEtBQUtDLEdBQUcsQ0FBQ0QsS0FBS0UsR0FBRyxDQUFDTixTQUFTLEdBQUdJLEtBQUtFLEdBQUcsQ0FBQ0wsVUFBVTtJQUNqRSxJQUFJTSxRQUFRTixVQUFVLElBQUksSUFBSSxDQUFDO0lBQy9CLElBQUlPLFFBQVFSLFNBQVMsSUFBSSxJQUFJLENBQUM7SUFDOUIsSUFBSVMsWUFBWVIsVUFBVSxLQUFLRCxTQUFTLEtBQUtDLFNBQVMsS0FBS0QsUUFBUSxJQUFJLElBQUk7SUFDM0UsSUFBSVU7SUFDSixJQUFJUCxZQUFZLEtBQUtELGtCQUFrQmpELE9BQU87UUFDNUMsSUFBSTBELFlBQVk7WUFBQztZQUFHO1lBQUc7WUFBRztTQUFFO1FBQzVCLElBQUssSUFBSS9FLElBQUksR0FBR3dCLE1BQU0sR0FBR3hCLElBQUl3QixLQUFLeEIsSUFBSztZQUNyQytFLFNBQVMsQ0FBQy9FLEVBQUUsR0FBR3NFLE1BQU0sQ0FBQ3RFLEVBQUUsR0FBR3VFLFlBQVlBLFlBQVlELE1BQU0sQ0FBQ3RFLEVBQUU7UUFDOUQ7UUFDQThFLE9BQU8sSUFBSUUsTUFBTSxDQUFDZCxHQUFHLEtBQUtjLE1BQU0sQ0FBQ2IsSUFBSVEsUUFBUUksU0FBUyxDQUFDLEVBQUU7UUFDekQsSUFBSUEsU0FBUyxDQUFDLEVBQUUsR0FBRyxHQUFHO1lBQ3BCRCxRQUFRLEtBQUtFLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBU0MsTUFBTSxDQUFDSCxXQUFXLEtBQUtHLE1BQU0sQ0FBQ2QsSUFBSVUsUUFBUUcsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNiO1FBQzNJO1FBQ0FXLFFBQVEsS0FBS0UsTUFBTSxDQUFDZCxJQUFJRSxRQUFRUSxRQUFRRyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUtDLE1BQU0sQ0FBQ2I7UUFDbEUsSUFBSVksU0FBUyxDQUFDLEVBQUUsR0FBRyxHQUFHO1lBQ3BCRCxRQUFRLEtBQUtFLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBU0MsTUFBTSxDQUFDSCxXQUFXLGVBQWVHLE1BQU0sQ0FBQ2QsSUFBSUUsT0FBTyxLQUFLWSxNQUFNLENBQUNiLElBQUlRLFFBQVFJLFNBQVMsQ0FBQyxFQUFFO1FBQzlKO1FBQ0FELFFBQVEsS0FBS0UsTUFBTSxDQUFDZCxJQUFJRSxPQUFPLEtBQUtZLE1BQU0sQ0FBQ2IsSUFBSUUsU0FBU00sUUFBUUksU0FBUyxDQUFDLEVBQUU7UUFDNUUsSUFBSUEsU0FBUyxDQUFDLEVBQUUsR0FBRyxHQUFHO1lBQ3BCRCxRQUFRLEtBQUtFLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBU0MsTUFBTSxDQUFDSCxXQUFXLGVBQWVHLE1BQU0sQ0FBQ2QsSUFBSUUsUUFBUVEsUUFBUUcsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNiLElBQUlFO1FBQ2pLO1FBQ0FTLFFBQVEsS0FBS0UsTUFBTSxDQUFDZCxJQUFJVSxRQUFRRyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUtDLE1BQU0sQ0FBQ2IsSUFBSUU7UUFDOUQsSUFBSVUsU0FBUyxDQUFDLEVBQUUsR0FBRyxHQUFHO1lBQ3BCRCxRQUFRLEtBQUtFLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBU0MsTUFBTSxDQUFDSCxXQUFXLGVBQWVHLE1BQU0sQ0FBQ2QsR0FBRyxLQUFLYyxNQUFNLENBQUNiLElBQUlFLFNBQVNNLFFBQVFJLFNBQVMsQ0FBQyxFQUFFO1FBQy9KO1FBQ0FELFFBQVE7SUFDVixPQUFPLElBQUlQLFlBQVksS0FBS0QsV0FBVyxDQUFDQSxVQUFVQSxTQUFTLEdBQUc7UUFDNUQsSUFBSVcsYUFBYVQsS0FBS0MsR0FBRyxDQUFDRixXQUFXRDtRQUNyQ1EsT0FBTyxLQUFLRSxNQUFNLENBQUNkLEdBQUcsS0FBS2MsTUFBTSxDQUFDYixJQUFJUSxRQUFRTSxZQUFZLG9CQUFvQkQsTUFBTSxDQUFDQyxZQUFZLEtBQUtELE1BQU0sQ0FBQ0MsWUFBWSxTQUFTRCxNQUFNLENBQUNILFdBQVcsS0FBS0csTUFBTSxDQUFDZCxJQUFJVSxRQUFRSyxZQUFZLEtBQUtELE1BQU0sQ0FBQ2IsR0FBRyxvQkFBb0JhLE1BQU0sQ0FBQ2QsSUFBSUUsUUFBUVEsUUFBUUssWUFBWSxLQUFLRCxNQUFNLENBQUNiLEdBQUcsb0JBQW9CYSxNQUFNLENBQUNDLFlBQVksS0FBS0QsTUFBTSxDQUFDQyxZQUFZLFNBQVNELE1BQU0sQ0FBQ0gsV0FBVyxLQUFLRyxNQUFNLENBQUNkLElBQUlFLE9BQU8sS0FBS1ksTUFBTSxDQUFDYixJQUFJUSxRQUFRTSxZQUFZLG9CQUFvQkQsTUFBTSxDQUFDZCxJQUFJRSxPQUFPLEtBQUtZLE1BQU0sQ0FBQ2IsSUFBSUUsU0FBU00sUUFBUU0sWUFBWSxvQkFBb0JELE1BQU0sQ0FBQ0MsWUFBWSxLQUFLRCxNQUFNLENBQUNDLFlBQVksU0FBU0QsTUFBTSxDQUFDSCxXQUFXLEtBQUtHLE1BQU0sQ0FBQ2QsSUFBSUUsUUFBUVEsUUFBUUssWUFBWSxLQUFLRCxNQUFNLENBQUNiLElBQUlFLFFBQVEsb0JBQW9CVyxNQUFNLENBQUNkLElBQUlVLFFBQVFLLFlBQVksS0FBS0QsTUFBTSxDQUFDYixJQUFJRSxRQUFRLG9CQUFvQlcsTUFBTSxDQUFDQyxZQUFZLEtBQUtELE1BQU0sQ0FBQ0MsWUFBWSxTQUFTRCxNQUFNLENBQUNILFdBQVcsS0FBS0csTUFBTSxDQUFDZCxHQUFHLEtBQUtjLE1BQU0sQ0FBQ2IsSUFBSUUsU0FBU00sUUFBUU0sWUFBWTtJQUMxM0IsT0FBTztRQUNMSCxPQUFPLEtBQUtFLE1BQU0sQ0FBQ2QsR0FBRyxLQUFLYyxNQUFNLENBQUNiLEdBQUcsT0FBT2EsTUFBTSxDQUFDWixPQUFPLE9BQU9ZLE1BQU0sQ0FBQ1gsUUFBUSxPQUFPVyxNQUFNLENBQUMsQ0FBQ1osT0FBTztJQUN4RztJQUNBLE9BQU9VO0FBQ1Q7QUFDTyxJQUFJSSxnQkFBZ0IsU0FBU0EsY0FBY0MsS0FBSyxFQUFFQyxJQUFJO0lBQzNELElBQUksQ0FBQ0QsU0FBUyxDQUFDQyxNQUFNO1FBQ25CLE9BQU87SUFDVDtJQUNBLElBQUlDLEtBQUtGLE1BQU1qQixDQUFDLEVBQ2RvQixLQUFLSCxNQUFNaEIsQ0FBQztJQUNkLElBQUlELElBQUlrQixLQUFLbEIsQ0FBQyxFQUNaQyxJQUFJaUIsS0FBS2pCLENBQUMsRUFDVkMsUUFBUWdCLEtBQUtoQixLQUFLLEVBQ2xCQyxTQUFTZSxLQUFLZixNQUFNO0lBQ3RCLElBQUlHLEtBQUtFLEdBQUcsQ0FBQ04sU0FBUyxLQUFLSSxLQUFLRSxHQUFHLENBQUNMLFVBQVUsR0FBRztRQUMvQyxJQUFJa0IsT0FBT2YsS0FBS0MsR0FBRyxDQUFDUCxHQUFHQSxJQUFJRTtRQUMzQixJQUFJb0IsT0FBT2hCLEtBQUtpQixHQUFHLENBQUN2QixHQUFHQSxJQUFJRTtRQUMzQixJQUFJc0IsT0FBT2xCLEtBQUtDLEdBQUcsQ0FBQ04sR0FBR0EsSUFBSUU7UUFDM0IsSUFBSXNCLE9BQU9uQixLQUFLaUIsR0FBRyxDQUFDdEIsR0FBR0EsSUFBSUU7UUFDM0IsT0FBT2dCLE1BQU1FLFFBQVFGLE1BQU1HLFFBQVFGLE1BQU1JLFFBQVFKLE1BQU1LO0lBQ3pEO0lBQ0EsT0FBTztBQUNULEVBQUU7QUFDRixJQUFJQyxlQUFlO0lBQ2pCMUIsR0FBRztJQUNIQyxHQUFHO0lBQ0hDLE9BQU87SUFDUEMsUUFBUTtJQUNSLHVCQUF1QjtJQUN2QixxREFBcUQ7SUFDckQsdUZBQXVGO0lBQ3ZGQyxRQUFRO0lBQ1J1QixtQkFBbUI7SUFDbkJDLHlCQUF5QjtJQUN6QkMsZ0JBQWdCO0lBQ2hCQyxtQkFBbUI7SUFDbkJDLGlCQUFpQjtBQUNuQjtBQUNPLElBQUlDLFlBQVksU0FBU0EsVUFBVUMsY0FBYztJQUN0RCxJQUFJQyxRQUFReEQsY0FBY0EsY0FBYyxDQUFDLEdBQUdnRCxlQUFlTztJQUMzRCxJQUFJRSxVQUFVekMsNkNBQU1BO0lBQ3BCLElBQUkwQyxZQUFZekMsK0NBQVFBLENBQUMsQ0FBQyxJQUN4QjBDLGFBQWEvRixlQUFlOEYsV0FBVyxJQUN2Q0UsY0FBY0QsVUFBVSxDQUFDLEVBQUUsRUFDM0JFLGlCQUFpQkYsVUFBVSxDQUFDLEVBQUU7SUFDaEM1QyxnREFBU0E7K0JBQUM7WUFDUixJQUFJMEMsUUFBUUssT0FBTyxJQUFJTCxRQUFRSyxPQUFPLENBQUNDLGNBQWMsRUFBRTtnQkFDckQsSUFBSTtvQkFDRixJQUFJQyxrQkFBa0JQLFFBQVFLLE9BQU8sQ0FBQ0MsY0FBYztvQkFDcEQsSUFBSUMsaUJBQWlCO3dCQUNuQkgsZUFBZUc7b0JBQ2pCO2dCQUNGLEVBQUUsT0FBT0MsS0FBSztnQkFDWiwrQkFBK0I7Z0JBQ2pDO1lBQ0Y7UUFDRjs4QkFBRyxFQUFFO0lBQ0wsSUFBSTNDLElBQUlrQyxNQUFNbEMsQ0FBQyxFQUNiQyxJQUFJaUMsTUFBTWpDLENBQUMsRUFDWEMsUUFBUWdDLE1BQU1oQyxLQUFLLEVBQ25CQyxTQUFTK0IsTUFBTS9CLE1BQU0sRUFDckJDLFNBQVM4QixNQUFNOUIsTUFBTSxFQUNyQndDLFlBQVlWLE1BQU1VLFNBQVM7SUFDN0IsSUFBSWIsa0JBQWtCRyxNQUFNSCxlQUFlLEVBQ3pDRCxvQkFBb0JJLE1BQU1KLGlCQUFpQixFQUMzQ0QsaUJBQWlCSyxNQUFNTCxjQUFjLEVBQ3JDRixvQkFBb0JPLE1BQU1QLGlCQUFpQixFQUMzQ0MsMEJBQTBCTSxNQUFNTix1QkFBdUI7SUFDekQsSUFBSTVCLE1BQU0sQ0FBQ0EsS0FBS0MsTUFBTSxDQUFDQSxLQUFLQyxVQUFVLENBQUNBLFNBQVNDLFdBQVcsQ0FBQ0EsVUFBVUQsVUFBVSxLQUFLQyxXQUFXLEdBQUc7UUFDakcsT0FBTztJQUNUO0lBQ0EsSUFBSTBDLGFBQWFqRCxnREFBSUEsQ0FBQyxzQkFBc0JnRDtJQUM1QyxJQUFJLENBQUNoQix5QkFBeUI7UUFDNUIsT0FBTyxXQUFXLEdBQUVwQywwREFBbUIsQ0FBQyxRQUFRL0QsU0FBUyxDQUFDLEdBQUdxRSw2REFBV0EsQ0FBQ29DLE9BQU8sT0FBTztZQUNyRlUsV0FBV0M7WUFDWEUsR0FBR2hELGlCQUFpQkMsR0FBR0MsR0FBR0MsT0FBT0MsUUFBUUM7UUFDM0M7SUFDRjtJQUNBLE9BQU8sV0FBVyxHQUFFWiwwREFBbUIsQ0FBQ0ssb0RBQU9BLEVBQUU7UUFDL0NtRCxVQUFVVixjQUFjO1FBQ3hCbEYsTUFBTTtZQUNKOEMsT0FBT0E7WUFDUEMsUUFBUUE7WUFDUkgsR0FBR0E7WUFDSEMsR0FBR0E7UUFDTDtRQUNBZ0QsSUFBSTtZQUNGL0MsT0FBT0E7WUFDUEMsUUFBUUE7WUFDUkgsR0FBR0E7WUFDSEMsR0FBR0E7UUFDTDtRQUNBaUQsVUFBVXBCO1FBQ1ZDLGlCQUFpQkE7UUFDakJvQixVQUFVdkI7SUFDWixHQUFHLFNBQVV3QixJQUFJO1FBQ2YsSUFBSUMsWUFBWUQsS0FBS2xELEtBQUssRUFDeEJvRCxhQUFhRixLQUFLakQsTUFBTSxFQUN4Qm9ELFFBQVFILEtBQUtwRCxDQUFDLEVBQ2R3RCxRQUFRSixLQUFLbkQsQ0FBQztRQUNoQixPQUFPLFdBQVcsR0FBRVQsMERBQW1CLENBQUNLLG9EQUFPQSxFQUFFO1lBQy9DbUQsVUFBVVYsY0FBYztZQUN4QmxGLE1BQU0sT0FBTzBELE1BQU0sQ0FBQ3dCLGdCQUFnQixDQUFDLElBQUksSUFBSUEsYUFBYTtZQUMxRFcsSUFBSSxHQUFHbkMsTUFBTSxDQUFDd0IsYUFBYTtZQUMzQm1CLGVBQWU7WUFDZkMsT0FBTzdCO1lBQ1BxQixVQUFVcEI7WUFDVnFCLFVBQVV4QjtZQUNWZ0MsUUFBUTVCO1FBQ1YsR0FBRyxXQUFXLEdBQUV2QywwREFBbUIsQ0FBQyxRQUFRL0QsU0FBUyxDQUFDLEdBQUdxRSw2REFBV0EsQ0FBQ29DLE9BQU8sT0FBTztZQUNqRlUsV0FBV0M7WUFDWEUsR0FBR2hELGlCQUFpQndELE9BQU9DLE9BQU9ILFdBQVdDLFlBQVlsRDtZQUN6RHdELEtBQUt6QjtRQUNQO0lBQ0Y7QUFDRixFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9zaGFwZS9SZWN0YW5nbGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHsgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTsgaWYgKG51bGwgIT0gdCkgeyB2YXIgZSwgbiwgaSwgdSwgYSA9IFtdLCBmID0gITAsIG8gPSAhMTsgdHJ5IHsgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkgeyBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47IGYgPSAhMTsgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApOyB9IGNhdGNoIChyKSB7IG8gPSAhMCwgbiA9IHI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjsgfSBmaW5hbGx5IHsgaWYgKG8pIHRocm93IG47IH0gfSByZXR1cm4gYTsgfSB9XG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgUmVjdGFuZ2xlXG4gKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBBbmltYXRlIGZyb20gJ3JlYWN0LXNtb290aCc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG52YXIgZ2V0UmVjdGFuZ2xlUGF0aCA9IGZ1bmN0aW9uIGdldFJlY3RhbmdsZVBhdGgoeCwgeSwgd2lkdGgsIGhlaWdodCwgcmFkaXVzKSB7XG4gIHZhciBtYXhSYWRpdXMgPSBNYXRoLm1pbihNYXRoLmFicyh3aWR0aCkgLyAyLCBNYXRoLmFicyhoZWlnaHQpIC8gMik7XG4gIHZhciB5U2lnbiA9IGhlaWdodCA+PSAwID8gMSA6IC0xO1xuICB2YXIgeFNpZ24gPSB3aWR0aCA+PSAwID8gMSA6IC0xO1xuICB2YXIgY2xvY2tXaXNlID0gaGVpZ2h0ID49IDAgJiYgd2lkdGggPj0gMCB8fCBoZWlnaHQgPCAwICYmIHdpZHRoIDwgMCA/IDEgOiAwO1xuICB2YXIgcGF0aDtcbiAgaWYgKG1heFJhZGl1cyA+IDAgJiYgcmFkaXVzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICB2YXIgbmV3UmFkaXVzID0gWzAsIDAsIDAsIDBdO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSA0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIG5ld1JhZGl1c1tpXSA9IHJhZGl1c1tpXSA+IG1heFJhZGl1cyA/IG1heFJhZGl1cyA6IHJhZGl1c1tpXTtcbiAgICB9XG4gICAgcGF0aCA9IFwiTVwiLmNvbmNhdCh4LCBcIixcIikuY29uY2F0KHkgKyB5U2lnbiAqIG5ld1JhZGl1c1swXSk7XG4gICAgaWYgKG5ld1JhZGl1c1swXSA+IDApIHtcbiAgICAgIHBhdGggKz0gXCJBIFwiLmNvbmNhdChuZXdSYWRpdXNbMF0sIFwiLFwiKS5jb25jYXQobmV3UmFkaXVzWzBdLCBcIiwwLDAsXCIpLmNvbmNhdChjbG9ja1dpc2UsIFwiLFwiKS5jb25jYXQoeCArIHhTaWduICogbmV3UmFkaXVzWzBdLCBcIixcIikuY29uY2F0KHkpO1xuICAgIH1cbiAgICBwYXRoICs9IFwiTCBcIi5jb25jYXQoeCArIHdpZHRoIC0geFNpZ24gKiBuZXdSYWRpdXNbMV0sIFwiLFwiKS5jb25jYXQoeSk7XG4gICAgaWYgKG5ld1JhZGl1c1sxXSA+IDApIHtcbiAgICAgIHBhdGggKz0gXCJBIFwiLmNvbmNhdChuZXdSYWRpdXNbMV0sIFwiLFwiKS5jb25jYXQobmV3UmFkaXVzWzFdLCBcIiwwLDAsXCIpLmNvbmNhdChjbG9ja1dpc2UsIFwiLFxcbiAgICAgICAgXCIpLmNvbmNhdCh4ICsgd2lkdGgsIFwiLFwiKS5jb25jYXQoeSArIHlTaWduICogbmV3UmFkaXVzWzFdKTtcbiAgICB9XG4gICAgcGF0aCArPSBcIkwgXCIuY29uY2F0KHggKyB3aWR0aCwgXCIsXCIpLmNvbmNhdCh5ICsgaGVpZ2h0IC0geVNpZ24gKiBuZXdSYWRpdXNbMl0pO1xuICAgIGlmIChuZXdSYWRpdXNbMl0gPiAwKSB7XG4gICAgICBwYXRoICs9IFwiQSBcIi5jb25jYXQobmV3UmFkaXVzWzJdLCBcIixcIikuY29uY2F0KG5ld1JhZGl1c1syXSwgXCIsMCwwLFwiKS5jb25jYXQoY2xvY2tXaXNlLCBcIixcXG4gICAgICAgIFwiKS5jb25jYXQoeCArIHdpZHRoIC0geFNpZ24gKiBuZXdSYWRpdXNbMl0sIFwiLFwiKS5jb25jYXQoeSArIGhlaWdodCk7XG4gICAgfVxuICAgIHBhdGggKz0gXCJMIFwiLmNvbmNhdCh4ICsgeFNpZ24gKiBuZXdSYWRpdXNbM10sIFwiLFwiKS5jb25jYXQoeSArIGhlaWdodCk7XG4gICAgaWYgKG5ld1JhZGl1c1szXSA+IDApIHtcbiAgICAgIHBhdGggKz0gXCJBIFwiLmNvbmNhdChuZXdSYWRpdXNbM10sIFwiLFwiKS5jb25jYXQobmV3UmFkaXVzWzNdLCBcIiwwLDAsXCIpLmNvbmNhdChjbG9ja1dpc2UsIFwiLFxcbiAgICAgICAgXCIpLmNvbmNhdCh4LCBcIixcIikuY29uY2F0KHkgKyBoZWlnaHQgLSB5U2lnbiAqIG5ld1JhZGl1c1szXSk7XG4gICAgfVxuICAgIHBhdGggKz0gJ1onO1xuICB9IGVsc2UgaWYgKG1heFJhZGl1cyA+IDAgJiYgcmFkaXVzID09PSArcmFkaXVzICYmIHJhZGl1cyA+IDApIHtcbiAgICB2YXIgX25ld1JhZGl1cyA9IE1hdGgubWluKG1heFJhZGl1cywgcmFkaXVzKTtcbiAgICBwYXRoID0gXCJNIFwiLmNvbmNhdCh4LCBcIixcIikuY29uY2F0KHkgKyB5U2lnbiAqIF9uZXdSYWRpdXMsIFwiXFxuICAgICAgICAgICAgQSBcIikuY29uY2F0KF9uZXdSYWRpdXMsIFwiLFwiKS5jb25jYXQoX25ld1JhZGl1cywgXCIsMCwwLFwiKS5jb25jYXQoY2xvY2tXaXNlLCBcIixcIikuY29uY2F0KHggKyB4U2lnbiAqIF9uZXdSYWRpdXMsIFwiLFwiKS5jb25jYXQoeSwgXCJcXG4gICAgICAgICAgICBMIFwiKS5jb25jYXQoeCArIHdpZHRoIC0geFNpZ24gKiBfbmV3UmFkaXVzLCBcIixcIikuY29uY2F0KHksIFwiXFxuICAgICAgICAgICAgQSBcIikuY29uY2F0KF9uZXdSYWRpdXMsIFwiLFwiKS5jb25jYXQoX25ld1JhZGl1cywgXCIsMCwwLFwiKS5jb25jYXQoY2xvY2tXaXNlLCBcIixcIikuY29uY2F0KHggKyB3aWR0aCwgXCIsXCIpLmNvbmNhdCh5ICsgeVNpZ24gKiBfbmV3UmFkaXVzLCBcIlxcbiAgICAgICAgICAgIEwgXCIpLmNvbmNhdCh4ICsgd2lkdGgsIFwiLFwiKS5jb25jYXQoeSArIGhlaWdodCAtIHlTaWduICogX25ld1JhZGl1cywgXCJcXG4gICAgICAgICAgICBBIFwiKS5jb25jYXQoX25ld1JhZGl1cywgXCIsXCIpLmNvbmNhdChfbmV3UmFkaXVzLCBcIiwwLDAsXCIpLmNvbmNhdChjbG9ja1dpc2UsIFwiLFwiKS5jb25jYXQoeCArIHdpZHRoIC0geFNpZ24gKiBfbmV3UmFkaXVzLCBcIixcIikuY29uY2F0KHkgKyBoZWlnaHQsIFwiXFxuICAgICAgICAgICAgTCBcIikuY29uY2F0KHggKyB4U2lnbiAqIF9uZXdSYWRpdXMsIFwiLFwiKS5jb25jYXQoeSArIGhlaWdodCwgXCJcXG4gICAgICAgICAgICBBIFwiKS5jb25jYXQoX25ld1JhZGl1cywgXCIsXCIpLmNvbmNhdChfbmV3UmFkaXVzLCBcIiwwLDAsXCIpLmNvbmNhdChjbG9ja1dpc2UsIFwiLFwiKS5jb25jYXQoeCwgXCIsXCIpLmNvbmNhdCh5ICsgaGVpZ2h0IC0geVNpZ24gKiBfbmV3UmFkaXVzLCBcIiBaXCIpO1xuICB9IGVsc2Uge1xuICAgIHBhdGggPSBcIk0gXCIuY29uY2F0KHgsIFwiLFwiKS5jb25jYXQoeSwgXCIgaCBcIikuY29uY2F0KHdpZHRoLCBcIiB2IFwiKS5jb25jYXQoaGVpZ2h0LCBcIiBoIFwiKS5jb25jYXQoLXdpZHRoLCBcIiBaXCIpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufTtcbmV4cG9ydCB2YXIgaXNJblJlY3RhbmdsZSA9IGZ1bmN0aW9uIGlzSW5SZWN0YW5nbGUocG9pbnQsIHJlY3QpIHtcbiAgaWYgKCFwb2ludCB8fCAhcmVjdCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHggPSBwb2ludC54LFxuICAgIHB5ID0gcG9pbnQueTtcbiAgdmFyIHggPSByZWN0LngsXG4gICAgeSA9IHJlY3QueSxcbiAgICB3aWR0aCA9IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XG4gIGlmIChNYXRoLmFicyh3aWR0aCkgPiAwICYmIE1hdGguYWJzKGhlaWdodCkgPiAwKSB7XG4gICAgdmFyIG1pblggPSBNYXRoLm1pbih4LCB4ICsgd2lkdGgpO1xuICAgIHZhciBtYXhYID0gTWF0aC5tYXgoeCwgeCArIHdpZHRoKTtcbiAgICB2YXIgbWluWSA9IE1hdGgubWluKHksIHkgKyBoZWlnaHQpO1xuICAgIHZhciBtYXhZID0gTWF0aC5tYXgoeSwgeSArIGhlaWdodCk7XG4gICAgcmV0dXJuIHB4ID49IG1pblggJiYgcHggPD0gbWF4WCAmJiBweSA+PSBtaW5ZICYmIHB5IDw9IG1heFk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbnZhciBkZWZhdWx0UHJvcHMgPSB7XG4gIHg6IDAsXG4gIHk6IDAsXG4gIHdpZHRoOiAwLFxuICBoZWlnaHQ6IDAsXG4gIC8vIFRoZSByYWRpdXMgb2YgYm9yZGVyXG4gIC8vIFRoZSByYWRpdXMgb2YgZm91ciBjb3JuZXJzIHdoZW4gcmFkaXVzIGlzIGEgbnVtYmVyXG4gIC8vIFRoZSByYWRpdXMgb2YgbGVmdC10b3AsIHJpZ2h0LXRvcCwgcmlnaHQtYm90dG9tLCBsZWZ0LWJvdHRvbSB3aGVuIHJhZGl1cyBpcyBhbiBhcnJheVxuICByYWRpdXM6IDAsXG4gIGlzQW5pbWF0aW9uQWN0aXZlOiBmYWxzZSxcbiAgaXNVcGRhdGVBbmltYXRpb25BY3RpdmU6IGZhbHNlLFxuICBhbmltYXRpb25CZWdpbjogMCxcbiAgYW5pbWF0aW9uRHVyYXRpb246IDE1MDAsXG4gIGFuaW1hdGlvbkVhc2luZzogJ2Vhc2UnXG59O1xuZXhwb3J0IHZhciBSZWN0YW5nbGUgPSBmdW5jdGlvbiBSZWN0YW5nbGUocmVjdGFuZ2xlUHJvcHMpIHtcbiAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0UHJvcHMpLCByZWN0YW5nbGVQcm9wcyk7XG4gIHZhciBwYXRoUmVmID0gdXNlUmVmKCk7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZSgtMSksXG4gICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgdG90YWxMZW5ndGggPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldFRvdGFsTGVuZ3RoID0gX3VzZVN0YXRlMlsxXTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAocGF0aFJlZi5jdXJyZW50ICYmIHBhdGhSZWYuY3VycmVudC5nZXRUb3RhbExlbmd0aCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHBhdGhUb3RhbExlbmd0aCA9IHBhdGhSZWYuY3VycmVudC5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICBpZiAocGF0aFRvdGFsTGVuZ3RoKSB7XG4gICAgICAgICAgc2V0VG90YWxMZW5ndGgocGF0aFRvdGFsTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0b3RhbCBsZW5ndGggZXJyb3JcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtdKTtcbiAgdmFyIHggPSBwcm9wcy54LFxuICAgIHkgPSBwcm9wcy55LFxuICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgIHJhZGl1cyA9IHByb3BzLnJhZGl1cyxcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gIHZhciBhbmltYXRpb25FYXNpbmcgPSBwcm9wcy5hbmltYXRpb25FYXNpbmcsXG4gICAgYW5pbWF0aW9uRHVyYXRpb24gPSBwcm9wcy5hbmltYXRpb25EdXJhdGlvbixcbiAgICBhbmltYXRpb25CZWdpbiA9IHByb3BzLmFuaW1hdGlvbkJlZ2luLFxuICAgIGlzQW5pbWF0aW9uQWN0aXZlID0gcHJvcHMuaXNBbmltYXRpb25BY3RpdmUsXG4gICAgaXNVcGRhdGVBbmltYXRpb25BY3RpdmUgPSBwcm9wcy5pc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZTtcbiAgaWYgKHggIT09ICt4IHx8IHkgIT09ICt5IHx8IHdpZHRoICE9PSArd2lkdGggfHwgaGVpZ2h0ICE9PSAraGVpZ2h0IHx8IHdpZHRoID09PSAwIHx8IGhlaWdodCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBsYXllckNsYXNzID0gY2xzeCgncmVjaGFydHMtcmVjdGFuZ2xlJywgY2xhc3NOYW1lKTtcbiAgaWYgKCFpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKHByb3BzLCB0cnVlKSwge1xuICAgICAgY2xhc3NOYW1lOiBsYXllckNsYXNzLFxuICAgICAgZDogZ2V0UmVjdGFuZ2xlUGF0aCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMpXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChBbmltYXRlLCB7XG4gICAgY2FuQmVnaW46IHRvdGFsTGVuZ3RoID4gMCxcbiAgICBmcm9tOiB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSxcbiAgICB0bzoge1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH0sXG4gICAgZHVyYXRpb246IGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgIGFuaW1hdGlvbkVhc2luZzogYW5pbWF0aW9uRWFzaW5nLFxuICAgIGlzQWN0aXZlOiBpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZVxuICB9LCBmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBjdXJyV2lkdGggPSBfcmVmLndpZHRoLFxuICAgICAgY3VyckhlaWdodCA9IF9yZWYuaGVpZ2h0LFxuICAgICAgY3VyclggPSBfcmVmLngsXG4gICAgICBjdXJyWSA9IF9yZWYueTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQW5pbWF0ZSwge1xuICAgICAgY2FuQmVnaW46IHRvdGFsTGVuZ3RoID4gMCxcbiAgICAgIGZyb206IFwiMHB4IFwiLmNvbmNhdCh0b3RhbExlbmd0aCA9PT0gLTEgPyAxIDogdG90YWxMZW5ndGgsIFwicHhcIiksXG4gICAgICB0bzogXCJcIi5jb25jYXQodG90YWxMZW5ndGgsIFwicHggMHB4XCIpLFxuICAgICAgYXR0cmlidXRlTmFtZTogXCJzdHJva2VEYXNoYXJyYXlcIixcbiAgICAgIGJlZ2luOiBhbmltYXRpb25CZWdpbixcbiAgICAgIGR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbixcbiAgICAgIGlzQWN0aXZlOiBpc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgIGVhc2luZzogYW5pbWF0aW9uRWFzaW5nXG4gICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhwcm9wcywgdHJ1ZSksIHtcbiAgICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzcyxcbiAgICAgIGQ6IGdldFJlY3RhbmdsZVBhdGgoY3VyclgsIGN1cnJZLCBjdXJyV2lkdGgsIGN1cnJIZWlnaHQsIHJhZGl1cyksXG4gICAgICByZWY6IHBhdGhSZWZcbiAgICB9KSkpO1xuICB9KTtcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIlR5cGVFcnJvciIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImxlbiIsImFycjIiLCJyIiwibCIsInQiLCJlIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJpc0FycmF5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNsc3giLCJBbmltYXRlIiwiZmlsdGVyUHJvcHMiLCJnZXRSZWN0YW5nbGVQYXRoIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsInJhZGl1cyIsIm1heFJhZGl1cyIsIk1hdGgiLCJtaW4iLCJhYnMiLCJ5U2lnbiIsInhTaWduIiwiY2xvY2tXaXNlIiwicGF0aCIsIm5ld1JhZGl1cyIsImNvbmNhdCIsIl9uZXdSYWRpdXMiLCJpc0luUmVjdGFuZ2xlIiwicG9pbnQiLCJyZWN0IiwicHgiLCJweSIsIm1pblgiLCJtYXhYIiwibWF4IiwibWluWSIsIm1heFkiLCJkZWZhdWx0UHJvcHMiLCJpc0FuaW1hdGlvbkFjdGl2ZSIsImlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlIiwiYW5pbWF0aW9uQmVnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkVhc2luZyIsIlJlY3RhbmdsZSIsInJlY3RhbmdsZVByb3BzIiwicHJvcHMiLCJwYXRoUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsInRvdGFsTGVuZ3RoIiwic2V0VG90YWxMZW5ndGgiLCJjdXJyZW50IiwiZ2V0VG90YWxMZW5ndGgiLCJwYXRoVG90YWxMZW5ndGgiLCJlcnIiLCJjbGFzc05hbWUiLCJsYXllckNsYXNzIiwiY3JlYXRlRWxlbWVudCIsImQiLCJjYW5CZWdpbiIsInRvIiwiZHVyYXRpb24iLCJpc0FjdGl2ZSIsIl9yZWYiLCJjdXJyV2lkdGgiLCJjdXJySGVpZ2h0IiwiY3VyclgiLCJjdXJyWSIsImF0dHJpYnV0ZU5hbWUiLCJiZWdpbiIsImVhc2luZyIsInJlZiJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Rectangle.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Sector.js":
/*!***************************************************!*\
!*** ./node_modules/recharts/es6/shape/Sector.js ***!
\***************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Sector: () => (/* binding */ Sector)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Sector\n */ \n\n\n\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.mathSign)(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\nvar getTangentCircle = function getTangentCircle(_ref) {\n var cx = _ref.cx, cy = _ref.cy, radius = _ref.radius, angle = _ref.angle, sign = _ref.sign, isExternal = _ref.isExternal, cornerRadius = _ref.cornerRadius, cornerIsExternal = _ref.cornerIsExternal;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / _util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, centerRadius, centerAngle);\n // The coordinate of point which is tangent to the circle\n var circleTangency = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, radius, centerAngle);\n // The coordinate of point which is tangent to the radius line\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, centerRadius * Math.cos(theta * _util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.RADIAN), lineTangencyAngle);\n return {\n center: center,\n circleTangency: circleTangency,\n lineTangency: lineTangency,\n theta: theta\n };\n};\nvar getSectorPath = function getSectorPath(_ref2) {\n var cx = _ref2.cx, cy = _ref2.cy, innerRadius = _ref2.innerRadius, outerRadius = _ref2.outerRadius, startAngle = _ref2.startAngle, endAngle = _ref2.endAngle;\n var angle = getDeltaAngle(startAngle, endAngle);\n // When the angle of sector equals to 360, star point and end point coincide\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, outerRadius, startAngle);\n var outerEndPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n if (innerRadius > 0) {\n var innerStartPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, innerRadius, startAngle);\n var innerEndPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n return path;\n};\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n var cx = _ref3.cx, cy = _ref3.cy, innerRadius = _ref3.innerRadius, outerRadius = _ref3.outerRadius, cornerRadius = _ref3.cornerRadius, forceCornerRadius = _ref3.forceCornerRadius, cornerIsExternal = _ref3.cornerIsExternal, startAngle = _ref3.startAngle, endAngle = _ref3.endAngle;\n var sign = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.mathSign)(endAngle - startAngle);\n var _getTangentCircle = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: startAngle,\n sign: sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }), soct = _getTangentCircle.circleTangency, solt = _getTangentCircle.lineTangency, sot = _getTangentCircle.theta;\n var _getTangentCircle2 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }), eoct = _getTangentCircle2.circleTangency, eolt = _getTangentCircle2.lineTangency, eot = _getTangentCircle2.theta;\n var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n return getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n if (innerRadius > 0) {\n var _getTangentCircle3 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: startAngle,\n sign: sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }), sict = _getTangentCircle3.circleTangency, silt = _getTangentCircle3.lineTangency, sit = _getTangentCircle3.theta;\n var _getTangentCircle4 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }), eict = _getTangentCircle4.circleTangency, eilt = _getTangentCircle4.lineTangency, eit = _getTangentCircle4.theta;\n var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n if (innerArcAngle < 0 && cornerRadius === 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n return path;\n};\nvar defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};\nvar Sector = function Sector(sectorProps) {\n var props = _objectSpread(_objectSpread({}, defaultProps), sectorProps);\n var cx = props.cx, cy = props.cy, innerRadius = props.innerRadius, outerRadius = props.outerRadius, cornerRadius = props.cornerRadius, forceCornerRadius = props.forceCornerRadius, cornerIsExternal = props.cornerIsExternal, startAngle = props.startAngle, endAngle = props.endAngle, className = props.className;\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('recharts-sector', className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.getPercentValue)(cornerRadius, deltaRadius, 0, true);\n var path;\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius: forceCornerRadius,\n cornerIsExternal: cornerIsExternal,\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else {\n path = getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__.filterProps)(props, true), {\n className: layerClass,\n d: path,\n role: \"img\"\n }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1NlY3Rvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJZixPQUFPZ0IsSUFBSSxDQUFDSDtJQUFJLElBQUliLE9BQU9pQixxQkFBcUIsRUFBRTtRQUFFLElBQUl2QixJQUFJTSxPQUFPaUIscUJBQXFCLENBQUNKO1FBQUlDLEtBQU1wQixDQUFBQSxJQUFJQSxFQUFFd0IsTUFBTSxDQUFDLFNBQVVK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LGdFQUFlQSxDQUFDaUIsY0FBY21ELGFBQWEsR0FBRztJQUN2RCxJQUFJakM7SUFDSixJQUFJa0MsS0FBSyxLQUFLOUQsS0FBS0UsR0FBRyxDQUFDTixhQUFhQyxZQUFZLEtBQUs7UUFDbkQrQixPQUFPTSxvQkFBb0I7WUFDekI3QixJQUFJQTtZQUNKQyxJQUFJQTtZQUNKaUIsYUFBYUE7WUFDYkMsYUFBYUE7WUFDYmQsY0FBY1YsS0FBS0MsR0FBRyxDQUFDNkQsSUFBSUQsY0FBYztZQUN6Q3pCLG1CQUFtQkE7WUFDbkJ6QixrQkFBa0JBO1lBQ2xCZixZQUFZQTtZQUNaQyxVQUFVQTtRQUNaO0lBQ0YsT0FBTztRQUNMK0IsT0FBT1AsY0FBYztZQUNuQmhCLElBQUlBO1lBQ0pDLElBQUlBO1lBQ0ppQixhQUFhQTtZQUNiQyxhQUFhQTtZQUNiNUIsWUFBWUE7WUFDWkMsVUFBVUE7UUFDWjtJQUNGO0lBQ0EsT0FBTyxXQUFXLEdBQUVULDBEQUFtQixDQUFDLFFBQVF2QyxTQUFTLENBQUMsR0FBR3lDLDZEQUFXQSxDQUFDb0UsT0FBTyxPQUFPO1FBQ3JGQyxXQUFXQztRQUNYSSxHQUFHcEM7UUFDSHFDLE1BQU07SUFDUjtBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1NlY3Rvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgU2VjdG9yXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmltcG9ydCB7IHBvbGFyVG9DYXJ0ZXNpYW4sIFJBRElBTiB9IGZyb20gJy4uL3V0aWwvUG9sYXJVdGlscyc7XG5pbXBvcnQgeyBnZXRQZXJjZW50VmFsdWUsIG1hdGhTaWduIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xudmFyIGdldERlbHRhQW5nbGUgPSBmdW5jdGlvbiBnZXREZWx0YUFuZ2xlKHN0YXJ0QW5nbGUsIGVuZEFuZ2xlKSB7XG4gIHZhciBzaWduID0gbWF0aFNpZ24oZW5kQW5nbGUgLSBzdGFydEFuZ2xlKTtcbiAgdmFyIGRlbHRhQW5nbGUgPSBNYXRoLm1pbihNYXRoLmFicyhlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpLCAzNTkuOTk5KTtcbiAgcmV0dXJuIHNpZ24gKiBkZWx0YUFuZ2xlO1xufTtcbnZhciBnZXRUYW5nZW50Q2lyY2xlID0gZnVuY3Rpb24gZ2V0VGFuZ2VudENpcmNsZShfcmVmKSB7XG4gIHZhciBjeCA9IF9yZWYuY3gsXG4gICAgY3kgPSBfcmVmLmN5LFxuICAgIHJhZGl1cyA9IF9yZWYucmFkaXVzLFxuICAgIGFuZ2xlID0gX3JlZi5hbmdsZSxcbiAgICBzaWduID0gX3JlZi5zaWduLFxuICAgIGlzRXh0ZXJuYWwgPSBfcmVmLmlzRXh0ZXJuYWwsXG4gICAgY29ybmVyUmFkaXVzID0gX3JlZi5jb3JuZXJSYWRpdXMsXG4gICAgY29ybmVySXNFeHRlcm5hbCA9IF9yZWYuY29ybmVySXNFeHRlcm5hbDtcbiAgdmFyIGNlbnRlclJhZGl1cyA9IGNvcm5lclJhZGl1cyAqIChpc0V4dGVybmFsID8gMSA6IC0xKSArIHJhZGl1cztcbiAgdmFyIHRoZXRhID0gTWF0aC5hc2luKGNvcm5lclJhZGl1cyAvIGNlbnRlclJhZGl1cykgLyBSQURJQU47XG4gIHZhciBjZW50ZXJBbmdsZSA9IGNvcm5lcklzRXh0ZXJuYWwgPyBhbmdsZSA6IGFuZ2xlICsgc2lnbiAqIHRoZXRhO1xuICB2YXIgY2VudGVyID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIGNlbnRlclJhZGl1cywgY2VudGVyQW5nbGUpO1xuICAvLyBUaGUgY29vcmRpbmF0ZSBvZiBwb2ludCB3aGljaCBpcyB0YW5nZW50IHRvIHRoZSBjaXJjbGVcbiAgdmFyIGNpcmNsZVRhbmdlbmN5ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHJhZGl1cywgY2VudGVyQW5nbGUpO1xuICAvLyBUaGUgY29vcmRpbmF0ZSBvZiBwb2ludCB3aGljaCBpcyB0YW5nZW50IHRvIHRoZSByYWRpdXMgbGluZVxuICB2YXIgbGluZVRhbmdlbmN5QW5nbGUgPSBjb3JuZXJJc0V4dGVybmFsID8gYW5nbGUgLSBzaWduICogdGhldGEgOiBhbmdsZTtcbiAgdmFyIGxpbmVUYW5nZW5jeSA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCBjZW50ZXJSYWRpdXMgKiBNYXRoLmNvcyh0aGV0YSAqIFJBRElBTiksIGxpbmVUYW5nZW5jeUFuZ2xlKTtcbiAgcmV0dXJuIHtcbiAgICBjZW50ZXI6IGNlbnRlcixcbiAgICBjaXJjbGVUYW5nZW5jeTogY2lyY2xlVGFuZ2VuY3ksXG4gICAgbGluZVRhbmdlbmN5OiBsaW5lVGFuZ2VuY3ksXG4gICAgdGhldGE6IHRoZXRhXG4gIH07XG59O1xudmFyIGdldFNlY3RvclBhdGggPSBmdW5jdGlvbiBnZXRTZWN0b3JQYXRoKF9yZWYyKSB7XG4gIHZhciBjeCA9IF9yZWYyLmN4LFxuICAgIGN5ID0gX3JlZjIuY3ksXG4gICAgaW5uZXJSYWRpdXMgPSBfcmVmMi5pbm5lclJhZGl1cyxcbiAgICBvdXRlclJhZGl1cyA9IF9yZWYyLm91dGVyUmFkaXVzLFxuICAgIHN0YXJ0QW5nbGUgPSBfcmVmMi5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gX3JlZjIuZW5kQW5nbGU7XG4gIHZhciBhbmdsZSA9IGdldERlbHRhQW5nbGUoc3RhcnRBbmdsZSwgZW5kQW5nbGUpO1xuXG4gIC8vIFdoZW4gdGhlIGFuZ2xlIG9mIHNlY3RvciBlcXVhbHMgdG8gMzYwLCBzdGFyIHBvaW50IGFuZCBlbmQgcG9pbnQgY29pbmNpZGVcbiAgdmFyIHRlbXBFbmRBbmdsZSA9IHN0YXJ0QW5nbGUgKyBhbmdsZTtcbiAgdmFyIG91dGVyU3RhcnRQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCBvdXRlclJhZGl1cywgc3RhcnRBbmdsZSk7XG4gIHZhciBvdXRlckVuZFBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIG91dGVyUmFkaXVzLCB0ZW1wRW5kQW5nbGUpO1xuICB2YXIgcGF0aCA9IFwiTSBcIi5jb25jYXQob3V0ZXJTdGFydFBvaW50LngsIFwiLFwiKS5jb25jYXQob3V0ZXJTdGFydFBvaW50LnksIFwiXFxuICAgIEEgXCIpLmNvbmNhdChvdXRlclJhZGl1cywgXCIsXCIpLmNvbmNhdChvdXRlclJhZGl1cywgXCIsMCxcXG4gICAgXCIpLmNvbmNhdCgrKE1hdGguYWJzKGFuZ2xlKSA+IDE4MCksIFwiLFwiKS5jb25jYXQoKyhzdGFydEFuZ2xlID4gdGVtcEVuZEFuZ2xlKSwgXCIsXFxuICAgIFwiKS5jb25jYXQob3V0ZXJFbmRQb2ludC54LCBcIixcIikuY29uY2F0KG91dGVyRW5kUG9pbnQueSwgXCJcXG4gIFwiKTtcbiAgaWYgKGlubmVyUmFkaXVzID4gMCkge1xuICAgIHZhciBpbm5lclN0YXJ0UG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgaW5uZXJSYWRpdXMsIHN0YXJ0QW5nbGUpO1xuICAgIHZhciBpbm5lckVuZFBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIGlubmVyUmFkaXVzLCB0ZW1wRW5kQW5nbGUpO1xuICAgIHBhdGggKz0gXCJMIFwiLmNvbmNhdChpbm5lckVuZFBvaW50LngsIFwiLFwiKS5jb25jYXQoaW5uZXJFbmRQb2ludC55LCBcIlxcbiAgICAgICAgICAgIEEgXCIpLmNvbmNhdChpbm5lclJhZGl1cywgXCIsXCIpLmNvbmNhdChpbm5lclJhZGl1cywgXCIsMCxcXG4gICAgICAgICAgICBcIikuY29uY2F0KCsoTWF0aC5hYnMoYW5nbGUpID4gMTgwKSwgXCIsXCIpLmNvbmNhdCgrKHN0YXJ0QW5nbGUgPD0gdGVtcEVuZEFuZ2xlKSwgXCIsXFxuICAgICAgICAgICAgXCIpLmNvbmNhdChpbm5lclN0YXJ0UG9pbnQueCwgXCIsXCIpLmNvbmNhdChpbm5lclN0YXJ0UG9pbnQueSwgXCIgWlwiKTtcbiAgfSBlbHNlIHtcbiAgICBwYXRoICs9IFwiTCBcIi5jb25jYXQoY3gsIFwiLFwiKS5jb25jYXQoY3ksIFwiIFpcIik7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59O1xudmFyIGdldFNlY3RvcldpdGhDb3JuZXIgPSBmdW5jdGlvbiBnZXRTZWN0b3JXaXRoQ29ybmVyKF9yZWYzKSB7XG4gIHZhciBjeCA9IF9yZWYzLmN4LFxuICAgIGN5ID0gX3JlZjMuY3ksXG4gICAgaW5uZXJSYWRpdXMgPSBfcmVmMy5pbm5lclJhZGl1cyxcbiAgICBvdXRlclJhZGl1cyA9IF9yZWYzLm91dGVyUmFkaXVzLFxuICAgIGNvcm5lclJhZGl1cyA9IF9yZWYzLmNvcm5lclJhZGl1cyxcbiAgICBmb3JjZUNvcm5lclJhZGl1cyA9IF9yZWYzLmZvcmNlQ29ybmVyUmFkaXVzLFxuICAgIGNvcm5lcklzRXh0ZXJuYWwgPSBfcmVmMy5jb3JuZXJJc0V4dGVybmFsLFxuICAgIHN0YXJ0QW5nbGUgPSBfcmVmMy5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gX3JlZjMuZW5kQW5nbGU7XG4gIHZhciBzaWduID0gbWF0aFNpZ24oZW5kQW5nbGUgLSBzdGFydEFuZ2xlKTtcbiAgdmFyIF9nZXRUYW5nZW50Q2lyY2xlID0gZ2V0VGFuZ2VudENpcmNsZSh7XG4gICAgICBjeDogY3gsXG4gICAgICBjeTogY3ksXG4gICAgICByYWRpdXM6IG91dGVyUmFkaXVzLFxuICAgICAgYW5nbGU6IHN0YXJ0QW5nbGUsXG4gICAgICBzaWduOiBzaWduLFxuICAgICAgY29ybmVyUmFkaXVzOiBjb3JuZXJSYWRpdXMsXG4gICAgICBjb3JuZXJJc0V4dGVybmFsOiBjb3JuZXJJc0V4dGVybmFsXG4gICAgfSksXG4gICAgc29jdCA9IF9nZXRUYW5nZW50Q2lyY2xlLmNpcmNsZVRhbmdlbmN5LFxuICAgIHNvbHQgPSBfZ2V0VGFuZ2VudENpcmNsZS5saW5lVGFuZ2VuY3ksXG4gICAgc290ID0gX2dldFRhbmdlbnRDaXJjbGUudGhldGE7XG4gIHZhciBfZ2V0VGFuZ2VudENpcmNsZTIgPSBnZXRUYW5nZW50Q2lyY2xlKHtcbiAgICAgIGN4OiBjeCxcbiAgICAgIGN5OiBjeSxcbiAgICAgIHJhZGl1czogb3V0ZXJSYWRpdXMsXG4gICAgICBhbmdsZTogZW5kQW5nbGUsXG4gICAgICBzaWduOiAtc2lnbixcbiAgICAgIGNvcm5lclJhZGl1czogY29ybmVyUmFkaXVzLFxuICAgICAgY29ybmVySXNFeHRlcm5hbDogY29ybmVySXNFeHRlcm5hbFxuICAgIH0pLFxuICAgIGVvY3QgPSBfZ2V0VGFuZ2VudENpcmNsZTIuY2lyY2xlVGFuZ2VuY3ksXG4gICAgZW9sdCA9IF9nZXRUYW5nZW50Q2lyY2xlMi5saW5lVGFuZ2VuY3ksXG4gICAgZW90ID0gX2dldFRhbmdlbnRDaXJjbGUyLnRoZXRhO1xuICB2YXIgb3V0ZXJBcmNBbmdsZSA9IGNvcm5lcklzRXh0ZXJuYWwgPyBNYXRoLmFicyhzdGFydEFuZ2xlIC0gZW5kQW5nbGUpIDogTWF0aC5hYnMoc3RhcnRBbmdsZSAtIGVuZEFuZ2xlKSAtIHNvdCAtIGVvdDtcbiAgaWYgKG91dGVyQXJjQW5nbGUgPCAwKSB7XG4gICAgaWYgKGZvcmNlQ29ybmVyUmFkaXVzKSB7XG4gICAgICByZXR1cm4gXCJNIFwiLmNvbmNhdChzb2x0LngsIFwiLFwiKS5jb25jYXQoc29sdC55LCBcIlxcbiAgICAgICAgYVwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIixcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsMCwwLDEsXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMgKiAyLCBcIiwwXFxuICAgICAgICBhXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLFwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIiwwLDAsMSxcIikuY29uY2F0KC1jb3JuZXJSYWRpdXMgKiAyLCBcIiwwXFxuICAgICAgXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0U2VjdG9yUGF0aCh7XG4gICAgICBjeDogY3gsXG4gICAgICBjeTogY3ksXG4gICAgICBpbm5lclJhZGl1czogaW5uZXJSYWRpdXMsXG4gICAgICBvdXRlclJhZGl1czogb3V0ZXJSYWRpdXMsXG4gICAgICBzdGFydEFuZ2xlOiBzdGFydEFuZ2xlLFxuICAgICAgZW5kQW5nbGU6IGVuZEFuZ2xlXG4gICAgfSk7XG4gIH1cbiAgdmFyIHBhdGggPSBcIk0gXCIuY29uY2F0KHNvbHQueCwgXCIsXCIpLmNvbmNhdChzb2x0LnksIFwiXFxuICAgIEFcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLDAsMCxcIikuY29uY2F0KCsoc2lnbiA8IDApLCBcIixcIikuY29uY2F0KHNvY3QueCwgXCIsXCIpLmNvbmNhdChzb2N0LnksIFwiXFxuICAgIEFcIikuY29uY2F0KG91dGVyUmFkaXVzLCBcIixcIikuY29uY2F0KG91dGVyUmFkaXVzLCBcIiwwLFwiKS5jb25jYXQoKyhvdXRlckFyY0FuZ2xlID4gMTgwKSwgXCIsXCIpLmNvbmNhdCgrKHNpZ24gPCAwKSwgXCIsXCIpLmNvbmNhdChlb2N0LngsIFwiLFwiKS5jb25jYXQoZW9jdC55LCBcIlxcbiAgICBBXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLFwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIiwwLDAsXCIpLmNvbmNhdCgrKHNpZ24gPCAwKSwgXCIsXCIpLmNvbmNhdChlb2x0LngsIFwiLFwiKS5jb25jYXQoZW9sdC55LCBcIlxcbiAgXCIpO1xuICBpZiAoaW5uZXJSYWRpdXMgPiAwKSB7XG4gICAgdmFyIF9nZXRUYW5nZW50Q2lyY2xlMyA9IGdldFRhbmdlbnRDaXJjbGUoe1xuICAgICAgICBjeDogY3gsXG4gICAgICAgIGN5OiBjeSxcbiAgICAgICAgcmFkaXVzOiBpbm5lclJhZGl1cyxcbiAgICAgICAgYW5nbGU6IHN0YXJ0QW5nbGUsXG4gICAgICAgIHNpZ246IHNpZ24sXG4gICAgICAgIGlzRXh0ZXJuYWw6IHRydWUsXG4gICAgICAgIGNvcm5lclJhZGl1czogY29ybmVyUmFkaXVzLFxuICAgICAgICBjb3JuZXJJc0V4dGVybmFsOiBjb3JuZXJJc0V4dGVybmFsXG4gICAgICB9KSxcbiAgICAgIHNpY3QgPSBfZ2V0VGFuZ2VudENpcmNsZTMuY2lyY2xlVGFuZ2VuY3ksXG4gICAgICBzaWx0ID0gX2dldFRhbmdlbnRDaXJjbGUzLmxpbmVUYW5nZW5jeSxcbiAgICAgIHNpdCA9IF9nZXRUYW5nZW50Q2lyY2xlMy50aGV0YTtcbiAgICB2YXIgX2dldFRhbmdlbnRDaXJjbGU0ID0gZ2V0VGFuZ2VudENpcmNsZSh7XG4gICAgICAgIGN4OiBjeCxcbiAgICAgICAgY3k6IGN5LFxuICAgICAgICByYWRpdXM6IGlubmVyUmFkaXVzLFxuICAgICAgICBhbmdsZTogZW5kQW5nbGUsXG4gICAgICAgIHNpZ246IC1zaWduLFxuICAgICAgICBpc0V4dGVybmFsOiB0cnVlLFxuICAgICAgICBjb3JuZXJSYWRpdXM6IGNvcm5lclJhZGl1cyxcbiAgICAgICAgY29ybmVySXNFeHRlcm5hbDogY29ybmVySXNFeHRlcm5hbFxuICAgICAgfSksXG4gICAgICBlaWN0ID0gX2dldFRhbmdlbnRDaXJjbGU0LmNpcmNsZVRhbmdlbmN5LFxuICAgICAgZWlsdCA9IF9nZXRUYW5nZW50Q2lyY2xlNC5saW5lVGFuZ2VuY3ksXG4gICAgICBlaXQgPSBfZ2V0VGFuZ2VudENpcmNsZTQudGhldGE7XG4gICAgdmFyIGlubmVyQXJjQW5nbGUgPSBjb3JuZXJJc0V4dGVybmFsID8gTWF0aC5hYnMoc3RhcnRBbmdsZSAtIGVuZEFuZ2xlKSA6IE1hdGguYWJzKHN0YXJ0QW5nbGUgLSBlbmRBbmdsZSkgLSBzaXQgLSBlaXQ7XG4gICAgaWYgKGlubmVyQXJjQW5nbGUgPCAwICYmIGNvcm5lclJhZGl1cyA9PT0gMCkge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHBhdGgsIFwiTFwiKS5jb25jYXQoY3gsIFwiLFwiKS5jb25jYXQoY3ksIFwiWlwiKTtcbiAgICB9XG4gICAgcGF0aCArPSBcIkxcIi5jb25jYXQoZWlsdC54LCBcIixcIikuY29uY2F0KGVpbHQueSwgXCJcXG4gICAgICBBXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLFwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIiwwLDAsXCIpLmNvbmNhdCgrKHNpZ24gPCAwKSwgXCIsXCIpLmNvbmNhdChlaWN0LngsIFwiLFwiKS5jb25jYXQoZWljdC55LCBcIlxcbiAgICAgIEFcIikuY29uY2F0KGlubmVyUmFkaXVzLCBcIixcIikuY29uY2F0KGlubmVyUmFkaXVzLCBcIiwwLFwiKS5jb25jYXQoKyhpbm5lckFyY0FuZ2xlID4gMTgwKSwgXCIsXCIpLmNvbmNhdCgrKHNpZ24gPiAwKSwgXCIsXCIpLmNvbmNhdChzaWN0LngsIFwiLFwiKS5jb25jYXQoc2ljdC55LCBcIlxcbiAgICAgIEFcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLDAsMCxcIikuY29uY2F0KCsoc2lnbiA8IDApLCBcIixcIikuY29uY2F0KHNpbHQueCwgXCIsXCIpLmNvbmNhdChzaWx0LnksIFwiWlwiKTtcbiAgfSBlbHNlIHtcbiAgICBwYXRoICs9IFwiTFwiLmNvbmNhdChjeCwgXCIsXCIpLmNvbmNhdChjeSwgXCJaXCIpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufTtcbnZhciBkZWZhdWx0UHJvcHMgPSB7XG4gIGN4OiAwLFxuICBjeTogMCxcbiAgaW5uZXJSYWRpdXM6IDAsXG4gIG91dGVyUmFkaXVzOiAwLFxuICBzdGFydEFuZ2xlOiAwLFxuICBlbmRBbmdsZTogMCxcbiAgY29ybmVyUmFkaXVzOiAwLFxuICBmb3JjZUNvcm5lclJhZGl1czogZmFsc2UsXG4gIGNvcm5lcklzRXh0ZXJuYWw6IGZhbHNlXG59O1xuZXhwb3J0IHZhciBTZWN0b3IgPSBmdW5jdGlvbiBTZWN0b3Ioc2VjdG9yUHJvcHMpIHtcbiAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0UHJvcHMpLCBzZWN0b3JQcm9wcyk7XG4gIHZhciBjeCA9IHByb3BzLmN4LFxuICAgIGN5ID0gcHJvcHMuY3ksXG4gICAgaW5uZXJSYWRpdXMgPSBwcm9wcy5pbm5lclJhZGl1cyxcbiAgICBvdXRlclJhZGl1cyA9IHByb3BzLm91dGVyUmFkaXVzLFxuICAgIGNvcm5lclJhZGl1cyA9IHByb3BzLmNvcm5lclJhZGl1cyxcbiAgICBmb3JjZUNvcm5lclJhZGl1cyA9IHByb3BzLmZvcmNlQ29ybmVyUmFkaXVzLFxuICAgIGNvcm5lcklzRXh0ZXJuYWwgPSBwcm9wcy5jb3JuZXJJc0V4dGVybmFsLFxuICAgIHN0YXJ0QW5nbGUgPSBwcm9wcy5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gcHJvcHMuZW5kQW5nbGUsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICBpZiAob3V0ZXJSYWRpdXMgPCBpbm5lclJhZGl1cyB8fCBzdGFydEFuZ2xlID09PSBlbmRBbmdsZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBsYXllckNsYXNzID0gY2xzeCgncmVjaGFydHMtc2VjdG9yJywgY2xhc3NOYW1lKTtcbiAgdmFyIGRlbHRhUmFkaXVzID0gb3V0ZXJSYWRpdXMgLSBpbm5lclJhZGl1cztcbiAgdmFyIGNyID0gZ2V0UGVyY2VudFZhbHVlKGNvcm5lclJhZGl1cywgZGVsdGFSYWRpdXMsIDAsIHRydWUpO1xuICB2YXIgcGF0aDtcbiAgaWYgKGNyID4gMCAmJiBNYXRoLmFicyhzdGFydEFuZ2xlIC0gZW5kQW5nbGUpIDwgMzYwKSB7XG4gICAgcGF0aCA9IGdldFNlY3RvcldpdGhDb3JuZXIoe1xuICAgICAgY3g6IGN4LFxuICAgICAgY3k6IGN5LFxuICAgICAgaW5uZXJSYWRpdXM6IGlubmVyUmFkaXVzLFxuICAgICAgb3V0ZXJSYWRpdXM6IG91dGVyUmFkaXVzLFxuICAgICAgY29ybmVyUmFkaXVzOiBNYXRoLm1pbihjciwgZGVsdGFSYWRpdXMgLyAyKSxcbiAgICAgIGZvcmNlQ29ybmVyUmFkaXVzOiBmb3JjZUNvcm5lclJhZGl1cyxcbiAgICAgIGNvcm5lcklzRXh0ZXJuYWw6IGNvcm5lcklzRXh0ZXJuYWwsXG4gICAgICBzdGFydEFuZ2xlOiBzdGFydEFuZ2xlLFxuICAgICAgZW5kQW5nbGU6IGVuZEFuZ2xlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcGF0aCA9IGdldFNlY3RvclBhdGgoe1xuICAgICAgY3g6IGN4LFxuICAgICAgY3k6IGN5LFxuICAgICAgaW5uZXJSYWRpdXM6IGlubmVyUmFkaXVzLFxuICAgICAgb3V0ZXJSYWRpdXM6IG91dGVyUmFkaXVzLFxuICAgICAgc3RhcnRBbmdsZTogc3RhcnRBbmdsZSxcbiAgICAgIGVuZEFuZ2xlOiBlbmRBbmdsZVxuICAgIH0pO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKHByb3BzLCB0cnVlKSwge1xuICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzcyxcbiAgICBkOiBwYXRoLFxuICAgIHJvbGU6IFwiaW1nXCJcbiAgfSkpO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJjbHN4IiwiZmlsdGVyUHJvcHMiLCJwb2xhclRvQ2FydGVzaWFuIiwiUkFESUFOIiwiZ2V0UGVyY2VudFZhbHVlIiwibWF0aFNpZ24iLCJnZXREZWx0YUFuZ2xlIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwic2lnbiIsImRlbHRhQW5nbGUiLCJNYXRoIiwibWluIiwiYWJzIiwiZ2V0VGFuZ2VudENpcmNsZSIsIl9yZWYiLCJjeCIsImN5IiwicmFkaXVzIiwiYW5nbGUiLCJpc0V4dGVybmFsIiwiY29ybmVyUmFkaXVzIiwiY29ybmVySXNFeHRlcm5hbCIsImNlbnRlclJhZGl1cyIsInRoZXRhIiwiYXNpbiIsImNlbnRlckFuZ2xlIiwiY2VudGVyIiwiY2lyY2xlVGFuZ2VuY3kiLCJsaW5lVGFuZ2VuY3lBbmdsZSIsImxpbmVUYW5nZW5jeSIsImNvcyIsImdldFNlY3RvclBhdGgiLCJfcmVmMiIsImlubmVyUmFkaXVzIiwib3V0ZXJSYWRpdXMiLCJ0ZW1wRW5kQW5nbGUiLCJvdXRlclN0YXJ0UG9pbnQiLCJvdXRlckVuZFBvaW50IiwicGF0aCIsImNvbmNhdCIsIngiLCJ5IiwiaW5uZXJTdGFydFBvaW50IiwiaW5uZXJFbmRQb2ludCIsImdldFNlY3RvcldpdGhDb3JuZXIiLCJfcmVmMyIsImZvcmNlQ29ybmVyUmFkaXVzIiwiX2dldFRhbmdlbnRDaXJjbGUiLCJzb2N0Iiwic29sdCIsInNvdCIsIl9nZXRUYW5nZW50Q2lyY2xlMiIsImVvY3QiLCJlb2x0IiwiZW90Iiwib3V0ZXJBcmNBbmdsZSIsIl9nZXRUYW5nZW50Q2lyY2xlMyIsInNpY3QiLCJzaWx0Iiwic2l0IiwiX2dldFRhbmdlbnRDaXJjbGU0IiwiZWljdCIsImVpbHQiLCJlaXQiLCJpbm5lckFyY0FuZ2xlIiwiZGVmYXVsdFByb3BzIiwiU2VjdG9yIiwic2VjdG9yUHJvcHMiLCJwcm9wcyIsImNsYXNzTmFtZSIsImxheWVyQ2xhc3MiLCJkZWx0YVJhZGl1cyIsImNyIiwiY3JlYXRlRWxlbWVudCIsImQiLCJyb2xlIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Sector.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Symbols.js":
/*!****************************************************!*\
!*** ./node_modules/recharts/es6/shape/Symbols.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Symbols: () => (/* binding */ Symbols)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/upperFirst */ \"(ssr)/./node_modules/lodash/upperFirst.js\");\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! victory-vendor/d3-shape */ \"(ssr)/./node_modules/victory-vendor/es/d3-shape.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nvar _excluded = [\n \"type\",\n \"size\",\n \"sizeType\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n/**\n * @fileOverview Curve\n */ \n\n\n\n\nvar symbolFactories = {\n symbolCircle: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolCircle,\n symbolCross: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolCross,\n symbolDiamond: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolDiamond,\n symbolSquare: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolSquare,\n symbolStar: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolStar,\n symbolTriangle: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolTriangle,\n symbolWye: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolWye\n};\nvar RADIAN = Math.PI / 180;\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_1___default()(type));\n return symbolFactories[name] || victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolCircle;\n};\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === 'area') {\n return size;\n }\n switch(type){\n case 'cross':\n return 5 * size * size / 9;\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n case 'square':\n return size * size;\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n default:\n return Math.PI * size * size / 4;\n }\n};\nvar registerSymbol = function registerSymbol(key, factory) {\n symbolFactories[\"symbol\".concat(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_1___default()(key))] = factory;\n};\nvar Symbols = function Symbols(_ref) {\n var _ref$type = _ref.type, type = _ref$type === void 0 ? 'circle' : _ref$type, _ref$size = _ref.size, size = _ref$size === void 0 ? 64 : _ref$size, _ref$sizeType = _ref.sizeType, sizeType = _ref$sizeType === void 0 ? 'area' : _ref$sizeType, rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread(_objectSpread({}, rest), {}, {\n type: type,\n size: size,\n sizeType: sizeType\n });\n /**\n * Calculate the path of curve\n * @return {String} path\n */ var getPath = function getPath() {\n var symbolFactory = getSymbolFactory(type);\n var symbol = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbol)().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n };\n var className = props.className, cx = props.cx, cy = props.cy;\n var filteredProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__.filterProps)(props, true);\n if (cx === +cx && cy === +cy && size === +size) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, filteredProps, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: getPath()\n }));\n }\n return null;\n};\nSymbols.registerSymbol = registerSymbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1N5bWJvbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsSUFBSUssWUFBWTtJQUFDO0lBQVE7SUFBUTtDQUFXO0FBQzVDLFNBQVNDO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0gsU0FBUyxDQUFDWSxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJZixPQUFPZ0IsSUFBSSxDQUFDSDtJQUFJLElBQUliLE9BQU9pQixxQkFBcUIsRUFBRTtRQUFFLElBQUl4QixJQUFJTyxPQUFPaUIscUJBQXFCLENBQUNKO1FBQUlDLEtB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LE1BQU1DLFVBQVVMO1FBQ3RGLE9BQU9oQjtJQUNUO0lBQ0EsSUFBSXFDLFlBQVlILE1BQU1HLFNBQVMsRUFDN0JDLEtBQUtKLE1BQU1JLEVBQUUsRUFDYkMsS0FBS0wsTUFBTUssRUFBRTtJQUNmLElBQUlDLGdCQUFnQjlCLDZEQUFXQSxDQUFDd0IsT0FBTztJQUN2QyxJQUFJSSxPQUFPLENBQUNBLE1BQU1DLE9BQU8sQ0FBQ0EsTUFBTW5CLFNBQVMsQ0FBQ0EsTUFBTTtRQUM5QyxPQUFPLFdBQVcsR0FBRXRCLDBEQUFtQixDQUFDLFFBQVE3QyxTQUFTLENBQUMsR0FBR3VGLGVBQWU7WUFDMUVILFdBQVc1QixnREFBSUEsQ0FBQyxvQkFBb0I0QjtZQUNwQ0ssV0FBVyxhQUFheEIsTUFBTSxDQUFDb0IsSUFBSSxNQUFNcEIsTUFBTSxDQUFDcUIsSUFBSTtZQUNwREksR0FBR1I7UUFDTDtJQUNGO0lBQ0EsT0FBTztBQUNULEVBQUU7QUFDRlAsUUFBUUYsY0FBYyxHQUFHQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvc2hhcGUvU3ltYm9scy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG52YXIgX2V4Y2x1ZGVkID0gW1widHlwZVwiLCBcInNpemVcIiwgXCJzaXplVHlwZVwiXTtcbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgQ3VydmVcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1cHBlckZpcnN0IGZyb20gJ2xvZGFzaC91cHBlckZpcnN0JztcbmltcG9ydCB7IHN5bWJvbCBhcyBzaGFwZVN5bWJvbCwgc3ltYm9sQ2lyY2xlLCBzeW1ib2xDcm9zcywgc3ltYm9sRGlhbW9uZCwgc3ltYm9sU3F1YXJlLCBzeW1ib2xTdGFyLCBzeW1ib2xUcmlhbmdsZSwgc3ltYm9sV3llIH0gZnJvbSAndmljdG9yeS12ZW5kb3IvZDMtc2hhcGUnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG52YXIgc3ltYm9sRmFjdG9yaWVzID0ge1xuICBzeW1ib2xDaXJjbGU6IHN5bWJvbENpcmNsZSxcbiAgc3ltYm9sQ3Jvc3M6IHN5bWJvbENyb3NzLFxuICBzeW1ib2xEaWFtb25kOiBzeW1ib2xEaWFtb25kLFxuICBzeW1ib2xTcXVhcmU6IHN5bWJvbFNxdWFyZSxcbiAgc3ltYm9sU3Rhcjogc3ltYm9sU3RhcixcbiAgc3ltYm9sVHJpYW5nbGU6IHN5bWJvbFRyaWFuZ2xlLFxuICBzeW1ib2xXeWU6IHN5bWJvbFd5ZVxufTtcbnZhciBSQURJQU4gPSBNYXRoLlBJIC8gMTgwO1xudmFyIGdldFN5bWJvbEZhY3RvcnkgPSBmdW5jdGlvbiBnZXRTeW1ib2xGYWN0b3J5KHR5cGUpIHtcbiAgdmFyIG5hbWUgPSBcInN5bWJvbFwiLmNvbmNhdCh1cHBlckZpcnN0KHR5cGUpKTtcbiAgcmV0dXJuIHN5bWJvbEZhY3Rvcmllc1tuYW1lXSB8fCBzeW1ib2xDaXJjbGU7XG59O1xudmFyIGNhbGN1bGF0ZUFyZWFTaXplID0gZnVuY3Rpb24gY2FsY3VsYXRlQXJlYVNpemUoc2l6ZSwgc2l6ZVR5cGUsIHR5cGUpIHtcbiAgaWYgKHNpemVUeXBlID09PSAnYXJlYScpIHtcbiAgICByZXR1cm4gc2l6ZTtcbiAgfVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdjcm9zcyc6XG4gICAgICByZXR1cm4gNSAqIHNpemUgKiBzaXplIC8gOTtcbiAgICBjYXNlICdkaWFtb25kJzpcbiAgICAgIHJldHVybiAwLjUgKiBzaXplICogc2l6ZSAvIE1hdGguc3FydCgzKTtcbiAgICBjYXNlICdzcXVhcmUnOlxuICAgICAgcmV0dXJuIHNpemUgKiBzaXplO1xuICAgIGNhc2UgJ3N0YXInOlxuICAgICAge1xuICAgICAgICB2YXIgYW5nbGUgPSAxOCAqIFJBRElBTjtcbiAgICAgICAgcmV0dXJuIDEuMjUgKiBzaXplICogc2l6ZSAqIChNYXRoLnRhbihhbmdsZSkgLSBNYXRoLnRhbihhbmdsZSAqIDIpICogTWF0aC5wb3coTWF0aC50YW4oYW5nbGUpLCAyKSk7XG4gICAgICB9XG4gICAgY2FzZSAndHJpYW5nbGUnOlxuICAgICAgcmV0dXJuIE1hdGguc3FydCgzKSAqIHNpemUgKiBzaXplIC8gNDtcbiAgICBjYXNlICd3eWUnOlxuICAgICAgcmV0dXJuICgyMSAtIDEwICogTWF0aC5zcXJ0KDMpKSAqIHNpemUgKiBzaXplIC8gODtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIE1hdGguUEkgKiBzaXplICogc2l6ZSAvIDQ7XG4gIH1cbn07XG52YXIgcmVnaXN0ZXJTeW1ib2wgPSBmdW5jdGlvbiByZWdpc3RlclN5bWJvbChrZXksIGZhY3RvcnkpIHtcbiAgc3ltYm9sRmFjdG9yaWVzW1wic3ltYm9sXCIuY29uY2F0KHVwcGVyRmlyc3Qoa2V5KSldID0gZmFjdG9yeTtcbn07XG5leHBvcnQgdmFyIFN5bWJvbHMgPSBmdW5jdGlvbiBTeW1ib2xzKF9yZWYpIHtcbiAgdmFyIF9yZWYkdHlwZSA9IF9yZWYudHlwZSxcbiAgICB0eXBlID0gX3JlZiR0eXBlID09PSB2b2lkIDAgPyAnY2lyY2xlJyA6IF9yZWYkdHlwZSxcbiAgICBfcmVmJHNpemUgPSBfcmVmLnNpemUsXG4gICAgc2l6ZSA9IF9yZWYkc2l6ZSA9PT0gdm9pZCAwID8gNjQgOiBfcmVmJHNpemUsXG4gICAgX3JlZiRzaXplVHlwZSA9IF9yZWYuc2l6ZVR5cGUsXG4gICAgc2l6ZVR5cGUgPSBfcmVmJHNpemVUeXBlID09PSB2b2lkIDAgPyAnYXJlYScgOiBfcmVmJHNpemVUeXBlLFxuICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0KSwge30sIHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIHNpemU6IHNpemUsXG4gICAgc2l6ZVR5cGU6IHNpemVUeXBlXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIHBhdGggb2YgY3VydmVcbiAgICogQHJldHVybiB7U3RyaW5nfSBwYXRoXG4gICAqL1xuICB2YXIgZ2V0UGF0aCA9IGZ1bmN0aW9uIGdldFBhdGgoKSB7XG4gICAgdmFyIHN5bWJvbEZhY3RvcnkgPSBnZXRTeW1ib2xGYWN0b3J5KHR5cGUpO1xuICAgIHZhciBzeW1ib2wgPSBzaGFwZVN5bWJvbCgpLnR5cGUoc3ltYm9sRmFjdG9yeSkuc2l6ZShjYWxjdWxhdGVBcmVhU2l6ZShzaXplLCBzaXplVHlwZSwgdHlwZSkpO1xuICAgIHJldHVybiBzeW1ib2woKTtcbiAgfTtcbiAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICBjeCA9IHByb3BzLmN4LFxuICAgIGN5ID0gcHJvcHMuY3k7XG4gIHZhciBmaWx0ZXJlZFByb3BzID0gZmlsdGVyUHJvcHMocHJvcHMsIHRydWUpO1xuICBpZiAoY3ggPT09ICtjeCAmJiBjeSA9PT0gK2N5ICYmIHNpemUgPT09ICtzaXplKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCBfZXh0ZW5kcyh7fSwgZmlsdGVyZWRQcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1zeW1ib2xzJywgY2xhc3NOYW1lKSxcbiAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIuY29uY2F0KGN4LCBcIiwgXCIpLmNvbmNhdChjeSwgXCIpXCIpLFxuICAgICAgZDogZ2V0UGF0aCgpXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblN5bWJvbHMucmVnaXN0ZXJTeW1ib2wgPSByZWdpc3RlclN5bWJvbDsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4Y2x1ZGVkIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJSZWFjdCIsInVwcGVyRmlyc3QiLCJzeW1ib2wiLCJzaGFwZVN5bWJvbCIsInN5bWJvbENpcmNsZSIsInN5bWJvbENyb3NzIiwic3ltYm9sRGlhbW9uZCIsInN5bWJvbFNxdWFyZSIsInN5bWJvbFN0YXIiLCJzeW1ib2xUcmlhbmdsZSIsInN5bWJvbFd5ZSIsImNsc3giLCJmaWx0ZXJQcm9wcyIsInN5bWJvbEZhY3RvcmllcyIsIlJBRElBTiIsIk1hdGgiLCJQSSIsImdldFN5bWJvbEZhY3RvcnkiLCJ0eXBlIiwibmFtZSIsImNvbmNhdCIsImNhbGN1bGF0ZUFyZWFTaXplIiwic2l6ZSIsInNpemVUeXBlIiwic3FydCIsImFuZ2xlIiwidGFuIiwicG93IiwicmVnaXN0ZXJTeW1ib2wiLCJmYWN0b3J5IiwiU3ltYm9scyIsIl9yZWYiLCJfcmVmJHR5cGUiLCJfcmVmJHNpemUiLCJfcmVmJHNpemVUeXBlIiwicmVzdCIsInByb3BzIiwiZ2V0UGF0aCIsInN5bWJvbEZhY3RvcnkiLCJjbGFzc05hbWUiLCJjeCIsImN5IiwiZmlsdGVyZWRQcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJ0cmFuc2Zvcm0iLCJkIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Symbols.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Trapezoid.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/shape/Trapezoid.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Trapezoid: () => (/* binding */ Trapezoid)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var react_smooth__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-smooth */ \"(ssr)/./node_modules/react-smooth/es6/index.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Rectangle\n */ \n\n\n\nvar getTrapezoidPath = function getTrapezoidPath(x, y, upperWidth, lowerWidth, height) {\n var widthGap = upperWidth - lowerWidth;\n var path;\n path = \"M \".concat(x, \",\").concat(y);\n path += \"L \".concat(x + upperWidth, \",\").concat(y);\n path += \"L \".concat(x + upperWidth - widthGap / 2, \",\").concat(y + height);\n path += \"L \".concat(x + upperWidth - widthGap / 2 - lowerWidth, \",\").concat(y + height);\n path += \"L \".concat(x, \",\").concat(y, \" Z\");\n return path;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n upperWidth: 0,\n lowerWidth: 0,\n height: 0,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nvar Trapezoid = function Trapezoid(props) {\n var trapezoidProps = _objectSpread(_objectSpread({}, defaultProps), props);\n var pathRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(-1), _useState2 = _slicedToArray(_useState, 2), totalLength = _useState2[0], setTotalLength = _useState2[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)({\n \"Trapezoid.useEffect\": function() {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }\n }[\"Trapezoid.useEffect\"], []);\n var x = trapezoidProps.x, y = trapezoidProps.y, upperWidth = trapezoidProps.upperWidth, lowerWidth = trapezoidProps.lowerWidth, height = trapezoidProps.height, className = trapezoidProps.className;\n var animationEasing = trapezoidProps.animationEasing, animationDuration = trapezoidProps.animationDuration, animationBegin = trapezoidProps.animationBegin, isUpdateAnimationActive = trapezoidProps.isUpdateAnimationActive;\n if (x !== +x || y !== +y || upperWidth !== +upperWidth || lowerWidth !== +lowerWidth || height !== +height || upperWidth === 0 && lowerWidth === 0 || height === 0) {\n return null;\n }\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('recharts-trapezoid', className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(trapezoidProps, true), {\n className: layerClass,\n d: getTrapezoidPath(x, y, upperWidth, lowerWidth, height)\n })));\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n canBegin: totalLength > 0,\n from: {\n upperWidth: 0,\n lowerWidth: 0,\n height: height,\n x: x,\n y: y\n },\n to: {\n upperWidth: upperWidth,\n lowerWidth: lowerWidth,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function(_ref) {\n var currUpperWidth = _ref.upperWidth, currLowerWidth = _ref.lowerWidth, currHeight = _ref.height, currX = _ref.x, currY = _ref.y;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n easing: animationEasing\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(trapezoidProps, true), {\n className: layerClass,\n d: getTrapezoidPath(currX, currY, currUpperWidth, currLowerWidth, currHeight),\n ref: pathRef\n })));\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1RyYXBlem9pZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLGVBQWVDLEdBQUcsRUFBRVQsQ0FBQztJQUFJLE9BQU9VLGdCQUFnQkQsUUFBUUUsc0JBQXNCRixLQUFLVCxNQUFNWSw0QkFBNEJILEtBQUtULE1BQU1hO0FBQW9CO0FBQzdKLFNBQVNBO0lBQXFCLE1BQU0sSUFBSUMsVUFBVTtBQUE4STtBQUNoTSxTQUFTRiw0QkFBNEJ0QixDQUFDLEVBQUV5QixNQUFN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RzdCLGlCQUFpQnNDLE9BQU9DLE9BQU9KLGdCQUFnQkMsZ0JBQWdCQztZQUNsRU0sS0FBSzFCO1FBQ1A7SUFDRjtBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1RyYXBlem9pZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBSZWN0YW5nbGVcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IEFuaW1hdGUgZnJvbSAncmVhY3Qtc21vb3RoJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbnZhciBnZXRUcmFwZXpvaWRQYXRoID0gZnVuY3Rpb24gZ2V0VHJhcGV6b2lkUGF0aCh4LCB5LCB1cHBlcldpZHRoLCBsb3dlcldpZHRoLCBoZWlnaHQpIHtcbiAgdmFyIHdpZHRoR2FwID0gdXBwZXJXaWR0aCAtIGxvd2VyV2lkdGg7XG4gIHZhciBwYXRoO1xuICBwYXRoID0gXCJNIFwiLmNvbmNhdCh4LCBcIixcIikuY29uY2F0KHkpO1xuICBwYXRoICs9IFwiTCBcIi5jb25jYXQoeCArIHVwcGVyV2lkdGgsIFwiLFwiKS5jb25jYXQoeSk7XG4gIHBhdGggKz0gXCJMIFwiLmNvbmNhdCh4ICsgdXBwZXJXaWR0aCAtIHdpZHRoR2FwIC8gMiwgXCIsXCIpLmNvbmNhdCh5ICsgaGVpZ2h0KTtcbiAgcGF0aCArPSBcIkwgXCIuY29uY2F0KHggKyB1cHBlcldpZHRoIC0gd2lkdGhHYXAgLyAyIC0gbG93ZXJXaWR0aCwgXCIsXCIpLmNvbmNhdCh5ICsgaGVpZ2h0KTtcbiAgcGF0aCArPSBcIkwgXCIuY29uY2F0KHgsIFwiLFwiKS5jb25jYXQoeSwgXCIgWlwiKTtcbiAgcmV0dXJuIHBhdGg7XG59O1xudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgeDogMCxcbiAgeTogMCxcbiAgdXBwZXJXaWR0aDogMCxcbiAgbG93ZXJXaWR0aDogMCxcbiAgaGVpZ2h0OiAwLFxuICBpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZTogZmFsc2UsXG4gIGFuaW1hdGlvbkJlZ2luOiAwLFxuICBhbmltYXRpb25EdXJhdGlvbjogMTUwMCxcbiAgYW5pbWF0aW9uRWFzaW5nOiAnZWFzZSdcbn07XG5leHBvcnQgdmFyIFRyYXBlem9pZCA9IGZ1bmN0aW9uIFRyYXBlem9pZChwcm9wcykge1xuICB2YXIgdHJhcGV6b2lkUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRQcm9wcyksIHByb3BzKTtcbiAgdmFyIHBhdGhSZWYgPSB1c2VSZWYoKTtcbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKC0xKSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICB0b3RhbExlbmd0aCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgc2V0VG90YWxMZW5ndGggPSBfdXNlU3RhdGUyWzFdO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChwYXRoUmVmLmN1cnJlbnQgJiYgcGF0aFJlZi5jdXJyZW50LmdldFRvdGFsTGVuZ3RoKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcGF0aFRvdGFsTGVuZ3RoID0gcGF0aFJlZi5jdXJyZW50LmdldFRvdGFsTGVuZ3RoKCk7XG4gICAgICAgIGlmIChwYXRoVG90YWxMZW5ndGgpIHtcbiAgICAgICAgICBzZXRUb3RhbExlbmd0aChwYXRoVG90YWxMZW5ndGgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRvdGFsIGxlbmd0aCBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pO1xuICB2YXIgeCA9IHRyYXBlem9pZFByb3BzLngsXG4gICAgeSA9IHRyYXBlem9pZFByb3BzLnksXG4gICAgdXBwZXJXaWR0aCA9IHRyYXBlem9pZFByb3BzLnVwcGVyV2lkdGgsXG4gICAgbG93ZXJXaWR0aCA9IHRyYXBlem9pZFByb3BzLmxvd2VyV2lkdGgsXG4gICAgaGVpZ2h0ID0gdHJhcGV6b2lkUHJvcHMuaGVpZ2h0LFxuICAgIGNsYXNzTmFtZSA9IHRyYXBlem9pZFByb3BzLmNsYXNzTmFtZTtcbiAgdmFyIGFuaW1hdGlvbkVhc2luZyA9IHRyYXBlem9pZFByb3BzLmFuaW1hdGlvbkVhc2luZyxcbiAgICBhbmltYXRpb25EdXJhdGlvbiA9IHRyYXBlem9pZFByb3BzLmFuaW1hdGlvbkR1cmF0aW9uLFxuICAgIGFuaW1hdGlvbkJlZ2luID0gdHJhcGV6b2lkUHJvcHMuYW5pbWF0aW9uQmVnaW4sXG4gICAgaXNVcGRhdGVBbmltYXRpb25BY3RpdmUgPSB0cmFwZXpvaWRQcm9wcy5pc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZTtcbiAgaWYgKHggIT09ICt4IHx8IHkgIT09ICt5IHx8IHVwcGVyV2lkdGggIT09ICt1cHBlcldpZHRoIHx8IGxvd2VyV2lkdGggIT09ICtsb3dlcldpZHRoIHx8IGhlaWdodCAhPT0gK2hlaWdodCB8fCB1cHBlcldpZHRoID09PSAwICYmIGxvd2VyV2lkdGggPT09IDAgfHwgaGVpZ2h0ID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy10cmFwZXpvaWQnLCBjbGFzc05hbWUpO1xuICBpZiAoIWlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKHRyYXBlem9pZFByb3BzLCB0cnVlKSwge1xuICAgICAgY2xhc3NOYW1lOiBsYXllckNsYXNzLFxuICAgICAgZDogZ2V0VHJhcGV6b2lkUGF0aCh4LCB5LCB1cHBlcldpZHRoLCBsb3dlcldpZHRoLCBoZWlnaHQpXG4gICAgfSkpKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQW5pbWF0ZSwge1xuICAgIGNhbkJlZ2luOiB0b3RhbExlbmd0aCA+IDAsXG4gICAgZnJvbToge1xuICAgICAgdXBwZXJXaWR0aDogMCxcbiAgICAgIGxvd2VyV2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSxcbiAgICB0bzoge1xuICAgICAgdXBwZXJXaWR0aDogdXBwZXJXaWR0aCxcbiAgICAgIGxvd2VyV2lkdGg6IGxvd2VyV2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSxcbiAgICBkdXJhdGlvbjogYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgYW5pbWF0aW9uRWFzaW5nOiBhbmltYXRpb25FYXNpbmcsXG4gICAgaXNBY3RpdmU6IGlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlXG4gIH0sIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIGN1cnJVcHBlcldpZHRoID0gX3JlZi51cHBlcldpZHRoLFxuICAgICAgY3Vyckxvd2VyV2lkdGggPSBfcmVmLmxvd2VyV2lkdGgsXG4gICAgICBjdXJySGVpZ2h0ID0gX3JlZi5oZWlnaHQsXG4gICAgICBjdXJyWCA9IF9yZWYueCxcbiAgICAgIGN1cnJZID0gX3JlZi55O1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChBbmltYXRlLCB7XG4gICAgICBjYW5CZWdpbjogdG90YWxMZW5ndGggPiAwLFxuICAgICAgZnJvbTogXCIwcHggXCIuY29uY2F0KHRvdGFsTGVuZ3RoID09PSAtMSA/IDEgOiB0b3RhbExlbmd0aCwgXCJweFwiKSxcbiAgICAgIHRvOiBcIlwiLmNvbmNhdCh0b3RhbExlbmd0aCwgXCJweCAwcHhcIiksXG4gICAgICBhdHRyaWJ1dGVOYW1lOiBcInN0cm9rZURhc2hhcnJheVwiLFxuICAgICAgYmVnaW46IGFuaW1hdGlvbkJlZ2luLFxuICAgICAgZHVyYXRpb246IGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZWFzaW5nOiBhbmltYXRpb25FYXNpbmdcbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKHRyYXBlem9pZFByb3BzLCB0cnVlKSwge1xuICAgICAgY2xhc3NOYW1lOiBsYXllckNsYXNzLFxuICAgICAgZDogZ2V0VHJhcGV6b2lkUGF0aChjdXJyWCwgY3VyclksIGN1cnJVcHBlcldpZHRoLCBjdXJyTG93ZXJXaWR0aCwgY3VyckhlaWdodCksXG4gICAgICByZWY6IHBhdGhSZWZcbiAgICB9KSkpO1xuICB9KTtcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIlR5cGVFcnJvciIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImxlbiIsImFycjIiLCJyIiwibCIsInQiLCJlIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJpc0FycmF5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNsc3giLCJBbmltYXRlIiwiZmlsdGVyUHJvcHMiLCJnZXRUcmFwZXpvaWRQYXRoIiwieCIsInkiLCJ1cHBlcldpZHRoIiwibG93ZXJXaWR0aCIsImhlaWdodCIsIndpZHRoR2FwIiwicGF0aCIsImNvbmNhdCIsImRlZmF1bHRQcm9wcyIsImlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlIiwiYW5pbWF0aW9uQmVnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkVhc2luZyIsIlRyYXBlem9pZCIsInByb3BzIiwidHJhcGV6b2lkUHJvcHMiLCJwYXRoUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsInRvdGFsTGVuZ3RoIiwic2V0VG90YWxMZW5ndGgiLCJjdXJyZW50IiwiZ2V0VG90YWxMZW5ndGgiLCJwYXRoVG90YWxMZW5ndGgiLCJlcnIiLCJjbGFzc05hbWUiLCJsYXllckNsYXNzIiwiY3JlYXRlRWxlbWVudCIsImQiLCJjYW5CZWdpbiIsInRvIiwiZHVyYXRpb24iLCJpc0FjdGl2ZSIsIl9yZWYiLCJjdXJyVXBwZXJXaWR0aCIsImN1cnJMb3dlcldpZHRoIiwiY3VyckhlaWdodCIsImN1cnJYIiwiY3VyclkiLCJhdHRyaWJ1dGVOYW1lIiwiYmVnaW4iLCJlYXNpbmciLCJyZWYiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Trapezoid.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/ActiveShapeUtils.js":
/*!************************************************************!*\
!*** ./node_modules/recharts/es6/util/ActiveShapeUtils.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Shape: () => (/* binding */ Shape),\n/* harmony export */ compareFunnel: () => (/* binding */ compareFunnel),\n/* harmony export */ comparePie: () => (/* binding */ comparePie),\n/* harmony export */ compareScatter: () => (/* binding */ compareScatter),\n/* harmony export */ getActiveShapeIndexForTooltip: () => (/* binding */ getActiveShapeIndexForTooltip),\n/* harmony export */ getPropsFromShapeOption: () => (/* binding */ getPropsFromShapeOption),\n/* harmony export */ isFunnel: () => (/* binding */ isFunnel),\n/* harmony export */ isPie: () => (/* binding */ isPie),\n/* harmony export */ isScatter: () => (/* binding */ isScatter)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isPlainObject */ \"(ssr)/./node_modules/lodash/isPlainObject.js\");\n/* harmony import */ var lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isBoolean__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isBoolean */ \"(ssr)/./node_modules/lodash/isBoolean.js\");\n/* harmony import */ var lodash_isBoolean__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isBoolean__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isEqual */ \"(ssr)/./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _shape_Rectangle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shape/Rectangle */ \"(ssr)/./node_modules/recharts/es6/shape/Rectangle.js\");\n/* harmony import */ var _shape_Trapezoid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../shape/Trapezoid */ \"(ssr)/./node_modules/recharts/es6/shape/Trapezoid.js\");\n/* harmony import */ var _shape_Sector__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../shape/Sector */ \"(ssr)/./node_modules/recharts/es6/shape/Sector.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _shape_Symbols__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../shape/Symbols */ \"(ssr)/./node_modules/recharts/es6/shape/Symbols.js\");\nvar _excluded = [\n \"option\",\n \"shapeType\",\n \"propTransformer\",\n \"activeClassName\",\n \"isActive\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\n\n\n\n\n/**\n * This is an abstraction for rendering a user defined prop for a customized shape in several forms.\n *\n * <Shape /> is the root and will handle taking in:\n * - an object of svg properties\n * - a boolean\n * - a render prop(inline function that returns jsx)\n * - a react element\n *\n * <ShapeSelector /> is a subcomponent of <Shape /> and used to match a component\n * to the value of props.shapeType that is passed to the root.\n *\n */ function defaultPropTransformer(option, props) {\n return _objectSpread(_objectSpread({}, props), option);\n}\nfunction isSymbolsProps(shapeType, _elementProps) {\n return shapeType === 'symbols';\n}\nfunction ShapeSelector(_ref) {\n var shapeType = _ref.shapeType, elementProps = _ref.elementProps;\n switch(shapeType){\n case 'rectangle':\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Rectangle__WEBPACK_IMPORTED_MODULE_5__.Rectangle, elementProps);\n case 'trapezoid':\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Trapezoid__WEBPACK_IMPORTED_MODULE_6__.Trapezoid, elementProps);\n case 'sector':\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Sector__WEBPACK_IMPORTED_MODULE_7__.Sector, elementProps);\n case 'symbols':\n if (isSymbolsProps(shapeType, elementProps)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Symbols__WEBPACK_IMPORTED_MODULE_8__.Symbols, elementProps);\n }\n break;\n default:\n return null;\n }\n}\nfunction getPropsFromShapeOption(option) {\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(option)) {\n return option.props;\n }\n return option;\n}\nfunction Shape(_ref2) {\n var option = _ref2.option, shapeType = _ref2.shapeType, _ref2$propTransformer = _ref2.propTransformer, propTransformer = _ref2$propTransformer === void 0 ? defaultPropTransformer : _ref2$propTransformer, _ref2$activeClassName = _ref2.activeClassName, activeClassName = _ref2$activeClassName === void 0 ? 'recharts-active-shape' : _ref2$activeClassName, isActive = _ref2.isActive, props = _objectWithoutProperties(_ref2, _excluded);\n var shape;\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(option)) {\n shape = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(option, _objectSpread(_objectSpread({}, props), getPropsFromShapeOption(option)));\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n shape = option(props);\n } else if (lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_2___default()(option) && !lodash_isBoolean__WEBPACK_IMPORTED_MODULE_3___default()(option)) {\n var nextProps = propTransformer(option, props);\n shape = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ShapeSelector, {\n shapeType: shapeType,\n elementProps: nextProps\n });\n } else {\n var elementProps = props;\n shape = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ShapeSelector, {\n shapeType: shapeType,\n elementProps: elementProps\n });\n }\n if (isActive) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, {\n className: activeClassName\n }, shape);\n }\n return shape;\n}\n/**\n * This is an abstraction to handle identifying the active index from a tooltip mouse interaction\n */ function isFunnel(graphicalItem, _item) {\n return _item != null && 'trapezoids' in graphicalItem.props;\n}\nfunction isPie(graphicalItem, _item) {\n return _item != null && 'sectors' in graphicalItem.props;\n}\nfunction isScatter(graphicalItem, _item) {\n return _item != null && 'points' in graphicalItem.props;\n}\nfunction compareFunnel(shapeData, activeTooltipItem) {\n var _activeTooltipItem$la, _activeTooltipItem$la2;\n var xMatches = shapeData.x === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la === void 0 ? void 0 : _activeTooltipItem$la.x) || shapeData.x === activeTooltipItem.x;\n var yMatches = shapeData.y === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la2 = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la2 === void 0 ? void 0 : _activeTooltipItem$la2.y) || shapeData.y === activeTooltipItem.y;\n return xMatches && yMatches;\n}\nfunction comparePie(shapeData, activeTooltipItem) {\n var startAngleMatches = shapeData.endAngle === activeTooltipItem.endAngle;\n var endAngleMatches = shapeData.startAngle === activeTooltipItem.startAngle;\n return startAngleMatches && endAngleMatches;\n}\nfunction compareScatter(shapeData, activeTooltipItem) {\n var xMatches = shapeData.x === activeTooltipItem.x;\n var yMatches = shapeData.y === activeTooltipItem.y;\n var zMatches = shapeData.z === activeTooltipItem.z;\n return xMatches && yMatches && zMatches;\n}\nfunction getComparisonFn(graphicalItem, activeItem) {\n var comparison;\n if (isFunnel(graphicalItem, activeItem)) {\n comparison = compareFunnel;\n } else if (isPie(graphicalItem, activeItem)) {\n comparison = comparePie;\n } else if (isScatter(graphicalItem, activeItem)) {\n comparison = compareScatter;\n }\n return comparison;\n}\nfunction getShapeDataKey(graphicalItem, activeItem) {\n var shapeKey;\n if (isFunnel(graphicalItem, activeItem)) {\n shapeKey = 'trapezoids';\n } else if (isPie(graphicalItem, activeItem)) {\n shapeKey = 'sectors';\n } else if (isScatter(graphicalItem, activeItem)) {\n shapeKey = 'points';\n }\n return shapeKey;\n}\nfunction getActiveShapeTooltipPayload(graphicalItem, activeItem) {\n if (isFunnel(graphicalItem, activeItem)) {\n var _activeItem$tooltipPa;\n return (_activeItem$tooltipPa = activeItem.tooltipPayload) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa[0]) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa.payload) === null || _activeItem$tooltipPa === void 0 ? void 0 : _activeItem$tooltipPa.payload;\n }\n if (isPie(graphicalItem, activeItem)) {\n var _activeItem$tooltipPa2;\n return (_activeItem$tooltipPa2 = activeItem.tooltipPayload) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2[0]) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2.payload) === null || _activeItem$tooltipPa2 === void 0 ? void 0 : _activeItem$tooltipPa2.payload;\n }\n if (isScatter(graphicalItem, activeItem)) {\n return activeItem.payload;\n }\n return {};\n}\n/**\n *\n * @param {GetActiveShapeIndexForTooltip} arg an object of incoming attributes from Tooltip\n * @returns {number}\n *\n * To handle possible duplicates in the data set,\n * match both the data value of the active item to a data value on a graph item,\n * and match the mouse coordinates of the active item to the coordinates of in a particular components shape data.\n * This assumes equal lengths of shape objects to data items.\n */ function getActiveShapeIndexForTooltip(_ref3) {\n var activeTooltipItem = _ref3.activeTooltipItem, graphicalItem = _ref3.graphicalItem, itemData = _ref3.itemData;\n var shapeKey = getShapeDataKey(graphicalItem, activeTooltipItem);\n var tooltipPayload = getActiveShapeTooltipPayload(graphicalItem, activeTooltipItem);\n var activeItemMatches = itemData.filter(function(datum, dataIndex) {\n var valuesMatch = lodash_isEqual__WEBPACK_IMPORTED_MODULE_4___default()(tooltipPayload, datum);\n var mouseCoordinateMatches = graphicalItem.props[shapeKey].filter(function(shapeData) {\n var comparison = getComparisonFn(graphicalItem, activeTooltipItem);\n return comparison(shapeData, activeTooltipItem);\n });\n // get the last index in case of multiple matches\n var indexOfMouseCoordinates = graphicalItem.props[shapeKey].indexOf(mouseCoordinateMatches[mouseCoordinateMatches.length - 1]);\n var coordinatesMatch = dataIndex === indexOfMouseCoordinates;\n return valuesMatch && coordinatesMatch;\n });\n // get the last index in case of multiple matches\n var activeIndex = itemData.indexOf(activeItemMatches[activeItemMatches.length - 1]);\n return activeIndex;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQWN0aXZlU2hhcGVVdGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJQSxZQUFZO0lBQUM7SUFBVTtJQUFhO0lBQW1CO0lBQW1CO0NBQVc7QUFDekYsU0FBU0MsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLHlCQUF5QkMsTUFBTSxFQUFFQyxRQUFRO0lBQUksSUFBSUQsVUFBVSxNQUFNLE9BQU8sQ0FBQztJQUFHLElBQUlFLFNBQVNDLDhCQUE4QkgsUUFBUUM7SUFBVyxJQUFJRyxLQUFLQztJQUFHLElBQUlDLE9BQU9DLHFCQUFxQixFQUFFO1FBQUUsSUFBSUMsbUJBQW1CRixPQUFPQyxxQkFBcUIsQ0FBQ1A7UUFBUyxJQUFLSyxJQUFJLEdBQUdBLElBQUlHLGlCQUFpQkMsTUFBTSxFQUFFSixJQUFLO1lBQUVELE1BQU1JLGdCQUFnQixDQUFDSCxFQUFFO1lBQUUsSUFBSUosU0FBU1MsT0FBTyxDQUFDTixRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNFLE9BQU9SLFNBQVMsQ0FBQ2Esb0JBQW9CLENBQUNDLElBQUksQ0FBQ1osUUFBUUksTUFBTTtZQUFVRixNQUFNLENBQUNFLElBQUksR0FBR0osTUFBTSxDQUFDSSxJQUFJO1FBQUU7SUFBRTtJQUFFLE9BQU9GO0FBQVE7QUFDM2UsU0FBU0MsOEJBQThCSCxNQUFNLEVBQUVDLFFBQVE7SUFBSSxJQUFJ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QzdDTixnQkFBZ0JpQyxNQUFNakMsYUFBYSxFQUNuQ2tDLFdBQVdELE1BQU1DLFFBQVE7SUFDM0IsSUFBSVIsV0FBV0QsZ0JBQWdCekIsZUFBZU07SUFDOUMsSUFBSXVCLGlCQUFpQkYsNkJBQTZCM0IsZUFBZU07SUFDakUsSUFBSTZCLG9CQUFvQkQsU0FBUzFGLE1BQU0sQ0FBQyxTQUFVNEYsS0FBSyxFQUFFQyxTQUFTO1FBQ2hFLElBQUlDLGNBQWNsRSxxREFBT0EsQ0FBQ3lELGdCQUFnQk87UUFDMUMsSUFBSUcseUJBQXlCdkMsY0FBY3BCLEtBQUssQ0FBQzhDLFNBQVMsQ0FBQ2xGLE1BQU0sQ0FBQyxTQUFVNkQsU0FBUztZQUNuRixJQUFJbUIsYUFBYUYsZ0JBQWdCdEIsZUFBZU07WUFDaEQsT0FBT2tCLFdBQVduQixXQUFXQztRQUMvQjtRQUVBLGlEQUFpRDtRQUNqRCxJQUFJa0MsMEJBQTBCeEMsY0FBY3BCLEtBQUssQ0FBQzhDLFNBQVMsQ0FBQzNGLE9BQU8sQ0FBQ3dHLHNCQUFzQixDQUFDQSx1QkFBdUJ6RyxNQUFNLEdBQUcsRUFBRTtRQUM3SCxJQUFJMkcsbUJBQW1CSixjQUFjRztRQUNyQyxPQUFPRixlQUFlRztJQUN4QjtJQUVBLGlEQUFpRDtJQUNqRCxJQUFJQyxjQUFjUixTQUFTbkcsT0FBTyxDQUFDb0csaUJBQWlCLENBQUNBLGtCQUFrQnJHLE1BQU0sR0FBRyxFQUFFO0lBQ2xGLE9BQU80RztBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0FjdGl2ZVNoYXBlVXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9leGNsdWRlZCA9IFtcIm9wdGlvblwiLCBcInNoYXBlVHlwZVwiLCBcInByb3BUcmFuc2Zvcm1lclwiLCBcImFjdGl2ZUNsYXNzTmFtZVwiLCBcImlzQWN0aXZlXCJdO1xuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgUmVhY3QsIHsgaXNWYWxpZEVsZW1lbnQsIGNsb25lRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJ2xvZGFzaC9pc1BsYWluT2JqZWN0JztcbmltcG9ydCBpc0Jvb2xlYW4gZnJvbSAnbG9kYXNoL2lzQm9vbGVhbic7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgeyBSZWN0YW5nbGUgfSBmcm9tICcuLi9zaGFwZS9SZWN0YW5nbGUnO1xuaW1wb3J0IHsgVHJhcGV6b2lkIH0gZnJvbSAnLi4vc2hhcGUvVHJhcGV6b2lkJztcbmltcG9ydCB7IFNlY3RvciB9IGZyb20gJy4uL3NoYXBlL1NlY3Rvcic7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBTeW1ib2xzIH0gZnJvbSAnLi4vc2hhcGUvU3ltYm9scyc7XG5cbi8qKlxuICogVGhpcyBpcyBhbiBhYnN0cmFjdGlvbiBmb3IgcmVuZGVyaW5nIGEgdXNlciBkZWZpbmVkIHByb3AgZm9yIGEgY3VzdG9taXplZCBzaGFwZSBpbiBzZXZlcmFsIGZvcm1zLlxuICpcbiAqIDxTaGFwZSAvPiBpcyB0aGUgcm9vdCBhbmQgd2lsbCBoYW5kbGUgdGFraW5nIGluOlxuICogIC0gYW4gb2JqZWN0IG9mIHN2ZyBwcm9wZXJ0aWVzXG4gKiAgLSBhIGJvb2xlYW5cbiAqICAtIGEgcmVuZGVyIHByb3AoaW5saW5lIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBqc3gpXG4gKiAgLSBhIHJlYWN0IGVsZW1lbnRcbiAqXG4gKiA8U2hhcGVTZWxlY3RvciAvPiBpcyBhIHN1YmNvbXBvbmVudCBvZiA8U2hhcGUgLz4gYW5kIHVzZWQgdG8gbWF0Y2ggYSBjb21wb25lbnRcbiAqIHRvIHRoZSB2YWx1ZSBvZiBwcm9wcy5zaGFwZVR5cGUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIHJvb3QuXG4gKlxuICovXG5cbmZ1bmN0aW9uIGRlZmF1bHRQcm9wVHJhbnNmb3JtZXIob3B0aW9uLCBwcm9wcykge1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIG9wdGlvbik7XG59XG5mdW5jdGlvbiBpc1N5bWJvbHNQcm9wcyhzaGFwZVR5cGUsIF9lbGVtZW50UHJvcHMpIHtcbiAgcmV0dXJuIHNoYXBlVHlwZSA9PT0gJ3N5bWJvbHMnO1xufVxuZnVuY3Rpb24gU2hhcGVTZWxlY3RvcihfcmVmKSB7XG4gIHZhciBzaGFwZVR5cGUgPSBfcmVmLnNoYXBlVHlwZSxcbiAgICBlbGVtZW50UHJvcHMgPSBfcmVmLmVsZW1lbnRQcm9wcztcbiAgc3dpdGNoIChzaGFwZVR5cGUpIHtcbiAgICBjYXNlICdyZWN0YW5nbGUnOlxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlY3RhbmdsZSwgZWxlbWVudFByb3BzKTtcbiAgICBjYXNlICd0cmFwZXpvaWQnOlxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRyYXBlem9pZCwgZWxlbWVudFByb3BzKTtcbiAgICBjYXNlICdzZWN0b3InOlxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNlY3RvciwgZWxlbWVudFByb3BzKTtcbiAgICBjYXNlICdzeW1ib2xzJzpcbiAgICAgIGlmIChpc1N5bWJvbHNQcm9wcyhzaGFwZVR5cGUsIGVsZW1lbnRQcm9wcykpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFN5bWJvbHMsIGVsZW1lbnRQcm9wcyk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wc0Zyb21TaGFwZU9wdGlvbihvcHRpb24pIHtcbiAgaWYgKCAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQob3B0aW9uKSkge1xuICAgIHJldHVybiBvcHRpb24ucHJvcHM7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBTaGFwZShfcmVmMikge1xuICB2YXIgb3B0aW9uID0gX3JlZjIub3B0aW9uLFxuICAgIHNoYXBlVHlwZSA9IF9yZWYyLnNoYXBlVHlwZSxcbiAgICBfcmVmMiRwcm9wVHJhbnNmb3JtZXIgPSBfcmVmMi5wcm9wVHJhbnNmb3JtZXIsXG4gICAgcHJvcFRyYW5zZm9ybWVyID0gX3JlZjIkcHJvcFRyYW5zZm9ybWVyID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcFRyYW5zZm9ybWVyIDogX3JlZjIkcHJvcFRyYW5zZm9ybWVyLFxuICAgIF9yZWYyJGFjdGl2ZUNsYXNzTmFtZSA9IF9yZWYyLmFjdGl2ZUNsYXNzTmFtZSxcbiAgICBhY3RpdmVDbGFzc05hbWUgPSBfcmVmMiRhY3RpdmVDbGFzc05hbWUgPT09IHZvaWQgMCA/ICdyZWNoYXJ0cy1hY3RpdmUtc2hhcGUnIDogX3JlZjIkYWN0aXZlQ2xhc3NOYW1lLFxuICAgIGlzQWN0aXZlID0gX3JlZjIuaXNBY3RpdmUsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjIsIF9leGNsdWRlZCk7XG4gIHZhciBzaGFwZTtcbiAgaWYgKCAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQob3B0aW9uKSkge1xuICAgIHNoYXBlID0gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChvcHRpb24sIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCBnZXRQcm9wc0Zyb21TaGFwZU9wdGlvbihvcHRpb24pKSk7XG4gIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihvcHRpb24pKSB7XG4gICAgc2hhcGUgPSBvcHRpb24ocHJvcHMpO1xuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qob3B0aW9uKSAmJiAhaXNCb29sZWFuKG9wdGlvbikpIHtcbiAgICB2YXIgbmV4dFByb3BzID0gcHJvcFRyYW5zZm9ybWVyKG9wdGlvbiwgcHJvcHMpO1xuICAgIHNoYXBlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2hhcGVTZWxlY3Rvciwge1xuICAgICAgc2hhcGVUeXBlOiBzaGFwZVR5cGUsXG4gICAgICBlbGVtZW50UHJvcHM6IG5leHRQcm9wc1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHZhciBlbGVtZW50UHJvcHMgPSBwcm9wcztcbiAgICBzaGFwZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNoYXBlU2VsZWN0b3IsIHtcbiAgICAgIHNoYXBlVHlwZTogc2hhcGVUeXBlLFxuICAgICAgZWxlbWVudFByb3BzOiBlbGVtZW50UHJvcHNcbiAgICB9KTtcbiAgfVxuICBpZiAoaXNBY3RpdmUpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgIGNsYXNzTmFtZTogYWN0aXZlQ2xhc3NOYW1lXG4gICAgfSwgc2hhcGUpO1xuICB9XG4gIHJldHVybiBzaGFwZTtcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGFuIGFic3RyYWN0aW9uIHRvIGhhbmRsZSBpZGVudGlmeWluZyB0aGUgYWN0aXZlIGluZGV4IGZyb20gYSB0b29sdGlwIG1vdXNlIGludGVyYWN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVubmVsKGdyYXBoaWNhbEl0ZW0sIF9pdGVtKSB7XG4gIHJldHVybiBfaXRlbSAhPSBudWxsICYmICd0cmFwZXpvaWRzJyBpbiBncmFwaGljYWxJdGVtLnByb3BzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUGllKGdyYXBoaWNhbEl0ZW0sIF9pdGVtKSB7XG4gIHJldHVybiBfaXRlbSAhPSBudWxsICYmICdzZWN0b3JzJyBpbiBncmFwaGljYWxJdGVtLnByb3BzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NhdHRlcihncmFwaGljYWxJdGVtLCBfaXRlbSkge1xuICByZXR1cm4gX2l0ZW0gIT0gbnVsbCAmJiAncG9pbnRzJyBpbiBncmFwaGljYWxJdGVtLnByb3BzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVGdW5uZWwoc2hhcGVEYXRhLCBhY3RpdmVUb29sdGlwSXRlbSkge1xuICB2YXIgX2FjdGl2ZVRvb2x0aXBJdGVtJGxhLCBfYWN0aXZlVG9vbHRpcEl0ZW0kbGEyO1xuICB2YXIgeE1hdGNoZXMgPSBzaGFwZURhdGEueCA9PT0gKGFjdGl2ZVRvb2x0aXBJdGVtID09PSBudWxsIHx8IGFjdGl2ZVRvb2x0aXBJdGVtID09PSB2b2lkIDAgfHwgKF9hY3RpdmVUb29sdGlwSXRlbSRsYSA9IGFjdGl2ZVRvb2x0aXBJdGVtLmxhYmVsVmlld0JveCkgPT09IG51bGwgfHwgX2FjdGl2ZVRvb2x0aXBJdGVtJGxhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYWN0aXZlVG9vbHRpcEl0ZW0kbGEueCkgfHwgc2hhcGVEYXRhLnggPT09IGFjdGl2ZVRvb2x0aXBJdGVtLng7XG4gIHZhciB5TWF0Y2hlcyA9IHNoYXBlRGF0YS55ID09PSAoYWN0aXZlVG9vbHRpcEl0ZW0gPT09IG51bGwgfHwgYWN0aXZlVG9vbHRpcEl0ZW0gPT09IHZvaWQgMCB8fCAoX2FjdGl2ZVRvb2x0aXBJdGVtJGxhMiA9IGFjdGl2ZVRvb2x0aXBJdGVtLmxhYmVsVmlld0JveCkgPT09IG51bGwgfHwgX2FjdGl2ZVRvb2x0aXBJdGVtJGxhMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FjdGl2ZVRvb2x0aXBJdGVtJGxhMi55KSB8fCBzaGFwZURhdGEueSA9PT0gYWN0aXZlVG9vbHRpcEl0ZW0ueTtcbiAgcmV0dXJuIHhNYXRjaGVzICYmIHlNYXRjaGVzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVQaWUoc2hhcGVEYXRhLCBhY3RpdmVUb29sdGlwSXRlbSkge1xuICB2YXIgc3RhcnRBbmdsZU1hdGNoZXMgPSBzaGFwZURhdGEuZW5kQW5nbGUgPT09IGFjdGl2ZVRvb2x0aXBJdGVtLmVuZEFuZ2xlO1xuICB2YXIgZW5kQW5nbGVNYXRjaGVzID0gc2hhcGVEYXRhLnN0YXJ0QW5nbGUgPT09IGFjdGl2ZVRvb2x0aXBJdGVtLnN0YXJ0QW5nbGU7XG4gIHJldHVybiBzdGFydEFuZ2xlTWF0Y2hlcyAmJiBlbmRBbmdsZU1hdGNoZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZVNjYXR0ZXIoc2hhcGVEYXRhLCBhY3RpdmVUb29sdGlwSXRlbSkge1xuICB2YXIgeE1hdGNoZXMgPSBzaGFwZURhdGEueCA9PT0gYWN0aXZlVG9vbHRpcEl0ZW0ueDtcbiAgdmFyIHlNYXRjaGVzID0gc2hhcGVEYXRhLnkgPT09IGFjdGl2ZVRvb2x0aXBJdGVtLnk7XG4gIHZhciB6TWF0Y2hlcyA9IHNoYXBlRGF0YS56ID09PSBhY3RpdmVUb29sdGlwSXRlbS56O1xuICByZXR1cm4geE1hdGNoZXMgJiYgeU1hdGNoZXMgJiYgek1hdGNoZXM7XG59XG5mdW5jdGlvbiBnZXRDb21wYXJpc29uRm4oZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkge1xuICB2YXIgY29tcGFyaXNvbjtcbiAgaWYgKGlzRnVubmVsKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgY29tcGFyaXNvbiA9IGNvbXBhcmVGdW5uZWw7XG4gIH0gZWxzZSBpZiAoaXNQaWUoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkpIHtcbiAgICBjb21wYXJpc29uID0gY29tcGFyZVBpZTtcbiAgfSBlbHNlIGlmIChpc1NjYXR0ZXIoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkpIHtcbiAgICBjb21wYXJpc29uID0gY29tcGFyZVNjYXR0ZXI7XG4gIH1cbiAgcmV0dXJuIGNvbXBhcmlzb247XG59XG5mdW5jdGlvbiBnZXRTaGFwZURhdGFLZXkoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkge1xuICB2YXIgc2hhcGVLZXk7XG4gIGlmIChpc0Z1bm5lbChncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSkge1xuICAgIHNoYXBlS2V5ID0gJ3RyYXBlem9pZHMnO1xuICB9IGVsc2UgaWYgKGlzUGllKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgc2hhcGVLZXkgPSAnc2VjdG9ycyc7XG4gIH0gZWxzZSBpZiAoaXNTY2F0dGVyKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgc2hhcGVLZXkgPSAncG9pbnRzJztcbiAgfVxuICByZXR1cm4gc2hhcGVLZXk7XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVTaGFwZVRvb2x0aXBQYXlsb2FkKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pIHtcbiAgaWYgKGlzRnVubmVsKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgdmFyIF9hY3RpdmVJdGVtJHRvb2x0aXBQYTtcbiAgICByZXR1cm4gKF9hY3RpdmVJdGVtJHRvb2x0aXBQYSA9IGFjdGl2ZUl0ZW0udG9vbHRpcFBheWxvYWQpID09PSBudWxsIHx8IF9hY3RpdmVJdGVtJHRvb2x0aXBQYSA9PT0gdm9pZCAwIHx8IChfYWN0aXZlSXRlbSR0b29sdGlwUGEgPSBfYWN0aXZlSXRlbSR0b29sdGlwUGFbMF0pID09PSBudWxsIHx8IF9hY3RpdmVJdGVtJHRvb2x0aXBQYSA9PT0gdm9pZCAwIHx8IChfYWN0aXZlSXRlbSR0b29sdGlwUGEgPSBfYWN0aXZlSXRlbSR0b29sdGlwUGEucGF5bG9hZCkgPT09IG51bGwgfHwgX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYWN0aXZlSXRlbSR0b29sdGlwUGEucGF5bG9hZDtcbiAgfVxuICBpZiAoaXNQaWUoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkpIHtcbiAgICB2YXIgX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMjtcbiAgICByZXR1cm4gKF9hY3RpdmVJdGVtJHRvb2x0aXBQYTIgPSBhY3RpdmVJdGVtLnRvb2x0aXBQYXlsb2FkKSA9PT0gbnVsbCB8fCBfYWN0aXZlSXRlbSR0b29sdGlwUGEyID09PSB2b2lkIDAgfHwgKF9hY3RpdmVJdGVtJHRvb2x0aXBQYTIgPSBfYWN0aXZlSXRlbSR0b29sdGlwUGEyWzBdKSA9PT0gbnVsbCB8fCBfYWN0aXZlSXRlbSR0b29sdGlwUGEyID09PSB2b2lkIDAgfHwgKF9hY3RpdmVJdGVtJHRvb2x0aXBQYTIgPSBfYWN0aXZlSXRlbSR0b29sdGlwUGEyLnBheWxvYWQpID09PSBudWxsIHx8IF9hY3RpdmVJdGVtJHRvb2x0aXBQYTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hY3RpdmVJdGVtJHRvb2x0aXBQYTIucGF5bG9hZDtcbiAgfVxuICBpZiAoaXNTY2F0dGVyKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgcmV0dXJuIGFjdGl2ZUl0ZW0ucGF5bG9hZDtcbiAgfVxuICByZXR1cm4ge307XG59XG4vKipcbiAqXG4gKiBAcGFyYW0ge0dldEFjdGl2ZVNoYXBlSW5kZXhGb3JUb29sdGlwfSBhcmcgYW4gb2JqZWN0IG9mIGluY29taW5nIGF0dHJpYnV0ZXMgZnJvbSBUb29sdGlwXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICpcbiAqIFRvIGhhbmRsZSBwb3NzaWJsZSBkdXBsaWNhdGVzIGluIHRoZSBkYXRhIHNldCxcbiAqIG1hdGNoIGJvdGggdGhlIGRhdGEgdmFsdWUgb2YgdGhlIGFjdGl2ZSBpdGVtIHRvIGEgZGF0YSB2YWx1ZSBvbiBhIGdyYXBoIGl0ZW0sXG4gKiBhbmQgbWF0Y2ggdGhlIG1vdXNlIGNvb3JkaW5hdGVzIG9mIHRoZSBhY3RpdmUgaXRlbSB0byB0aGUgY29vcmRpbmF0ZXMgb2YgaW4gYSBwYXJ0aWN1bGFyIGNvbXBvbmVudHMgc2hhcGUgZGF0YS5cbiAqIFRoaXMgYXNzdW1lcyBlcXVhbCBsZW5ndGhzIG9mIHNoYXBlIG9iamVjdHMgdG8gZGF0YSBpdGVtcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGl2ZVNoYXBlSW5kZXhGb3JUb29sdGlwKF9yZWYzKSB7XG4gIHZhciBhY3RpdmVUb29sdGlwSXRlbSA9IF9yZWYzLmFjdGl2ZVRvb2x0aXBJdGVtLFxuICAgIGdyYXBoaWNhbEl0ZW0gPSBfcmVmMy5ncmFwaGljYWxJdGVtLFxuICAgIGl0ZW1EYXRhID0gX3JlZjMuaXRlbURhdGE7XG4gIHZhciBzaGFwZUtleSA9IGdldFNoYXBlRGF0YUtleShncmFwaGljYWxJdGVtLCBhY3RpdmVUb29sdGlwSXRlbSk7XG4gIHZhciB0b29sdGlwUGF5bG9hZCA9IGdldEFjdGl2ZVNoYXBlVG9vbHRpcFBheWxvYWQoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlVG9vbHRpcEl0ZW0pO1xuICB2YXIgYWN0aXZlSXRlbU1hdGNoZXMgPSBpdGVtRGF0YS5maWx0ZXIoZnVuY3Rpb24gKGRhdHVtLCBkYXRhSW5kZXgpIHtcbiAgICB2YXIgdmFsdWVzTWF0Y2ggPSBpc0VxdWFsKHRvb2x0aXBQYXlsb2FkLCBkYXR1bSk7XG4gICAgdmFyIG1vdXNlQ29vcmRpbmF0ZU1hdGNoZXMgPSBncmFwaGljYWxJdGVtLnByb3BzW3NoYXBlS2V5XS5maWx0ZXIoZnVuY3Rpb24gKHNoYXBlRGF0YSkge1xuICAgICAgdmFyIGNvbXBhcmlzb24gPSBnZXRDb21wYXJpc29uRm4oZ3JhcGhpY2FsSXRlbSwgYWN0aXZlVG9vbHRpcEl0ZW0pO1xuICAgICAgcmV0dXJuIGNvbXBhcmlzb24oc2hhcGVEYXRhLCBhY3RpdmVUb29sdGlwSXRlbSk7XG4gICAgfSk7XG5cbiAgICAvLyBnZXQgdGhlIGxhc3QgaW5kZXggaW4gY2FzZSBvZiBtdWx0aXBsZSBtYXRjaGVzXG4gICAgdmFyIGluZGV4T2ZNb3VzZUNvb3JkaW5hdGVzID0gZ3JhcGhpY2FsSXRlbS5wcm9wc1tzaGFwZUtleV0uaW5kZXhPZihtb3VzZUNvb3JkaW5hdGVNYXRjaGVzW21vdXNlQ29vcmRpbmF0ZU1hdGNoZXMubGVuZ3RoIC0gMV0pO1xuICAgIHZhciBjb29yZGluYXRlc01hdGNoID0gZGF0YUluZGV4ID09PSBpbmRleE9mTW91c2VDb29yZGluYXRlcztcbiAgICByZXR1cm4gdmFsdWVzTWF0Y2ggJiYgY29vcmRpbmF0ZXNNYXRjaDtcbiAgfSk7XG5cbiAgLy8gZ2V0IHRoZSBsYXN0IGluZGV4IGluIGNhc2Ugb2YgbXVsdGlwbGUgbWF0Y2hlc1xuICB2YXIgYWN0aXZlSW5kZXggPSBpdGVtRGF0YS5pbmRleE9mKGFjdGl2ZUl0ZW1NYXRjaGVzW2FjdGl2ZUl0ZW1NYXRjaGVzLmxlbmd0aCAtIDFdKTtcbiAgcmV0dXJuIGFjdGl2ZUluZGV4O1xufSJdLCJuYW1lcyI6WyJfZXhjbHVkZWQiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwia2V5IiwiaSIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjYWxsIiwiaGFzT3duUHJvcGVydHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIlJlYWN0IiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJpc0Z1bmN0aW9uIiwiaXNQbGFpbk9iamVjdCIsImlzQm9vbGVhbiIsImlzRXF1YWwiLCJSZWN0YW5nbGUiLCJUcmFwZXpvaWQiLCJTZWN0b3IiLCJMYXllciIsIlN5bWJvbHMiLCJkZWZhdWx0UHJvcFRyYW5zZm9ybWVyIiwib3B0aW9uIiwicHJvcHMiLCJpc1N5bWJvbHNQcm9wcyIsInNoYXBlVHlwZSIsIl9lbGVtZW50UHJvcHMiLCJTaGFwZVNlbGVjdG9yIiwiX3JlZiIsImVsZW1lbnRQcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJnZXRQcm9wc0Zyb21TaGFwZU9wdGlvbiIsIlNoYXBlIiwiX3JlZjIiLCJfcmVmMiRwcm9wVHJhbnNmb3JtZXIiLCJwcm9wVHJhbnNmb3JtZXIiLCJfcmVmMiRhY3RpdmVDbGFzc05hbWUiLCJhY3RpdmVDbGFzc05hbWUiLCJpc0FjdGl2ZSIsInNoYXBlIiwibmV4dFByb3BzIiwiY2xhc3NOYW1lIiwiaXNGdW5uZWwiLCJncmFwaGljYWxJdGVtIiwiX2l0ZW0iLCJpc1BpZSIsImlzU2NhdHRlciIsImNvbXBhcmVGdW5uZWwiLCJzaGFwZURhdGEiLCJhY3RpdmVUb29sdGlwSXRlbSIsIl9hY3RpdmVUb29sdGlwSXRlbSRsYSIsIl9hY3RpdmVUb29sdGlwSXRlbSRsYTIiLCJ4TWF0Y2hlcyIsIngiLCJsYWJlbFZpZXdCb3giLCJ5TWF0Y2hlcyIsInkiLCJjb21wYXJlUGllIiwic3RhcnRBbmdsZU1hdGNoZXMiLCJlbmRBbmdsZSIsImVuZEFuZ2xlTWF0Y2hlcyIsInN0YXJ0QW5nbGUiLCJjb21wYXJlU2NhdHRlciIsInpNYXRjaGVzIiwieiIsImdldENvbXBhcmlzb25GbiIsImFjdGl2ZUl0ZW0iLCJjb21wYXJpc29uIiwiZ2V0U2hhcGVEYXRhS2V5Iiwic2hhcGVLZXkiLCJnZXRBY3RpdmVTaGFwZVRvb2x0aXBQYXlsb2FkIiwiX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhIiwidG9vbHRpcFBheWxvYWQiLCJwYXlsb2FkIiwiX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMiIsImdldEFjdGl2ZVNoYXBlSW5kZXhGb3JUb29sdGlwIiwiX3JlZjMiLCJpdGVtRGF0YSIsImFjdGl2ZUl0ZW1NYXRjaGVzIiwiZGF0dW0iLCJkYXRhSW5kZXgiLCJ2YWx1ZXNNYXRjaCIsIm1vdXNlQ29vcmRpbmF0ZU1hdGNoZXMiLCJpbmRleE9mTW91c2VDb29yZGluYXRlcyIsImNvb3JkaW5hdGVzTWF0Y2giLCJhY3RpdmVJbmRleCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ActiveShapeUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/BarUtils.js":
/*!****************************************************!*\
!*** ./node_modules/recharts/es6/util/BarUtils.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BarRectangle: () => (/* binding */ BarRectangle),\n/* harmony export */ minPointSizeCallback: () => (/* binding */ minPointSizeCallback)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tiny-invariant */ \"(ssr)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\");\n/* harmony import */ var _ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ActiveShapeUtils */ \"(ssr)/./node_modules/recharts/es6/util/ActiveShapeUtils.js\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nvar _excluded = [\n \"x\",\n \"y\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\n\n\n\n// Rectangle props is expecting x, y, height, width as numbers, name as a string, and radius as a custom type\n// When props are being spread in from a user defined component in Bar,\n// the prop types of an SVGElement have these typed as something else.\n// This function will return the passed in props\n// along with x, y, height as numbers, name as a string, and radius as number | [number, number, number, number]\nfunction typeguardBarRectangleProps(_ref, props) {\n var xProp = _ref.x, yProp = _ref.y, option = _objectWithoutProperties(_ref, _excluded);\n var xValue = \"\".concat(xProp);\n var x = parseInt(xValue, 10);\n var yValue = \"\".concat(yProp);\n var y = parseInt(yValue, 10);\n var heightValue = \"\".concat(props.height || option.height);\n var height = parseInt(heightValue, 10);\n var widthValue = \"\".concat(props.width || option.width);\n var width = parseInt(widthValue, 10);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), option), x ? {\n x: x\n } : {}), y ? {\n y: y\n } : {}), {}, {\n height: height,\n width: width,\n name: props.name,\n radius: props.radius\n });\n}\nfunction BarRectangle(props) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_2__.Shape, _extends({\n shapeType: \"rectangle\",\n propTransformer: typeguardBarRectangleProps,\n activeClassName: \"recharts-active-bar\"\n }, props));\n}\n/**\n * Safely gets minPointSize from from the minPointSize prop if it is a function\n * @param minPointSize minPointSize as passed to the Bar component\n * @param defaultValue default minPointSize\n * @returns minPointSize\n */ var minPointSizeCallback = function minPointSizeCallback(minPointSize) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return function(value, index) {\n if (typeof minPointSize === 'number') return minPointSize;\n var isValueNumberOrNil = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_3__.isNumber)(value) || (0,_DataUtils__WEBPACK_IMPORTED_MODULE_3__.isNullish)(value);\n if (isValueNumberOrNil) {\n return minPointSize(value, index);\n }\n !isValueNumberOrNil ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, \"minPointSize callback function received a value with type of \".concat(_typeof(value), \". Currently only numbers or null/undefined are supported.\")) : 0 : void 0;\n return defaultValue;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQmFyVXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUlBLFlBQVk7SUFBQztJQUFLO0NBQUk7QUFDMUIsU0FBU0MsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJZixPQUFPZ0IsSUFBSSxDQUFDSDtJQUFJLElBQUliLE9BQU9pQixxQkFBcUIsRUFBRTtRQUFFLElBQUl2QixJQUFJTSxPQUFPaUIscUJBQXFCLENBQUNKO1FBQUlDLEtBQU1wQixD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TyxRQUFRQTtRQUNSRSxPQUFPQTtRQUNQQyxNQUFNZCxNQUFNYyxJQUFJO1FBQ2hCQyxRQUFRZixNQUFNZSxNQUFNO0lBQ3RCO0FBQ0Y7QUFDTyxTQUFTQyxhQUFhaEIsS0FBSztJQUNoQyxPQUFPLFdBQVcsR0FBRVAsMERBQW1CLENBQUNFLG9EQUFLQSxFQUFFL0MsU0FBUztRQUN0RHNFLFdBQVc7UUFDWEMsaUJBQWlCckI7UUFDakJzQixpQkFBaUI7SUFDbkIsR0FBR3BCO0FBQ0w7QUFDQTs7Ozs7Q0FLQyxHQUNNLElBQUlxQix1QkFBdUIsU0FBU0EscUJBQXFCQyxZQUFZO0lBQzFFLElBQUlDLGVBQWVyRSxVQUFVQyxNQUFNLEdBQUcsS0FBS0QsU0FBUyxDQUFDLEVBQUUsS0FBS3NFLFlBQVl0RSxTQUFTLENBQUMsRUFBRSxHQUFHO0lBQ3ZGLE9BQU8sU0FBVXdCLEtBQUssRUFBRStDLEtBQUs7UUFDM0IsSUFBSSxPQUFPSCxpQkFBaUIsVUFBVSxPQUFPQTtRQUM3QyxJQUFJSSxxQkFBcUI3QixvREFBUUEsQ0FBQ25CLFVBQVVrQixxREFBU0EsQ0FBQ2xCO1FBQ3RELElBQUlnRCxvQkFBb0I7WUFDdEIsT0FBT0osYUFBYTVDLE9BQU8rQztRQUM3QjtRQUNBLENBQUNDLHFCQUFxQkMsS0FBcUMsR0FBR2pDLDBEQUFTQSxDQUFDLE9BQU8sZ0VBQWdFYSxNQUFNLENBQUNqRSxRQUFRb0MsUUFBUSxnRUFBZ0VnQixDQUFnQixHQUFHLEtBQUs7UUFDOVAsT0FBTzZCO0lBQ1Q7QUFDRixFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0JhclV0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfZXhjbHVkZWQgPSBbXCJ4XCIsIFwieVwiXTtcbmZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGludmFyaWFudCBmcm9tICd0aW55LWludmFyaWFudCc7XG5pbXBvcnQgeyBTaGFwZSB9IGZyb20gJy4vQWN0aXZlU2hhcGVVdGlscyc7XG5pbXBvcnQgeyBpc051bGxpc2gsIGlzTnVtYmVyIH0gZnJvbSAnLi9EYXRhVXRpbHMnO1xuXG4vLyBSZWN0YW5nbGUgcHJvcHMgaXMgZXhwZWN0aW5nIHgsIHksIGhlaWdodCwgd2lkdGggYXMgbnVtYmVycywgbmFtZSBhcyBhIHN0cmluZywgYW5kIHJhZGl1cyBhcyBhIGN1c3RvbSB0eXBlXG4vLyBXaGVuIHByb3BzIGFyZSBiZWluZyBzcHJlYWQgaW4gZnJvbSBhIHVzZXIgZGVmaW5lZCBjb21wb25lbnQgaW4gQmFyLFxuLy8gdGhlIHByb3AgdHlwZXMgb2YgYW4gU1ZHRWxlbWVudCBoYXZlIHRoZXNlIHR5cGVkIGFzIHNvbWV0aGluZyBlbHNlLlxuLy8gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgcGFzc2VkIGluIHByb3BzXG4vLyBhbG9uZyB3aXRoIHgsIHksIGhlaWdodCBhcyBudW1iZXJzLCBuYW1lIGFzIGEgc3RyaW5nLCBhbmQgcmFkaXVzIGFzIG51bWJlciB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdXG5mdW5jdGlvbiB0eXBlZ3VhcmRCYXJSZWN0YW5nbGVQcm9wcyhfcmVmLCBwcm9wcykge1xuICB2YXIgeFByb3AgPSBfcmVmLngsXG4gICAgeVByb3AgPSBfcmVmLnksXG4gICAgb3B0aW9uID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciB4VmFsdWUgPSBcIlwiLmNvbmNhdCh4UHJvcCk7XG4gIHZhciB4ID0gcGFyc2VJbnQoeFZhbHVlLCAxMCk7XG4gIHZhciB5VmFsdWUgPSBcIlwiLmNvbmNhdCh5UHJvcCk7XG4gIHZhciB5ID0gcGFyc2VJbnQoeVZhbHVlLCAxMCk7XG4gIHZhciBoZWlnaHRWYWx1ZSA9IFwiXCIuY29uY2F0KHByb3BzLmhlaWdodCB8fCBvcHRpb24uaGVpZ2h0KTtcbiAgdmFyIGhlaWdodCA9IHBhcnNlSW50KGhlaWdodFZhbHVlLCAxMCk7XG4gIHZhciB3aWR0aFZhbHVlID0gXCJcIi5jb25jYXQocHJvcHMud2lkdGggfHwgb3B0aW9uLndpZHRoKTtcbiAgdmFyIHdpZHRoID0gcGFyc2VJbnQod2lkdGhWYWx1ZSwgMTApO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIG9wdGlvbiksIHggPyB7XG4gICAgeDogeFxuICB9IDoge30pLCB5ID8ge1xuICAgIHk6IHlcbiAgfSA6IHt9KSwge30sIHtcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICByYWRpdXM6IHByb3BzLnJhZGl1c1xuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBCYXJSZWN0YW5nbGUocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNoYXBlLCBfZXh0ZW5kcyh7XG4gICAgc2hhcGVUeXBlOiBcInJlY3RhbmdsZVwiLFxuICAgIHByb3BUcmFuc2Zvcm1lcjogdHlwZWd1YXJkQmFyUmVjdGFuZ2xlUHJvcHMsXG4gICAgYWN0aXZlQ2xhc3NOYW1lOiBcInJlY2hhcnRzLWFjdGl2ZS1iYXJcIlxuICB9LCBwcm9wcykpO1xufVxuLyoqXG4gKiBTYWZlbHkgZ2V0cyBtaW5Qb2ludFNpemUgZnJvbSBmcm9tIHRoZSBtaW5Qb2ludFNpemUgcHJvcCBpZiBpdCBpcyBhIGZ1bmN0aW9uXG4gKiBAcGFyYW0gbWluUG9pbnRTaXplIG1pblBvaW50U2l6ZSBhcyBwYXNzZWQgdG8gdGhlIEJhciBjb21wb25lbnRcbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgZGVmYXVsdCBtaW5Qb2ludFNpemVcbiAqIEByZXR1cm5zIG1pblBvaW50U2l6ZVxuICovXG5leHBvcnQgdmFyIG1pblBvaW50U2l6ZUNhbGxiYWNrID0gZnVuY3Rpb24gbWluUG9pbnRTaXplQ2FsbGJhY2sobWluUG9pbnRTaXplKSB7XG4gIHZhciBkZWZhdWx0VmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgaWYgKHR5cGVvZiBtaW5Qb2ludFNpemUgPT09ICdudW1iZXInKSByZXR1cm4gbWluUG9pbnRTaXplO1xuICAgIHZhciBpc1ZhbHVlTnVtYmVyT3JOaWwgPSBpc051bWJlcih2YWx1ZSkgfHwgaXNOdWxsaXNoKHZhbHVlKTtcbiAgICBpZiAoaXNWYWx1ZU51bWJlck9yTmlsKSB7XG4gICAgICByZXR1cm4gbWluUG9pbnRTaXplKHZhbHVlLCBpbmRleCk7XG4gICAgfVxuICAgICFpc1ZhbHVlTnVtYmVyT3JOaWwgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIFwibWluUG9pbnRTaXplIGNhbGxiYWNrIGZ1bmN0aW9uIHJlY2VpdmVkIGEgdmFsdWUgd2l0aCB0eXBlIG9mIFwiLmNvbmNhdChfdHlwZW9mKHZhbHVlKSwgXCIuIEN1cnJlbnRseSBvbmx5IG51bWJlcnMgb3IgbnVsbC91bmRlZmluZWQgYXJlIHN1cHBvcnRlZC5cIikpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9O1xufTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJSZWFjdCIsImludmFyaWFudCIsIlNoYXBlIiwiaXNOdWxsaXNoIiwiaXNOdW1iZXIiLCJ0eXBlZ3VhcmRCYXJSZWN0YW5nbGVQcm9wcyIsIl9yZWYiLCJwcm9wcyIsInhQcm9wIiwieCIsInlQcm9wIiwieSIsIm9wdGlvbiIsInhWYWx1ZSIsImNvbmNhdCIsInBhcnNlSW50IiwieVZhbHVlIiwiaGVpZ2h0VmFsdWUiLCJoZWlnaHQiLCJ3aWR0aFZhbHVlIiwid2lkdGgiLCJuYW1lIiwicmFkaXVzIiwiQmFyUmVjdGFuZ2xlIiwiY3JlYXRlRWxlbWVudCIsInNoYXBlVHlwZSIsInByb3BUcmFuc2Zvcm1lciIsImFjdGl2ZUNsYXNzTmFtZSIsIm1pblBvaW50U2l6ZUNhbGxiYWNrIiwibWluUG9pbnRTaXplIiwiZGVmYXVsdFZhbHVlIiwidW5kZWZpbmVkIiwiaW5kZXgiLCJpc1ZhbHVlTnVtYmVyT3JOaWwiLCJwcm9jZXNzIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/BarUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js":
/*!**********************************************************!*\
!*** ./node_modules/recharts/es6/util/CartesianUtils.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ScaleHelper: () => (/* binding */ ScaleHelper),\n/* harmony export */ createLabeledScales: () => (/* binding */ createLabeledScales),\n/* harmony export */ formatAxisMap: () => (/* binding */ formatAxisMap),\n/* harmony export */ getAngledRectangleWidth: () => (/* binding */ getAngledRectangleWidth),\n/* harmony export */ normalizeAngle: () => (/* binding */ normalizeAngle),\n/* harmony export */ rectWithCoords: () => (/* binding */ rectWithCoords),\n/* harmony export */ rectWithPoints: () => (/* binding */ rectWithPoints)\n/* harmony export */ });\n/* harmony import */ var lodash_mapValues__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/mapValues */ \"(ssr)/./node_modules/lodash/mapValues.js\");\n/* harmony import */ var lodash_mapValues__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_mapValues__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_every__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/every */ \"(ssr)/./node_modules/lodash/every.js\");\n/* harmony import */ var lodash_every__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_every__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _ChartUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _cartesian_Bar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cartesian/Bar */ \"(ssr)/./node_modules/recharts/es6/cartesian/Bar.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {String} axisType The type of axes, x-axis or y-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */ var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width, height = props.height, layout = props.layout, children = props.children;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n var hasBar = !!(0,_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.findChildByType)(children, _cartesian_Bar__WEBPACK_IMPORTED_MODULE_3__.Bar);\n return ids.reduce(function(result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation, domain = axis.domain, _axis$padding = axis.padding, padding = _axis$padding === void 0 ? {} : _axis$padding, mirror = axis.mirror, reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n var calculatedPadding, range, x, y, needSpace;\n if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n var diff = domain[1] - domain[0];\n var smallestDistanceBetweenValues = Infinity;\n var sortedValues = axis.categoricalDomain.sort(_DataUtils__WEBPACK_IMPORTED_MODULE_4__.compareValues);\n sortedValues.forEach(function(value, index) {\n if (index > 0) {\n smallestDistanceBetweenValues = Math.min((value || 0) - (sortedValues[index - 1] || 0), smallestDistanceBetweenValues);\n }\n });\n if (Number.isFinite(smallestDistanceBetweenValues)) {\n var smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n var rangeWidth = axis.layout === 'vertical' ? offset.height : offset.width;\n if (axis.padding === 'gap') {\n calculatedPadding = smallestDistanceInPercent * rangeWidth / 2;\n }\n if (axis.padding === 'no-gap') {\n var gap = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_4__.getPercentValue)(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n calculatedPadding = halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n }\n }\n }\n if (axisType === 'xAxis') {\n range = [\n offset.left + (padding.left || 0) + (calculatedPadding || 0),\n offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0)\n ];\n } else if (axisType === 'yAxis') {\n range = layout === 'horizontal' ? [\n offset.top + offset.height - (padding.bottom || 0),\n offset.top + (padding.top || 0)\n ] : [\n offset.top + (padding.top || 0) + (calculatedPadding || 0),\n offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0)\n ];\n } else {\n range = axis.range;\n }\n if (reversed) {\n range = [\n range[1],\n range[0]\n ];\n }\n var _parseScale = (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_5__.parseScale)(axis, chartName, hasBar), scale = _parseScale.scale, realScaleType = _parseScale.realScaleType;\n scale.domain(domain).range(range);\n (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_5__.checkDomainOfScale)(scale);\n var ticks = (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_5__.getTicksOfScale)(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n if (axisType === 'xAxis') {\n needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n x = offset.left;\n y = steps[offsetKey] - needSpace * axis.height;\n } else if (axisType === 'yAxis') {\n needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n x = steps[offsetKey] - needSpace * axis.width;\n y = offset.top;\n }\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height\n });\n finalAxis.bandSize = (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_5__.getBandSizeOfAxis)(finalAxis, ticks);\n if (!axis.hide && axisType === 'xAxis') {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n } else if (!axis.hide) {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nvar rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x, y1 = _ref.y;\n var x2 = _ref2.x, y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param {Object} coords x1, x2, y1, and y2\n * @return {Object} object\n */ var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1, y1 = _ref3.y1, x2 = _ref3.x2, y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nvar ScaleHelper = /*#__PURE__*/ function() {\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n this.scale = scale;\n }\n return _createClass(ScaleHelper, [\n {\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n },\n {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n },\n {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n },\n {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n },\n {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n },\n {\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, bandAware = _ref4.bandAware, position = _ref4.position;\n if (value === undefined) {\n return undefined;\n }\n if (position) {\n switch(position){\n case 'start':\n {\n return this.scale(value);\n }\n case 'middle':\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n case 'end':\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n return this.scale(value) + _offset;\n }\n default:\n {\n return this.scale(value);\n }\n }\n }\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + _offset2;\n }\n return this.scale(value);\n }\n },\n {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }\n ], [\n {\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }\n ]);\n}();\n_defineProperty(ScaleHelper, \"EPS\", 1e-4);\nvar createLabeledScales = function createLabeledScales(options) {\n var scales = Object.keys(options).reduce(function(res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n }, {});\n return _objectSpread(_objectSpread({}, scales), {}, {\n apply: function apply(coord) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, bandAware = _ref5.bandAware, position = _ref5.position;\n return lodash_mapValues__WEBPACK_IMPORTED_MODULE_0___default()(coord, function(value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware,\n position: position\n });\n });\n },\n isInRange: function isInRange(coord) {\n return lodash_every__WEBPACK_IMPORTED_MODULE_1___default()(coord, function(value, label) {\n return scales[label].isInRange(value);\n });\n }\n });\n};\n/** Normalizes the angle so that 0 <= angle < 180.\n * @param {number} angle Angle in degrees.\n * @return {number} the normalized angle with a value of at least 0 and never greater or equal to 180. */ function normalizeAngle(angle) {\n return (angle % 180 + 180) % 180;\n}\n/** Calculates the width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n * @param {Object} size Width and height of the text in a horizontal position.\n * @param {number} angle Angle in degrees in which the text is displayed.\n * @return {number} The width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n */ var getAngledRectangleWidth = function getAngledRectangleWidth(_ref6) {\n var width = _ref6.width, height = _ref6.height;\n var angle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Ensure angle is >= 0 && < 180\n var normalizedAngle = normalizeAngle(angle);\n var angleRadians = normalizedAngle * Math.PI / 180;\n /* Depending on the height and width of the rectangle, we may need to use different formulas to calculate the angled\n * width. This threshold defines when each formula should kick in. */ var angleThreshold = Math.atan(height / width);\n var angledWidth = angleRadians > angleThreshold && angleRadians < Math.PI - angleThreshold ? height / Math.sin(angleRadians) : width / Math.cos(angleRadians);\n return Math.abs(angledWidth);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQ2FydGVzaWFuVXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLGdCQUFnQkMsUUFBUSxFQUFFQyxXQUFXO0lBQUksSUFBSSxDQUFFRCxDQUFBQSxvQkFBb0JDLFdBQVUsR0FBSTtRQUFFLE1BQU0sSUFBSUMsVUFBVTtJQUFzQztBQUFFO0FBQ3hKLFNBQVNDLGtCQUFrQkMsTUFBTSxFQUFFQyxLQUFLO0lBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlELE1BQU1FLE1BQU0sRUFBRUQsSUFBSztRQUFFLElBQUlFLGFBQWFILEtBQUssQ0FBQ0MsRUFBRTtRQUFFRSxXQUFXQyxVQUFVLEdBQUdELFdBQVdDLFVBQVUsSUFBSTtRQUFPRCxXQUFXRSxZQUFZLEdBQUc7UUFBTSxJQUFJLFdBQVdGLFlBQVlBLFdBQVdHLFFBQVEsR0FBRztRQUFNQyxPQUFPQyxjQUFjLENBQUNULFFBQVFVLGVBQWVOLFdBQVdPLEdBQUcsR0FBR1A7SUFBYTtBQUFFO0FBQzVVLFNBQVNRLGFBQWFmLFdBQVcsRUFBRWdCLFVBQVUsRUFBRUMsV0FBVztJQUFJLElBQUlELFlBQVlkLGtCQUFrQkYsWUFBWUgsU0FBUyxFQUFFbUI7SUFBYSxJQUFJQyxhQUFhZixrQkFBa0JGLGFBQWFpQjtJQUFjTixPQUFPQyxjQUFjLENBQUNaLGFBQWEsYUFB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QUFFeUcsS0FBSztnQkFDeEMsT0FBT0osTUFBTSxDQUFDSSxNQUFNLENBQUNWLFNBQVMsQ0FBQy9GO1lBQ2pDO1FBQ0Y7SUFDRjtBQUNGLEVBQUU7QUFFRjs7dUdBRXVHLEdBQ2hHLFNBQVMwRyxlQUFlQyxLQUFLO0lBQ2xDLE9BQU8sQ0FBQ0EsUUFBUSxNQUFNLEdBQUUsSUFBSztBQUMvQjtBQUVBOzs7O0NBSUMsR0FDTSxJQUFJQywwQkFBMEIsU0FBU0Esd0JBQXdCQyxLQUFLO0lBQ3pFLElBQUl4RixRQUFRd0YsTUFBTXhGLEtBQUssRUFDckJDLFNBQVN1RixNQUFNdkYsTUFBTTtJQUN2QixJQUFJcUYsUUFBUWpILFVBQVV2QixNQUFNLEdBQUcsS0FBS3VCLFNBQVMsQ0FBQyxFQUFFLEtBQUtnRyxZQUFZaEcsU0FBUyxDQUFDLEVBQUUsR0FBRztJQUNoRixnQ0FBZ0M7SUFDaEMsSUFBSW9ILGtCQUFrQkosZUFBZUM7SUFDckMsSUFBSUksZUFBZUQsa0JBQWtCakQsS0FBS21ELEVBQUUsR0FBRztJQUUvQztxRUFDbUUsR0FDbkUsSUFBSUMsaUJBQWlCcEQsS0FBS3FELElBQUksQ0FBQzVGLFNBQVNEO0lBQ3hDLElBQUk4RixjQUFjSixlQUFlRSxrQkFBa0JGLGVBQWVsRCxLQUFLbUQsRUFBRSxHQUFHQyxpQkFBaUIzRixTQUFTdUMsS0FBS3VELEdBQUcsQ0FBQ0wsZ0JBQWdCMUYsUUFBUXdDLEtBQUt3RCxHQUFHLENBQUNOO0lBQ2hKLE9BQU9sRCxLQUFLc0IsR0FBRyxDQUFDZ0M7QUFDbEIsRUFBRSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9DYXJ0ZXNpYW5VdGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuaW1wb3J0IG1hcFZhbHVlcyBmcm9tICdsb2Rhc2gvbWFwVmFsdWVzJztcbmltcG9ydCBldmVyeSBmcm9tICdsb2Rhc2gvZXZlcnknO1xuaW1wb3J0IHsgZ2V0VGlja3NPZlNjYWxlLCBwYXJzZVNjYWxlLCBjaGVja0RvbWFpbk9mU2NhbGUsIGdldEJhbmRTaXplT2ZBeGlzIH0gZnJvbSAnLi9DaGFydFV0aWxzJztcbmltcG9ydCB7IGZpbmRDaGlsZEJ5VHlwZSB9IGZyb20gJy4vUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBjb21wYXJlVmFsdWVzLCBnZXRQZXJjZW50VmFsdWUgfSBmcm9tICcuL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBCYXIgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vQmFyJztcblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHNjYWxlIGZ1bmN0aW9uLCBwb3NpdGlvbiwgd2lkdGgsIGhlaWdodCBvZiBheGVzXG4gKiBAcGFyYW0gIHtPYmplY3R9IHByb3BzICAgICBMYXRlc3QgcHJvcHNcbiAqIEBwYXJhbSAge09iamVjdH0gYXhpc01hcCAgIFRoZSBjb25maWd1cmF0aW9uIG9mIGF4ZXNcbiAqIEBwYXJhbSAge09iamVjdH0gb2Zmc2V0ICAgIFRoZSBvZmZzZXQgb2YgbWFpbiBwYXJ0IGluIHRoZSBzdmcgZWxlbWVudFxuICogQHBhcmFtICB7U3RyaW5nfSBheGlzVHlwZSAgVGhlIHR5cGUgb2YgYXhlcywgeC1heGlzIG9yIHktYXhpc1xuICogQHBhcmFtICB7U3RyaW5nfSBjaGFydE5hbWUgVGhlIG5hbWUgb2YgY2hhcnRcbiAqIEByZXR1cm4ge09iamVjdH0gQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgdmFyIGZvcm1hdEF4aXNNYXAgPSBmdW5jdGlvbiBmb3JtYXRBeGlzTWFwKHByb3BzLCBheGlzTWFwLCBvZmZzZXQsIGF4aXNUeXBlLCBjaGFydE5hbWUpIHtcbiAgdmFyIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgIGxheW91dCA9IHByb3BzLmxheW91dCxcbiAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICB2YXIgaWRzID0gT2JqZWN0LmtleXMoYXhpc01hcCk7XG4gIHZhciBzdGVwcyA9IHtcbiAgICBsZWZ0OiBvZmZzZXQubGVmdCxcbiAgICBsZWZ0TWlycm9yOiBvZmZzZXQubGVmdCxcbiAgICByaWdodDogd2lkdGggLSBvZmZzZXQucmlnaHQsXG4gICAgcmlnaHRNaXJyb3I6IHdpZHRoIC0gb2Zmc2V0LnJpZ2h0LFxuICAgIHRvcDogb2Zmc2V0LnRvcCxcbiAgICB0b3BNaXJyb3I6IG9mZnNldC50b3AsXG4gICAgYm90dG9tOiBoZWlnaHQgLSBvZmZzZXQuYm90dG9tLFxuICAgIGJvdHRvbU1pcnJvcjogaGVpZ2h0IC0gb2Zmc2V0LmJvdHRvbVxuICB9O1xuICB2YXIgaGFzQmFyID0gISFmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIEJhcik7XG4gIHJldHVybiBpZHMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGlkKSB7XG4gICAgdmFyIGF4aXMgPSBheGlzTWFwW2lkXTtcbiAgICB2YXIgb3JpZW50YXRpb24gPSBheGlzLm9yaWVudGF0aW9uLFxuICAgICAgZG9tYWluID0gYXhpcy5kb21haW4sXG4gICAgICBfYXhpcyRwYWRkaW5nID0gYXhpcy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9heGlzJHBhZGRpbmcgPT09IHZvaWQgMCA/IHt9IDogX2F4aXMkcGFkZGluZyxcbiAgICAgIG1pcnJvciA9IGF4aXMubWlycm9yLFxuICAgICAgcmV2ZXJzZWQgPSBheGlzLnJldmVyc2VkO1xuICAgIHZhciBvZmZzZXRLZXkgPSBcIlwiLmNvbmNhdChvcmllbnRhdGlvbikuY29uY2F0KG1pcnJvciA/ICdNaXJyb3InIDogJycpO1xuICAgIHZhciBjYWxjdWxhdGVkUGFkZGluZywgcmFuZ2UsIHgsIHksIG5lZWRTcGFjZTtcbiAgICBpZiAoYXhpcy50eXBlID09PSAnbnVtYmVyJyAmJiAoYXhpcy5wYWRkaW5nID09PSAnZ2FwJyB8fCBheGlzLnBhZGRpbmcgPT09ICduby1nYXAnKSkge1xuICAgICAgdmFyIGRpZmYgPSBkb21haW5bMV0gLSBkb21haW5bMF07XG4gICAgICB2YXIgc21hbGxlc3REaXN0YW5jZUJldHdlZW5WYWx1ZXMgPSBJbmZpbml0eTtcbiAgICAgIHZhciBzb3J0ZWRWYWx1ZXMgPSBheGlzLmNhdGVnb3JpY2FsRG9tYWluLnNvcnQoY29tcGFyZVZhbHVlcyk7XG4gICAgICBzb3J0ZWRWYWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICBzbWFsbGVzdERpc3RhbmNlQmV0d2VlblZhbHVlcyA9IE1hdGgubWluKCh2YWx1ZSB8fCAwKSAtIChzb3J0ZWRWYWx1ZXNbaW5kZXggLSAxXSB8fCAwKSwgc21hbGxlc3REaXN0YW5jZUJldHdlZW5WYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmIChOdW1iZXIuaXNGaW5pdGUoc21hbGxlc3REaXN0YW5jZUJldHdlZW5WYWx1ZXMpKSB7XG4gICAgICAgIHZhciBzbWFsbGVzdERpc3RhbmNlSW5QZXJjZW50ID0gc21hbGxlc3REaXN0YW5jZUJldHdlZW5WYWx1ZXMgLyBkaWZmO1xuICAgICAgICB2YXIgcmFuZ2VXaWR0aCA9IGF4aXMubGF5b3V0ID09PSAndmVydGljYWwnID8gb2Zmc2V0LmhlaWdodCA6IG9mZnNldC53aWR0aDtcbiAgICAgICAgaWYgKGF4aXMucGFkZGluZyA9PT0gJ2dhcCcpIHtcbiAgICAgICAgICBjYWxjdWxhdGVkUGFkZGluZyA9IHNtYWxsZXN0RGlzdGFuY2VJblBlcmNlbnQgKiByYW5nZVdpZHRoIC8gMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXhpcy5wYWRkaW5nID09PSAnbm8tZ2FwJykge1xuICAgICAgICAgIHZhciBnYXAgPSBnZXRQZXJjZW50VmFsdWUocHJvcHMuYmFyQ2F0ZWdvcnlHYXAsIHNtYWxsZXN0RGlzdGFuY2VJblBlcmNlbnQgKiByYW5nZVdpZHRoKTtcbiAgICAgICAgICB2YXIgaGFsZkJhbmQgPSBzbWFsbGVzdERpc3RhbmNlSW5QZXJjZW50ICogcmFuZ2VXaWR0aCAvIDI7XG4gICAgICAgICAgY2FsY3VsYXRlZFBhZGRpbmcgPSBoYWxmQmFuZCAtIGdhcCAtIChoYWxmQmFuZCAtIGdhcCkgLyByYW5nZVdpZHRoICogZ2FwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChheGlzVHlwZSA9PT0gJ3hBeGlzJykge1xuICAgICAgcmFuZ2UgPSBbb2Zmc2V0LmxlZnQgKyAocGFkZGluZy5sZWZ0IHx8IDApICsgKGNhbGN1bGF0ZWRQYWRkaW5nIHx8IDApLCBvZmZzZXQubGVmdCArIG9mZnNldC53aWR0aCAtIChwYWRkaW5nLnJpZ2h0IHx8IDApIC0gKGNhbGN1bGF0ZWRQYWRkaW5nIHx8IDApXTtcbiAgICB9IGVsc2UgaWYgKGF4aXNUeXBlID09PSAneUF4aXMnKSB7XG4gICAgICByYW5nZSA9IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gW29mZnNldC50b3AgKyBvZmZzZXQuaGVpZ2h0IC0gKHBhZGRpbmcuYm90dG9tIHx8IDApLCBvZmZzZXQudG9wICsgKHBhZGRpbmcudG9wIHx8IDApXSA6IFtvZmZzZXQudG9wICsgKHBhZGRpbmcudG9wIHx8IDApICsgKGNhbGN1bGF0ZWRQYWRkaW5nIHx8IDApLCBvZmZzZXQudG9wICsgb2Zmc2V0LmhlaWdodCAtIChwYWRkaW5nLmJvdHRvbSB8fCAwKSAtIChjYWxjdWxhdGVkUGFkZGluZyB8fCAwKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhbmdlID0gYXhpcy5yYW5nZTtcbiAgICB9XG4gICAgaWYgKHJldmVyc2VkKSB7XG4gICAgICByYW5nZSA9IFtyYW5nZVsxXSwgcmFuZ2VbMF1dO1xuICAgIH1cbiAgICB2YXIgX3BhcnNlU2NhbGUgPSBwYXJzZVNjYWxlKGF4aXMsIGNoYXJ0TmFtZSwgaGFzQmFyKSxcbiAgICAgIHNjYWxlID0gX3BhcnNlU2NhbGUuc2NhbGUsXG4gICAgICByZWFsU2NhbGVUeXBlID0gX3BhcnNlU2NhbGUucmVhbFNjYWxlVHlwZTtcbiAgICBzY2FsZS5kb21haW4oZG9tYWluKS5yYW5nZShyYW5nZSk7XG4gICAgY2hlY2tEb21haW5PZlNjYWxlKHNjYWxlKTtcbiAgICB2YXIgdGlja3MgPSBnZXRUaWNrc09mU2NhbGUoc2NhbGUsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXhpcyksIHt9LCB7XG4gICAgICByZWFsU2NhbGVUeXBlOiByZWFsU2NhbGVUeXBlXG4gICAgfSkpO1xuICAgIGlmIChheGlzVHlwZSA9PT0gJ3hBeGlzJykge1xuICAgICAgbmVlZFNwYWNlID0gb3JpZW50YXRpb24gPT09ICd0b3AnICYmICFtaXJyb3IgfHwgb3JpZW50YXRpb24gPT09ICdib3R0b20nICYmIG1pcnJvcjtcbiAgICAgIHggPSBvZmZzZXQubGVmdDtcbiAgICAgIHkgPSBzdGVwc1tvZmZzZXRLZXldIC0gbmVlZFNwYWNlICogYXhpcy5oZWlnaHQ7XG4gICAgfSBlbHNlIGlmIChheGlzVHlwZSA9PT0gJ3lBeGlzJykge1xuICAgICAgbmVlZFNwYWNlID0gb3JpZW50YXRpb24gPT09ICdsZWZ0JyAmJiAhbWlycm9yIHx8IG9yaWVudGF0aW9uID09PSAncmlnaHQnICYmIG1pcnJvcjtcbiAgICAgIHggPSBzdGVwc1tvZmZzZXRLZXldIC0gbmVlZFNwYWNlICogYXhpcy53aWR0aDtcbiAgICAgIHkgPSBvZmZzZXQudG9wO1xuICAgIH1cbiAgICB2YXIgZmluYWxBeGlzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXMpLCB0aWNrcyksIHt9LCB7XG4gICAgICByZWFsU2NhbGVUeXBlOiByZWFsU2NhbGVUeXBlLFxuICAgICAgeDogeCxcbiAgICAgIHk6IHksXG4gICAgICBzY2FsZTogc2NhbGUsXG4gICAgICB3aWR0aDogYXhpc1R5cGUgPT09ICd4QXhpcycgPyBvZmZzZXQud2lkdGggOiBheGlzLndpZHRoLFxuICAgICAgaGVpZ2h0OiBheGlzVHlwZSA9PT0gJ3lBeGlzJyA/IG9mZnNldC5oZWlnaHQgOiBheGlzLmhlaWdodFxuICAgIH0pO1xuICAgIGZpbmFsQXhpcy5iYW5kU2l6ZSA9IGdldEJhbmRTaXplT2ZBeGlzKGZpbmFsQXhpcywgdGlja3MpO1xuICAgIGlmICghYXhpcy5oaWRlICYmIGF4aXNUeXBlID09PSAneEF4aXMnKSB7XG4gICAgICBzdGVwc1tvZmZzZXRLZXldICs9IChuZWVkU3BhY2UgPyAtMSA6IDEpICogZmluYWxBeGlzLmhlaWdodDtcbiAgICB9IGVsc2UgaWYgKCFheGlzLmhpZGUpIHtcbiAgICAgIHN0ZXBzW29mZnNldEtleV0gKz0gKG5lZWRTcGFjZSA/IC0xIDogMSkgKiBmaW5hbEF4aXMud2lkdGg7XG4gICAgfVxuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3VsdCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIGlkLCBmaW5hbEF4aXMpKTtcbiAgfSwge30pO1xufTtcbmV4cG9ydCB2YXIgcmVjdFdpdGhQb2ludHMgPSBmdW5jdGlvbiByZWN0V2l0aFBvaW50cyhfcmVmLCBfcmVmMikge1xuICB2YXIgeDEgPSBfcmVmLngsXG4gICAgeTEgPSBfcmVmLnk7XG4gIHZhciB4MiA9IF9yZWYyLngsXG4gICAgeTIgPSBfcmVmMi55O1xuICByZXR1cm4ge1xuICAgIHg6IE1hdGgubWluKHgxLCB4MiksXG4gICAgeTogTWF0aC5taW4oeTEsIHkyKSxcbiAgICB3aWR0aDogTWF0aC5hYnMoeDIgLSB4MSksXG4gICAgaGVpZ2h0OiBNYXRoLmFicyh5MiAtIHkxKVxuICB9O1xufTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSB4LCB5LCB3aWR0aCwgYW5kIGhlaWdodCBvZiBhIGJveCBmcm9tIHR3byByZWZlcmVuY2UgcG9pbnRzLlxuICogQHBhcmFtICB7T2JqZWN0fSBjb29yZHMgICAgIHgxLCB4MiwgeTEsIGFuZCB5MlxuICogQHJldHVybiB7T2JqZWN0fSBvYmplY3RcbiAqL1xuZXhwb3J0IHZhciByZWN0V2l0aENvb3JkcyA9IGZ1bmN0aW9uIHJlY3RXaXRoQ29vcmRzKF9yZWYzKSB7XG4gIHZhciB4MSA9IF9yZWYzLngxLFxuICAgIHkxID0gX3JlZjMueTEsXG4gICAgeDIgPSBfcmVmMy54MixcbiAgICB5MiA9IF9yZWYzLnkyO1xuICByZXR1cm4gcmVjdFdpdGhQb2ludHMoe1xuICAgIHg6IHgxLFxuICAgIHk6IHkxXG4gIH0sIHtcbiAgICB4OiB4MixcbiAgICB5OiB5MlxuICB9KTtcbn07XG5leHBvcnQgdmFyIFNjYWxlSGVscGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2NhbGVIZWxwZXIoc2NhbGUpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2NhbGVIZWxwZXIpO1xuICAgIHRoaXMuc2NhbGUgPSBzY2FsZTtcbiAgfVxuICByZXR1cm4gX2NyZWF0ZUNsYXNzKFNjYWxlSGVscGVyLCBbe1xuICAgIGtleTogXCJkb21haW5cIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNjYWxlLmRvbWFpbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmFuZ2VcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNjYWxlLnJhbmdlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyYW5nZU1pblwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMucmFuZ2UoKVswXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmFuZ2VNYXhcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnJhbmdlKClbMV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJhbmR3aWR0aFwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NhbGUuYmFuZHdpZHRoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhcHBseVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhcHBseSh2YWx1ZSkge1xuICAgICAgdmFyIF9yZWY0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fSxcbiAgICAgICAgYmFuZEF3YXJlID0gX3JlZjQuYmFuZEF3YXJlLFxuICAgICAgICBwb3NpdGlvbiA9IF9yZWY0LnBvc2l0aW9uO1xuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FsZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMuYmFuZHdpZHRoID8gdGhpcy5iYW5kd2lkdGgoKSAvIDIgOiAwO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FsZSh2YWx1ZSkgKyBvZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFyIF9vZmZzZXQgPSB0aGlzLmJhbmR3aWR0aCA/IHRoaXMuYmFuZHdpZHRoKCkgOiAwO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FsZSh2YWx1ZSkgKyBfb2Zmc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjYWxlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGJhbmRBd2FyZSkge1xuICAgICAgICB2YXIgX29mZnNldDIgPSB0aGlzLmJhbmR3aWR0aCA/IHRoaXMuYmFuZHdpZHRoKCkgLyAyIDogMDtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUodmFsdWUpICsgX29mZnNldDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5zY2FsZSh2YWx1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzSW5SYW5nZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0luUmFuZ2UodmFsdWUpIHtcbiAgICAgIHZhciByYW5nZSA9IHRoaXMucmFuZ2UoKTtcbiAgICAgIHZhciBmaXJzdCA9IHJhbmdlWzBdO1xuICAgICAgdmFyIGxhc3QgPSByYW5nZVtyYW5nZS5sZW5ndGggLSAxXTtcbiAgICAgIHJldHVybiBmaXJzdCA8PSBsYXN0ID8gdmFsdWUgPj0gZmlyc3QgJiYgdmFsdWUgPD0gbGFzdCA6IHZhbHVlID49IGxhc3QgJiYgdmFsdWUgPD0gZmlyc3Q7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiY3JlYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZShvYmopIHtcbiAgICAgIHJldHVybiBuZXcgU2NhbGVIZWxwZXIob2JqKTtcbiAgICB9XG4gIH1dKTtcbn0oKTtcbl9kZWZpbmVQcm9wZXJ0eShTY2FsZUhlbHBlciwgXCJFUFNcIiwgMWUtNCk7XG5leHBvcnQgdmFyIGNyZWF0ZUxhYmVsZWRTY2FsZXMgPSBmdW5jdGlvbiBjcmVhdGVMYWJlbGVkU2NhbGVzKG9wdGlvbnMpIHtcbiAgdmFyIHNjYWxlcyA9IE9iamVjdC5rZXlzKG9wdGlvbnMpLnJlZHVjZShmdW5jdGlvbiAocmVzLCBrZXkpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXMpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBrZXksIFNjYWxlSGVscGVyLmNyZWF0ZShvcHRpb25zW2tleV0pKSk7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc2NhbGVzKSwge30sIHtcbiAgICBhcHBseTogZnVuY3Rpb24gYXBwbHkoY29vcmQpIHtcbiAgICAgIHZhciBfcmVmNSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge30sXG4gICAgICAgIGJhbmRBd2FyZSA9IF9yZWY1LmJhbmRBd2FyZSxcbiAgICAgICAgcG9zaXRpb24gPSBfcmVmNS5wb3NpdGlvbjtcbiAgICAgIHJldHVybiBtYXBWYWx1ZXMoY29vcmQsIGZ1bmN0aW9uICh2YWx1ZSwgbGFiZWwpIHtcbiAgICAgICAgcmV0dXJuIHNjYWxlc1tsYWJlbF0uYXBwbHkodmFsdWUsIHtcbiAgICAgICAgICBiYW5kQXdhcmU6IGJhbmRBd2FyZSxcbiAgICAgICAgICBwb3NpdGlvbjogcG9zaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGlzSW5SYW5nZTogZnVuY3Rpb24gaXNJblJhbmdlKGNvb3JkKSB7XG4gICAgICByZXR1cm4gZXZlcnkoY29vcmQsIGZ1bmN0aW9uICh2YWx1ZSwgbGFiZWwpIHtcbiAgICAgICAgcmV0dXJuIHNjYWxlc1tsYWJlbF0uaXNJblJhbmdlKHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59O1xuXG4vKiogTm9ybWFsaXplcyB0aGUgYW5nbGUgc28gdGhhdCAwIDw9IGFuZ2xlIDwgMTgwLlxuICogQHBhcmFtIHtudW1iZXJ9IGFuZ2xlIEFuZ2xlIGluIGRlZ3JlZXMuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSBub3JtYWxpemVkIGFuZ2xlIHdpdGggYSB2YWx1ZSBvZiBhdCBsZWFzdCAwIGFuZCBuZXZlciBncmVhdGVyIG9yIGVxdWFsIHRvIDE4MC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBbmdsZShhbmdsZSkge1xuICByZXR1cm4gKGFuZ2xlICUgMTgwICsgMTgwKSAlIDE4MDtcbn1cblxuLyoqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSBsYXJnZXN0IGhvcml6b250YWwgbGluZSB0aGF0IGZpdHMgaW5zaWRlIGEgcmVjdGFuZ2xlIHRoYXQgaXMgZGlzcGxheWVkIGF0IGFuIGFuZ2xlLlxuICogQHBhcmFtIHtPYmplY3R9IHNpemUgV2lkdGggYW5kIGhlaWdodCBvZiB0aGUgdGV4dCBpbiBhIGhvcml6b250YWwgcG9zaXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gYW5nbGUgQW5nbGUgaW4gZGVncmVlcyBpbiB3aGljaCB0aGUgdGV4dCBpcyBkaXNwbGF5ZWQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB3aWR0aCBvZiB0aGUgbGFyZ2VzdCBob3Jpem9udGFsIGxpbmUgdGhhdCBmaXRzIGluc2lkZSBhIHJlY3RhbmdsZSB0aGF0IGlzIGRpc3BsYXllZCBhdCBhbiBhbmdsZS5cbiAqL1xuZXhwb3J0IHZhciBnZXRBbmdsZWRSZWN0YW5nbGVXaWR0aCA9IGZ1bmN0aW9uIGdldEFuZ2xlZFJlY3RhbmdsZVdpZHRoKF9yZWY2KSB7XG4gIHZhciB3aWR0aCA9IF9yZWY2LndpZHRoLFxuICAgIGhlaWdodCA9IF9yZWY2LmhlaWdodDtcbiAgdmFyIGFuZ2xlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAwO1xuICAvLyBFbnN1cmUgYW5nbGUgaXMgPj0gMCAmJiA8IDE4MFxuICB2YXIgbm9ybWFsaXplZEFuZ2xlID0gbm9ybWFsaXplQW5nbGUoYW5nbGUpO1xuICB2YXIgYW5nbGVSYWRpYW5zID0gbm9ybWFsaXplZEFuZ2xlICogTWF0aC5QSSAvIDE4MDtcblxuICAvKiBEZXBlbmRpbmcgb24gdGhlIGhlaWdodCBhbmQgd2lkdGggb2YgdGhlIHJlY3RhbmdsZSwgd2UgbWF5IG5lZWQgdG8gdXNlIGRpZmZlcmVudCBmb3JtdWxhcyB0byBjYWxjdWxhdGUgdGhlIGFuZ2xlZFxuICAgKiB3aWR0aC4gVGhpcyB0aHJlc2hvbGQgZGVmaW5lcyB3aGVuIGVhY2ggZm9ybXVsYSBzaG91bGQga2ljayBpbi4gKi9cbiAgdmFyIGFuZ2xlVGhyZXNob2xkID0gTWF0aC5hdGFuKGhlaWdodCAvIHdpZHRoKTtcbiAgdmFyIGFuZ2xlZFdpZHRoID0gYW5nbGVSYWRpYW5zID4gYW5nbGVUaHJlc2hvbGQgJiYgYW5nbGVSYWRpYW5zIDwgTWF0aC5QSSAtIGFuZ2xlVGhyZXNob2xkID8gaGVpZ2h0IC8gTWF0aC5zaW4oYW5nbGVSYWRpYW5zKSA6IHdpZHRoIC8gTWF0aC5jb3MoYW5nbGVSYWRpYW5zKTtcbiAgcmV0dXJuIE1hdGguYWJzKGFuZ2xlZFdpZHRoKTtcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiaSIsImxlbmd0aCIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwidmFsdWUiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJTdHJpbmciLCJOdW1iZXIiLCJtYXBWYWx1ZXMiLCJldmVyeSIsImdldFRpY2tzT2ZTY2FsZSIsInBhcnNlU2NhbGUiLCJjaGVja0RvbWFpbk9mU2NhbGUiLCJnZXRCYW5kU2l6ZU9mQXhpcyIsImZpbmRDaGlsZEJ5VHlwZSIsImNvbXBhcmVWYWx1ZXMiLCJnZXRQZXJjZW50VmFsdWUiLCJCYXIiLCJmb3JtYXRBeGlzTWFwIiwiYXhpc01hcCIsIm9mZnNldCIsImF4aXNUeXBlIiwiY2hhcnROYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJsYXlvdXQiLCJjaGlsZHJlbiIsImlkcyIsInN0ZXBzIiwibGVmdCIsImxlZnRNaXJyb3IiLCJyaWdodCIsInJpZ2h0TWlycm9yIiwidG9wIiwidG9wTWlycm9yIiwiYm90dG9tIiwiYm90dG9tTWlycm9yIiwiaGFzQmFyIiwicmVkdWNlIiwicmVzdWx0IiwiaWQiLCJheGlzIiwib3JpZW50YXRpb24iLCJkb21haW4iLCJfYXhpcyRwYWRkaW5nIiwicGFkZGluZyIsIm1pcnJvciIsInJldmVyc2VkIiwib2Zmc2V0S2V5IiwiY29uY2F0IiwiY2FsY3VsYXRlZFBhZGRpbmciLCJyYW5nZSIsIngiLCJ5IiwibmVlZFNwYWNlIiwidHlwZSIsImRpZmYiLCJzbWFsbGVzdERpc3RhbmNlQmV0d2VlblZhbHVlcyIsIkluZmluaXR5Iiwic29ydGVkVmFsdWVzIiwiY2F0ZWdvcmljYWxEb21haW4iLCJzb3J0IiwiaW5kZXgiLCJNYXRoIiwibWluIiwiaXNGaW5pdGUiLCJzbWFsbGVzdERpc3RhbmNlSW5QZXJjZW50IiwicmFuZ2VXaWR0aCIsImdhcCIsImJhckNhdGVnb3J5R2FwIiwiaGFsZkJhbmQiLCJfcGFyc2VTY2FsZSIsInNjYWxlIiwicmVhbFNjYWxlVHlwZSIsInRpY2tzIiwiZmluYWxBeGlzIiwiYmFuZFNpemUiLCJoaWRlIiwicmVjdFdpdGhQb2ludHMiLCJfcmVmIiwiX3JlZjIiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImFicyIsInJlY3RXaXRoQ29vcmRzIiwiX3JlZjMiLCJTY2FsZUhlbHBlciIsImdldCIsImJhbmR3aWR0aCIsIl9yZWY0IiwidW5kZWZpbmVkIiwiYmFuZEF3YXJlIiwicG9zaXRpb24iLCJfb2Zmc2V0IiwiX29mZnNldDIiLCJpc0luUmFuZ2UiLCJmaXJzdCIsImxhc3QiLCJjcmVhdGUiLCJjcmVhdGVMYWJlbGVkU2NhbGVzIiwib3B0aW9ucyIsInNjYWxlcyIsInJlcyIsImNvb3JkIiwiX3JlZjUiLCJsYWJlbCIsIm5vcm1hbGl6ZUFuZ2xlIiwiYW5nbGUiLCJnZXRBbmdsZWRSZWN0YW5nbGVXaWR0aCIsIl9yZWY2Iiwibm9ybWFsaXplZEFuZ2xlIiwiYW5nbGVSYWRpYW5zIiwiUEkiLCJhbmdsZVRocmVzaG9sZCIsImF0YW4iLCJhbmdsZWRXaWR0aCIsInNpbiIsImNvcyJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/ChartUtils.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/util/ChartUtils.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MAX_VALUE_REG: () => (/* binding */ MAX_VALUE_REG),\n/* harmony export */ MIN_VALUE_REG: () => (/* binding */ MIN_VALUE_REG),\n/* harmony export */ appendOffsetOfLegend: () => (/* binding */ appendOffsetOfLegend),\n/* harmony export */ calculateActiveTickIndex: () => (/* binding */ calculateActiveTickIndex),\n/* harmony export */ checkDomainOfScale: () => (/* binding */ checkDomainOfScale),\n/* harmony export */ combineEventHandlers: () => (/* binding */ combineEventHandlers),\n/* harmony export */ findPositionOfBar: () => (/* binding */ findPositionOfBar),\n/* harmony export */ getBandSizeOfAxis: () => (/* binding */ getBandSizeOfAxis),\n/* harmony export */ getBarPosition: () => (/* binding */ getBarPosition),\n/* harmony export */ getBarSizeList: () => (/* binding */ getBarSizeList),\n/* harmony export */ getBaseValueOfBar: () => (/* binding */ getBaseValueOfBar),\n/* harmony export */ getCateCoordinateOfBar: () => (/* binding */ getCateCoordinateOfBar),\n/* harmony export */ getCateCoordinateOfLine: () => (/* binding */ getCateCoordinateOfLine),\n/* harmony export */ getCoordinatesOfGrid: () => (/* binding */ getCoordinatesOfGrid),\n/* harmony export */ getDomainOfDataByKey: () => (/* binding */ getDomainOfDataByKey),\n/* harmony export */ getDomainOfErrorBars: () => (/* binding */ getDomainOfErrorBars),\n/* harmony export */ getDomainOfItemsWithSameAxis: () => (/* binding */ getDomainOfItemsWithSameAxis),\n/* harmony export */ getDomainOfStackGroups: () => (/* binding */ getDomainOfStackGroups),\n/* harmony export */ getLegendProps: () => (/* reexport safe */ _getLegendProps__WEBPACK_IMPORTED_MODULE_14__.getLegendProps),\n/* harmony export */ getMainColorOfGraphicItem: () => (/* binding */ getMainColorOfGraphicItem),\n/* harmony export */ getStackGroupsByAxisId: () => (/* binding */ getStackGroupsByAxisId),\n/* harmony export */ getStackedData: () => (/* binding */ getStackedData),\n/* harmony export */ getStackedDataOfItem: () => (/* binding */ getStackedDataOfItem),\n/* harmony export */ getTicksOfAxis: () => (/* binding */ getTicksOfAxis),\n/* harmony export */ getTicksOfScale: () => (/* binding */ getTicksOfScale),\n/* harmony export */ getTooltipItem: () => (/* binding */ getTooltipItem),\n/* harmony export */ getValueByDataKey: () => (/* binding */ getValueByDataKey),\n/* harmony export */ isCategoricalAxis: () => (/* binding */ isCategoricalAxis),\n/* harmony export */ offsetPositive: () => (/* binding */ offsetPositive),\n/* harmony export */ offsetSign: () => (/* binding */ offsetSign),\n/* harmony export */ parseDomainOfCategoryAxis: () => (/* binding */ parseDomainOfCategoryAxis),\n/* harmony export */ parseErrorBarsOfAxis: () => (/* binding */ parseErrorBarsOfAxis),\n/* harmony export */ parseScale: () => (/* binding */ parseScale),\n/* harmony export */ parseSpecifiedDomain: () => (/* binding */ parseSpecifiedDomain),\n/* harmony export */ truncateByDomain: () => (/* binding */ truncateByDomain)\n/* harmony export */ });\n/* harmony import */ var victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! victory-vendor/d3-scale */ \"(ssr)/./node_modules/victory-vendor/es/d3-scale.js\");\n/* harmony import */ var victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! victory-vendor/d3-shape */ \"(ssr)/./node_modules/victory-vendor/es/d3-shape.js\");\n/* harmony import */ var lodash_max__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/max */ \"(ssr)/./node_modules/lodash/max.js\");\n/* harmony import */ var lodash_max__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_max__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_min__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/min */ \"(ssr)/./node_modules/lodash/min.js\");\n/* harmony import */ var lodash_min__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_min__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/isString */ \"(ssr)/./node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_flatMap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/flatMap */ \"(ssr)/./node_modules/lodash/flatMap.js\");\n/* harmony import */ var lodash_flatMap__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_flatMap__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash/isNaN */ \"(ssr)/./node_modules/lodash/isNaN.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_isNaN__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash/upperFirst */ \"(ssr)/./node_modules/lodash/upperFirst.js\");\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash/isEqual */ \"(ssr)/./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash/sortBy */ \"(ssr)/./node_modules/lodash/sortBy.js\");\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(lodash_sortBy__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var recharts_scale__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! recharts-scale */ \"(ssr)/./node_modules/recharts-scale/es6/index.js\");\n/* harmony import */ var _cartesian_ErrorBar__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../cartesian/ErrorBar */ \"(ssr)/./node_modules/recharts/es6/cartesian/ErrorBar.js\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _ReactUtils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _getLegendProps__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./getLegendProps */ \"(ssr)/./node_modules/recharts/es6/util/getLegendProps.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\n\n// Exported for backwards compatibility\n\nfunction getValueByDataKey(obj, dataKey, defaultValue) {\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(obj) || lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(dataKey)) {\n return defaultValue;\n }\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumOrStr)(dataKey)) {\n return lodash_get__WEBPACK_IMPORTED_MODULE_7___default()(obj, dataKey, defaultValue);\n }\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(dataKey)) {\n return dataKey(obj);\n }\n return defaultValue;\n}\n/**\n * Get domain of data by key.\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */ function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = lodash_flatMap__WEBPACK_IMPORTED_MODULE_8___default()(data, function(entry) {\n return getValueByDataKey(entry, key);\n });\n if (type === 'number') {\n // @ts-expect-error parseFloat type only accepts strings\n var domain = flattenData.filter(function(entry) {\n return (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(entry) || parseFloat(entry);\n });\n return domain.length ? [\n lodash_min__WEBPACK_IMPORTED_MODULE_3___default()(domain),\n lodash_max__WEBPACK_IMPORTED_MODULE_2___default()(domain)\n ] : [\n Infinity,\n -Infinity\n ];\n }\n var validateData = filterNil ? flattenData.filter(function(entry) {\n return !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(entry);\n }) : flattenData;\n // Supports x-axis of Date type\n return validateData.map(function(entry) {\n return (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumOrStr)(entry) || entry instanceof Date ? entry : '';\n });\n}\nvar calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n var _ticks$length;\n var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n var index = -1;\n var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n // if there are 1 or less ticks ticks then the active tick is at index 0\n if (len <= 1) {\n return 0;\n }\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range;\n // ticks are distributed in a circle\n for(var i = 0; i < len; i++){\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.mathSign)(cur - before) !== (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.mathSign)(after - cur)) {\n var diffInterval = [];\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.mathSign)(after - cur) === (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.mathSign)(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n var sameInterval = [\n Math.min(cur, (sameDirectionCoord + cur) / 2),\n Math.max(cur, (sameDirectionCoord + cur) / 2)\n ];\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var minValue = Math.min(before, after);\n var maxValue = Math.max(before, after);\n if (coordinate > (minValue + cur) / 2 && coordinate <= (maxValue + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for(var _i = 0; _i < len; _i++){\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n return index;\n};\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */ var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var _item$type;\n var _ref = item, displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n var defaultedProps = (_item$type = item.type) !== null && _item$type !== void 0 && _item$type.defaultProps ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var stroke = defaultedProps.stroke, fill = defaultedProps.fill;\n var result;\n switch(displayName){\n case 'Line':\n result = stroke;\n break;\n case 'Area':\n case 'Radar':\n result = stroke && stroke !== 'none' ? stroke : fill;\n break;\n default:\n result = fill;\n break;\n }\n return result;\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */ var getBarSizeList = function getBarSizeList(_ref2) {\n var globalSize = _ref2.barSize, totalSize = _ref2.totalSize, _ref2$stackGroups = _ref2.stackGroups, stackGroups = _ref2$stackGroups === void 0 ? {} : _ref2$stackGroups;\n if (!stackGroups) {\n return {};\n }\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n for(var i = 0, len = numericAxisIds.length; i < len; i++){\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n for(var j = 0, sLen = stackIds.length; j < sLen; j++){\n var _sgs$stackIds$j = sgs[stackIds[j]], items = _sgs$stackIds$j.items, cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function(item) {\n return (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_16__.getDisplayName)(item.type).indexOf('Bar') >= 0;\n });\n if (barItems && barItems.length) {\n var barItemDefaultProps = barItems[0].type.defaultProps;\n var barItemProps = barItemDefaultProps !== undefined ? _objectSpread(_objectSpread({}, barItemDefaultProps), barItems[0].props) : barItems[0].props;\n var selfSize = barItemProps.barSize;\n var cateId = barItemProps[cateAxisId];\n if (!result[cateId]) {\n result[cateId] = [];\n }\n var barSize = lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(selfSize) ? globalSize : selfSize;\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(barSize) ? undefined : (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.getPercentValue)(barSize, totalSize, 0)\n });\n }\n }\n }\n return result;\n};\n/**\n * Calculate the size of each bar and offset between start of band and the bar\n *\n * @param {number} bandSize is the size of area where bars can render\n * @param {number | string} barGap is the gap size, as a percentage of `bandSize`.\n * Can be defined as number or percent string\n * @param {number | string} barCategoryGap is the gap size, as a percentage of `bandSize`.\n * Can be defined as number or percent string\n * @param {Array<object>} sizeList Sizes of all groups\n * @param {number} maxBarSize The maximum size of each bar\n * @return {Array<object>} The size and offset of each bar\n */ var getBarPosition = function getBarPosition(_ref3) {\n var barGap = _ref3.barGap, barCategoryGap = _ref3.barCategoryGap, bandSize = _ref3.bandSize, _ref3$sizeList = _ref3.sizeList, sizeList = _ref3$sizeList === void 0 ? [] : _ref3$sizeList, maxBarSize = _ref3.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.getPercentValue)(barGap, bandSize, 0, true);\n var result;\n var initialValue = [];\n // whether or not is barSize setted by user\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n // @ts-expect-error the type check above does not check for type number explicitly\n var sum = sizeList.reduce(function(res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function(res, entry) {\n var newPosition = {\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n // @ts-expect-error the type check above does not check for type number explicitly\n size: useFull ? fullBarSize : entry.barSize\n }\n };\n var newRes = [].concat(_toConsumableArray(res), [\n newPosition\n ]);\n prev = newRes[newRes.length - 1].position;\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function(item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n return newRes;\n }, initialValue);\n } else {\n var _offset = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.getPercentValue)(barCategoryGap, bandSize, 0, true);\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function(res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [\n {\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }\n ]);\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function(item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n return newRes;\n }, initialValue);\n }\n return result;\n};\nvar appendOffsetOfLegend = function appendOffsetOfLegend(offset, _unused, props, legendBox) {\n var children = props.children, width = props.width, margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var legendProps = (0,_getLegendProps__WEBPACK_IMPORTED_MODULE_14__.getLegendProps)({\n children: children,\n legendWidth: legendWidth\n });\n if (legendProps) {\n var _ref4 = legendBox || {}, boxWidth = _ref4.width, boxHeight = _ref4.height;\n var align = legendProps.align, verticalAlign = legendProps.verticalAlign, layout = legendProps.layout;\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'middle') && align !== 'center' && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(offset[align])) {\n return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, offset[align] + (boxWidth || 0)));\n }\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && verticalAlign !== 'middle' && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(offset[verticalAlign])) {\n return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, offset[verticalAlign] + (boxHeight || 0)));\n }\n }\n return offset;\n};\nvar isErrorBarRelevantForAxis = function isErrorBarRelevantForAxis(layout, axisType, direction) {\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(axisType)) {\n return true;\n }\n if (layout === 'horizontal') {\n return axisType === 'yAxis';\n }\n if (layout === 'vertical') {\n return axisType === 'xAxis';\n }\n if (direction === 'x') {\n return axisType === 'xAxis';\n }\n if (direction === 'y') {\n return axisType === 'yAxis';\n }\n return true;\n};\nvar getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, layout, axisType) {\n var children = item.props.children;\n var errorBars = (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_16__.findAllByType)(children, _cartesian_ErrorBar__WEBPACK_IMPORTED_MODULE_17__.ErrorBar).filter(function(errorBarChild) {\n return isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction);\n });\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function(errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function(result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey);\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(entryValue)) return result;\n var mainValue = Array.isArray(entryValue) ? [\n lodash_min__WEBPACK_IMPORTED_MODULE_3___default()(entryValue),\n lodash_max__WEBPACK_IMPORTED_MODULE_2___default()(entryValue)\n ] : [\n entryValue,\n entryValue\n ];\n var errorDomain = keys.reduce(function(prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(Array.isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(Array.isArray(errorValue) ? errorValue[1] : errorValue);\n return [\n Math.min(lowerValue, prevErrorArr[0]),\n Math.max(upperValue, prevErrorArr[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n return [\n Math.min(errorDomain[0], result[0]),\n Math.max(errorDomain[1], result[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n }\n return null;\n};\nvar parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType, layout) {\n var domains = items.map(function(item) {\n return getDomainOfErrorBars(data, item, dataKey, layout, axisType);\n }).filter(function(entry) {\n return !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(entry);\n });\n if (domains && domains.length) {\n return domains.reduce(function(result, entry) {\n return [\n Math.min(result[0], entry[0]),\n Math.max(result[1], entry[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n }\n return null;\n};\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {LayoutType} layout The type of layout\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */ var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, layout, filterNil) {\n var domains = items.map(function(item) {\n var dataKey = item.props.dataKey;\n if (type === 'number' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey, layout) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n if (type === 'number') {\n // Calculate the domain of number axis\n return domains.reduce(// @ts-expect-error if (type === number) means that the domain is numerical type\n // - but this link is missing in the type definition\n function(result, entry) {\n return [\n Math.min(result[0], entry[0]),\n Math.max(result[1], entry[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n }\n var tag = {};\n // Get the union set of category axis\n return domains.reduce(function(result, entry) {\n for(var i = 0, len = entry.length; i < len; i++){\n // @ts-expect-error Date cannot index an object\n if (!tag[entry[i]]) {\n // @ts-expect-error Date cannot index an object\n tag[entry[i]] = true;\n // @ts-expect-error Date cannot index an object\n result.push(entry[i]);\n }\n }\n return result;\n }, []);\n};\nvar isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} minValue The minimun value of axis\n * @param {Number} maxValue The maximun value of axis\n * @param {boolean} syncWithTicks Synchronize grid lines with ticks or not\n * @return {Array} Coordinates\n */ var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, minValue, maxValue, syncWithTicks) {\n if (syncWithTicks) {\n return ticks.map(function(entry) {\n return entry.coordinate;\n });\n }\n var hasMin, hasMax;\n var values = ticks.map(function(entry) {\n if (entry.coordinate === minValue) {\n hasMin = true;\n }\n if (entry.coordinate === maxValue) {\n hasMax = true;\n }\n return entry.coordinate;\n });\n if (!hasMin) {\n values.push(minValue);\n }\n if (!hasMax) {\n values.push(maxValue);\n }\n return values;\n};\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */ var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain, type = axis.type, range = axis.range;\n var offsetForBand = axis.realScaleType === 'scaleBand' ? scale.bandwidth() / 2 : 2;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n offset = axis.axisType === 'angleAxis' && (range === null || range === void 0 ? void 0 : range.length) >= 2 ? (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.mathSign)(range[0] - range[1]) * 2 * offset : offset;\n // The ticks set by user should only affect the ticks adjacent to axis line\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n var result = (axis.ticks || axis.niceTicks).map(function(entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n // If the scaleContent is not a number, the coordinate will be NaN.\n // That could be the case for example with a PointScale and a string as domain.\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n return result.filter(function(row) {\n return !lodash_isNaN__WEBPACK_IMPORTED_MODULE_9___default()(row.coordinate);\n });\n }\n // When axis is a categorial axis, but the type of axis is number or the scale of axis is not \"auto\"\n if (axis.isCategorical && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function(entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function(entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n }\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map(function(entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */ var handlerWeakMap = new WeakMap();\nvar combineEventHandlers = function combineEventHandlers(defaultHandler, childHandler) {\n if (typeof childHandler !== 'function') {\n return defaultHandler;\n }\n if (!handlerWeakMap.has(defaultHandler)) {\n handlerWeakMap.set(defaultHandler, new WeakMap());\n }\n var childWeakMap = handlerWeakMap.get(defaultHandler);\n if (childWeakMap.has(childHandler)) {\n return childWeakMap.get(childHandler);\n }\n var combineHandler = function combineHandler() {\n defaultHandler.apply(void 0, arguments);\n childHandler.apply(void 0, arguments);\n };\n childWeakMap.set(childHandler, combineHandler);\n return combineHandler;\n};\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @param {Boolean} hasBar if it has a bar\n * @return {object} The scale function and resolved name\n */ var parseScale = function parseScale(axis, chartType, hasBar) {\n var scale = axis.scale, type = axis.type, layout = axis.layout, axisType = axis.axisType;\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scaleBand(),\n realScaleType: 'band'\n };\n }\n if (layout === 'radial' && axisType === 'angleAxis') {\n return {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n return {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scalePoint(),\n realScaleType: 'point'\n };\n }\n if (type === 'category') {\n return {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scaleBand(),\n realScaleType: 'band'\n };\n }\n return {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n if (lodash_isString__WEBPACK_IMPORTED_MODULE_6___default()(scale)) {\n var name = \"scale\".concat(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_10___default()(scale));\n return {\n scale: (victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__[name] || victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scalePoint)(),\n realScaleType: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__[name] ? name : 'point'\n };\n }\n return lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(scale) ? {\n scale: scale\n } : {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scalePoint(),\n realScaleType: 'point'\n };\n};\nvar EPS = 1e-4;\nvar checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n if (!domain || domain.length <= 2) {\n return;\n }\n var len = domain.length;\n var range = scale.range();\n var minValue = Math.min(range[0], range[1]) - EPS;\n var maxValue = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n if (first < minValue || first > maxValue || last < minValue || last > maxValue) {\n scale.domain([\n domain[0],\n domain[len - 1]\n ]);\n }\n};\nvar findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n for(var i = 0, len = barPosition.length; i < len; i++){\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n return null;\n};\n/**\n * Both value and domain are tuples of two numbers\n * - but the type stays as array of numbers until we have better support in rest of the app\n * @param {Array} value input that will be truncated\n * @param {Array} domain boundaries\n * @returns {Array} tuple of two numbers\n */ var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !(0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(domain[0]) || !(0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(domain[1])) {\n return value;\n }\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n var result = [\n value[0],\n value[1]\n ];\n if (!(0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(value[0]) || value[0] < minValue) {\n result[0] = minValue;\n }\n if (!(0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(value[1]) || value[1] > maxValue) {\n result[1] = maxValue;\n }\n if (result[0] > maxValue) {\n result[0] = maxValue;\n }\n if (result[1] < minValue) {\n result[1] = minValue;\n }\n return result;\n};\n/**\n * Stacks all positive numbers above zero and all negative numbers below zero.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */ var offsetSign = function offsetSign(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for(var j = 0, m = series[0].length; j < m; ++j){\n var positive = 0;\n var negative = 0;\n for(var i = 0; i < n; ++i){\n var value = lodash_isNaN__WEBPACK_IMPORTED_MODULE_9___default()(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring, no-param-reassign */ if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */ }\n }\n};\n/**\n * Replaces all negative values with zero when stacking data.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */ var offsetPositive = function offsetPositive(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for(var j = 0, m = series[0].length; j < m; ++j){\n var positive = 0;\n for(var i = 0; i < n; ++i){\n var value = lodash_isNaN__WEBPACK_IMPORTED_MODULE_9___default()(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring, no-param-reassign */ if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = 0;\n series[i][j][1] = 0;\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */ }\n }\n};\n/**\n * Function type to compute offset for stacked data.\n *\n * d3-shape has something fishy going on with its types.\n * In @definitelytyped/d3-shape, this function (the offset accessor) is typed as Series<> => void.\n * However! When I actually open the storybook I can see that the offset accessor actually receives Array<Series<>>.\n * The same I can see in the source code itself:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n * That one unfortunately has no types but we can tell it passes three-dimensional array.\n *\n * Which leads me to believe that definitelytyped is wrong on this one.\n * There's open discussion on this topic without much attention:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n */ var STACK_OFFSET_MAP = {\n sign: offsetSign,\n // @ts-expect-error definitelytyped types are incorrect\n expand: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stackOffsetExpand,\n // @ts-expect-error definitelytyped types are incorrect\n none: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stackOffsetNone,\n // @ts-expect-error definitelytyped types are incorrect\n silhouette: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stackOffsetSilhouette,\n // @ts-expect-error definitelytyped types are incorrect\n wiggle: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stackOffsetWiggle,\n positive: offsetPositive\n};\nvar getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function(item) {\n return item.props.dataKey;\n });\n var offsetAccessor = STACK_OFFSET_MAP[offsetType];\n var stack = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stack)()// @ts-expect-error stack.keys type wants an array of strings, but we provide array of DataKeys\n .keys(dataKeys).value(function(d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stackOrderNone)// @ts-expect-error definitelytyped types are incorrect\n .offset(offsetAccessor);\n return stack(data);\n};\nvar getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n }\n // reversing items to affect render order (for layering)\n var items = reverseStackOrder ? _items.reverse() : _items;\n var parentStackGroupsInitialValue = {};\n var stackGroups = items.reduce(function(result, item) {\n var _item$type2;\n var defaultedProps = (_item$type2 = item.type) !== null && _item$type2 !== void 0 && _item$type2.defaultProps ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var stackId = defaultedProps.stackId, hide = defaultedProps.hide;\n if (hide) {\n return result;\n }\n var axisId = defaultedProps[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumOrStr)(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[(0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.uniqueId)('_stackId_')] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [\n item\n ]\n };\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n }, parentStackGroupsInitialValue);\n var axisStackGroupsInitialValue = {};\n return Object.keys(stackGroups).reduce(function(result, axisId) {\n var group = stackGroups[axisId];\n if (group.hasStack) {\n var stackGroupsInitialValue = {};\n group.stackGroups = Object.keys(group.stackGroups).reduce(function(res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, stackGroupsInitialValue);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n }, axisStackGroupsInitialValue);\n};\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */ var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType, type = opts.type, tickCount = opts.tickCount, originalDomain = opts.originalDomain, allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n if (!domain.length) {\n return null;\n }\n var tickValues = (0,recharts_scale__WEBPACK_IMPORTED_MODULE_13__.getNiceTickValues)(domain, tickCount, allowDecimals);\n scale.domain([\n lodash_min__WEBPACK_IMPORTED_MODULE_3___default()(tickValues),\n lodash_max__WEBPACK_IMPORTED_MODULE_2___default()(tickValues)\n ]);\n return {\n niceTicks: tickValues\n };\n }\n if (tickCount && type === 'number') {\n var _domain = scale.domain();\n var _tickValues = (0,recharts_scale__WEBPACK_IMPORTED_MODULE_13__.getTickValuesFixedDomain)(_domain, tickCount, allowDecimals);\n return {\n niceTicks: _tickValues\n };\n }\n return null;\n};\nfunction getCateCoordinateOfLine(_ref5) {\n var axis = _ref5.axis, ticks = _ref5.ticks, bandSize = _ref5.bandSize, entry = _ref5.entry, index = _ref5.index, dataKey = _ref5.dataKey;\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n if (!axis.allowDuplicatedCategory && axis.dataKey && !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(entry[axis.dataKey])) {\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n var matchedTick = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.findEntryInArray)(ticks, 'value', entry[axis.dataKey]);\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n var value = getValueByDataKey(entry, !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(dataKey) ? dataKey : axis.dataKey);\n return !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(value) ? axis.scale(value) : null;\n}\nvar getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref6) {\n var axis = _ref6.axis, ticks = _ref6.ticks, offset = _ref6.offset, bandSize = _ref6.bandSize, entry = _ref6.entry, index = _ref6.index;\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nvar getBaseValueOfBar = function getBaseValueOfBar(_ref7) {\n var numericAxis = _ref7.numericAxis;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === 'number') {\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n if (minValue <= 0 && maxValue >= 0) {\n return 0;\n }\n if (maxValue < 0) {\n return maxValue;\n }\n return minValue;\n }\n return domain[0];\n};\nvar getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var _item$type3;\n var defaultedProps = (_item$type3 = item.type) !== null && _item$type3 !== void 0 && _item$type3.defaultProps ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var stackId = defaultedProps.stackId;\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumOrStr)(stackId)) {\n var group = stackGroups[stackId];\n if (group) {\n var itemIndex = group.items.indexOf(item);\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n return null;\n};\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function(result, entry) {\n return [\n lodash_min__WEBPACK_IMPORTED_MODULE_3___default()(entry.concat([\n result[0]\n ]).filter(_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)),\n lodash_max__WEBPACK_IMPORTED_MODULE_2___default()(entry.concat([\n result[1]\n ]).filter(_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber))\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n};\nvar getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function(result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function(res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [\n Math.min(res[0], s[0]),\n Math.max(res[1], s[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n return [\n Math.min(domain[0], result[0]),\n Math.max(domain[1], result[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]).map(function(result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nvar MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nvar MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nvar parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(specifiedDomain)) {\n return specifiedDomain(dataDomain, allowDataOverflow);\n }\n if (!Array.isArray(specifiedDomain)) {\n return dataDomain;\n }\n var domain = [];\n /* eslint-disable prefer-destructuring */ if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n domain[1] = dataDomain[1] + _value;\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(specifiedDomain[1])) {\n domain[1] = specifiedDomain[1](dataDomain[1]);\n } else {\n domain[1] = dataDomain[1];\n }\n /* eslint-enable prefer-destructuring */ return domain;\n};\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @param {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */ var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n // @ts-expect-error we need to rethink scale type\n if (axis && axis.scale && axis.scale.bandwidth) {\n // @ts-expect-error we need to rethink scale type\n var bandWidth = axis.scale.bandwidth();\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = lodash_sortBy__WEBPACK_IMPORTED_MODULE_12___default()(ticks, function(o) {\n return o.coordinate;\n });\n var bandSize = Infinity;\n for(var i = 1, len = orderedTicks.length; i < len; i++){\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n return bandSize === Infinity ? 0 : bandSize;\n }\n return isBar ? undefined : 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param {Array} specifiedDomain The domain specified by users\n * @param {Array} calculatedDomain The domain calculated by dateKey\n * @param {ReactElement} axisChild The axis ReactElement\n * @returns {Array} domains\n */ var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n if (lodash_isEqual__WEBPACK_IMPORTED_MODULE_11___default()(specifiedDomain, lodash_get__WEBPACK_IMPORTED_MODULE_7___default()(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n return specifiedDomain;\n};\nvar getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n var defaultedProps = graphicalItem.type.defaultProps ? _objectSpread(_objectSpread({}, graphicalItem.type.defaultProps), graphicalItem.props) : graphicalItem.props;\n var dataKey = defaultedProps.dataKey, name = defaultedProps.name, unit = defaultedProps.unit, formatter = defaultedProps.formatter, tooltipType = defaultedProps.tooltipType, chartType = defaultedProps.chartType, hide = defaultedProps.hide;\n return _objectSpread(_objectSpread({}, (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_16__.filterProps)(graphicalItem, false)), {}, {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(graphicalItem),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload,\n chartType: chartType,\n hide: hide\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQ2hhcnRVdGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLG1CQUFtQkMsR0FBRztJQUFJLE9BQU9DLG1CQUFtQkQsUUFBUUUsaUJBQWlCRixRQUFRRyw0QkFBNEJILFFBQVFJO0FBQXNCO0FBQ3hKLFNBQVNBO0lBQXVCLE1BQU0sSUFBSUMsVUFBVTtBQUF5STtBQUM3TCxTQUFTRiw0QkFBNEJULENBQUMsRUFBRVksTUFBTTtJQUFJLElBQUksQ0FBQ1osR0FBRztJQUFRLElBQUksT0FBT0EsTUFBTSxVQUFVLE9BQU9hLGtCQUFrQmIsR0FBR1k7SUFBUyxJQUFJRSxJQUFJQyxPQUFPWCxTQUFTLENBQUNZLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDakIsR0FBR2tCLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFBSSxJQUFJSixNQUFNLFlBQVlkLEVBQUVHLFdBQVcsRUFBRVcsSUFBSWQsRUFBRUcsV0FBVyxDQUFDZ0IsSUFBSTtJQUFFLElBQUlMLE1BQU0sU0FBU0EsTUFBTSxPQUFPLE9BQU9NLE1BQU1DLElBQUksQ0FBQ3JCO0lBQUksSUFBSWMsTUFBTSxlQUFlLDJDQUEyQ1EsSUFBSSxDQUFDUixJQUFJLE9BQU9ELGtCQUFrQmIsR0FBR1k7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dy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0NoYXJ0VXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkoYXJyKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgKiBhcyBkM1NjYWxlcyBmcm9tICd2aWN0b3J5LXZlbmRvci9kMy1zY2FsZSc7XG5pbXBvcnQgeyBzdGFjayBhcyBzaGFwZVN0YWNrLCBzdGFja09mZnNldEV4cGFuZCwgc3RhY2tPZmZzZXROb25lLCBzdGFja09mZnNldFNpbGhvdWV0dGUsIHN0YWNrT2Zmc2V0V2lnZ2xlLCBzdGFja09yZGVyTm9uZSB9IGZyb20gJ3ZpY3RvcnktdmVuZG9yL2QzLXNoYXBlJztcbmltcG9ydCBtYXggZnJvbSAnbG9kYXNoL21heCc7XG5pbXBvcnQgbWluIGZyb20gJ2xvZGFzaC9taW4nO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgZmxhdE1hcCBmcm9tICdsb2Rhc2gvZmxhdE1hcCc7XG5pbXBvcnQgaXNOYW4gZnJvbSAnbG9kYXNoL2lzTmFOJztcbmltcG9ydCB1cHBlckZpcnN0IGZyb20gJ2xvZGFzaC91cHBlckZpcnN0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBzb3J0QnkgZnJvbSAnbG9kYXNoL3NvcnRCeSc7XG5pbXBvcnQgeyBnZXROaWNlVGlja1ZhbHVlcywgZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluIH0gZnJvbSAncmVjaGFydHMtc2NhbGUnO1xuaW1wb3J0IHsgRXJyb3JCYXIgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vRXJyb3JCYXInO1xuaW1wb3J0IHsgZmluZEVudHJ5SW5BcnJheSwgZ2V0UGVyY2VudFZhbHVlLCBpc051bWJlciwgaXNOdW1PclN0ciwgbWF0aFNpZ24sIHVuaXF1ZUlkIH0gZnJvbSAnLi9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMsIGZpbmRBbGxCeVR5cGUsIGdldERpc3BsYXlOYW1lIH0gZnJvbSAnLi9SZWFjdFV0aWxzJztcbi8vIFRPRE86IENhdXNlIG9mIGNpcmN1bGFyIGRlcGVuZGVuY3kuIE5lZWRzIHJlZmFjdG9yLlxuLy8gaW1wb3J0IHsgUmFkaXVzQXhpc1Byb3BzLCBBbmdsZUF4aXNQcm9wcyB9IGZyb20gJy4uL3BvbGFyL3R5cGVzJztcblxuaW1wb3J0IHsgZ2V0TGVnZW5kUHJvcHMgfSBmcm9tICcuL2dldExlZ2VuZFByb3BzJztcblxuLy8gRXhwb3J0ZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5leHBvcnQgeyBnZXRMZWdlbmRQcm9wcyB9O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQnlEYXRhS2V5KG9iaiwgZGF0YUtleSwgZGVmYXVsdFZhbHVlKSB7XG4gIGlmIChpc05pbChvYmopIHx8IGlzTmlsKGRhdGFLZXkpKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuICBpZiAoaXNOdW1PclN0cihkYXRhS2V5KSkge1xuICAgIHJldHVybiBnZXQob2JqLCBkYXRhS2V5LCBkZWZhdWx0VmFsdWUpO1xuICB9XG4gIGlmIChpc0Z1bmN0aW9uKGRhdGFLZXkpKSB7XG4gICAgcmV0dXJuIGRhdGFLZXkob2JqKTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufVxuLyoqXG4gKiBHZXQgZG9tYWluIG9mIGRhdGEgYnkga2V5LlxuICogQHBhcmFtICB7QXJyYXl9ICAgZGF0YSAgICAgIFRoZSBkYXRhIGRpc3BsYXllZCBpbiB0aGUgY2hhcnRcbiAqIEBwYXJhbSAge1N0cmluZ30gIGtleSAgICAgICBUaGUgdW5pcXVlIGtleSBvZiBhIGdyb3VwIG9mIGRhdGFcbiAqIEBwYXJhbSAge1N0cmluZ30gIHR5cGUgICAgICBUaGUgdHlwZSBvZiBheGlzXG4gKiBAcGFyYW0gIHtCb29sZWFufSBmaWx0ZXJOaWwgV2hldGhlciBvciBub3QgZmlsdGVyIG5pbCB2YWx1ZXNcbiAqIEByZXR1cm4ge0FycmF5fSBEb21haW4gb2YgZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RG9tYWluT2ZEYXRhQnlLZXkoZGF0YSwga2V5LCB0eXBlLCBmaWx0ZXJOaWwpIHtcbiAgdmFyIGZsYXR0ZW5EYXRhID0gZmxhdE1hcChkYXRhLCBmdW5jdGlvbiAoZW50cnkpIHtcbiAgICByZXR1cm4gZ2V0VmFsdWVCeURhdGFLZXkoZW50cnksIGtleSk7XG4gIH0pO1xuICBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHBhcnNlRmxvYXQgdHlwZSBvbmx5IGFjY2VwdHMgc3RyaW5nc1xuICAgIHZhciBkb21haW4gPSBmbGF0dGVuRGF0YS5maWx0ZXIoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICByZXR1cm4gaXNOdW1iZXIoZW50cnkpIHx8IHBhcnNlRmxvYXQoZW50cnkpO1xuICAgIH0pO1xuICAgIHJldHVybiBkb21haW4ubGVuZ3RoID8gW21pbihkb21haW4pLCBtYXgoZG9tYWluKV0gOiBbSW5maW5pdHksIC1JbmZpbml0eV07XG4gIH1cbiAgdmFyIHZhbGlkYXRlRGF0YSA9IGZpbHRlck5pbCA/IGZsYXR0ZW5EYXRhLmZpbHRlcihmdW5jdGlvbiAoZW50cnkpIHtcbiAgICByZXR1cm4gIWlzTmlsKGVudHJ5KTtcbiAgfSkgOiBmbGF0dGVuRGF0YTtcblxuICAvLyBTdXBwb3J0cyB4LWF4aXMgb2YgRGF0ZSB0eXBlXG4gIHJldHVybiB2YWxpZGF0ZURhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHJldHVybiBpc051bU9yU3RyKGVudHJ5KSB8fCBlbnRyeSBpbnN0YW5jZW9mIERhdGUgPyBlbnRyeSA6ICcnO1xuICB9KTtcbn1cbmV4cG9ydCB2YXIgY2FsY3VsYXRlQWN0aXZlVGlja0luZGV4ID0gZnVuY3Rpb24gY2FsY3VsYXRlQWN0aXZlVGlja0luZGV4KGNvb3JkaW5hdGUpIHtcbiAgdmFyIF90aWNrcyRsZW5ndGg7XG4gIHZhciB0aWNrcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogW107XG4gIHZhciB1bnNvcnRlZFRpY2tzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBheGlzID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgPyBhcmd1bWVudHNbM10gOiB1bmRlZmluZWQ7XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgbGVuID0gKF90aWNrcyRsZW5ndGggPSB0aWNrcyA9PT0gbnVsbCB8fCB0aWNrcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGlja3MubGVuZ3RoKSAhPT0gbnVsbCAmJiBfdGlja3MkbGVuZ3RoICE9PSB2b2lkIDAgPyBfdGlja3MkbGVuZ3RoIDogMDtcblxuICAvLyBpZiB0aGVyZSBhcmUgMSBvciBsZXNzIHRpY2tzIHRpY2tzIHRoZW4gdGhlIGFjdGl2ZSB0aWNrIGlzIGF0IGluZGV4IDBcbiAgaWYgKGxlbiA8PSAxKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKGF4aXMgJiYgYXhpcy5heGlzVHlwZSA9PT0gJ2FuZ2xlQXhpcycgJiYgTWF0aC5hYnMoTWF0aC5hYnMoYXhpcy5yYW5nZVsxXSAtIGF4aXMucmFuZ2VbMF0pIC0gMzYwKSA8PSAxZS02KSB7XG4gICAgdmFyIHJhbmdlID0gYXhpcy5yYW5nZTtcbiAgICAvLyB0aWNrcyBhcmUgZGlzdHJpYnV0ZWQgaW4gYSBjaXJjbGVcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYmVmb3JlID0gaSA+IDAgPyB1bnNvcnRlZFRpY2tzW2kgLSAxXS5jb29yZGluYXRlIDogdW5zb3J0ZWRUaWNrc1tsZW4gLSAxXS5jb29yZGluYXRlO1xuICAgICAgdmFyIGN1ciA9IHVuc29ydGVkVGlja3NbaV0uY29vcmRpbmF0ZTtcbiAgICAgIHZhciBhZnRlciA9IGkgPj0gbGVuIC0gMSA/IHVuc29ydGVkVGlja3NbMF0uY29vcmRpbmF0ZSA6IHVuc29ydGVkVGlja3NbaSArIDFdLmNvb3JkaW5hdGU7XG4gICAgICB2YXIgc2FtZURpcmVjdGlvbkNvb3JkID0gdm9pZCAwO1xuICAgICAgaWYgKG1hdGhTaWduKGN1ciAtIGJlZm9yZSkgIT09IG1hdGhTaWduKGFmdGVyIC0gY3VyKSkge1xuICAgICAgICB2YXIgZGlmZkludGVydmFsID0gW107XG4gICAgICAgIGlmIChtYXRoU2lnbihhZnRlciAtIGN1cikgPT09IG1hdGhTaWduKHJhbmdlWzFdIC0gcmFuZ2VbMF0pKSB7XG4gICAgICAgICAgc2FtZURpcmVjdGlvbkNvb3JkID0gYWZ0ZXI7XG4gICAgICAgICAgdmFyIGN1ckluUmFuZ2UgPSBjdXIgKyByYW5nZVsxXSAtIHJhbmdlWzBdO1xuICAgICAgICAgIGRpZmZJbnRlcnZhbFswXSA9IE1hdGgubWluKGN1ckluUmFuZ2UsIChjdXJJblJhbmdlICsgYmVmb3JlKSAvIDIpO1xuICAgICAgICAgIGRpZmZJbnRlcnZhbFsxXSA9IE1hdGgubWF4KGN1ckluUmFuZ2UsIChjdXJJblJhbmdlICsgYmVmb3JlKSAvIDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNhbWVEaXJlY3Rpb25Db29yZCA9IGJlZm9yZTtcbiAgICAgICAgICB2YXIgYWZ0ZXJJblJhbmdlID0gYWZ0ZXIgKyByYW5nZVsxXSAtIHJhbmdlWzBdO1xuICAgICAgICAgIGRpZmZJbnRlcnZhbFswXSA9IE1hdGgubWluKGN1ciwgKGFmdGVySW5SYW5nZSArIGN1cikgLyAyKTtcbiAgICAgICAgICBkaWZmSW50ZXJ2YWxbMV0gPSBNYXRoLm1heChjdXIsIChhZnRlckluUmFuZ2UgKyBjdXIpIC8gMik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNhbWVJbnRlcnZhbCA9IFtNYXRoLm1pbihjdXIsIChzYW1lRGlyZWN0aW9uQ29vcmQgKyBjdXIpIC8gMiksIE1hdGgubWF4KGN1ciwgKHNhbWVEaXJlY3Rpb25Db29yZCArIGN1cikgLyAyKV07XG4gICAgICAgIGlmIChjb29yZGluYXRlID4gc2FtZUludGVydmFsWzBdICYmIGNvb3JkaW5hdGUgPD0gc2FtZUludGVydmFsWzFdIHx8IGNvb3JkaW5hdGUgPj0gZGlmZkludGVydmFsWzBdICYmIGNvb3JkaW5hdGUgPD0gZGlmZkludGVydmFsWzFdKSB7XG4gICAgICAgICAgaW5kZXggPSB1bnNvcnRlZFRpY2tzW2ldLmluZGV4O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbWluVmFsdWUgPSBNYXRoLm1pbihiZWZvcmUsIGFmdGVyKTtcbiAgICAgICAgdmFyIG1heFZhbHVlID0gTWF0aC5tYXgoYmVmb3JlLCBhZnRlcik7XG4gICAgICAgIGlmIChjb29yZGluYXRlID4gKG1pblZhbHVlICsgY3VyKSAvIDIgJiYgY29vcmRpbmF0ZSA8PSAobWF4VmFsdWUgKyBjdXIpIC8gMikge1xuICAgICAgICAgIGluZGV4ID0gdW5zb3J0ZWRUaWNrc1tpXS5pbmRleDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyB0aWNrcyBhcmUgZGlzdHJpYnV0ZWQgaW4gYSBzaW5nbGUgZGlyZWN0aW9uXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxlbjsgX2krKykge1xuICAgICAgaWYgKF9pID09PSAwICYmIGNvb3JkaW5hdGUgPD0gKHRpY2tzW19pXS5jb29yZGluYXRlICsgdGlja3NbX2kgKyAxXS5jb29yZGluYXRlKSAvIDIgfHwgX2kgPiAwICYmIF9pIDwgbGVuIC0gMSAmJiBjb29yZGluYXRlID4gKHRpY2tzW19pXS5jb29yZGluYXRlICsgdGlja3NbX2kgLSAxXS5jb29yZGluYXRlKSAvIDIgJiYgY29vcmRpbmF0ZSA8PSAodGlja3NbX2ldLmNvb3JkaW5hdGUgKyB0aWNrc1tfaSArIDFdLmNvb3JkaW5hdGUpIC8gMiB8fCBfaSA9PT0gbGVuIC0gMSAmJiBjb29yZGluYXRlID4gKHRpY2tzW19pXS5jb29yZGluYXRlICsgdGlja3NbX2kgLSAxXS5jb29yZGluYXRlKSAvIDIpIHtcbiAgICAgICAgaW5kZXggPSB0aWNrc1tfaV0uaW5kZXg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW5kZXg7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbWFpbiBjb2xvciBvZiBlYWNoIGdyYXBoaWMgaXRlbVxuICogQHBhcmFtICB7UmVhY3RFbGVtZW50fSBpdGVtIEEgZ3JhcGhpYyBpdGVtXG4gKiBAcmV0dXJuIHtTdHJpbmd9ICAgICAgICAgICAgQ29sb3JcbiAqL1xuZXhwb3J0IHZhciBnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtID0gZnVuY3Rpb24gZ2V0TWFpbkNvbG9yT2ZHcmFwaGljSXRlbShpdGVtKSB7XG4gIHZhciBfaXRlbSR0eXBlO1xuICB2YXIgX3JlZiA9IGl0ZW0sXG4gICAgZGlzcGxheU5hbWUgPSBfcmVmLnR5cGUuZGlzcGxheU5hbWU7IC8vIFRPRE86IGNoZWNrIGlmIGRpc3BsYXlOYW1lIGlzIHZhbGlkLlxuICB2YXIgZGVmYXVsdGVkUHJvcHMgPSAoX2l0ZW0kdHlwZSA9IGl0ZW0udHlwZSkgIT09IG51bGwgJiYgX2l0ZW0kdHlwZSAhPT0gdm9pZCAwICYmIF9pdGVtJHR5cGUuZGVmYXVsdFByb3BzID8gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpdGVtLnR5cGUuZGVmYXVsdFByb3BzKSwgaXRlbS5wcm9wcykgOiBpdGVtLnByb3BzO1xuICB2YXIgc3Ryb2tlID0gZGVmYXVsdGVkUHJvcHMuc3Ryb2tlLFxuICAgIGZpbGwgPSBkZWZhdWx0ZWRQcm9wcy5maWxsO1xuICB2YXIgcmVzdWx0O1xuICBzd2l0Y2ggKGRpc3BsYXlOYW1lKSB7XG4gICAgY2FzZSAnTGluZSc6XG4gICAgICByZXN1bHQgPSBzdHJva2U7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdBcmVhJzpcbiAgICBjYXNlICdSYWRhcic6XG4gICAgICByZXN1bHQgPSBzdHJva2UgJiYgc3Ryb2tlICE9PSAnbm9uZScgPyBzdHJva2UgOiBmaWxsO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlc3VsdCA9IGZpbGw7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBzaXplIG9mIGFsbCBncm91cHMgZm9yIHN0YWNrZWQgYmFyIGdyYXBoXG4gKiBAcGFyYW0gIHtPYmplY3R9IHN0YWNrR3JvdXBzIFRoZSBpdGVtcyBncm91cGVkIGJ5IGF4aXNJZCBhbmQgc3RhY2tJZFxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgc2l6ZSBvZiBhbGwgZ3JvdXBzXG4gKi9cbmV4cG9ydCB2YXIgZ2V0QmFyU2l6ZUxpc3QgPSBmdW5jdGlvbiBnZXRCYXJTaXplTGlzdChfcmVmMikge1xuICB2YXIgZ2xvYmFsU2l6ZSA9IF9yZWYyLmJhclNpemUsXG4gICAgdG90YWxTaXplID0gX3JlZjIudG90YWxTaXplLFxuICAgIF9yZWYyJHN0YWNrR3JvdXBzID0gX3JlZjIuc3RhY2tHcm91cHMsXG4gICAgc3RhY2tHcm91cHMgPSBfcmVmMiRzdGFja0dyb3VwcyA9PT0gdm9pZCAwID8ge30gOiBfcmVmMiRzdGFja0dyb3VwcztcbiAgaWYgKCFzdGFja0dyb3Vwcykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICB2YXIgcmVzdWx0ID0ge307XG4gIHZhciBudW1lcmljQXhpc0lkcyA9IE9iamVjdC5rZXlzKHN0YWNrR3JvdXBzKTtcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG51bWVyaWNBeGlzSWRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHNncyA9IHN0YWNrR3JvdXBzW251bWVyaWNBeGlzSWRzW2ldXS5zdGFja0dyb3VwcztcbiAgICB2YXIgc3RhY2tJZHMgPSBPYmplY3Qua2V5cyhzZ3MpO1xuICAgIGZvciAodmFyIGogPSAwLCBzTGVuID0gc3RhY2tJZHMubGVuZ3RoOyBqIDwgc0xlbjsgaisrKSB7XG4gICAgICB2YXIgX3NncyRzdGFja0lkcyRqID0gc2dzW3N0YWNrSWRzW2pdXSxcbiAgICAgICAgaXRlbXMgPSBfc2dzJHN0YWNrSWRzJGouaXRlbXMsXG4gICAgICAgIGNhdGVBeGlzSWQgPSBfc2dzJHN0YWNrSWRzJGouY2F0ZUF4aXNJZDtcbiAgICAgIHZhciBiYXJJdGVtcyA9IGl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUoaXRlbS50eXBlKS5pbmRleE9mKCdCYXInKSA+PSAwO1xuICAgICAgfSk7XG4gICAgICBpZiAoYmFySXRlbXMgJiYgYmFySXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBiYXJJdGVtRGVmYXVsdFByb3BzID0gYmFySXRlbXNbMF0udHlwZS5kZWZhdWx0UHJvcHM7XG4gICAgICAgIHZhciBiYXJJdGVtUHJvcHMgPSBiYXJJdGVtRGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGJhckl0ZW1EZWZhdWx0UHJvcHMpLCBiYXJJdGVtc1swXS5wcm9wcykgOiBiYXJJdGVtc1swXS5wcm9wcztcbiAgICAgICAgdmFyIHNlbGZTaXplID0gYmFySXRlbVByb3BzLmJhclNpemU7XG4gICAgICAgIHZhciBjYXRlSWQgPSBiYXJJdGVtUHJvcHNbY2F0ZUF4aXNJZF07XG4gICAgICAgIGlmICghcmVzdWx0W2NhdGVJZF0pIHtcbiAgICAgICAgICByZXN1bHRbY2F0ZUlkXSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiYXJTaXplID0gaXNOaWwoc2VsZlNpemUpID8gZ2xvYmFsU2l6ZSA6IHNlbGZTaXplO1xuICAgICAgICByZXN1bHRbY2F0ZUlkXS5wdXNoKHtcbiAgICAgICAgICBpdGVtOiBiYXJJdGVtc1swXSxcbiAgICAgICAgICBzdGFja0xpc3Q6IGJhckl0ZW1zLnNsaWNlKDEpLFxuICAgICAgICAgIGJhclNpemU6IGlzTmlsKGJhclNpemUpID8gdW5kZWZpbmVkIDogZ2V0UGVyY2VudFZhbHVlKGJhclNpemUsIHRvdGFsU2l6ZSwgMClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHNpemUgb2YgZWFjaCBiYXIgYW5kIG9mZnNldCBiZXR3ZWVuIHN0YXJ0IG9mIGJhbmQgYW5kIHRoZSBiYXJcbiAqXG4gKiBAcGFyYW0gIHtudW1iZXJ9IGJhbmRTaXplIGlzIHRoZSBzaXplIG9mIGFyZWEgd2hlcmUgYmFycyBjYW4gcmVuZGVyXG4gKiBAcGFyYW0gIHtudW1iZXIgfCBzdHJpbmd9IGJhckdhcCBpcyB0aGUgZ2FwIHNpemUsIGFzIGEgcGVyY2VudGFnZSBvZiBgYmFuZFNpemVgLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIGRlZmluZWQgYXMgbnVtYmVyIG9yIHBlcmNlbnQgc3RyaW5nXG4gKiBAcGFyYW0gIHtudW1iZXIgfCBzdHJpbmd9IGJhckNhdGVnb3J5R2FwIGlzIHRoZSBnYXAgc2l6ZSwgYXMgYSBwZXJjZW50YWdlIG9mIGBiYW5kU2l6ZWAuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgZGVmaW5lZCBhcyBudW1iZXIgb3IgcGVyY2VudCBzdHJpbmdcbiAqIEBwYXJhbSAge0FycmF5PG9iamVjdD59IHNpemVMaXN0IFNpemVzIG9mIGFsbCBncm91cHNcbiAqIEBwYXJhbSAge251bWJlcn0gbWF4QmFyU2l6ZSBUaGUgbWF4aW11bSBzaXplIG9mIGVhY2ggYmFyXG4gKiBAcmV0dXJuIHtBcnJheTxvYmplY3Q+fSBUaGUgc2l6ZSBhbmQgb2Zmc2V0IG9mIGVhY2ggYmFyXG4gKi9cbmV4cG9ydCB2YXIgZ2V0QmFyUG9zaXRpb24gPSBmdW5jdGlvbiBnZXRCYXJQb3NpdGlvbihfcmVmMykge1xuICB2YXIgYmFyR2FwID0gX3JlZjMuYmFyR2FwLFxuICAgIGJhckNhdGVnb3J5R2FwID0gX3JlZjMuYmFyQ2F0ZWdvcnlHYXAsXG4gICAgYmFuZFNpemUgPSBfcmVmMy5iYW5kU2l6ZSxcbiAgICBfcmVmMyRzaXplTGlzdCA9IF9yZWYzLnNpemVMaXN0LFxuICAgIHNpemVMaXN0ID0gX3JlZjMkc2l6ZUxpc3QgPT09IHZvaWQgMCA/IFtdIDogX3JlZjMkc2l6ZUxpc3QsXG4gICAgbWF4QmFyU2l6ZSA9IF9yZWYzLm1heEJhclNpemU7XG4gIHZhciBsZW4gPSBzaXplTGlzdC5sZW5ndGg7XG4gIGlmIChsZW4gPCAxKSByZXR1cm4gbnVsbDtcbiAgdmFyIHJlYWxCYXJHYXAgPSBnZXRQZXJjZW50VmFsdWUoYmFyR2FwLCBiYW5kU2l6ZSwgMCwgdHJ1ZSk7XG4gIHZhciByZXN1bHQ7XG4gIHZhciBpbml0aWFsVmFsdWUgPSBbXTtcblxuICAvLyB3aGV0aGVyIG9yIG5vdCBpcyBiYXJTaXplIHNldHRlZCBieSB1c2VyXG4gIGlmIChzaXplTGlzdFswXS5iYXJTaXplID09PSArc2l6ZUxpc3RbMF0uYmFyU2l6ZSkge1xuICAgIHZhciB1c2VGdWxsID0gZmFsc2U7XG4gICAgdmFyIGZ1bGxCYXJTaXplID0gYmFuZFNpemUgLyBsZW47XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgdHlwZSBjaGVjayBhYm92ZSBkb2VzIG5vdCBjaGVjayBmb3IgdHlwZSBudW1iZXIgZXhwbGljaXRseVxuICAgIHZhciBzdW0gPSBzaXplTGlzdC5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgZW50cnkpIHtcbiAgICAgIHJldHVybiByZXMgKyBlbnRyeS5iYXJTaXplIHx8IDA7XG4gICAgfSwgMCk7XG4gICAgc3VtICs9IChsZW4gLSAxKSAqIHJlYWxCYXJHYXA7XG4gICAgaWYgKHN1bSA+PSBiYW5kU2l6ZSkge1xuICAgICAgc3VtIC09IChsZW4gLSAxKSAqIHJlYWxCYXJHYXA7XG4gICAgICByZWFsQmFyR2FwID0gMDtcbiAgICB9XG4gICAgaWYgKHN1bSA+PSBiYW5kU2l6ZSAmJiBmdWxsQmFyU2l6ZSA+IDApIHtcbiAgICAgIHVzZUZ1bGwgPSB0cnVlO1xuICAgICAgZnVsbEJhclNpemUgKj0gMC45O1xuICAgICAgc3VtID0gbGVuICogZnVsbEJhclNpemU7XG4gICAgfVxuICAgIHZhciBvZmZzZXQgPSAoYmFuZFNpemUgLSBzdW0pIC8gMiA+PiAwO1xuICAgIHZhciBwcmV2ID0ge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQgLSByZWFsQmFyR2FwLFxuICAgICAgc2l6ZTogMFxuICAgIH07XG4gICAgcmVzdWx0ID0gc2l6ZUxpc3QucmVkdWNlKGZ1bmN0aW9uIChyZXMsIGVudHJ5KSB7XG4gICAgICB2YXIgbmV3UG9zaXRpb24gPSB7XG4gICAgICAgIGl0ZW06IGVudHJ5Lml0ZW0sXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgb2Zmc2V0OiBwcmV2Lm9mZnNldCArIHByZXYuc2l6ZSArIHJlYWxCYXJHYXAsXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgdHlwZSBjaGVjayBhYm92ZSBkb2VzIG5vdCBjaGVjayBmb3IgdHlwZSBudW1iZXIgZXhwbGljaXRseVxuICAgICAgICAgIHNpemU6IHVzZUZ1bGwgPyBmdWxsQmFyU2l6ZSA6IGVudHJ5LmJhclNpemVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHZhciBuZXdSZXMgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlcyksIFtuZXdQb3NpdGlvbl0pO1xuICAgICAgcHJldiA9IG5ld1Jlc1tuZXdSZXMubGVuZ3RoIC0gMV0ucG9zaXRpb247XG4gICAgICBpZiAoZW50cnkuc3RhY2tMaXN0ICYmIGVudHJ5LnN0YWNrTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgZW50cnkuc3RhY2tMaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICBuZXdSZXMucHVzaCh7XG4gICAgICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICAgICAgcG9zaXRpb246IHByZXZcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3UmVzO1xuICAgIH0sIGluaXRpYWxWYWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIF9vZmZzZXQgPSBnZXRQZXJjZW50VmFsdWUoYmFyQ2F0ZWdvcnlHYXAsIGJhbmRTaXplLCAwLCB0cnVlKTtcbiAgICBpZiAoYmFuZFNpemUgLSAyICogX29mZnNldCAtIChsZW4gLSAxKSAqIHJlYWxCYXJHYXAgPD0gMCkge1xuICAgICAgcmVhbEJhckdhcCA9IDA7XG4gICAgfVxuICAgIHZhciBvcmlnaW5hbFNpemUgPSAoYmFuZFNpemUgLSAyICogX29mZnNldCAtIChsZW4gLSAxKSAqIHJlYWxCYXJHYXApIC8gbGVuO1xuICAgIGlmIChvcmlnaW5hbFNpemUgPiAxKSB7XG4gICAgICBvcmlnaW5hbFNpemUgPj49IDA7XG4gICAgfVxuICAgIHZhciBzaXplID0gbWF4QmFyU2l6ZSA9PT0gK21heEJhclNpemUgPyBNYXRoLm1pbihvcmlnaW5hbFNpemUsIG1heEJhclNpemUpIDogb3JpZ2luYWxTaXplO1xuICAgIHJlc3VsdCA9IHNpemVMaXN0LnJlZHVjZShmdW5jdGlvbiAocmVzLCBlbnRyeSwgaSkge1xuICAgICAgdmFyIG5ld1JlcyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocmVzKSwgW3tcbiAgICAgICAgaXRlbTogZW50cnkuaXRlbSxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBvZmZzZXQ6IF9vZmZzZXQgKyAob3JpZ2luYWxTaXplICsgcmVhbEJhckdhcCkgKiBpICsgKG9yaWdpbmFsU2l6ZSAtIHNpemUpIC8gMixcbiAgICAgICAgICBzaXplOiBzaXplXG4gICAgICAgIH1cbiAgICAgIH1dKTtcbiAgICAgIGlmIChlbnRyeS5zdGFja0xpc3QgJiYgZW50cnkuc3RhY2tMaXN0Lmxlbmd0aCkge1xuICAgICAgICBlbnRyeS5zdGFja0xpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIG5ld1Jlcy5wdXNoKHtcbiAgICAgICAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICAgICAgICBwb3NpdGlvbjogbmV3UmVzW25ld1Jlcy5sZW5ndGggLSAxXS5wb3NpdGlvblxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXdSZXM7XG4gICAgfSwgaW5pdGlhbFZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCB2YXIgYXBwZW5kT2Zmc2V0T2ZMZWdlbmQgPSBmdW5jdGlvbiBhcHBlbmRPZmZzZXRPZkxlZ2VuZChvZmZzZXQsIF91bnVzZWQsIHByb3BzLCBsZWdlbmRCb3gpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICBtYXJnaW4gPSBwcm9wcy5tYXJnaW47XG4gIHZhciBsZWdlbmRXaWR0aCA9IHdpZHRoIC0gKG1hcmdpbi5sZWZ0IHx8IDApIC0gKG1hcmdpbi5yaWdodCB8fCAwKTtcbiAgdmFyIGxlZ2VuZFByb3BzID0gZ2V0TGVnZW5kUHJvcHMoe1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBsZWdlbmRXaWR0aDogbGVnZW5kV2lkdGhcbiAgfSk7XG4gIGlmIChsZWdlbmRQcm9wcykge1xuICAgIHZhciBfcmVmNCA9IGxlZ2VuZEJveCB8fCB7fSxcbiAgICAgIGJveFdpZHRoID0gX3JlZjQud2lkdGgsXG4gICAgICBib3hIZWlnaHQgPSBfcmVmNC5oZWlnaHQ7XG4gICAgdmFyIGFsaWduID0gbGVnZW5kUHJvcHMuYWxpZ24sXG4gICAgICB2ZXJ0aWNhbEFsaWduID0gbGVnZW5kUHJvcHMudmVydGljYWxBbGlnbixcbiAgICAgIGxheW91dCA9IGxlZ2VuZFByb3BzLmxheW91dDtcbiAgICBpZiAoKGxheW91dCA9PT0gJ3ZlcnRpY2FsJyB8fCBsYXlvdXQgPT09ICdob3Jpem9udGFsJyAmJiB2ZXJ0aWNhbEFsaWduID09PSAnbWlkZGxlJykgJiYgYWxpZ24gIT09ICdjZW50ZXInICYmIGlzTnVtYmVyKG9mZnNldFthbGlnbl0pKSB7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvZmZzZXQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBhbGlnbiwgb2Zmc2V0W2FsaWduXSArIChib3hXaWR0aCB8fCAwKSkpO1xuICAgIH1cbiAgICBpZiAoKGxheW91dCA9PT0gJ2hvcml6b250YWwnIHx8IGxheW91dCA9PT0gJ3ZlcnRpY2FsJyAmJiBhbGlnbiA9PT0gJ2NlbnRlcicpICYmIHZlcnRpY2FsQWxpZ24gIT09ICdtaWRkbGUnICYmIGlzTnVtYmVyKG9mZnNldFt2ZXJ0aWNhbEFsaWduXSkpIHtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9mZnNldCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIHZlcnRpY2FsQWxpZ24sIG9mZnNldFt2ZXJ0aWNhbEFsaWduXSArIChib3hIZWlnaHQgfHwgMCkpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9mZnNldDtcbn07XG52YXIgaXNFcnJvckJhclJlbGV2YW50Rm9yQXhpcyA9IGZ1bmN0aW9uIGlzRXJyb3JCYXJSZWxldmFudEZvckF4aXMobGF5b3V0LCBheGlzVHlwZSwgZGlyZWN0aW9uKSB7XG4gIGlmIChpc05pbChheGlzVHlwZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICByZXR1cm4gYXhpc1R5cGUgPT09ICd5QXhpcyc7XG4gIH1cbiAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgIHJldHVybiBheGlzVHlwZSA9PT0gJ3hBeGlzJztcbiAgfVxuICBpZiAoZGlyZWN0aW9uID09PSAneCcpIHtcbiAgICByZXR1cm4gYXhpc1R5cGUgPT09ICd4QXhpcyc7XG4gIH1cbiAgaWYgKGRpcmVjdGlvbiA9PT0gJ3knKSB7XG4gICAgcmV0dXJuIGF4aXNUeXBlID09PSAneUF4aXMnO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbmV4cG9ydCB2YXIgZ2V0RG9tYWluT2ZFcnJvckJhcnMgPSBmdW5jdGlvbiBnZXREb21haW5PZkVycm9yQmFycyhkYXRhLCBpdGVtLCBkYXRhS2V5LCBsYXlvdXQsIGF4aXNUeXBlKSB7XG4gIHZhciBjaGlsZHJlbiA9IGl0ZW0ucHJvcHMuY2hpbGRyZW47XG4gIHZhciBlcnJvckJhcnMgPSBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCBFcnJvckJhcikuZmlsdGVyKGZ1bmN0aW9uIChlcnJvckJhckNoaWxkKSB7XG4gICAgcmV0dXJuIGlzRXJyb3JCYXJSZWxldmFudEZvckF4aXMobGF5b3V0LCBheGlzVHlwZSwgZXJyb3JCYXJDaGlsZC5wcm9wcy5kaXJlY3Rpb24pO1xuICB9KTtcbiAgaWYgKGVycm9yQmFycyAmJiBlcnJvckJhcnMubGVuZ3RoKSB7XG4gICAgdmFyIGtleXMgPSBlcnJvckJhcnMubWFwKGZ1bmN0aW9uIChlcnJvckJhckNoaWxkKSB7XG4gICAgICByZXR1cm4gZXJyb3JCYXJDaGlsZC5wcm9wcy5kYXRhS2V5O1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgICAgdmFyIGVudHJ5VmFsdWUgPSBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwgZGF0YUtleSk7XG4gICAgICBpZiAoaXNOaWwoZW50cnlWYWx1ZSkpIHJldHVybiByZXN1bHQ7XG4gICAgICB2YXIgbWFpblZhbHVlID0gQXJyYXkuaXNBcnJheShlbnRyeVZhbHVlKSA/IFttaW4oZW50cnlWYWx1ZSksIG1heChlbnRyeVZhbHVlKV0gOiBbZW50cnlWYWx1ZSwgZW50cnlWYWx1ZV07XG4gICAgICB2YXIgZXJyb3JEb21haW4gPSBrZXlzLnJlZHVjZShmdW5jdGlvbiAocHJldkVycm9yQXJyLCBrKSB7XG4gICAgICAgIHZhciBlcnJvclZhbHVlID0gZ2V0VmFsdWVCeURhdGFLZXkoZW50cnksIGssIDApO1xuICAgICAgICB2YXIgbG93ZXJWYWx1ZSA9IG1haW5WYWx1ZVswXSAtIE1hdGguYWJzKEFycmF5LmlzQXJyYXkoZXJyb3JWYWx1ZSkgPyBlcnJvclZhbHVlWzBdIDogZXJyb3JWYWx1ZSk7XG4gICAgICAgIHZhciB1cHBlclZhbHVlID0gbWFpblZhbHVlWzFdICsgTWF0aC5hYnMoQXJyYXkuaXNBcnJheShlcnJvclZhbHVlKSA/IGVycm9yVmFsdWVbMV0gOiBlcnJvclZhbHVlKTtcbiAgICAgICAgcmV0dXJuIFtNYXRoLm1pbihsb3dlclZhbHVlLCBwcmV2RXJyb3JBcnJbMF0pLCBNYXRoLm1heCh1cHBlclZhbHVlLCBwcmV2RXJyb3JBcnJbMV0pXTtcbiAgICAgIH0sIFtJbmZpbml0eSwgLUluZmluaXR5XSk7XG4gICAgICByZXR1cm4gW01hdGgubWluKGVycm9yRG9tYWluWzBdLCByZXN1bHRbMF0pLCBNYXRoLm1heChlcnJvckRvbWFpblsxXSwgcmVzdWx0WzFdKV07XG4gICAgfSwgW0luZmluaXR5LCAtSW5maW5pdHldKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5leHBvcnQgdmFyIHBhcnNlRXJyb3JCYXJzT2ZBeGlzID0gZnVuY3Rpb24gcGFyc2VFcnJvckJhcnNPZkF4aXMoZGF0YSwgaXRlbXMsIGRhdGFLZXksIGF4aXNUeXBlLCBsYXlvdXQpIHtcbiAgdmFyIGRvbWFpbnMgPSBpdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gZ2V0RG9tYWluT2ZFcnJvckJhcnMoZGF0YSwgaXRlbSwgZGF0YUtleSwgbGF5b3V0LCBheGlzVHlwZSk7XG4gIH0pLmZpbHRlcihmdW5jdGlvbiAoZW50cnkpIHtcbiAgICByZXR1cm4gIWlzTmlsKGVudHJ5KTtcbiAgfSk7XG4gIGlmIChkb21haW5zICYmIGRvbWFpbnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGRvbWFpbnMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGVudHJ5KSB7XG4gICAgICByZXR1cm4gW01hdGgubWluKHJlc3VsdFswXSwgZW50cnlbMF0pLCBNYXRoLm1heChyZXN1bHRbMV0sIGVudHJ5WzFdKV07XG4gICAgfSwgW0luZmluaXR5LCAtSW5maW5pdHldKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogR2V0IGRvbWFpbiBvZiBkYXRhIGJ5IHRoZSBjb25maWd1cmF0aW9uIG9mIGl0ZW0gZWxlbWVudFxuICogQHBhcmFtICB7QXJyYXl9ICAgZGF0YSAgICAgIFRoZSBkYXRhIGRpc3BsYXllZCBpbiB0aGUgY2hhcnRcbiAqIEBwYXJhbSAge0FycmF5fSAgIGl0ZW1zICAgICBUaGUgaW5zdGFuY2VzIG9mIGl0ZW1cbiAqIEBwYXJhbSAge1N0cmluZ30gIHR5cGUgICAgICBUaGUgdHlwZSBvZiBheGlzLCBudW1iZXIgLSBOdW1iZXIgQXhpcywgY2F0ZWdvcnkgLSBDYXRlZ29yeSBBeGlzXG4gKiBAcGFyYW0gIHtMYXlvdXRUeXBlfSBsYXlvdXQgVGhlIHR5cGUgb2YgbGF5b3V0XG4gKiBAcGFyYW0gIHtCb29sZWFufSBmaWx0ZXJOaWwgV2hldGhlciBvciBub3QgZmlsdGVyIG5pbCB2YWx1ZXNcbiAqIEByZXR1cm4ge0FycmF5fSAgICAgICAgRG9tYWluXG4gKi9cbmV4cG9ydCB2YXIgZ2V0RG9tYWluT2ZJdGVtc1dpdGhTYW1lQXhpcyA9IGZ1bmN0aW9uIGdldERvbWFpbk9mSXRlbXNXaXRoU2FtZUF4aXMoZGF0YSwgaXRlbXMsIHR5cGUsIGxheW91dCwgZmlsdGVyTmlsKSB7XG4gIHZhciBkb21haW5zID0gaXRlbXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGRhdGFLZXkgPSBpdGVtLnByb3BzLmRhdGFLZXk7XG4gICAgaWYgKHR5cGUgPT09ICdudW1iZXInICYmIGRhdGFLZXkpIHtcbiAgICAgIHJldHVybiBnZXREb21haW5PZkVycm9yQmFycyhkYXRhLCBpdGVtLCBkYXRhS2V5LCBsYXlvdXQpIHx8IGdldERvbWFpbk9mRGF0YUJ5S2V5KGRhdGEsIGRhdGFLZXksIHR5cGUsIGZpbHRlck5pbCk7XG4gICAgfVxuICAgIHJldHVybiBnZXREb21haW5PZkRhdGFCeUtleShkYXRhLCBkYXRhS2V5LCB0eXBlLCBmaWx0ZXJOaWwpO1xuICB9KTtcbiAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBkb21haW4gb2YgbnVtYmVyIGF4aXNcbiAgICByZXR1cm4gZG9tYWlucy5yZWR1Y2UoXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBpZiAodHlwZSA9PT0gbnVtYmVyKSBtZWFucyB0aGF0IHRoZSBkb21haW4gaXMgbnVtZXJpY2FsIHR5cGVcbiAgICAvLyAtIGJ1dCB0aGlzIGxpbmsgaXMgbWlzc2luZyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uXG4gICAgZnVuY3Rpb24gKHJlc3VsdCwgZW50cnkpIHtcbiAgICAgIHJldHVybiBbTWF0aC5taW4ocmVzdWx0WzBdLCBlbnRyeVswXSksIE1hdGgubWF4KHJlc3VsdFsxXSwgZW50cnlbMV0pXTtcbiAgICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pO1xuICB9XG4gIHZhciB0YWcgPSB7fTtcbiAgLy8gR2V0IHRoZSB1bmlvbiBzZXQgb2YgY2F0ZWdvcnkgYXhpc1xuICByZXR1cm4gZG9tYWlucy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZW50cnkpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZW50cnkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgRGF0ZSBjYW5ub3QgaW5kZXggYW4gb2JqZWN0XG4gICAgICBpZiAoIXRhZ1tlbnRyeVtpXV0pIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBEYXRlIGNhbm5vdCBpbmRleCBhbiBvYmplY3RcbiAgICAgICAgdGFnW2VudHJ5W2ldXSA9IHRydWU7XG5cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBEYXRlIGNhbm5vdCBpbmRleCBhbiBvYmplY3RcbiAgICAgICAgcmVzdWx0LnB1c2goZW50cnlbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCBbXSk7XG59O1xuZXhwb3J0IHZhciBpc0NhdGVnb3JpY2FsQXhpcyA9IGZ1bmN0aW9uIGlzQ2F0ZWdvcmljYWxBeGlzKGxheW91dCwgYXhpc1R5cGUpIHtcbiAgcmV0dXJuIGxheW91dCA9PT0gJ2hvcml6b250YWwnICYmIGF4aXNUeXBlID09PSAneEF4aXMnIHx8IGxheW91dCA9PT0gJ3ZlcnRpY2FsJyAmJiBheGlzVHlwZSA9PT0gJ3lBeGlzJyB8fCBsYXlvdXQgPT09ICdjZW50cmljJyAmJiBheGlzVHlwZSA9PT0gJ2FuZ2xlQXhpcycgfHwgbGF5b3V0ID09PSAncmFkaWFsJyAmJiBheGlzVHlwZSA9PT0gJ3JhZGl1c0F4aXMnO1xufTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIENvb3JkaW5hdGVzIG9mIGdyaWRcbiAqIEBwYXJhbSAge0FycmF5fSB0aWNrcyAgICAgICAgICAgVGhlIHRpY2tzIGluIGF4aXNcbiAqIEBwYXJhbSB7TnVtYmVyfSBtaW5WYWx1ZSAgICAgICAgVGhlIG1pbmltdW4gdmFsdWUgb2YgYXhpc1xuICogQHBhcmFtIHtOdW1iZXJ9IG1heFZhbHVlICAgICAgICBUaGUgbWF4aW11biB2YWx1ZSBvZiBheGlzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHN5bmNXaXRoVGlja3MgIFN5bmNocm9uaXplIGdyaWQgbGluZXMgd2l0aCB0aWNrcyBvciBub3RcbiAqIEByZXR1cm4ge0FycmF5fSAgICAgICAgICAgICAgICAgQ29vcmRpbmF0ZXNcbiAqL1xuZXhwb3J0IHZhciBnZXRDb29yZGluYXRlc09mR3JpZCA9IGZ1bmN0aW9uIGdldENvb3JkaW5hdGVzT2ZHcmlkKHRpY2tzLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIHN5bmNXaXRoVGlja3MpIHtcbiAgaWYgKHN5bmNXaXRoVGlja3MpIHtcbiAgICByZXR1cm4gdGlja3MubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgcmV0dXJuIGVudHJ5LmNvb3JkaW5hdGU7XG4gICAgfSk7XG4gIH1cbiAgdmFyIGhhc01pbiwgaGFzTWF4O1xuICB2YXIgdmFsdWVzID0gdGlja3MubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGlmIChlbnRyeS5jb29yZGluYXRlID09PSBtaW5WYWx1ZSkge1xuICAgICAgaGFzTWluID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGVudHJ5LmNvb3JkaW5hdGUgPT09IG1heFZhbHVlKSB7XG4gICAgICBoYXNNYXggPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnkuY29vcmRpbmF0ZTtcbiAgfSk7XG4gIGlmICghaGFzTWluKSB7XG4gICAgdmFsdWVzLnB1c2gobWluVmFsdWUpO1xuICB9XG4gIGlmICghaGFzTWF4KSB7XG4gICAgdmFsdWVzLnB1c2gobWF4VmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZXM7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgdGlja3Mgb2YgYW4gYXhpc1xuICogQHBhcmFtICB7T2JqZWN0fSAgYXhpcyBUaGUgY29uZmlndXJhdGlvbiBvZiBhbiBheGlzXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzR3JpZCBXaGV0aGVyIG9yIG5vdCBhcmUgdGhlIHRpY2tzIGluIGdyaWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNBbGwgUmV0dXJuIHRoZSB0aWNrcyBvZiBhbGwgdGhlIHBvaW50cyBvciBub3RcbiAqIEByZXR1cm4ge0FycmF5fSAgVGlja3NcbiAqL1xuZXhwb3J0IHZhciBnZXRUaWNrc09mQXhpcyA9IGZ1bmN0aW9uIGdldFRpY2tzT2ZBeGlzKGF4aXMsIGlzR3JpZCwgaXNBbGwpIHtcbiAgaWYgKCFheGlzKSByZXR1cm4gbnVsbDtcbiAgdmFyIHNjYWxlID0gYXhpcy5zY2FsZTtcbiAgdmFyIGR1cGxpY2F0ZURvbWFpbiA9IGF4aXMuZHVwbGljYXRlRG9tYWluLFxuICAgIHR5cGUgPSBheGlzLnR5cGUsXG4gICAgcmFuZ2UgPSBheGlzLnJhbmdlO1xuICB2YXIgb2Zmc2V0Rm9yQmFuZCA9IGF4aXMucmVhbFNjYWxlVHlwZSA9PT0gJ3NjYWxlQmFuZCcgPyBzY2FsZS5iYW5kd2lkdGgoKSAvIDIgOiAyO1xuICB2YXIgb2Zmc2V0ID0gKGlzR3JpZCB8fCBpc0FsbCkgJiYgdHlwZSA9PT0gJ2NhdGVnb3J5JyAmJiBzY2FsZS5iYW5kd2lkdGggPyBzY2FsZS5iYW5kd2lkdGgoKSAvIG9mZnNldEZvckJhbmQgOiAwO1xuICBvZmZzZXQgPSBheGlzLmF4aXNUeXBlID09PSAnYW5nbGVBeGlzJyAmJiAocmFuZ2UgPT09IG51bGwgfHwgcmFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJhbmdlLmxlbmd0aCkgPj0gMiA/IG1hdGhTaWduKHJhbmdlWzBdIC0gcmFuZ2VbMV0pICogMiAqIG9mZnNldCA6IG9mZnNldDtcblxuICAvLyBUaGUgdGlja3Mgc2V0IGJ5IHVzZXIgc2hvdWxkIG9ubHkgYWZmZWN0IHRoZSB0aWNrcyBhZGphY2VudCB0byBheGlzIGxpbmVcbiAgaWYgKGlzR3JpZCAmJiAoYXhpcy50aWNrcyB8fCBheGlzLm5pY2VUaWNrcykpIHtcbiAgICB2YXIgcmVzdWx0ID0gKGF4aXMudGlja3MgfHwgYXhpcy5uaWNlVGlja3MpLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgIHZhciBzY2FsZUNvbnRlbnQgPSBkdXBsaWNhdGVEb21haW4gPyBkdXBsaWNhdGVEb21haW4uaW5kZXhPZihlbnRyeSkgOiBlbnRyeTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC8vIElmIHRoZSBzY2FsZUNvbnRlbnQgaXMgbm90IGEgbnVtYmVyLCB0aGUgY29vcmRpbmF0ZSB3aWxsIGJlIE5hTi5cbiAgICAgICAgLy8gVGhhdCBjb3VsZCBiZSB0aGUgY2FzZSBmb3IgZXhhbXBsZSB3aXRoIGEgUG9pbnRTY2FsZSBhbmQgYSBzdHJpbmcgYXMgZG9tYWluLlxuICAgICAgICBjb29yZGluYXRlOiBzY2FsZShzY2FsZUNvbnRlbnQpICsgb2Zmc2V0LFxuICAgICAgICB2YWx1ZTogZW50cnksXG4gICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgIHJldHVybiAhaXNOYW4ocm93LmNvb3JkaW5hdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gV2hlbiBheGlzIGlzIGEgY2F0ZWdvcmlhbCBheGlzLCBidXQgdGhlIHR5cGUgb2YgYXhpcyBpcyBudW1iZXIgb3IgdGhlIHNjYWxlIG9mIGF4aXMgaXMgbm90IFwiYXV0b1wiXG4gIGlmIChheGlzLmlzQ2F0ZWdvcmljYWwgJiYgYXhpcy5jYXRlZ29yaWNhbERvbWFpbikge1xuICAgIHJldHVybiBheGlzLmNhdGVnb3JpY2FsRG9tYWluLm1hcChmdW5jdGlvbiAoZW50cnksIGluZGV4KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb29yZGluYXRlOiBzY2FsZShlbnRyeSkgKyBvZmZzZXQsXG4gICAgICAgIHZhbHVlOiBlbnRyeSxcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuICBpZiAoc2NhbGUudGlja3MgJiYgIWlzQWxsKSB7XG4gICAgcmV0dXJuIHNjYWxlLnRpY2tzKGF4aXMudGlja0NvdW50KS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb29yZGluYXRlOiBzY2FsZShlbnRyeSkgKyBvZmZzZXQsXG4gICAgICAgIHZhbHVlOiBlbnRyeSxcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvLyBXaGVuIGF4aXMgaGFzIGR1cGxpY2F0ZWQgdGV4dCwgc2VyaWFsIG51bWJlcnMgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgc2NhbGVcbiAgcmV0dXJuIHNjYWxlLmRvbWFpbigpLm1hcChmdW5jdGlvbiAoZW50cnksIGluZGV4KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvb3JkaW5hdGU6IHNjYWxlKGVudHJ5KSArIG9mZnNldCxcbiAgICAgIHZhbHVlOiBkdXBsaWNhdGVEb21haW4gPyBkdXBsaWNhdGVEb21haW5bZW50cnldIDogZW50cnksXG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICBvZmZzZXQ6IG9mZnNldFxuICAgIH07XG4gIH0pO1xufTtcblxuLyoqXG4gKiBjb21iaW5lIHRoZSBoYW5kbGVyc1xuICogQHBhcmFtICB7RnVuY3Rpb259IGRlZmF1bHRIYW5kbGVyIEludGVybmFsIHByaXZhdGUgaGFuZGxlclxuICogQHBhcmFtICB7RnVuY3Rpb259IGNoaWxkSGFuZGxlciBIYW5kbGVyIGZ1bmN0aW9uIHNwZWNpZmllZCBpbiBjaGlsZCBjb21wb25lbnRcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSAgICAgICAgICAgICAgICBUaGUgY29tYmluZWQgaGFuZGxlclxuICovXG5cbnZhciBoYW5kbGVyV2Vha01hcCA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgdmFyIGNvbWJpbmVFdmVudEhhbmRsZXJzID0gZnVuY3Rpb24gY29tYmluZUV2ZW50SGFuZGxlcnMoZGVmYXVsdEhhbmRsZXIsIGNoaWxkSGFuZGxlcikge1xuICBpZiAodHlwZW9mIGNoaWxkSGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBkZWZhdWx0SGFuZGxlcjtcbiAgfVxuICBpZiAoIWhhbmRsZXJXZWFrTWFwLmhhcyhkZWZhdWx0SGFuZGxlcikpIHtcbiAgICBoYW5kbGVyV2Vha01hcC5zZXQoZGVmYXVsdEhhbmRsZXIsIG5ldyBXZWFrTWFwKCkpO1xuICB9XG4gIHZhciBjaGlsZFdlYWtNYXAgPSBoYW5kbGVyV2Vha01hcC5nZXQoZGVmYXVsdEhhbmRsZXIpO1xuICBpZiAoY2hpbGRXZWFrTWFwLmhhcyhjaGlsZEhhbmRsZXIpKSB7XG4gICAgcmV0dXJuIGNoaWxkV2Vha01hcC5nZXQoY2hpbGRIYW5kbGVyKTtcbiAgfVxuICB2YXIgY29tYmluZUhhbmRsZXIgPSBmdW5jdGlvbiBjb21iaW5lSGFuZGxlcigpIHtcbiAgICBkZWZhdWx0SGFuZGxlci5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgY2hpbGRIYW5kbGVyLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgfTtcbiAgY2hpbGRXZWFrTWFwLnNldChjaGlsZEhhbmRsZXIsIGNvbWJpbmVIYW5kbGVyKTtcbiAgcmV0dXJuIGNvbWJpbmVIYW5kbGVyO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgc2NhbGUgZnVuY3Rpb24gb2YgYXhpc1xuICogQHBhcmFtICB7T2JqZWN0fSAgIGF4aXMgICAgICAgICAgVGhlIG9wdGlvbiBvZiBheGlzXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgY2hhcnRUeXBlICAgICBUaGUgZGlzcGxheU5hbWUgb2YgY2hhcnRcbiAqIEBwYXJhbSAge0Jvb2xlYW59ICBoYXNCYXIgICAgICAgIGlmIGl0IGhhcyBhIGJhclxuICogQHJldHVybiB7b2JqZWN0fSAgICAgICAgICAgICAgIFRoZSBzY2FsZSBmdW5jdGlvbiBhbmQgcmVzb2x2ZWQgbmFtZVxuICovXG5leHBvcnQgdmFyIHBhcnNlU2NhbGUgPSBmdW5jdGlvbiBwYXJzZVNjYWxlKGF4aXMsIGNoYXJ0VHlwZSwgaGFzQmFyKSB7XG4gIHZhciBzY2FsZSA9IGF4aXMuc2NhbGUsXG4gICAgdHlwZSA9IGF4aXMudHlwZSxcbiAgICBsYXlvdXQgPSBheGlzLmxheW91dCxcbiAgICBheGlzVHlwZSA9IGF4aXMuYXhpc1R5cGU7XG4gIGlmIChzY2FsZSA9PT0gJ2F1dG8nKSB7XG4gICAgaWYgKGxheW91dCA9PT0gJ3JhZGlhbCcgJiYgYXhpc1R5cGUgPT09ICdyYWRpdXNBeGlzJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NhbGU6IGQzU2NhbGVzLnNjYWxlQmFuZCgpLFxuICAgICAgICByZWFsU2NhbGVUeXBlOiAnYmFuZCdcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChsYXlvdXQgPT09ICdyYWRpYWwnICYmIGF4aXNUeXBlID09PSAnYW5nbGVBeGlzJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NhbGU6IGQzU2NhbGVzLnNjYWxlTGluZWFyKCksXG4gICAgICAgIHJlYWxTY2FsZVR5cGU6ICdsaW5lYXInXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ2NhdGVnb3J5JyAmJiBjaGFydFR5cGUgJiYgKGNoYXJ0VHlwZS5pbmRleE9mKCdMaW5lQ2hhcnQnKSA+PSAwIHx8IGNoYXJ0VHlwZS5pbmRleE9mKCdBcmVhQ2hhcnQnKSA+PSAwIHx8IGNoYXJ0VHlwZS5pbmRleE9mKCdDb21wb3NlZENoYXJ0JykgPj0gMCAmJiAhaGFzQmFyKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NhbGU6IGQzU2NhbGVzLnNjYWxlUG9pbnQoKSxcbiAgICAgICAgcmVhbFNjYWxlVHlwZTogJ3BvaW50J1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdjYXRlZ29yeScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjYWxlOiBkM1NjYWxlcy5zY2FsZUJhbmQoKSxcbiAgICAgICAgcmVhbFNjYWxlVHlwZTogJ2JhbmQnXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc2NhbGU6IGQzU2NhbGVzLnNjYWxlTGluZWFyKCksXG4gICAgICByZWFsU2NhbGVUeXBlOiAnbGluZWFyJ1xuICAgIH07XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHNjYWxlKSkge1xuICAgIHZhciBuYW1lID0gXCJzY2FsZVwiLmNvbmNhdCh1cHBlckZpcnN0KHNjYWxlKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjYWxlOiAoZDNTY2FsZXNbbmFtZV0gfHwgZDNTY2FsZXMuc2NhbGVQb2ludCkoKSxcbiAgICAgIHJlYWxTY2FsZVR5cGU6IGQzU2NhbGVzW25hbWVdID8gbmFtZSA6ICdwb2ludCdcbiAgICB9O1xuICB9XG4gIHJldHVybiBpc0Z1bmN0aW9uKHNjYWxlKSA/IHtcbiAgICBzY2FsZTogc2NhbGVcbiAgfSA6IHtcbiAgICBzY2FsZTogZDNTY2FsZXMuc2NhbGVQb2ludCgpLFxuICAgIHJlYWxTY2FsZVR5cGU6ICdwb2ludCdcbiAgfTtcbn07XG52YXIgRVBTID0gMWUtNDtcbmV4cG9ydCB2YXIgY2hlY2tEb21haW5PZlNjYWxlID0gZnVuY3Rpb24gY2hlY2tEb21haW5PZlNjYWxlKHNjYWxlKSB7XG4gIHZhciBkb21haW4gPSBzY2FsZS5kb21haW4oKTtcbiAgaWYgKCFkb21haW4gfHwgZG9tYWluLmxlbmd0aCA8PSAyKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBsZW4gPSBkb21haW4ubGVuZ3RoO1xuICB2YXIgcmFuZ2UgPSBzY2FsZS5yYW5nZSgpO1xuICB2YXIgbWluVmFsdWUgPSBNYXRoLm1pbihyYW5nZVswXSwgcmFuZ2VbMV0pIC0gRVBTO1xuICB2YXIgbWF4VmFsdWUgPSBNYXRoLm1heChyYW5nZVswXSwgcmFuZ2VbMV0pICsgRVBTO1xuICB2YXIgZmlyc3QgPSBzY2FsZShkb21haW5bMF0pO1xuICB2YXIgbGFzdCA9IHNjYWxlKGRvbWFpbltsZW4gLSAxXSk7XG4gIGlmIChmaXJzdCA8IG1pblZhbHVlIHx8IGZpcnN0ID4gbWF4VmFsdWUgfHwgbGFzdCA8IG1pblZhbHVlIHx8IGxhc3QgPiBtYXhWYWx1ZSkge1xuICAgIHNjYWxlLmRvbWFpbihbZG9tYWluWzBdLCBkb21haW5bbGVuIC0gMV1dKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgZmluZFBvc2l0aW9uT2ZCYXIgPSBmdW5jdGlvbiBmaW5kUG9zaXRpb25PZkJhcihiYXJQb3NpdGlvbiwgY2hpbGQpIHtcbiAgaWYgKCFiYXJQb3NpdGlvbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBiYXJQb3NpdGlvbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChiYXJQb3NpdGlvbltpXS5pdGVtID09PSBjaGlsZCkge1xuICAgICAgcmV0dXJuIGJhclBvc2l0aW9uW2ldLnBvc2l0aW9uO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogQm90aCB2YWx1ZSBhbmQgZG9tYWluIGFyZSB0dXBsZXMgb2YgdHdvIG51bWJlcnNcbiAqIC0gYnV0IHRoZSB0eXBlIHN0YXlzIGFzIGFycmF5IG9mIG51bWJlcnMgdW50aWwgd2UgaGF2ZSBiZXR0ZXIgc3VwcG9ydCBpbiByZXN0IG9mIHRoZSBhcHBcbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlIGlucHV0IHRoYXQgd2lsbCBiZSB0cnVuY2F0ZWRcbiAqIEBwYXJhbSB7QXJyYXl9IGRvbWFpbiBib3VuZGFyaWVzXG4gKiBAcmV0dXJucyB7QXJyYXl9IHR1cGxlIG9mIHR3byBudW1iZXJzXG4gKi9cbmV4cG9ydCB2YXIgdHJ1bmNhdGVCeURvbWFpbiA9IGZ1bmN0aW9uIHRydW5jYXRlQnlEb21haW4odmFsdWUsIGRvbWFpbikge1xuICBpZiAoIWRvbWFpbiB8fCBkb21haW4ubGVuZ3RoICE9PSAyIHx8ICFpc051bWJlcihkb21haW5bMF0pIHx8ICFpc051bWJlcihkb21haW5bMV0pKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciBtaW5WYWx1ZSA9IE1hdGgubWluKGRvbWFpblswXSwgZG9tYWluWzFdKTtcbiAgdmFyIG1heFZhbHVlID0gTWF0aC5tYXgoZG9tYWluWzBdLCBkb21haW5bMV0pO1xuICB2YXIgcmVzdWx0ID0gW3ZhbHVlWzBdLCB2YWx1ZVsxXV07XG4gIGlmICghaXNOdW1iZXIodmFsdWVbMF0pIHx8IHZhbHVlWzBdIDwgbWluVmFsdWUpIHtcbiAgICByZXN1bHRbMF0gPSBtaW5WYWx1ZTtcbiAgfVxuICBpZiAoIWlzTnVtYmVyKHZhbHVlWzFdKSB8fCB2YWx1ZVsxXSA+IG1heFZhbHVlKSB7XG4gICAgcmVzdWx0WzFdID0gbWF4VmFsdWU7XG4gIH1cbiAgaWYgKHJlc3VsdFswXSA+IG1heFZhbHVlKSB7XG4gICAgcmVzdWx0WzBdID0gbWF4VmFsdWU7XG4gIH1cbiAgaWYgKHJlc3VsdFsxXSA8IG1pblZhbHVlKSB7XG4gICAgcmVzdWx0WzFdID0gbWluVmFsdWU7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogU3RhY2tzIGFsbCBwb3NpdGl2ZSBudW1iZXJzIGFib3ZlIHplcm8gYW5kIGFsbCBuZWdhdGl2ZSBudW1iZXJzIGJlbG93IHplcm8uXG4gKlxuICogSWYgYWxsIHZhbHVlcyBpbiB0aGUgc2VyaWVzIGFyZSBwb3NpdGl2ZSB0aGVuIHRoaXMgYmVoYXZlcyB0aGUgc2FtZSBhcyAnbm9uZScgc3RhY2tlci5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBzZXJpZXMgZnJvbSBkMy1zaGFwZSBTdGFja1xuICogQHJldHVybiB7QXJyYXl9IHNlcmllcyB3aXRoIGFwcGxpZWQgb2Zmc2V0XG4gKi9cbmV4cG9ydCB2YXIgb2Zmc2V0U2lnbiA9IGZ1bmN0aW9uIG9mZnNldFNpZ24oc2VyaWVzKSB7XG4gIHZhciBuID0gc2VyaWVzLmxlbmd0aDtcbiAgaWYgKG4gPD0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZhciBqID0gMCwgbSA9IHNlcmllc1swXS5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICB2YXIgcG9zaXRpdmUgPSAwO1xuICAgIHZhciBuZWdhdGl2ZSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGlzTmFuKHNlcmllc1tpXVtqXVsxXSkgPyBzZXJpZXNbaV1bal1bMF0gOiBzZXJpZXNbaV1bal1bMV07XG5cbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nLCBuby1wYXJhbS1yZWFzc2lnbiAqL1xuICAgICAgaWYgKHZhbHVlID49IDApIHtcbiAgICAgICAgc2VyaWVzW2ldW2pdWzBdID0gcG9zaXRpdmU7XG4gICAgICAgIHNlcmllc1tpXVtqXVsxXSA9IHBvc2l0aXZlICsgdmFsdWU7XG4gICAgICAgIHBvc2l0aXZlID0gc2VyaWVzW2ldW2pdWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VyaWVzW2ldW2pdWzBdID0gbmVnYXRpdmU7XG4gICAgICAgIHNlcmllc1tpXVtqXVsxXSA9IG5lZ2F0aXZlICsgdmFsdWU7XG4gICAgICAgIG5lZ2F0aXZlID0gc2VyaWVzW2ldW2pdWzFdO1xuICAgICAgfVxuICAgICAgLyogZXNsaW50LWVuYWJsZSBwcmVmZXItZGVzdHJ1Y3R1cmluZywgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIG5lZ2F0aXZlIHZhbHVlcyB3aXRoIHplcm8gd2hlbiBzdGFja2luZyBkYXRhLlxuICpcbiAqIElmIGFsbCB2YWx1ZXMgaW4gdGhlIHNlcmllcyBhcmUgcG9zaXRpdmUgdGhlbiB0aGlzIGJlaGF2ZXMgdGhlIHNhbWUgYXMgJ25vbmUnIHN0YWNrZXIuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gc2VyaWVzIGZyb20gZDMtc2hhcGUgU3RhY2tcbiAqIEByZXR1cm4ge0FycmF5fSBzZXJpZXMgd2l0aCBhcHBsaWVkIG9mZnNldFxuICovXG5leHBvcnQgdmFyIG9mZnNldFBvc2l0aXZlID0gZnVuY3Rpb24gb2Zmc2V0UG9zaXRpdmUoc2VyaWVzKSB7XG4gIHZhciBuID0gc2VyaWVzLmxlbmd0aDtcbiAgaWYgKG4gPD0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZhciBqID0gMCwgbSA9IHNlcmllc1swXS5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICB2YXIgcG9zaXRpdmUgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB2YXIgdmFsdWUgPSBpc05hbihzZXJpZXNbaV1bal1bMV0pID8gc2VyaWVzW2ldW2pdWzBdIDogc2VyaWVzW2ldW2pdWzFdO1xuXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItZGVzdHJ1Y3R1cmluZywgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbiAgICAgIGlmICh2YWx1ZSA+PSAwKSB7XG4gICAgICAgIHNlcmllc1tpXVtqXVswXSA9IHBvc2l0aXZlO1xuICAgICAgICBzZXJpZXNbaV1bal1bMV0gPSBwb3NpdGl2ZSArIHZhbHVlO1xuICAgICAgICBwb3NpdGl2ZSA9IHNlcmllc1tpXVtqXVsxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcmllc1tpXVtqXVswXSA9IDA7XG4gICAgICAgIHNlcmllc1tpXVtqXVsxXSA9IDA7XG4gICAgICB9XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nLCBuby1wYXJhbS1yZWFzc2lnbiAqL1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0eXBlIHRvIGNvbXB1dGUgb2Zmc2V0IGZvciBzdGFja2VkIGRhdGEuXG4gKlxuICogZDMtc2hhcGUgaGFzIHNvbWV0aGluZyBmaXNoeSBnb2luZyBvbiB3aXRoIGl0cyB0eXBlcy5cbiAqIEluIEBkZWZpbml0ZWx5dHlwZWQvZDMtc2hhcGUsIHRoaXMgZnVuY3Rpb24gKHRoZSBvZmZzZXQgYWNjZXNzb3IpIGlzIHR5cGVkIGFzIFNlcmllczw+ID0+IHZvaWQuXG4gKiBIb3dldmVyISBXaGVuIEkgYWN0dWFsbHkgb3BlbiB0aGUgc3Rvcnlib29rIEkgY2FuIHNlZSB0aGF0IHRoZSBvZmZzZXQgYWNjZXNzb3IgYWN0dWFsbHkgcmVjZWl2ZXMgQXJyYXk8U2VyaWVzPD4+LlxuICogVGhlIHNhbWUgSSBjYW4gc2VlIGluIHRoZSBzb3VyY2UgY29kZSBpdHNlbGY6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZC9kaXNjdXNzaW9ucy82NjA0MlxuICogVGhhdCBvbmUgdW5mb3J0dW5hdGVseSBoYXMgbm8gdHlwZXMgYnV0IHdlIGNhbiB0ZWxsIGl0IHBhc3NlcyB0aHJlZS1kaW1lbnNpb25hbCBhcnJheS5cbiAqXG4gKiBXaGljaCBsZWFkcyBtZSB0byBiZWxpZXZlIHRoYXQgZGVmaW5pdGVseXR5cGVkIGlzIHdyb25nIG9uIHRoaXMgb25lLlxuICogVGhlcmUncyBvcGVuIGRpc2N1c3Npb24gb24gdGhpcyB0b3BpYyB3aXRob3V0IG11Y2ggYXR0ZW50aW9uOlxuICogaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvZGlzY3Vzc2lvbnMvNjYwNDJcbiAqL1xuXG52YXIgU1RBQ0tfT0ZGU0VUX01BUCA9IHtcbiAgc2lnbjogb2Zmc2V0U2lnbixcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBkZWZpbml0ZWx5dHlwZWQgdHlwZXMgYXJlIGluY29ycmVjdFxuICBleHBhbmQ6IHN0YWNrT2Zmc2V0RXhwYW5kLFxuICAvLyBAdHMtZXhwZWN0LWVycm9yIGRlZmluaXRlbHl0eXBlZCB0eXBlcyBhcmUgaW5jb3JyZWN0XG4gIG5vbmU6IHN0YWNrT2Zmc2V0Tm9uZSxcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBkZWZpbml0ZWx5dHlwZWQgdHlwZXMgYXJlIGluY29ycmVjdFxuICBzaWxob3VldHRlOiBzdGFja09mZnNldFNpbGhvdWV0dGUsXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgZGVmaW5pdGVseXR5cGVkIHR5cGVzIGFyZSBpbmNvcnJlY3RcbiAgd2lnZ2xlOiBzdGFja09mZnNldFdpZ2dsZSxcbiAgcG9zaXRpdmU6IG9mZnNldFBvc2l0aXZlXG59O1xuZXhwb3J0IHZhciBnZXRTdGFja2VkRGF0YSA9IGZ1bmN0aW9uIGdldFN0YWNrZWREYXRhKGRhdGEsIHN0YWNrSXRlbXMsIG9mZnNldFR5cGUpIHtcbiAgdmFyIGRhdGFLZXlzID0gc3RhY2tJdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5wcm9wcy5kYXRhS2V5O1xuICB9KTtcbiAgdmFyIG9mZnNldEFjY2Vzc29yID0gU1RBQ0tfT0ZGU0VUX01BUFtvZmZzZXRUeXBlXTtcbiAgdmFyIHN0YWNrID0gc2hhcGVTdGFjaygpXG4gIC8vIEB0cy1leHBlY3QtZXJyb3Igc3RhY2sua2V5cyB0eXBlIHdhbnRzIGFuIGFycmF5IG9mIHN0cmluZ3MsIGJ1dCB3ZSBwcm92aWRlIGFycmF5IG9mIERhdGFLZXlzXG4gIC5rZXlzKGRhdGFLZXlzKS52YWx1ZShmdW5jdGlvbiAoZCwga2V5KSB7XG4gICAgcmV0dXJuICtnZXRWYWx1ZUJ5RGF0YUtleShkLCBrZXksIDApO1xuICB9KS5vcmRlcihzdGFja09yZGVyTm9uZSlcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBkZWZpbml0ZWx5dHlwZWQgdHlwZXMgYXJlIGluY29ycmVjdFxuICAub2Zmc2V0KG9mZnNldEFjY2Vzc29yKTtcbiAgcmV0dXJuIHN0YWNrKGRhdGEpO1xufTtcbmV4cG9ydCB2YXIgZ2V0U3RhY2tHcm91cHNCeUF4aXNJZCA9IGZ1bmN0aW9uIGdldFN0YWNrR3JvdXBzQnlBeGlzSWQoZGF0YSwgX2l0ZW1zLCBudW1lcmljQXhpc0lkLCBjYXRlQXhpc0lkLCBvZmZzZXRUeXBlLCByZXZlcnNlU3RhY2tPcmRlcikge1xuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIHJldmVyc2luZyBpdGVtcyB0byBhZmZlY3QgcmVuZGVyIG9yZGVyIChmb3IgbGF5ZXJpbmcpXG4gIHZhciBpdGVtcyA9IHJldmVyc2VTdGFja09yZGVyID8gX2l0ZW1zLnJldmVyc2UoKSA6IF9pdGVtcztcbiAgdmFyIHBhcmVudFN0YWNrR3JvdXBzSW5pdGlhbFZhbHVlID0ge307XG4gIHZhciBzdGFja0dyb3VwcyA9IGl0ZW1zLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBpdGVtKSB7XG4gICAgdmFyIF9pdGVtJHR5cGUyO1xuICAgIHZhciBkZWZhdWx0ZWRQcm9wcyA9IChfaXRlbSR0eXBlMiA9IGl0ZW0udHlwZSkgIT09IG51bGwgJiYgX2l0ZW0kdHlwZTIgIT09IHZvaWQgMCAmJiBfaXRlbSR0eXBlMi5kZWZhdWx0UHJvcHMgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW0udHlwZS5kZWZhdWx0UHJvcHMpLCBpdGVtLnByb3BzKSA6IGl0ZW0ucHJvcHM7XG4gICAgdmFyIHN0YWNrSWQgPSBkZWZhdWx0ZWRQcm9wcy5zdGFja0lkLFxuICAgICAgaGlkZSA9IGRlZmF1bHRlZFByb3BzLmhpZGU7XG4gICAgaWYgKGhpZGUpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHZhciBheGlzSWQgPSBkZWZhdWx0ZWRQcm9wc1tudW1lcmljQXhpc0lkXTtcbiAgICB2YXIgcGFyZW50R3JvdXAgPSByZXN1bHRbYXhpc0lkXSB8fCB7XG4gICAgICBoYXNTdGFjazogZmFsc2UsXG4gICAgICBzdGFja0dyb3Vwczoge31cbiAgICB9O1xuICAgIGlmIChpc051bU9yU3RyKHN0YWNrSWQpKSB7XG4gICAgICB2YXIgY2hpbGRHcm91cCA9IHBhcmVudEdyb3VwLnN0YWNrR3JvdXBzW3N0YWNrSWRdIHx8IHtcbiAgICAgICAgbnVtZXJpY0F4aXNJZDogbnVtZXJpY0F4aXNJZCxcbiAgICAgICAgY2F0ZUF4aXNJZDogY2F0ZUF4aXNJZCxcbiAgICAgICAgaXRlbXM6IFtdXG4gICAgICB9O1xuICAgICAgY2hpbGRHcm91cC5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgcGFyZW50R3JvdXAuaGFzU3RhY2sgPSB0cnVlO1xuICAgICAgcGFyZW50R3JvdXAuc3RhY2tHcm91cHNbc3RhY2tJZF0gPSBjaGlsZEdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnRHcm91cC5zdGFja0dyb3Vwc1t1bmlxdWVJZCgnX3N0YWNrSWRfJyldID0ge1xuICAgICAgICBudW1lcmljQXhpc0lkOiBudW1lcmljQXhpc0lkLFxuICAgICAgICBjYXRlQXhpc0lkOiBjYXRlQXhpc0lkLFxuICAgICAgICBpdGVtczogW2l0ZW1dXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBheGlzSWQsIHBhcmVudEdyb3VwKSk7XG4gIH0sIHBhcmVudFN0YWNrR3JvdXBzSW5pdGlhbFZhbHVlKTtcbiAgdmFyIGF4aXNTdGFja0dyb3Vwc0luaXRpYWxWYWx1ZSA9IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMoc3RhY2tHcm91cHMpLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBheGlzSWQpIHtcbiAgICB2YXIgZ3JvdXAgPSBzdGFja0dyb3Vwc1theGlzSWRdO1xuICAgIGlmIChncm91cC5oYXNTdGFjaykge1xuICAgICAgdmFyIHN0YWNrR3JvdXBzSW5pdGlhbFZhbHVlID0ge307XG4gICAgICBncm91cC5zdGFja0dyb3VwcyA9IE9iamVjdC5rZXlzKGdyb3VwLnN0YWNrR3JvdXBzKS5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgc3RhY2tJZCkge1xuICAgICAgICB2YXIgZyA9IGdyb3VwLnN0YWNrR3JvdXBzW3N0YWNrSWRdO1xuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXMpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBzdGFja0lkLCB7XG4gICAgICAgICAgbnVtZXJpY0F4aXNJZDogbnVtZXJpY0F4aXNJZCxcbiAgICAgICAgICBjYXRlQXhpc0lkOiBjYXRlQXhpc0lkLFxuICAgICAgICAgIGl0ZW1zOiBnLml0ZW1zLFxuICAgICAgICAgIHN0YWNrZWREYXRhOiBnZXRTdGFja2VkRGF0YShkYXRhLCBnLml0ZW1zLCBvZmZzZXRUeXBlKVxuICAgICAgICB9KSk7XG4gICAgICB9LCBzdGFja0dyb3Vwc0luaXRpYWxWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3VsdCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIGF4aXNJZCwgZ3JvdXApKTtcbiAgfSwgYXhpc1N0YWNrR3JvdXBzSW5pdGlhbFZhbHVlKTtcbn07XG5cbi8qKlxuICogQ29uZmlndXJlIHRoZSBzY2FsZSBmdW5jdGlvbiBvZiBheGlzXG4gKiBAcGFyYW0ge09iamVjdH0gc2NhbGUgVGhlIHNjYWxlIGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyAgVGhlIGNvbmZpZ3VyYXRpb24gb2YgYXhpc1xuICogQHJldHVybiB7T2JqZWN0fSAgICAgIG51bGxcbiAqL1xuZXhwb3J0IHZhciBnZXRUaWNrc09mU2NhbGUgPSBmdW5jdGlvbiBnZXRUaWNrc09mU2NhbGUoc2NhbGUsIG9wdHMpIHtcbiAgdmFyIHJlYWxTY2FsZVR5cGUgPSBvcHRzLnJlYWxTY2FsZVR5cGUsXG4gICAgdHlwZSA9IG9wdHMudHlwZSxcbiAgICB0aWNrQ291bnQgPSBvcHRzLnRpY2tDb3VudCxcbiAgICBvcmlnaW5hbERvbWFpbiA9IG9wdHMub3JpZ2luYWxEb21haW4sXG4gICAgYWxsb3dEZWNpbWFscyA9IG9wdHMuYWxsb3dEZWNpbWFscztcbiAgdmFyIHNjYWxlVHlwZSA9IHJlYWxTY2FsZVR5cGUgfHwgb3B0cy5zY2FsZTtcbiAgaWYgKHNjYWxlVHlwZSAhPT0gJ2F1dG8nICYmIHNjYWxlVHlwZSAhPT0gJ2xpbmVhcicpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAodGlja0NvdW50ICYmIHR5cGUgPT09ICdudW1iZXInICYmIG9yaWdpbmFsRG9tYWluICYmIChvcmlnaW5hbERvbWFpblswXSA9PT0gJ2F1dG8nIHx8IG9yaWdpbmFsRG9tYWluWzFdID09PSAnYXV0bycpKSB7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSB0aWNrcyBieSB0aGUgbnVtYmVyIG9mIGdyaWQgd2hlbiB0aGUgYXhpcyBpcyBhIG51bWJlciBheGlzXG4gICAgdmFyIGRvbWFpbiA9IHNjYWxlLmRvbWFpbigpO1xuICAgIGlmICghZG9tYWluLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciB0aWNrVmFsdWVzID0gZ2V0TmljZVRpY2tWYWx1ZXMoZG9tYWluLCB0aWNrQ291bnQsIGFsbG93RGVjaW1hbHMpO1xuICAgIHNjYWxlLmRvbWFpbihbbWluKHRpY2tWYWx1ZXMpLCBtYXgodGlja1ZhbHVlcyldKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmljZVRpY2tzOiB0aWNrVmFsdWVzXG4gICAgfTtcbiAgfVxuICBpZiAodGlja0NvdW50ICYmIHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgdmFyIF9kb21haW4gPSBzY2FsZS5kb21haW4oKTtcbiAgICB2YXIgX3RpY2tWYWx1ZXMgPSBnZXRUaWNrVmFsdWVzRml4ZWREb21haW4oX2RvbWFpbiwgdGlja0NvdW50LCBhbGxvd0RlY2ltYWxzKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmljZVRpY2tzOiBfdGlja1ZhbHVlc1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhdGVDb29yZGluYXRlT2ZMaW5lKF9yZWY1KSB7XG4gIHZhciBheGlzID0gX3JlZjUuYXhpcyxcbiAgICB0aWNrcyA9IF9yZWY1LnRpY2tzLFxuICAgIGJhbmRTaXplID0gX3JlZjUuYmFuZFNpemUsXG4gICAgZW50cnkgPSBfcmVmNS5lbnRyeSxcbiAgICBpbmRleCA9IF9yZWY1LmluZGV4LFxuICAgIGRhdGFLZXkgPSBfcmVmNS5kYXRhS2V5O1xuICBpZiAoYXhpcy50eXBlID09PSAnY2F0ZWdvcnknKSB7XG4gICAgLy8gZmluZCBjb29yZGluYXRlIG9mIGNhdGVnb3J5IGF4aXMgYnkgdGhlIHZhbHVlIG9mIGNhdGVnb3J5XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciB3aHkgZG9lcyB0aGlzIHVzZSBkaXJlY3Qgb2JqZWN0IGFjY2VzcyBpbnN0ZWFkIG9mIGdldFZhbHVlQnlEYXRhS2V5P1xuICAgIGlmICghYXhpcy5hbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSAmJiBheGlzLmRhdGFLZXkgJiYgIWlzTmlsKGVudHJ5W2F4aXMuZGF0YUtleV0pKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHdoeSBkb2VzIHRoaXMgdXNlIGRpcmVjdCBvYmplY3QgYWNjZXNzIGluc3RlYWQgb2YgZ2V0VmFsdWVCeURhdGFLZXk/XG4gICAgICB2YXIgbWF0Y2hlZFRpY2sgPSBmaW5kRW50cnlJbkFycmF5KHRpY2tzLCAndmFsdWUnLCBlbnRyeVtheGlzLmRhdGFLZXldKTtcbiAgICAgIGlmIChtYXRjaGVkVGljaykge1xuICAgICAgICByZXR1cm4gbWF0Y2hlZFRpY2suY29vcmRpbmF0ZSArIGJhbmRTaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRpY2tzW2luZGV4XSA/IHRpY2tzW2luZGV4XS5jb29yZGluYXRlICsgYmFuZFNpemUgLyAyIDogbnVsbDtcbiAgfVxuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwgIWlzTmlsKGRhdGFLZXkpID8gZGF0YUtleSA6IGF4aXMuZGF0YUtleSk7XG4gIHJldHVybiAhaXNOaWwodmFsdWUpID8gYXhpcy5zY2FsZSh2YWx1ZSkgOiBudWxsO1xufVxuZXhwb3J0IHZhciBnZXRDYXRlQ29vcmRpbmF0ZU9mQmFyID0gZnVuY3Rpb24gZ2V0Q2F0ZUNvb3JkaW5hdGVPZkJhcihfcmVmNikge1xuICB2YXIgYXhpcyA9IF9yZWY2LmF4aXMsXG4gICAgdGlja3MgPSBfcmVmNi50aWNrcyxcbiAgICBvZmZzZXQgPSBfcmVmNi5vZmZzZXQsXG4gICAgYmFuZFNpemUgPSBfcmVmNi5iYW5kU2l6ZSxcbiAgICBlbnRyeSA9IF9yZWY2LmVudHJ5LFxuICAgIGluZGV4ID0gX3JlZjYuaW5kZXg7XG4gIGlmIChheGlzLnR5cGUgPT09ICdjYXRlZ29yeScpIHtcbiAgICByZXR1cm4gdGlja3NbaW5kZXhdID8gdGlja3NbaW5kZXhdLmNvb3JkaW5hdGUgKyBvZmZzZXQgOiBudWxsO1xuICB9XG4gIHZhciB2YWx1ZSA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCBheGlzLmRhdGFLZXksIGF4aXMuZG9tYWluW2luZGV4XSk7XG4gIHJldHVybiAhaXNOaWwodmFsdWUpID8gYXhpcy5zY2FsZSh2YWx1ZSkgLSBiYW5kU2l6ZSAvIDIgKyBvZmZzZXQgOiBudWxsO1xufTtcbmV4cG9ydCB2YXIgZ2V0QmFzZVZhbHVlT2ZCYXIgPSBmdW5jdGlvbiBnZXRCYXNlVmFsdWVPZkJhcihfcmVmNykge1xuICB2YXIgbnVtZXJpY0F4aXMgPSBfcmVmNy5udW1lcmljQXhpcztcbiAgdmFyIGRvbWFpbiA9IG51bWVyaWNBeGlzLnNjYWxlLmRvbWFpbigpO1xuICBpZiAobnVtZXJpY0F4aXMudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICB2YXIgbWluVmFsdWUgPSBNYXRoLm1pbihkb21haW5bMF0sIGRvbWFpblsxXSk7XG4gICAgdmFyIG1heFZhbHVlID0gTWF0aC5tYXgoZG9tYWluWzBdLCBkb21haW5bMV0pO1xuICAgIGlmIChtaW5WYWx1ZSA8PSAwICYmIG1heFZhbHVlID49IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAobWF4VmFsdWUgPCAwKSB7XG4gICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBtaW5WYWx1ZTtcbiAgfVxuICByZXR1cm4gZG9tYWluWzBdO1xufTtcbmV4cG9ydCB2YXIgZ2V0U3RhY2tlZERhdGFPZkl0ZW0gPSBmdW5jdGlvbiBnZXRTdGFja2VkRGF0YU9mSXRlbShpdGVtLCBzdGFja0dyb3Vwcykge1xuICB2YXIgX2l0ZW0kdHlwZTM7XG4gIHZhciBkZWZhdWx0ZWRQcm9wcyA9IChfaXRlbSR0eXBlMyA9IGl0ZW0udHlwZSkgIT09IG51bGwgJiYgX2l0ZW0kdHlwZTMgIT09IHZvaWQgMCAmJiBfaXRlbSR0eXBlMy5kZWZhdWx0UHJvcHMgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW0udHlwZS5kZWZhdWx0UHJvcHMpLCBpdGVtLnByb3BzKSA6IGl0ZW0ucHJvcHM7XG4gIHZhciBzdGFja0lkID0gZGVmYXVsdGVkUHJvcHMuc3RhY2tJZDtcbiAgaWYgKGlzTnVtT3JTdHIoc3RhY2tJZCkpIHtcbiAgICB2YXIgZ3JvdXAgPSBzdGFja0dyb3Vwc1tzdGFja0lkXTtcbiAgICBpZiAoZ3JvdXApIHtcbiAgICAgIHZhciBpdGVtSW5kZXggPSBncm91cC5pdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgcmV0dXJuIGl0ZW1JbmRleCA+PSAwID8gZ3JvdXAuc3RhY2tlZERhdGFbaXRlbUluZGV4XSA6IG51bGw7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufTtcbnZhciBnZXREb21haW5PZlNpbmdsZSA9IGZ1bmN0aW9uIGdldERvbWFpbk9mU2luZ2xlKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGVudHJ5KSB7XG4gICAgcmV0dXJuIFttaW4oZW50cnkuY29uY2F0KFtyZXN1bHRbMF1dKS5maWx0ZXIoaXNOdW1iZXIpKSwgbWF4KGVudHJ5LmNvbmNhdChbcmVzdWx0WzFdXSkuZmlsdGVyKGlzTnVtYmVyKSldO1xuICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pO1xufTtcbmV4cG9ydCB2YXIgZ2V0RG9tYWluT2ZTdGFja0dyb3VwcyA9IGZ1bmN0aW9uIGdldERvbWFpbk9mU3RhY2tHcm91cHMoc3RhY2tHcm91cHMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhzdGFja0dyb3VwcykucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIHN0YWNrSWQpIHtcbiAgICB2YXIgZ3JvdXAgPSBzdGFja0dyb3Vwc1tzdGFja0lkXTtcbiAgICB2YXIgc3RhY2tlZERhdGEgPSBncm91cC5zdGFja2VkRGF0YTtcbiAgICB2YXIgZG9tYWluID0gc3RhY2tlZERhdGEucmVkdWNlKGZ1bmN0aW9uIChyZXMsIGVudHJ5KSB7XG4gICAgICB2YXIgcyA9IGdldERvbWFpbk9mU2luZ2xlKGVudHJ5LnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4ICsgMSkpO1xuICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXNbMF0sIHNbMF0pLCBNYXRoLm1heChyZXNbMV0sIHNbMV0pXTtcbiAgICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pO1xuICAgIHJldHVybiBbTWF0aC5taW4oZG9tYWluWzBdLCByZXN1bHRbMF0pLCBNYXRoLm1heChkb21haW5bMV0sIHJlc3VsdFsxXSldO1xuICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pLm1hcChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSW5maW5pdHkgfHwgcmVzdWx0ID09PSAtSW5maW5pdHkgPyAwIDogcmVzdWx0O1xuICB9KTtcbn07XG5leHBvcnQgdmFyIE1JTl9WQUxVRV9SRUcgPSAvXmRhdGFNaW5bXFxzXSotW1xcc10qKFswLTldKyhbLl17MX1bMC05XSspezAsMX0pJC87XG5leHBvcnQgdmFyIE1BWF9WQUxVRV9SRUcgPSAvXmRhdGFNYXhbXFxzXSpcXCtbXFxzXSooWzAtOV0rKFsuXXsxfVswLTldKyl7MCwxfSkkLztcbmV4cG9ydCB2YXIgcGFyc2VTcGVjaWZpZWREb21haW4gPSBmdW5jdGlvbiBwYXJzZVNwZWNpZmllZERvbWFpbihzcGVjaWZpZWREb21haW4sIGRhdGFEb21haW4sIGFsbG93RGF0YU92ZXJmbG93KSB7XG4gIGlmIChpc0Z1bmN0aW9uKHNwZWNpZmllZERvbWFpbikpIHtcbiAgICByZXR1cm4gc3BlY2lmaWVkRG9tYWluKGRhdGFEb21haW4sIGFsbG93RGF0YU92ZXJmbG93KTtcbiAgfVxuICBpZiAoIUFycmF5LmlzQXJyYXkoc3BlY2lmaWVkRG9tYWluKSkge1xuICAgIHJldHVybiBkYXRhRG9tYWluO1xuICB9XG4gIHZhciBkb21haW4gPSBbXTtcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItZGVzdHJ1Y3R1cmluZyAqL1xuICBpZiAoaXNOdW1iZXIoc3BlY2lmaWVkRG9tYWluWzBdKSkge1xuICAgIGRvbWFpblswXSA9IGFsbG93RGF0YU92ZXJmbG93ID8gc3BlY2lmaWVkRG9tYWluWzBdIDogTWF0aC5taW4oc3BlY2lmaWVkRG9tYWluWzBdLCBkYXRhRG9tYWluWzBdKTtcbiAgfSBlbHNlIGlmIChNSU5fVkFMVUVfUkVHLnRlc3Qoc3BlY2lmaWVkRG9tYWluWzBdKSkge1xuICAgIHZhciB2YWx1ZSA9ICtNSU5fVkFMVUVfUkVHLmV4ZWMoc3BlY2lmaWVkRG9tYWluWzBdKVsxXTtcbiAgICBkb21haW5bMF0gPSBkYXRhRG9tYWluWzBdIC0gdmFsdWU7XG4gIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihzcGVjaWZpZWREb21haW5bMF0pKSB7XG4gICAgZG9tYWluWzBdID0gc3BlY2lmaWVkRG9tYWluWzBdKGRhdGFEb21haW5bMF0pO1xuICB9IGVsc2Uge1xuICAgIGRvbWFpblswXSA9IGRhdGFEb21haW5bMF07XG4gIH1cbiAgaWYgKGlzTnVtYmVyKHNwZWNpZmllZERvbWFpblsxXSkpIHtcbiAgICBkb21haW5bMV0gPSBhbGxvd0RhdGFPdmVyZmxvdyA/IHNwZWNpZmllZERvbWFpblsxXSA6IE1hdGgubWF4KHNwZWNpZmllZERvbWFpblsxXSwgZGF0YURvbWFpblsxXSk7XG4gIH0gZWxzZSBpZiAoTUFYX1ZBTFVFX1JFRy50ZXN0KHNwZWNpZmllZERvbWFpblsxXSkpIHtcbiAgICB2YXIgX3ZhbHVlID0gK01BWF9WQUxVRV9SRUcuZXhlYyhzcGVjaWZpZWREb21haW5bMV0pWzFdO1xuICAgIGRvbWFpblsxXSA9IGRhdGFEb21haW5bMV0gKyBfdmFsdWU7XG4gIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihzcGVjaWZpZWREb21haW5bMV0pKSB7XG4gICAgZG9tYWluWzFdID0gc3BlY2lmaWVkRG9tYWluWzFdKGRhdGFEb21haW5bMV0pO1xuICB9IGVsc2Uge1xuICAgIGRvbWFpblsxXSA9IGRhdGFEb21haW5bMV07XG4gIH1cbiAgLyogZXNsaW50LWVuYWJsZSBwcmVmZXItZGVzdHJ1Y3R1cmluZyAqL1xuXG4gIHJldHVybiBkb21haW47XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgc2l6ZSBiZXR3ZWVuIHR3byBjYXRlZ29yeVxuICogQHBhcmFtICB7T2JqZWN0fSBheGlzICBUaGUgb3B0aW9ucyBvZiBheGlzXG4gKiBAcGFyYW0gIHtBcnJheX0gIHRpY2tzIFRoZSB0aWNrcyBvZiBheGlzXG4gKiBAcGFyYW0gIHtCb29sZWFufSBpc0JhciBpZiBpdGVtcyBpbiBheGlzIGFyZSBiYXJzXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IFNpemVcbiAqL1xuZXhwb3J0IHZhciBnZXRCYW5kU2l6ZU9mQXhpcyA9IGZ1bmN0aW9uIGdldEJhbmRTaXplT2ZBeGlzKGF4aXMsIHRpY2tzLCBpc0Jhcikge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIHdlIG5lZWQgdG8gcmV0aGluayBzY2FsZSB0eXBlXG4gIGlmIChheGlzICYmIGF4aXMuc2NhbGUgJiYgYXhpcy5zY2FsZS5iYW5kd2lkdGgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHdlIG5lZWQgdG8gcmV0aGluayBzY2FsZSB0eXBlXG4gICAgdmFyIGJhbmRXaWR0aCA9IGF4aXMuc2NhbGUuYmFuZHdpZHRoKCk7XG4gICAgaWYgKCFpc0JhciB8fCBiYW5kV2lkdGggPiAwKSB7XG4gICAgICByZXR1cm4gYmFuZFdpZHRoO1xuICAgIH1cbiAgfVxuICBpZiAoYXhpcyAmJiB0aWNrcyAmJiB0aWNrcy5sZW5ndGggPj0gMikge1xuICAgIHZhciBvcmRlcmVkVGlja3MgPSBzb3J0QnkodGlja3MsIGZ1bmN0aW9uIChvKSB7XG4gICAgICByZXR1cm4gby5jb29yZGluYXRlO1xuICAgIH0pO1xuICAgIHZhciBiYW5kU2l6ZSA9IEluZmluaXR5O1xuICAgIGZvciAodmFyIGkgPSAxLCBsZW4gPSBvcmRlcmVkVGlja3MubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjdXIgPSBvcmRlcmVkVGlja3NbaV07XG4gICAgICB2YXIgcHJldiA9IG9yZGVyZWRUaWNrc1tpIC0gMV07XG4gICAgICBiYW5kU2l6ZSA9IE1hdGgubWluKChjdXIuY29vcmRpbmF0ZSB8fCAwKSAtIChwcmV2LmNvb3JkaW5hdGUgfHwgMCksIGJhbmRTaXplKTtcbiAgICB9XG4gICAgcmV0dXJuIGJhbmRTaXplID09PSBJbmZpbml0eSA/IDAgOiBiYW5kU2l6ZTtcbiAgfVxuICByZXR1cm4gaXNCYXIgPyB1bmRlZmluZWQgOiAwO1xufTtcbi8qKlxuICogcGFyc2UgdGhlIGRvbWFpbiBvZiBhIGNhdGVnb3J5IGF4aXMgd2hlbiBhIGRvbWFpbiBpcyBzcGVjaWZpZWRcbiAqIEBwYXJhbSAgIHtBcnJheX0gICAgICAgIHNwZWNpZmllZERvbWFpbiAgVGhlIGRvbWFpbiBzcGVjaWZpZWQgYnkgdXNlcnNcbiAqIEBwYXJhbSAgIHtBcnJheX0gICAgICAgIGNhbGN1bGF0ZWREb21haW4gVGhlIGRvbWFpbiBjYWxjdWxhdGVkIGJ5IGRhdGVLZXlcbiAqIEBwYXJhbSAgIHtSZWFjdEVsZW1lbnR9IGF4aXNDaGlsZCAgICAgICAgVGhlIGF4aXMgUmVhY3RFbGVtZW50XG4gKiBAcmV0dXJucyB7QXJyYXl9ICAgICAgICBkb21haW5zXG4gKi9cbmV4cG9ydCB2YXIgcGFyc2VEb21haW5PZkNhdGVnb3J5QXhpcyA9IGZ1bmN0aW9uIHBhcnNlRG9tYWluT2ZDYXRlZ29yeUF4aXMoc3BlY2lmaWVkRG9tYWluLCBjYWxjdWxhdGVkRG9tYWluLCBheGlzQ2hpbGQpIHtcbiAgaWYgKCFzcGVjaWZpZWREb21haW4gfHwgIXNwZWNpZmllZERvbWFpbi5sZW5ndGgpIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlZERvbWFpbjtcbiAgfVxuICBpZiAoaXNFcXVhbChzcGVjaWZpZWREb21haW4sIGdldChheGlzQ2hpbGQsICd0eXBlLmRlZmF1bHRQcm9wcy5kb21haW4nKSkpIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlZERvbWFpbjtcbiAgfVxuICByZXR1cm4gc3BlY2lmaWVkRG9tYWluO1xufTtcbmV4cG9ydCB2YXIgZ2V0VG9vbHRpcEl0ZW0gPSBmdW5jdGlvbiBnZXRUb29sdGlwSXRlbShncmFwaGljYWxJdGVtLCBwYXlsb2FkKSB7XG4gIHZhciBkZWZhdWx0ZWRQcm9wcyA9IGdyYXBoaWNhbEl0ZW0udHlwZS5kZWZhdWx0UHJvcHMgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdyYXBoaWNhbEl0ZW0udHlwZS5kZWZhdWx0UHJvcHMpLCBncmFwaGljYWxJdGVtLnByb3BzKSA6IGdyYXBoaWNhbEl0ZW0ucHJvcHM7XG4gIHZhciBkYXRhS2V5ID0gZGVmYXVsdGVkUHJvcHMuZGF0YUtleSxcbiAgICBuYW1lID0gZGVmYXVsdGVkUHJvcHMubmFtZSxcbiAgICB1bml0ID0gZGVmYXVsdGVkUHJvcHMudW5pdCxcbiAgICBmb3JtYXR0ZXIgPSBkZWZhdWx0ZWRQcm9wcy5mb3JtYXR0ZXIsXG4gICAgdG9vbHRpcFR5cGUgPSBkZWZhdWx0ZWRQcm9wcy50b29sdGlwVHlwZSxcbiAgICBjaGFydFR5cGUgPSBkZWZhdWx0ZWRQcm9wcy5jaGFydFR5cGUsXG4gICAgaGlkZSA9IGRlZmF1bHRlZFByb3BzLmhpZGU7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGZpbHRlclByb3BzKGdyYXBoaWNhbEl0ZW0sIGZhbHNlKSksIHt9LCB7XG4gICAgZGF0YUtleTogZGF0YUtleSxcbiAgICB1bml0OiB1bml0LFxuICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyLFxuICAgIG5hbWU6IG5hbWUgfHwgZGF0YUtleSxcbiAgICBjb2xvcjogZ2V0TWFpbkNvbG9yT2ZHcmFwaGljSXRlbShncmFwaGljYWxJdGVtKSxcbiAgICB2YWx1ZTogZ2V0VmFsdWVCeURhdGFLZXkocGF5bG9hZCwgZGF0YUtleSksXG4gICAgdHlwZTogdG9vbHRpcFR5cGUsXG4gICAgcGF5bG9hZDogcGF5bG9hZCxcbiAgICBjaGFydFR5cGU6IGNoYXJ0VHlwZSxcbiAgICBoaWRlOiBoaWRlXG4gIH0pO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsIk9iamVjdCIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpdGVyIiwiaXNBcnJheSIsImxlbiIsImxlbmd0aCIsImkiLCJhcnIyIiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJkM1NjYWxlcyIsInN0YWNrIiwic2hhcGVTdGFjayIsInN0YWNrT2Zmc2V0RXhwYW5kIiwic3RhY2tPZmZzZXROb25lIiwic3RhY2tPZmZzZXRTaWxob3VldHRlIiwic3RhY2tPZmZzZXRXaWdnbGUiLCJzdGFja09yZGVyTm9uZSIsIm1heCIsIm1pbiIsImlzTmlsIiwiaXNGdW5jdGlvbiIsImlzU3RyaW5nIiwiZ2V0IiwiZmxhdE1hcCIsImlzTmFuIiwidXBwZXJGaXJzdCIsImlzRXF1YWwiLCJzb3J0QnkiLCJnZXROaWNlVGlja1ZhbHVlcyIsImdldFRpY2tWYWx1ZXNGaXhlZERvbWFpbiIsIkVycm9yQmFyIiwiZmluZEVudHJ5SW5BcnJheSIsImdldFBlcmNlbnRWYWx1ZSIsImlzTnVtYmVyIiwiaXNOdW1PclN0ciIsIm1hdGhTaWduIiwidW5pcXVlSWQiLCJmaWx0ZXJQcm9wcyIsImZpbmRBbGxCeVR5cGUiLCJnZXREaXNwbGF5TmFtZSIsImdldExlZ2VuZFByb3BzIiwiZ2V0VmFsdWVCeURhdGFLZXkiLCJkYXRhS2V5IiwiZGVmYXVsdFZhbHVlIiwiZ2V0RG9tYWluT2ZEYXRhQnlLZXkiLCJkYXRhIiwidHlwZSIsImZpbHRlck5pbCIsImZsYXR0ZW5EYXRhIiwiZW50cnkiLCJkb21haW4iLCJwYXJzZUZsb2F0IiwiSW5maW5pdHkiLCJ2YWxpZGF0ZURhdGEiLCJtYXAiLCJEYXRlIiwiY2FsY3VsYXRlQWN0aXZlVGlja0luZGV4IiwiY29vcmRpbmF0ZSIsIl90aWNrcyRsZW5ndGgiLCJ0aWNrcyIsInVuZGVmaW5lZCIsInVuc29ydGVkVGlja3MiLCJheGlzIiwiaW5kZXgiLCJheGlzVHlwZSIsIk1hdGgiLCJhYnMiLCJyYW5nZSIsImJlZm9yZSIsImN1ciIsImFmdGVyIiwic2FtZURpcmVjdGlvbkNvb3JkIiwiZGlmZkludGVydmFsIiwiY3VySW5SYW5nZSIsImFmdGVySW5SYW5nZSIsInNhbWVJbnRlcnZhbCIsIm1pblZhbHVlIiwibWF4VmFsdWUiLCJfaSIsImdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0iLCJpdGVtIiwiX2l0ZW0kdHlwZSIsIl9yZWYiLCJkaXNwbGF5TmFtZSIsImRlZmF1bHRlZFByb3BzIiwiZGVmYXVsdFByb3BzIiwicHJvcHMiLCJzdHJva2UiLCJmaWxsIiwicmVzdWx0IiwiZ2V0QmFyU2l6ZUxpc3QiLCJfcmVmMiIsImdsb2JhbFNpemUiLCJiYXJTaXplIiwidG90YWxTaXplIiwiX3JlZjIkc3RhY2tHcm91cHMiLCJzdGFja0dyb3VwcyIsIm51bWVyaWNBeGlzSWRzIiwic2dzIiwic3RhY2tJZHMiLCJqIiwic0xlbiIsIl9zZ3Mkc3RhY2tJZHMkaiIsIml0ZW1zIiwiY2F0ZUF4aXNJZCIsImJhckl0ZW1zIiwiaW5kZXhPZiIsImJhckl0ZW1EZWZhdWx0UHJvcHMiLCJiYXJJdGVtUHJvcHMiLCJzZWxmU2l6ZSIsImNhdGVJZCIsInN0YWNrTGlzdCIsImdldEJhclBvc2l0aW9uIiwiX3JlZjMiLCJiYXJHYXAiLCJiYXJDYXRlZ29yeUdhcCIsImJhbmRTaXplIiwiX3JlZjMkc2l6ZUxpc3QiLCJzaXplTGlzdCIsIm1heEJhclNpemUiLCJyZWFsQmFyR2FwIiwiaW5pdGlhbFZhbHVlIiwidXNlRnVsbCIsImZ1bGxCYXJTaXplIiwic3VtIiwicmVkdWNlIiwicmVzIiwib2Zmc2V0IiwicHJldiIsInNpemUiLCJuZXdQb3NpdGlvbiIsInBvc2l0aW9uIiwibmV3UmVzIiwiY29uY2F0IiwiX29mZnNldCIsIm9yaWdpbmFsU2l6ZSIsImFwcGVuZE9mZnNldE9mTGVnZW5kIiwiX3VudXNlZCIsImxlZ2VuZEJveCIsImNoaWxkcmVuIiwid2lkdGgiLCJtYXJnaW4iLCJsZWdlbmRXaWR0aCIsImxlZnQiLCJyaWdodCIsImxlZ2VuZFByb3BzIiwiX3JlZjQiLCJib3hXaWR0aCIsImJveEhlaWdodCIsImhlaWdodCIsImFsaWduIiwidmVydGljYWxBbGlnbiIsImxheW91dCIsImlzRXJyb3JCYXJSZWxldmFudEZvckF4aXMiLCJkaXJlY3Rpb24iLCJnZXREb21haW5PZkVycm9yQmFycyIsImVycm9yQmFycyIsImVycm9yQmFyQ2hpbGQiLCJlbnRyeVZhbHVlIiwibWFpblZhbHVlIiwiZXJyb3JEb21haW4iLCJwcmV2RXJyb3JBcnIiLCJrIiwiZXJyb3JWYWx1ZSIsImxvd2VyVmFsdWUiLCJ1cHBlclZhbHVlIiwicGFyc2VFcnJvckJhcnNPZkF4aXMiLCJkb21haW5zIiwiZ2V0RG9tYWluT2ZJdGVtc1dpdGhTYW1lQXhpcyIsInRhZyIsImlzQ2F0ZWdvcmljYWxBeGlzIiwiZ2V0Q29vcmRpbmF0ZXNPZkdyaWQiLCJzeW5jV2l0aFRpY2tzIiwiaGFzTWluIiwiaGFzTWF4IiwidmFsdWVzIiwiZ2V0VGlja3NPZkF4aXMiLCJpc0dyaWQiLCJpc0FsbCIsInNjYWxlIiwiZHVwbGljYXRlRG9tYWluIiwib2Zmc2V0Rm9yQmFuZCIsInJlYWxTY2FsZVR5cGUiLCJiYW5kd2lkdGgiLCJuaWNlVGlja3MiLCJzY2FsZUNvbnRlbnQiLCJyb3ciLCJpc0NhdGVnb3JpY2FsIiwiY2F0ZWdvcmljYWxEb21haW4iLCJ0aWNrQ291bnQiLCJoYW5kbGVyV2Vha01hcCIsIldlYWtNYXAiLCJjb21iaW5lRXZlbnRIYW5kbGVycyIsImRlZmF1bHRIYW5kbGVyIiwiY2hpbGRIYW5kbGVyIiwiaGFzIiwic2V0IiwiY2hpbGRXZWFrTWFwIiwiY29tYmluZUhhbmRsZXIiLCJwYXJzZVNjYWxlIiwiY2hhcnRUeXBlIiwiaGFzQmFyIiwic2NhbGVCYW5kIiwic2NhbGVMaW5lYXIiLCJzY2FsZVBvaW50IiwiRVBTIiwiY2hlY2tEb21haW5PZlNjYWxlIiwiZmlyc3QiLCJsYXN0IiwiZmluZFBvc2l0aW9uT2ZCYXIiLCJiYXJQb3NpdGlvbiIsImNoaWxkIiwidHJ1bmNhdGVCeURvbWFpbiIsIm9mZnNldFNpZ24iLCJzZXJpZXMiLCJtIiwicG9zaXRpdmUiLCJuZWdhdGl2ZSIsIm9mZnNldFBvc2l0aXZlIiwiU1RBQ0tfT0ZGU0VUX01BUCIsInNpZ24iLCJleHBhbmQiLCJub25lIiwic2lsaG91ZXR0ZSIsIndpZ2dsZSIsImdldFN0YWNrZWREYXRhIiwic3RhY2tJdGVtcyIsIm9mZnNldFR5cGUiLCJkYXRhS2V5cyIsIm9mZnNldEFjY2Vzc29yIiwiZCIsIm9yZGVyIiwiZ2V0U3RhY2tHcm91cHNCeUF4aXNJZCIsIl9pdGVtcyIsIm51bWVyaWNBeGlzSWQiLCJyZXZlcnNlU3RhY2tPcmRlciIsInJldmVyc2UiLCJwYXJlbnRTdGFja0dyb3Vwc0luaXRpYWxWYWx1ZSIsIl9pdGVtJHR5cGUyIiwic3RhY2tJZCIsImhpZGUiLCJheGlzSWQiLCJwYXJlbnRHcm91cCIsImhhc1N0YWNrIiwiY2hpbGRHcm91cCIsImF4aXNTdGFja0dyb3Vwc0luaXRpYWxWYWx1ZSIsImdyb3VwIiwic3RhY2tHcm91cHNJbml0aWFsVmFsdWUiLCJnIiwic3RhY2tlZERhdGEiLCJnZXRUaWNrc09mU2NhbGUiLCJvcHRzIiwib3JpZ2luYWxEb21haW4iLCJhbGxvd0RlY2ltYWxzIiwic2NhbGVUeXBlIiwidGlja1ZhbHVlcyIsIl9kb21haW4iLCJfdGlja1ZhbHVlcyIsImdldENhdGVDb29yZGluYXRlT2ZMaW5lIiwiX3JlZjUiLCJhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSIsIm1hdGNoZWRUaWNrIiwiZ2V0Q2F0ZUNvb3JkaW5hdGVPZkJhciIsIl9yZWY2IiwiZ2V0QmFzZVZhbHVlT2ZCYXIiLCJfcmVmNyIsIm51bWVyaWNBeGlzIiwiZ2V0U3RhY2tlZERhdGFPZkl0ZW0iLCJfaXRlbSR0eXBlMyIsIml0ZW1JbmRleCIsImdldERvbWFpbk9mU2luZ2xlIiwiZ2V0RG9tYWluT2ZTdGFja0dyb3VwcyIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsInMiLCJNSU5fVkFMVUVfUkVHIiwiTUFYX1ZBTFVFX1JFRyIsInBhcnNlU3BlY2lmaWVkRG9tYWluIiwic3BlY2lmaWVkRG9tYWluIiwiZGF0YURvbWFpbiIsImFsbG93RGF0YU92ZXJmbG93IiwiZXhlYyIsIl92YWx1ZSIsImdldEJhbmRTaXplT2ZBeGlzIiwiaXNCYXIiLCJiYW5kV2lkdGgiLCJvcmRlcmVkVGlja3MiLCJwYXJzZURvbWFpbk9mQ2F0ZWdvcnlBeGlzIiwiY2FsY3VsYXRlZERvbWFpbiIsImF4aXNDaGlsZCIsImdldFRvb2x0aXBJdGVtIiwiZ3JhcGhpY2FsSXRlbSIsInBheWxvYWQiLCJ1bml0IiwiZm9ybWF0dGVyIiwidG9vbHRpcFR5cGUiLCJjb2xvciJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/CssPrefixUtils.js":
/*!**********************************************************!*\
!*** ./node_modules/recharts/es6/util/CssPrefixUtils.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ generatePrefixStyle: () => (/* binding */ generatePrefixStyle)\n/* harmony export */ });\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nvar PREFIX_LIST = [\n 'Webkit',\n 'Moz',\n 'O',\n 'ms'\n];\nvar generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (!name) {\n return null;\n }\n var camelName = name.replace(/(\\w)/, function(v) {\n return v.toUpperCase();\n });\n var result = PREFIX_LIST.reduce(function(res, entry) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, entry + camelName, value));\n }, {});\n result[name] = value;\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQ3NzUHJlZml4VXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0QsRUFBRTtRQUFHLEtBQUtFLE9BQU9hLHlCQUF5QixHQUFHYixPQUFPYyxnQkFBZ0IsQ0FBQ2pCLEdBQUdHLE9BQU9hLHlCQUF5QixDQUFDZCxNQUFNSCxRQUFRSSxPQUFPRCxJQUFJWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJRSxPQUFPZSxjQUFjLENBQUNsQixHQUFHQyxHQUFHRSxPQUFPSSx3QkFBd0IsQ0FBQ0wsR0FBR0Q7UUFBSztJQUFJO0lBQUUsT0FBT0Q7QUFBRztBQUN0YixTQUFTZSxnQkFBZ0JJLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxLQUFLO0lBQUlELE1BQU1FLGVBQWVGO0lBQU0sSUFBSUEsT0FBT0QsS0FBSztRQUFFaEIsT0FBT2UsY0FBYyxDQUFDQyxLQUFLQyxLQUFLO1lBQUVDLE9BQU9BO1lBQU9iLFlBQVk7WUFBTWUsY0FBYztZQUFNQyxVQUFVO1FBQUs7SUFBSSxPQUFPO1FBQUVMLEdBQUcsQ0FBQ0MsSUFBSSxHQUFHQztJQUFPO0lBQUUsT0FBT0Y7QUFBSztBQUMzTyxTQUFTRyxlQUFlcEIsQ0FBQztJQUFJLElBQUl1QixJQUFJQyxhQUFheEIsR0FBRztJQUFXLE9BQU8sWUFBWVQsUUFBUWdDLEtBQUtBLElBQUlBLElBQUk7QUFBSTtBQUM1RyxTQUFTQyxhQUFheEIsQ0FBQyxFQUFFRCxDQUFDO0lBQUksSUFBSSxZQUFZUixRQUFRUyxNQUFNLENBQUNBLEdBQUcsT0FBT0E7SUFBRyxJQUFJRixJQUFJRSxDQUFDLENBQUNQLE9BQU9nQyxXQUFXLENBQUM7SUFBRSxJQUFJLEtBQUssTUFBTTNCLEdBQUc7UUFBRSxJQUFJeUIsSUFBSXpCLEVBQUU0QixJQUFJLENBQUMxQixHQUFHRCxLQUFLO1FBQVksSUFBSSxZQUFZUixRQUFRZ0MsSUFBSSxPQUFPQTtRQUFHLE1BQU0sSUFBSUksVUFBVTtJQUFpRDtJQUFFLE9BQU8sQ0FBQyxhQUFhNUIsSUFBSTZCLFNBQVNDLE1BQUssRUFBRzdCO0FBQUk7QUFDM1QsSUFBSThCLGNBQWM7SUFBQztJQUFVO0lBQU87SUFBSztDQUFLO0FBQ3ZDLElBQUlDLHNCQUFzQixTQUFTQSxvQkFBb0JDLElBQUksRUFBRWIsS0FBSztJQUN2RSxJQUFJLENBQUNhLE1BQU07UUFDVCxPQUFPO0lBQ1Q7SUFDQSxJQUFJQyxZQUFZRCxLQUFLRSxPQUFPLENBQUMsUUFBUSxTQUFVQyxDQUFDO1FBQzlDLE9BQU9BLEVBQUVDLFdBQVc7SUFDdEI7SUFDQSxJQUFJQyxTQUFTUCxZQUFZUSxNQUFNLENBQUMsU0FBVUMsR0FBRyxFQUFFQyxLQUFLO1FBQ2xELE9BQU8vQixjQUFjQSxjQUFjLENBQUMsR0FBRzhCLE1BQU0sQ0FBQyxHQUFHMUIsZ0JBQWdCLENBQUMsR0FBRzJCLFFBQVFQLFdBQVdkO0lBQzFGLEdBQUcsQ0FBQztJQUNKa0IsTUFBTSxDQUFDTCxLQUFLLEdBQUdiO0lBQ2YsT0FBT2tCO0FBQ1QsRUFBRSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9Dc3NQcmVmaXhVdGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxudmFyIFBSRUZJWF9MSVNUID0gWydXZWJraXQnLCAnTW96JywgJ08nLCAnbXMnXTtcbmV4cG9ydCB2YXIgZ2VuZXJhdGVQcmVmaXhTdHlsZSA9IGZ1bmN0aW9uIGdlbmVyYXRlUHJlZml4U3R5bGUobmFtZSwgdmFsdWUpIHtcbiAgaWYgKCFuYW1lKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGNhbWVsTmFtZSA9IG5hbWUucmVwbGFjZSgvKFxcdykvLCBmdW5jdGlvbiAodikge1xuICAgIHJldHVybiB2LnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xuICB2YXIgcmVzdWx0ID0gUFJFRklYX0xJU1QucmVkdWNlKGZ1bmN0aW9uIChyZXMsIGVudHJ5KSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzKSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgZW50cnkgKyBjYW1lbE5hbWUsIHZhbHVlKSk7XG4gIH0sIHt9KTtcbiAgcmVzdWx0W25hbWVdID0gdmFsdWU7XG4gIHJldHVybiByZXN1bHQ7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiUFJFRklYX0xJU1QiLCJnZW5lcmF0ZVByZWZpeFN0eWxlIiwibmFtZSIsImNhbWVsTmFtZSIsInJlcGxhY2UiLCJ2IiwidG9VcHBlckNhc2UiLCJyZXN1bHQiLCJyZWR1Y2UiLCJyZXMiLCJlbnRyeSJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/CssPrefixUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/DOMUtils.js":
/*!****************************************************!*\
!*** ./node_modules/recharts/es6/util/DOMUtils.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getOffset: () => (/* binding */ getOffset),\n/* harmony export */ getStringSize: () => (/* binding */ getStringSize),\n/* harmony export */ getStyleString: () => (/* binding */ getStyleString)\n/* harmony export */ });\n/* harmony import */ var _Global__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\n\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nvar STYLE_LIST = [\n 'minWidth',\n 'maxWidth',\n 'width',\n 'minHeight',\n 'maxHeight',\n 'height',\n 'top',\n 'left',\n 'fontSize',\n 'lineHeight',\n 'padding',\n 'margin',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom'\n];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n return value;\n}\nfunction camelToMiddleLine(text) {\n var strs = text.split('');\n var formatStrs = strs.reduce(function(result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), [\n '-',\n entry.toLowerCase()\n ]);\n }\n return [].concat(_toConsumableArray(result), [\n entry\n ]);\n }, []);\n return formatStrs.join('');\n}\nvar getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function(result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, '');\n};\nfunction removeInvalidKeys(obj) {\n var copyObj = _objectSpread({}, obj);\n Object.keys(copyObj).forEach(function(key) {\n if (!copyObj[key]) {\n delete copyObj[key];\n }\n });\n return copyObj;\n}\nvar getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (text === undefined || text === null || _Global__WEBPACK_IMPORTED_MODULE_0__.Global.isSsr) {\n return {\n width: 0,\n height: 0\n };\n }\n var copyStyle = removeInvalidKeys(style);\n var cacheKey = JSON.stringify({\n text: text,\n copyStyle: copyStyle\n });\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n if (!measurementSpan) {\n measurementSpan = document.createElement('span');\n measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n measurementSpan.setAttribute('aria-hidden', 'true');\n document.body.appendChild(measurementSpan);\n }\n // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), copyStyle);\n Object.assign(measurementSpan.style, measurementSpanStyle);\n measurementSpan.textContent = \"\".concat(text);\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.widthCache[cacheKey] = result;\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n return result;\n } catch (e) {\n return {\n width: 0,\n height: 0\n };\n }\n};\nvar getOffset = function getOffset(rect) {\n return {\n top: rect.top + window.scrollY - document.documentElement.clientTop,\n left: rect.left + window.scrollX - document.documentElement.clientLeft\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRE9NVXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0QsRUFBRTtRQUFH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QkFBZ0JJLFlBQVksQ0FBQyxNQUFNakM7WUFDbkM2QixnQkFBZ0JJLFlBQVksQ0FBQyxlQUFlO1lBQzVDSCxTQUFTSSxJQUFJLENBQUNDLFdBQVcsQ0FBQ047UUFDNUI7UUFDQSwrRkFBK0Y7UUFDL0Ysd0RBQXdEO1FBQ3hELElBQUlPLHVCQUF1QjFGLGNBQWNBLGNBQWMsQ0FBQyxHQUFHNkMsYUFBYWtDO1FBQ3hFdkYsT0FBT21HLE1BQU0sQ0FBQ1IsZ0JBQWdCYixLQUFLLEVBQUVvQjtRQUNyQ1AsZ0JBQWdCUyxXQUFXLEdBQUcsR0FBR25DLE1BQU0sQ0FBQ0U7UUFDeEMsSUFBSWtDLE9BQU9WLGdCQUFnQlcscUJBQXFCO1FBQ2hELElBQUk5QixTQUFTO1lBQ1hhLE9BQU9nQixLQUFLaEIsS0FBSztZQUNqQkMsUUFBUWUsS0FBS2YsTUFBTTtRQUNyQjtRQUNBckMsWUFBWUMsVUFBVSxDQUFDc0MsU0FBUyxHQUFHaEI7UUFDbkMsSUFBSSxFQUFFdkIsWUFBWUUsVUFBVSxHQUFHQyxlQUFlO1lBQzVDSCxZQUFZRSxVQUFVLEdBQUc7WUFDekJGLFlBQVlDLFVBQVUsR0FBRyxDQUFDO1FBQzVCO1FBQ0EsT0FBT3NCO0lBQ1QsRUFBRSxPQUFPM0UsR0FBRztRQUNWLE9BQU87WUFDTHdGLE9BQU87WUFDUEMsUUFBUTtRQUNWO0lBQ0Y7QUFDRixFQUFFO0FBQ0ssSUFBSWlCLFlBQVksU0FBU0EsVUFBVUYsSUFBSTtJQUM1QyxPQUFPO1FBQ0w5QyxLQUFLOEMsS0FBSzlDLEdBQUcsR0FBR2lELE9BQU9DLE9BQU8sR0FBR2IsU0FBU2MsZUFBZSxDQUFDQyxTQUFTO1FBQ25FbkQsTUFBTTZDLEtBQUs3QyxJQUFJLEdBQUdnRCxPQUFPSSxPQUFPLEdBQUdoQixTQUFTYyxlQUFlLENBQUNHLFVBQVU7SUFDeEU7QUFDRixFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0RPTVV0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGl0ZXJbU3ltYm9sLml0ZXJhdG9yXSAhPSBudWxsIHx8IGl0ZXJbXCJAQGl0ZXJhdG9yXCJdICE9IG51bGwpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpOyB9XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShhcnIpOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnLi9HbG9iYWwnO1xudmFyIHN0cmluZ0NhY2hlID0ge1xuICB3aWR0aENhY2hlOiB7fSxcbiAgY2FjaGVDb3VudDogMFxufTtcbnZhciBNQVhfQ0FDSEVfTlVNID0gMjAwMDtcbnZhciBTUEFOX1NUWUxFID0ge1xuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgdG9wOiAnLTIwMDAwcHgnLFxuICBsZWZ0OiAwLFxuICBwYWRkaW5nOiAwLFxuICBtYXJnaW46IDAsXG4gIGJvcmRlcjogJ25vbmUnLFxuICB3aGl0ZVNwYWNlOiAncHJlJ1xufTtcbnZhciBTVFlMRV9MSVNUID0gWydtaW5XaWR0aCcsICdtYXhXaWR0aCcsICd3aWR0aCcsICdtaW5IZWlnaHQnLCAnbWF4SGVpZ2h0JywgJ2hlaWdodCcsICd0b3AnLCAnbGVmdCcsICdmb250U2l6ZScsICdsaW5lSGVpZ2h0JywgJ3BhZGRpbmcnLCAnbWFyZ2luJywgJ3BhZGRpbmdMZWZ0JywgJ3BhZGRpbmdSaWdodCcsICdwYWRkaW5nVG9wJywgJ3BhZGRpbmdCb3R0b20nLCAnbWFyZ2luTGVmdCcsICdtYXJnaW5SaWdodCcsICdtYXJnaW5Ub3AnLCAnbWFyZ2luQm90dG9tJ107XG52YXIgTUVBU1VSRU1FTlRfU1BBTl9JRCA9ICdyZWNoYXJ0c19tZWFzdXJlbWVudF9zcGFuJztcbmZ1bmN0aW9uIGF1dG9Db21wbGV0ZVN0eWxlKG5hbWUsIHZhbHVlKSB7XG4gIGlmIChTVFlMRV9MSVNULmluZGV4T2YobmFtZSkgPj0gMCAmJiB2YWx1ZSA9PT0gK3ZhbHVlKSB7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KHZhbHVlLCBcInB4XCIpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGNhbWVsVG9NaWRkbGVMaW5lKHRleHQpIHtcbiAgdmFyIHN0cnMgPSB0ZXh0LnNwbGl0KCcnKTtcbiAgdmFyIGZvcm1hdFN0cnMgPSBzdHJzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgIGlmIChlbnRyeSA9PT0gZW50cnkudG9VcHBlckNhc2UoKSkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocmVzdWx0KSwgWyctJywgZW50cnkudG9Mb3dlckNhc2UoKV0pO1xuICAgIH1cbiAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXN1bHQpLCBbZW50cnldKTtcbiAgfSwgW10pO1xuICByZXR1cm4gZm9ybWF0U3Rycy5qb2luKCcnKTtcbn1cbmV4cG9ydCB2YXIgZ2V0U3R5bGVTdHJpbmcgPSBmdW5jdGlvbiBnZXRTdHlsZVN0cmluZyhzdHlsZSkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoc3R5bGUpLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBzKSB7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KHJlc3VsdCkuY29uY2F0KGNhbWVsVG9NaWRkbGVMaW5lKHMpLCBcIjpcIikuY29uY2F0KGF1dG9Db21wbGV0ZVN0eWxlKHMsIHN0eWxlW3NdKSwgXCI7XCIpO1xuICB9LCAnJyk7XG59O1xuZnVuY3Rpb24gcmVtb3ZlSW52YWxpZEtleXMob2JqKSB7XG4gIHZhciBjb3B5T2JqID0gX29iamVjdFNwcmVhZCh7fSwgb2JqKTtcbiAgT2JqZWN0LmtleXMoY29weU9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKCFjb3B5T2JqW2tleV0pIHtcbiAgICAgIGRlbGV0ZSBjb3B5T2JqW2tleV07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvcHlPYmo7XG59XG5leHBvcnQgdmFyIGdldFN0cmluZ1NpemUgPSBmdW5jdGlvbiBnZXRTdHJpbmdTaXplKHRleHQpIHtcbiAgdmFyIHN0eWxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgaWYgKHRleHQgPT09IHVuZGVmaW5lZCB8fCB0ZXh0ID09PSBudWxsIHx8IEdsb2JhbC5pc1Nzcikge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gIH1cbiAgdmFyIGNvcHlTdHlsZSA9IHJlbW92ZUludmFsaWRLZXlzKHN0eWxlKTtcbiAgdmFyIGNhY2hlS2V5ID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIHRleHQ6IHRleHQsXG4gICAgY29weVN0eWxlOiBjb3B5U3R5bGVcbiAgfSk7XG4gIGlmIChzdHJpbmdDYWNoZS53aWR0aENhY2hlW2NhY2hlS2V5XSkge1xuICAgIHJldHVybiBzdHJpbmdDYWNoZS53aWR0aENhY2hlW2NhY2hlS2V5XTtcbiAgfVxuICB0cnkge1xuICAgIHZhciBtZWFzdXJlbWVudFNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChNRUFTVVJFTUVOVF9TUEFOX0lEKTtcbiAgICBpZiAoIW1lYXN1cmVtZW50U3Bhbikge1xuICAgICAgbWVhc3VyZW1lbnRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgbWVhc3VyZW1lbnRTcGFuLnNldEF0dHJpYnV0ZSgnaWQnLCBNRUFTVVJFTUVOVF9TUEFOX0lEKTtcbiAgICAgIG1lYXN1cmVtZW50U3Bhbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWVhc3VyZW1lbnRTcGFuKTtcbiAgICB9XG4gICAgLy8gTmVlZCB0byB1c2UgQ1NTIE9iamVjdCBNb2RlbCAoQ1NTT00pIHRvIGJlIGFibGUgdG8gY29tcGx5IHdpdGggQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKENTUClcbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db250ZW50X1NlY3VyaXR5X1BvbGljeVxuICAgIHZhciBtZWFzdXJlbWVudFNwYW5TdHlsZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgU1BBTl9TVFlMRSksIGNvcHlTdHlsZSk7XG4gICAgT2JqZWN0LmFzc2lnbihtZWFzdXJlbWVudFNwYW4uc3R5bGUsIG1lYXN1cmVtZW50U3BhblN0eWxlKTtcbiAgICBtZWFzdXJlbWVudFNwYW4udGV4dENvbnRlbnQgPSBcIlwiLmNvbmNhdCh0ZXh0KTtcbiAgICB2YXIgcmVjdCA9IG1lYXN1cmVtZW50U3Bhbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gICAgfTtcbiAgICBzdHJpbmdDYWNoZS53aWR0aENhY2hlW2NhY2hlS2V5XSA9IHJlc3VsdDtcbiAgICBpZiAoKytzdHJpbmdDYWNoZS5jYWNoZUNvdW50ID4gTUFYX0NBQ0hFX05VTSkge1xuICAgICAgc3RyaW5nQ2FjaGUuY2FjaGVDb3VudCA9IDA7XG4gICAgICBzdHJpbmdDYWNoZS53aWR0aENhY2hlID0ge307XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuICB9XG59O1xuZXhwb3J0IHZhciBnZXRPZmZzZXQgPSBmdW5jdGlvbiBnZXRPZmZzZXQocmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogcmVjdC50b3AgKyB3aW5kb3cuc2Nyb2xsWSAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRUb3AsXG4gICAgbGVmdDogcmVjdC5sZWZ0ICsgd2luZG93LnNjcm9sbFggLSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50TGVmdFxuICB9O1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpdGVyIiwiaXNBcnJheSIsImxlbiIsImFycjIiLCJHbG9iYWwiLCJzdHJpbmdDYWNoZSIsIndpZHRoQ2FjaGUiLCJjYWNoZUNvdW50IiwiTUFYX0NBQ0hFX05VTSIsIlNQQU5fU1RZTEUiLCJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJwYWRkaW5nIiwibWFyZ2luIiwiYm9yZGVyIiwid2hpdGVTcGFjZSIsIlNUWUxFX0xJU1QiLCJNRUFTVVJFTUVOVF9TUEFOX0lEIiwiYXV0b0NvbXBsZXRlU3R5bGUiLCJpbmRleE9mIiwiY29uY2F0IiwiY2FtZWxUb01pZGRsZUxpbmUiLCJ0ZXh0Iiwic3RycyIsInNwbGl0IiwiZm9ybWF0U3RycyIsInJlZHVjZSIsInJlc3VsdCIsImVudHJ5IiwidG9VcHBlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsImpvaW4iLCJnZXRTdHlsZVN0cmluZyIsInN0eWxlIiwicyIsInJlbW92ZUludmFsaWRLZXlzIiwiY29weU9iaiIsImdldFN0cmluZ1NpemUiLCJ1bmRlZmluZWQiLCJpc1NzciIsIndpZHRoIiwiaGVpZ2h0IiwiY29weVN0eWxlIiwiY2FjaGVLZXkiLCJKU09OIiwic3RyaW5naWZ5IiwibWVhc3VyZW1lbnRTcGFuIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJtZWFzdXJlbWVudFNwYW5TdHlsZSIsImFzc2lnbiIsInRleHRDb250ZW50IiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImdldE9mZnNldCIsIndpbmRvdyIsInNjcm9sbFkiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRUb3AiLCJzY3JvbGxYIiwiY2xpZW50TGVmdCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/DOMUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/DataUtils.js":
/*!*****************************************************!*\
!*** ./node_modules/recharts/es6/util/DataUtils.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ compareValues: () => (/* binding */ compareValues),\n/* harmony export */ findEntryInArray: () => (/* binding */ findEntryInArray),\n/* harmony export */ getAnyElementOfObject: () => (/* binding */ getAnyElementOfObject),\n/* harmony export */ getLinearRegression: () => (/* binding */ getLinearRegression),\n/* harmony export */ getPercentValue: () => (/* binding */ getPercentValue),\n/* harmony export */ hasDuplicate: () => (/* binding */ hasDuplicate),\n/* harmony export */ interpolateNumber: () => (/* binding */ interpolateNumber),\n/* harmony export */ isNullish: () => (/* binding */ isNullish),\n/* harmony export */ isNumOrStr: () => (/* binding */ isNumOrStr),\n/* harmony export */ isNumber: () => (/* binding */ isNumber),\n/* harmony export */ isPercent: () => (/* binding */ isPercent),\n/* harmony export */ mathSign: () => (/* binding */ mathSign),\n/* harmony export */ uniqueId: () => (/* binding */ uniqueId)\n/* harmony export */ });\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isString */ \"(ssr)/./node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNaN */ \"(ssr)/./node_modules/lodash/isNaN.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNaN__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isNumber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isNumber */ \"(ssr)/./node_modules/lodash/isNumber.js\");\n/* harmony import */ var lodash_isNumber__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isNumber__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nvar mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n if (value > 0) {\n return 1;\n }\n return -1;\n};\nvar isPercent = function isPercent(value) {\n return lodash_isString__WEBPACK_IMPORTED_MODULE_0___default()(value) && value.indexOf('%') === value.length - 1;\n};\nvar isNumber = function isNumber(value) {\n return lodash_isNumber__WEBPACK_IMPORTED_MODULE_3___default()(value) && !lodash_isNaN__WEBPACK_IMPORTED_MODULE_1___default()(value);\n};\nvar isNullish = function isNullish(value) {\n return lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(value);\n};\nvar isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || lodash_isString__WEBPACK_IMPORTED_MODULE_0___default()(value);\n};\nvar idCounter = 0;\nvar uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n/**\n * Get percent value of a total value\n * @param {number|string} percent A percent\n * @param {number} totalValue Total value\n * @param {number} defaultValue The value returned when percent is undefined or invalid\n * @param {boolean} validate If set to be true, the result will be validated\n * @return {number} value\n */ var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!isNumber(percent) && !lodash_isString__WEBPACK_IMPORTED_MODULE_0___default()(percent)) {\n return defaultValue;\n }\n var value;\n if (isPercent(percent)) {\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n if (lodash_isNaN__WEBPACK_IMPORTED_MODULE_1___default()(value)) {\n value = defaultValue;\n }\n if (validate && value > totalValue) {\n value = totalValue;\n }\n return value;\n};\nvar getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n var keys = Object.keys(obj);\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n return null;\n};\nvar hasDuplicate = function hasDuplicate(ary) {\n if (!Array.isArray(ary)) {\n return false;\n }\n var len = ary.length;\n var cache = {};\n for(var i = 0; i < len; i++){\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n return false;\n};\n/* @todo consider to rename this function into `getInterpolator` */ var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function(t) {\n return numberA + t * (numberB - numberA);\n };\n }\n return function() {\n return numberB;\n };\n};\nfunction findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n return ary.find(function(entry) {\n return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : lodash_get__WEBPACK_IMPORTED_MODULE_2___default()(entry, specifiedKey)) === specifiedValue;\n });\n}\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */ var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n var xcurrent = 0;\n var ycurrent = 0;\n for(var i = 0; i < len; i++){\n xcurrent = data[i].cx || 0;\n ycurrent = data[i].cy || 0;\n xsum += xcurrent;\n ysum += ycurrent;\n xysum += xcurrent * ycurrent;\n xxsum += xcurrent * xcurrent;\n xmin = Math.min(xmin, xcurrent);\n xmax = Math.max(xmax, xcurrent);\n }\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};\n/**\n * Compare values.\n *\n * This function is intended to be passed to `Array.prototype.sort()`. It properly compares generic homogeneous arrays that are either `string[]`,\n * `number[]`, or `Date[]`. When comparing heterogeneous arrays or homogeneous arrays of other types, it will attempt to compare items properly but\n * will fall back to string comparison for mismatched or unsupported types.\n *\n * For some background, `Array.prototype.sort()`'s default comparator coerces each of the array's items into a string and compares the strings. This\n * often leads to undesirable behavior, especially with numerical items.\n *\n * @param {unknown} a The first item to compare\n * @param {unknown} b The second item to compare\n * @return {number} A negative number if a < b, a positive number if a > b, 0 if equal\n */ var compareValues = function compareValues(a, b) {\n if (isNumber(a) && isNumber(b)) {\n return a - b;\n }\n if (lodash_isString__WEBPACK_IMPORTED_MODULE_0___default()(a) && lodash_isString__WEBPACK_IMPORTED_MODULE_0___default()(b)) {\n return a.localeCompare(b);\n }\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() - b.getTime();\n }\n return String(a).localeCompare(String(b));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRGF0YVV0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXVDO0FBQ047QUFDSjtBQUNnQjtBQUNaO0FBQzFCLElBQUlLLFdBQVcsU0FBU0EsU0FBU0MsS0FBSztJQUMzQyxJQUFJQSxVQUFVLEdBQUc7UUFDZixPQUFPO0lBQ1Q7SUFDQSxJQUFJQSxRQUFRLEdBQUc7UUFDYixPQUFPO0lBQ1Q7SUFDQSxPQUFPLENBQUM7QUFDVixFQUFFO0FBQ0ssSUFBSUMsWUFBWSxTQUFTQSxVQUFVRCxLQUFLO0lBQzdDLE9BQU9OLHNEQUFRQSxDQUFDTSxVQUFVQSxNQUFNRSxPQUFPLENBQUMsU0FBU0YsTUFBTUcsTUFBTSxHQUFHO0FBQ2xFLEVBQUU7QUFDSyxJQUFJQyxXQUFXLFNBQVNBLFNBQVNKLEtBQUs7SUFDM0MsT0FBT0gsc0RBQWNBLENBQUNHLFVBQVUsQ0FBQ0wsbURBQUtBLENBQUNLO0FBQ3pDLEVBQUU7QUFDSyxJQUFJSyxZQUFZLFNBQVNBLFVBQVVMLEtBQUs7SUFDN0MsT0FBT0YsbURBQUtBLENBQUNFO0FBQ2YsRUFBRTtBQUNLLElBQUlNLGFBQWEsU0FBU0EsV0FBV04sS0FBSztJQUMvQyxPQUFPSSxTQUFTSixVQUFVTixzREFBUUEsQ0FBQ007QUFDckMsRUFBRTtBQUNGLElBQUlPLFlBQVk7QUFDVCxJQUFJQyxXQUFXLFNBQVNBLFNBQVNDLE1BQU07SUFDNUMsSUFBSUMsS0FBSyxFQUFFSDtJQUNYLE9BQU8sR0FBR0ksTUFBTSxDQUFDRixVQUFVLElBQUlFLE1BQU0sQ0FBQ0Q7QUFDeEMsRUFBRTtBQUVGOzs7Ozs7O0NBT0MsR0FDTSxJQUFJRSxrQkFBa0IsU0FBU0EsZ0JBQWdCQyxPQUFPLEVBQUVDLFVBQVU7SUFDdkUsSUFBSUMsZUFBZUMsVUFBVWIsTUFBTSxHQUFHLEtBQUthLFNBQVMsQ0FBQyxFQUFFLEtBQUtDLFlBQVlELFNBQVMsQ0FBQyxF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SUFBSTtRQUN6QkQsV0FBV1QsSUFBSSxDQUFDWCxFQUFFLENBQUNzQixFQUFFLElBQUk7UUFDekJWLFFBQVFPO1FBQ1JOLFFBQVFPO1FBQ1JOLFNBQVNLLFdBQVdDO1FBQ3BCTCxTQUFTSSxXQUFXQTtRQUNwQkgsT0FBT08sS0FBS0MsR0FBRyxDQUFDUixNQUFNRztRQUN0QkQsT0FBT0ssS0FBS0UsR0FBRyxDQUFDUCxNQUFNQztJQUN4QjtJQUNBLElBQUlPLElBQUk1QixNQUFNaUIsVUFBVUgsT0FBT0EsT0FBTyxDQUFDZCxNQUFNZ0IsUUFBUUYsT0FBT0MsSUFBRyxJQUFNZixDQUFBQSxNQUFNaUIsUUFBUUgsT0FBT0EsSUFBRyxJQUFLO0lBQ2xHLE9BQU87UUFDTEksTUFBTUE7UUFDTkUsTUFBTUE7UUFDTlEsR0FBR0E7UUFDSEMsR0FBRyxDQUFDZCxPQUFPYSxJQUFJZCxJQUFHLElBQUtkO0lBQ3pCO0FBQ0YsRUFBRTtBQUVGOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDTSxJQUFJOEIsZ0JBQWdCLFNBQVNBLGNBQWNGLENBQUMsRUFBRUMsQ0FBQztJQUNwRCxJQUFJdkQsU0FBU3NELE1BQU10RCxTQUFTdUQsSUFBSTtRQUM5QixPQUFPRCxJQUFJQztJQUNiO0lBQ0EsSUFBSWpFLHNEQUFRQSxDQUFDZ0UsTUFBTWhFLHNEQUFRQSxDQUFDaUUsSUFBSTtRQUM5QixPQUFPRCxFQUFFRyxhQUFhLENBQUNGO0lBQ3pCO0lBQ0EsSUFBSUQsYUFBYUksUUFBUUgsYUFBYUcsTUFBTTtRQUMxQyxPQUFPSixFQUFFSyxPQUFPLEtBQUtKLEVBQUVJLE9BQU87SUFDaEM7SUFDQSxPQUFPQyxPQUFPTixHQUFHRyxhQUFhLENBQUNHLE9BQU9MO0FBQ3hDLEVBQUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRGF0YVV0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc1N0cmluZyBmcm9tICdsb2Rhc2gvaXNTdHJpbmcnO1xuaW1wb3J0IGlzTmFuIGZyb20gJ2xvZGFzaC9pc05hTic7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGxvZGFzaElzTnVtYmVyIGZyb20gJ2xvZGFzaC9pc051bWJlcic7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmV4cG9ydCB2YXIgbWF0aFNpZ24gPSBmdW5jdGlvbiBtYXRoU2lnbih2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IDApIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAodmFsdWUgPiAwKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIC0xO1xufTtcbmV4cG9ydCB2YXIgaXNQZXJjZW50ID0gZnVuY3Rpb24gaXNQZXJjZW50KHZhbHVlKSB7XG4gIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgJiYgdmFsdWUuaW5kZXhPZignJScpID09PSB2YWx1ZS5sZW5ndGggLSAxO1xufTtcbmV4cG9ydCB2YXIgaXNOdW1iZXIgPSBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gbG9kYXNoSXNOdW1iZXIodmFsdWUpICYmICFpc05hbih2YWx1ZSk7XG59O1xuZXhwb3J0IHZhciBpc051bGxpc2ggPSBmdW5jdGlvbiBpc051bGxpc2godmFsdWUpIHtcbiAgcmV0dXJuIGlzTmlsKHZhbHVlKTtcbn07XG5leHBvcnQgdmFyIGlzTnVtT3JTdHIgPSBmdW5jdGlvbiBpc051bU9yU3RyKHZhbHVlKSB7XG4gIHJldHVybiBpc051bWJlcih2YWx1ZSkgfHwgaXNTdHJpbmcodmFsdWUpO1xufTtcbnZhciBpZENvdW50ZXIgPSAwO1xuZXhwb3J0IHZhciB1bmlxdWVJZCA9IGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICB2YXIgaWQgPSArK2lkQ291bnRlcjtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KHByZWZpeCB8fCAnJykuY29uY2F0KGlkKTtcbn07XG5cbi8qKlxuICogR2V0IHBlcmNlbnQgdmFsdWUgb2YgYSB0b3RhbCB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBwZXJjZW50IEEgcGVyY2VudFxuICogQHBhcmFtIHtudW1iZXJ9IHRvdGFsVmFsdWUgICAgIFRvdGFsIHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gZGVmYXVsdFZhbHVlICAgVGhlIHZhbHVlIHJldHVybmVkIHdoZW4gcGVyY2VudCBpcyB1bmRlZmluZWQgb3IgaW52YWxpZFxuICogQHBhcmFtIHtib29sZWFufSB2YWxpZGF0ZSAgICAgIElmIHNldCB0byBiZSB0cnVlLCB0aGUgcmVzdWx0IHdpbGwgYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHZhbHVlXG4gKi9cbmV4cG9ydCB2YXIgZ2V0UGVyY2VudFZhbHVlID0gZnVuY3Rpb24gZ2V0UGVyY2VudFZhbHVlKHBlcmNlbnQsIHRvdGFsVmFsdWUpIHtcbiAgdmFyIGRlZmF1bHRWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMDtcbiAgdmFyIHZhbGlkYXRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBmYWxzZTtcbiAgaWYgKCFpc051bWJlcihwZXJjZW50KSAmJiAhaXNTdHJpbmcocGVyY2VudCkpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG4gIHZhciB2YWx1ZTtcbiAgaWYgKGlzUGVyY2VudChwZXJjZW50KSkge1xuICAgIHZhciBpbmRleCA9IHBlcmNlbnQuaW5kZXhPZignJScpO1xuICAgIHZhbHVlID0gdG90YWxWYWx1ZSAqIHBhcnNlRmxvYXQocGVyY2VudC5zbGljZSgwLCBpbmRleCkpIC8gMTAwO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gK3BlcmNlbnQ7XG4gIH1cbiAgaWYgKGlzTmFuKHZhbHVlKSkge1xuICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICB9XG4gIGlmICh2YWxpZGF0ZSAmJiB2YWx1ZSA+IHRvdGFsVmFsdWUpIHtcbiAgICB2YWx1ZSA9IHRvdGFsVmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcbmV4cG9ydCB2YXIgZ2V0QW55RWxlbWVudE9mT2JqZWN0ID0gZnVuY3Rpb24gZ2V0QW55RWxlbWVudE9mT2JqZWN0KG9iaikge1xuICBpZiAoIW9iaikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgaWYgKGtleXMgJiYga2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gb2JqW2tleXNbMF1dO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmV4cG9ydCB2YXIgaGFzRHVwbGljYXRlID0gZnVuY3Rpb24gaGFzRHVwbGljYXRlKGFyeSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJ5KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGVuID0gYXJ5Lmxlbmd0aDtcbiAgdmFyIGNhY2hlID0ge307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoIWNhY2hlW2FyeVtpXV0pIHtcbiAgICAgIGNhY2hlW2FyeVtpXV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyogQHRvZG8gY29uc2lkZXIgdG8gcmVuYW1lIHRoaXMgZnVuY3Rpb24gaW50byBgZ2V0SW50ZXJwb2xhdG9yYCAqL1xuZXhwb3J0IHZhciBpbnRlcnBvbGF0ZU51bWJlciA9IGZ1bmN0aW9uIGludGVycG9sYXRlTnVtYmVyKG51bWJlckEsIG51bWJlckIpIHtcbiAgaWYgKGlzTnVtYmVyKG51bWJlckEpICYmIGlzTnVtYmVyKG51bWJlckIpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0KSB7XG4gICAgICByZXR1cm4gbnVtYmVyQSArIHQgKiAobnVtYmVyQiAtIG51bWJlckEpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbnVtYmVyQjtcbiAgfTtcbn07XG5leHBvcnQgZnVuY3Rpb24gZmluZEVudHJ5SW5BcnJheShhcnksIHNwZWNpZmllZEtleSwgc3BlY2lmaWVkVmFsdWUpIHtcbiAgaWYgKCFhcnkgfHwgIWFyeS5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gYXJ5LmZpbmQoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIGVudHJ5ICYmICh0eXBlb2Ygc3BlY2lmaWVkS2V5ID09PSAnZnVuY3Rpb24nID8gc3BlY2lmaWVkS2V5KGVudHJ5KSA6IGdldChlbnRyeSwgc3BlY2lmaWVkS2V5KSkgPT09IHNwZWNpZmllZFZhbHVlO1xuICB9KTtcbn1cblxuLyoqXG4gKiBUaGUgbGVhc3Qgc3F1YXJlIGxpbmVhciByZWdyZXNzaW9uXG4gKiBAcGFyYW0ge0FycmF5fSBkYXRhIFRoZSBhcnJheSBvZiBwb2ludHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBkb21haW4gb2YgeCwgYW5kIHRoZSBwYXJhbWV0ZXIgb2YgbGluZWFyIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCB2YXIgZ2V0TGluZWFyUmVncmVzc2lvbiA9IGZ1bmN0aW9uIGdldExpbmVhclJlZ3Jlc3Npb24oZGF0YSkge1xuICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoO1xuICB2YXIgeHN1bSA9IDA7XG4gIHZhciB5c3VtID0gMDtcbiAgdmFyIHh5c3VtID0gMDtcbiAgdmFyIHh4c3VtID0gMDtcbiAgdmFyIHhtaW4gPSBJbmZpbml0eTtcbiAgdmFyIHhtYXggPSAtSW5maW5pdHk7XG4gIHZhciB4Y3VycmVudCA9IDA7XG4gIHZhciB5Y3VycmVudCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB4Y3VycmVudCA9IGRhdGFbaV0uY3ggfHwgMDtcbiAgICB5Y3VycmVudCA9IGRhdGFbaV0uY3kgfHwgMDtcbiAgICB4c3VtICs9IHhjdXJyZW50O1xuICAgIHlzdW0gKz0geWN1cnJlbnQ7XG4gICAgeHlzdW0gKz0geGN1cnJlbnQgKiB5Y3VycmVudDtcbiAgICB4eHN1bSArPSB4Y3VycmVudCAqIHhjdXJyZW50O1xuICAgIHhtaW4gPSBNYXRoLm1pbih4bWluLCB4Y3VycmVudCk7XG4gICAgeG1heCA9IE1hdGgubWF4KHhtYXgsIHhjdXJyZW50KTtcbiAgfVxuICB2YXIgYSA9IGxlbiAqIHh4c3VtICE9PSB4c3VtICogeHN1bSA/IChsZW4gKiB4eXN1bSAtIHhzdW0gKiB5c3VtKSAvIChsZW4gKiB4eHN1bSAtIHhzdW0gKiB4c3VtKSA6IDA7XG4gIHJldHVybiB7XG4gICAgeG1pbjogeG1pbixcbiAgICB4bWF4OiB4bWF4LFxuICAgIGE6IGEsXG4gICAgYjogKHlzdW0gLSBhICogeHN1bSkgLyBsZW5cbiAgfTtcbn07XG5cbi8qKlxuICogQ29tcGFyZSB2YWx1ZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBwYXNzZWQgdG8gYEFycmF5LnByb3RvdHlwZS5zb3J0KClgLiBJdCBwcm9wZXJseSBjb21wYXJlcyBnZW5lcmljIGhvbW9nZW5lb3VzIGFycmF5cyB0aGF0IGFyZSBlaXRoZXIgYHN0cmluZ1tdYCxcbiAqIGBudW1iZXJbXWAsIG9yIGBEYXRlW11gLiBXaGVuIGNvbXBhcmluZyBoZXRlcm9nZW5lb3VzIGFycmF5cyBvciBob21vZ2VuZW91cyBhcnJheXMgb2Ygb3RoZXIgdHlwZXMsIGl0IHdpbGwgYXR0ZW1wdCB0byBjb21wYXJlIGl0ZW1zIHByb3Blcmx5IGJ1dFxuICogd2lsbCBmYWxsIGJhY2sgdG8gc3RyaW5nIGNvbXBhcmlzb24gZm9yIG1pc21hdGNoZWQgb3IgdW5zdXBwb3J0ZWQgdHlwZXMuXG4gKlxuICogRm9yIHNvbWUgYmFja2dyb3VuZCwgYEFycmF5LnByb3RvdHlwZS5zb3J0KClgJ3MgZGVmYXVsdCBjb21wYXJhdG9yIGNvZXJjZXMgZWFjaCBvZiB0aGUgYXJyYXkncyBpdGVtcyBpbnRvIGEgc3RyaW5nIGFuZCBjb21wYXJlcyB0aGUgc3RyaW5ncy4gVGhpc1xuICogb2Z0ZW4gbGVhZHMgdG8gdW5kZXNpcmFibGUgYmVoYXZpb3IsIGVzcGVjaWFsbHkgd2l0aCBudW1lcmljYWwgaXRlbXMuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSBhIFRoZSBmaXJzdCBpdGVtIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSB7dW5rbm93bn0gYiBUaGUgc2Vjb25kIGl0ZW0gdG8gY29tcGFyZVxuICogQHJldHVybiB7bnVtYmVyfSBBIG5lZ2F0aXZlIG51bWJlciBpZiBhIDwgYiwgYSBwb3NpdGl2ZSBudW1iZXIgaWYgYSA+IGIsIDAgaWYgZXF1YWxcbiAqL1xuZXhwb3J0IHZhciBjb21wYXJlVmFsdWVzID0gZnVuY3Rpb24gY29tcGFyZVZhbHVlcyhhLCBiKSB7XG4gIGlmIChpc051bWJlcihhKSAmJiBpc051bWJlcihiKSkge1xuICAgIHJldHVybiBhIC0gYjtcbiAgfVxuICBpZiAoaXNTdHJpbmcoYSkgJiYgaXNTdHJpbmcoYikpIHtcbiAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpO1xuICB9XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBhLmdldFRpbWUoKSAtIGIuZ2V0VGltZSgpO1xuICB9XG4gIHJldHVybiBTdHJpbmcoYSkubG9jYWxlQ29tcGFyZShTdHJpbmcoYikpO1xufTsiXSwibmFtZXMiOlsiaXNTdHJpbmciLCJpc05hbiIsImdldCIsImxvZGFzaElzTnVtYmVyIiwiaXNOaWwiLCJtYXRoU2lnbiIsInZhbHVlIiwiaXNQZXJjZW50IiwiaW5kZXhPZiIsImxlbmd0aCIsImlzTnVtYmVyIiwiaXNOdWxsaXNoIiwiaXNOdW1PclN0ciIsImlkQ291bnRlciIsInVuaXF1ZUlkIiwicHJlZml4IiwiaWQiLCJjb25jYXQiLCJnZXRQZXJjZW50VmFsdWUiLCJwZXJjZW50IiwidG90YWxWYWx1ZSIsImRlZmF1bHRWYWx1ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInZhbGlkYXRlIiwiaW5kZXgiLCJwYXJzZUZsb2F0Iiwic2xpY2UiLCJnZXRBbnlFbGVtZW50T2ZPYmplY3QiLCJvYmoiLCJrZXlzIiwiT2JqZWN0IiwiaGFzRHVwbGljYXRlIiwiYXJ5IiwiQXJyYXkiLCJpc0FycmF5IiwibGVuIiwiY2FjaGUiLCJpIiwiaW50ZXJwb2xhdGVOdW1iZXIiLCJudW1iZXJBIiwibnVtYmVyQiIsInQiLCJmaW5kRW50cnlJbkFycmF5Iiwic3BlY2lmaWVkS2V5Iiwic3BlY2lmaWVkVmFsdWUiLCJmaW5kIiwiZW50cnkiLCJnZXRMaW5lYXJSZWdyZXNzaW9uIiwiZGF0YSIsInhzdW0iLCJ5c3VtIiwieHlzdW0iLCJ4eHN1bSIsInhtaW4iLCJJbmZpbml0eSIsInhtYXgiLCJ4Y3VycmVudCIsInljdXJyZW50IiwiY3giLCJjeSIsIk1hdGgiLCJtaW4iLCJtYXgiLCJhIiwiYiIsImNvbXBhcmVWYWx1ZXMiLCJsb2NhbGVDb21wYXJlIiwiRGF0ZSIsImdldFRpbWUiLCJTdHJpbmciXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/DataUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js":
/*!*************************************************************************!*\
!*** ./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js ***!
\*************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectReferenceElementsDomain: () => (/* binding */ detectReferenceElementsDomain)\n/* harmony export */ });\n/* harmony import */ var _cartesian_ReferenceDot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cartesian/ReferenceDot */ \"(ssr)/./node_modules/recharts/es6/cartesian/ReferenceDot.js\");\n/* harmony import */ var _cartesian_ReferenceLine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cartesian/ReferenceLine */ \"(ssr)/./node_modules/recharts/es6/cartesian/ReferenceLine.js\");\n/* harmony import */ var _cartesian_ReferenceArea__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cartesian/ReferenceArea */ \"(ssr)/./node_modules/recharts/es6/cartesian/ReferenceArea.js\");\n/* harmony import */ var _IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./IfOverflowMatches */ \"(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js\");\n/* harmony import */ var _ReactUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\n\n\n\n\n\n\nvar detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n var lines = (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_0__.findAllByType)(children, _cartesian_ReferenceLine__WEBPACK_IMPORTED_MODULE_1__.ReferenceLine);\n var dots = (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_0__.findAllByType)(children, _cartesian_ReferenceDot__WEBPACK_IMPORTED_MODULE_2__.ReferenceDot);\n var elements = [].concat(_toConsumableArray(lines), _toConsumableArray(dots));\n var areas = (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_0__.findAllByType)(children, _cartesian_ReferenceArea__WEBPACK_IMPORTED_MODULE_3__.ReferenceArea);\n var idKey = \"\".concat(axisType, \"Id\");\n var valueKey = axisType[0];\n var finalDomain = domain;\n if (elements.length) {\n finalDomain = elements.reduce(function(result, el) {\n if (el.props[idKey] === axisId && (0,_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(el.props, 'extendDomain') && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(el.props[valueKey])) {\n var value = el.props[valueKey];\n return [\n Math.min(result[0], value),\n Math.max(result[1], value)\n ];\n }\n return result;\n }, finalDomain);\n }\n if (areas.length) {\n var key1 = \"\".concat(valueKey, \"1\");\n var key2 = \"\".concat(valueKey, \"2\");\n finalDomain = areas.reduce(function(result, el) {\n if (el.props[idKey] === axisId && (0,_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(el.props, 'extendDomain') && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(el.props[key1]) && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n return [\n Math.min(result[0], value1, value2),\n Math.max(result[1], value1, value2)\n ];\n }\n return result;\n }, finalDomain);\n }\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce(function(result, tick) {\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(tick)) {\n return [\n Math.min(result[0], tick),\n Math.max(result[1], tick)\n ];\n }\n return result;\n }, finalDomain);\n }\n return finalDomain;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLFNBQVNBLG1CQUFtQkMsR0FBRztJQUFJLE9BQU9DLG1CQUFtQkQsUUFBUUUsaUJBQWlCRixRQUFRRyw0QkFBNEJILFFBQVFJO0FBQXNCO0FBQ3hKLFNBQVNBO0lBQXVCLE1BQU0sSUFBSUMsVUFBVTtBQUF5STtBQUM3TCxTQUFTRiw0QkFBNEJHLENBQUMsRUFBRUMsTUFBTTtJQUFJLElBQUksQ0FBQ0QsR0FBRztJQUFRLElBQUksT0FBT0EsTUFBTSxVQUFVLE9BQU9FLGtCQUFrQkYsR0FBR0M7SUFBUyxJQUFJRSxJQUFJQyxPQUFPQyxTQUFTLENBQUNDLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDUCxHQUFHUSxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQUksSUFBSUwsTUFBTSxZQUFZSCxFQUFFUyxXQUFXLEVBQUVOLElBQUlILEVBQUVTLFdBQVcsQ0FBQ0MsSUFBSTtJQUFFLElBQUlQLE1BQU0sU0FBU0EsTUFBTSxPQUFPLE9BQU9RLE1BQU1DLElBQUksQ0FBQ1o7SUFBSSxJQUFJRyxNQUFNLGVBQWUsMkNBQTJDVSxJQUFJLENBQUNWLElBQUksT0FBT0Qsa0JBQWtCRixHQUFHQztBQUFTO0FBQy9aLFNBQVNMLGlCQUFpQmtCLElBQUk7SUFBSSxJQUFJLE9BQU9DLFdBQVcsZUFBZUQsSUFBSSxDQUFDQyxPQUFPQyxRQUFRLENBQUMsSUFBSSxRQUFRRixJQUFJLENBQUMsYUFBYSxJQUFJLE1BQU0sT0FBT0gsTUFBTUMsSUFBSSxDQUFDRTtBQUFPO0FBQzdKLFNBQVNuQixtQkFBbUJELEdBQUc7SUFBSSxJQUFJaUIsTUFBTU0sT0FBTyxDQUFDdkIsTUFBTSxPQUFPUSxrQkFBa0JSO0FBQU07QUFDMUYsU0FBU1Esa0JBQWtCUixHQUFHLEVBQUV3QixHQUFHO0lBQUksSUFBSUEsT0FBTyxRQUFRQSxNQUFNeEIsSUFBSXlCLE1BQU0sRUFBRUQsTUFBTXhCLElBQUl5QixNQUFNO0lBQUUsSUFBSyxJQUFJQyxJQUFJLEdBQUdDLE9BQU8sSUFBSVYsTUFBTU8sTUFBTUUsSUFBSUYsS0FBS0UsSUFBS0MsSUFBSSxDQUFDRCxFQUFFLEdBQUcxQixHQUFHLENBQUMwQixFQUFFO0lBQUUsT0FBT0M7QUFBTTtBQUN6SDtBQUNFO0FBQ0E7QUFDSDtBQUNYO0FBQ047QUFDaEMsSUFBSU8sZ0NBQWdDLFNBQVNBLDhCQUE4QkMsUUFBUSxFQUFFQyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxjQUFjO0lBQ2xJLElBQUlDLFFBQVFSLDBEQUFhQSxDQUFDRyxVQUFVTixtRUFBYUE7SUFDakQsSUFBSVksT0FBT1QsMERBQWFBLENBQUNHLFVBQVVQLGlFQUFZQTtJQUMvQyxJQUFJYyxXQUFXLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDNUMsbUJBQW1CeUMsUUFBUXpDLG1CQUFtQjBDO0lBQ3ZFLElBQUlHLFFBQVFaLDBEQUFhQSxDQUFDRyxVQUFVTCxtRUFBYUE7SUFDakQsSUFBSWUsUUFBUSxHQUFHRixNQUFNLENBQUNMLFVBQVU7SUFDaEMsSUFBSVEsV0FBV1IsUUFBUSxDQUFDLEVBQUU7SUFDMUIsSUFBSVMsY0FBY1g7SUFDbEIsSUFBSU0sU0FBU2pCLE1BQU0sRUFBRTtRQUNuQnNCLGNBQWNMLFNBQVNNLE1BQU0sQ0FBQyxTQUFVQyxNQUFNLEVBQUVDLEVBQUU7WUFDaEQsSUFBSUEsR0FBR0MsS0FBSyxDQUFDTixNQUFNLEtBQUtSLFVBQVVOLHFFQUFpQkEsQ0FBQ21CLEdBQUdDLEtBQUssRUFBRSxtQkFBbUJsQixvREFBUUEsQ0FBQ2lCLEdBQUdDLEtBQUssQ0FBQ0wsU0FBUyxHQUFHO2dCQUM3RyxJQUFJTSxRQUFRRixHQUFHQyxLQUFLLENBQUNMLFNBQVM7Z0JBQzlCLE9BQU87b0JBQUNPLEtBQUtDLEdBQUcsQ0FBQ0wsTUFBTSxDQUFDLEVBQUUsRUFBRUc7b0JBQVFDLEtBQUtFLEdBQUcsQ0FBQ04sTUFBTSxDQUFDLEVBQUUsRUFBRUc7aUJBQU87WUFDakU7WUFDQSxPQUFPSDtRQUNULEdBQUdGO0lBQ0w7SUFDQSxJQUFJSCxNQUFNbkIsTUFBTSxFQUFFO1FBQ2hCLElBQUkrQixPQUFPLEdBQUdiLE1BQU0sQ0FBQ0csVUFBVTtRQUMvQixJQUFJVyxPQUFPLEdBQUdkLE1BQU0sQ0FBQ0csVUFBVTtRQUMvQkMsY0FBY0gsTUFBTUksTUFBTSxDQUFDLFNBQVVDLE1BQU0sRUFBRUMsRUFBRTtZQUM3QyxJQUFJQSxHQUFHQyxLQUFLLENBQUNOLE1BQU0sS0FBS1IsVUFBVU4scUVBQWlCQSxDQUFDbUIsR0FBR0MsS0FBSyxFQUFFLG1CQUFtQmxCLG9EQUFRQSxDQUFDaUIsR0FBR0MsS0FBSyxDQUFDSyxLQUFLLEtBQUt2QixvREFBUUEsQ0FBQ2lCLEdBQUdDLEtBQUssQ0FBQ00sS0FBSyxHQUFHO2dCQUNySSxJQUFJQyxTQUFTUixHQUFHQyxLQUFLLENBQUNLLEtBQUs7Z0JBQzNCLElBQUlHLFNBQVNULEdBQUdDLEtBQUssQ0FBQ00sS0FBSztnQkFDM0IsT0FBTztvQkFBQ0osS0FBS0MsR0FBRyxDQUFDTCxNQUFNLENBQUMsRUFBRSxFQUFFUyxRQUFRQztvQkFBU04sS0FBS0UsR0FBRyxDQUFDTixNQUFNLENBQUMsRUFBRSxFQUFFUyxRQUFRQztpQkFBUTtZQUNuRjtZQUNBLE9BQU9WO1FBQ1QsR0FBR0Y7SUFDTDtJQUNBLElBQUlSLGtCQUFrQkEsZUFBZWQsTUFBTSxFQUFFO1FBQzNDc0IsY0FBY1IsZUFBZVMsTUFBTSxDQUFDLFNBQVVDLE1BQU0sRUFBRVcsSUFBSTtZQUN4RCxJQUFJM0Isb0RBQVFBLENBQUMyQixPQUFPO2dCQUNsQixPQUFPO29CQUFDUCxLQUFLQyxHQUFHLENBQUNMLE1BQU0sQ0FBQyxFQUFFLEVBQUVXO29CQUFPUCxLQUFLRSxHQUFHLENBQUNOLE1BQU0sQ0FBQyxFQUFFLEVBQUVXO2lCQUFNO1lBQy9EO1lBQ0EsT0FBT1g7UUFDVCxHQUFHRjtJQUNMO0lBQ0EsT0FBT0E7QUFDVCxFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0RldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KGFycik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5pbXBvcnQgeyBSZWZlcmVuY2VEb3QgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vUmVmZXJlbmNlRG90JztcbmltcG9ydCB7IFJlZmVyZW5jZUxpbmUgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vUmVmZXJlbmNlTGluZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2VBcmVhIH0gZnJvbSAnLi4vY2FydGVzaWFuL1JlZmVyZW5jZUFyZWEnO1xuaW1wb3J0IHsgaWZPdmVyZmxvd01hdGNoZXMgfSBmcm9tICcuL0lmT3ZlcmZsb3dNYXRjaGVzJztcbmltcG9ydCB7IGZpbmRBbGxCeVR5cGUgfSBmcm9tICcuL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL0RhdGFVdGlscyc7XG5leHBvcnQgdmFyIGRldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluID0gZnVuY3Rpb24gZGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4oY2hpbGRyZW4sIGRvbWFpbiwgYXhpc0lkLCBheGlzVHlwZSwgc3BlY2lmaWVkVGlja3MpIHtcbiAgdmFyIGxpbmVzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgUmVmZXJlbmNlTGluZSk7XG4gIHZhciBkb3RzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgUmVmZXJlbmNlRG90KTtcbiAgdmFyIGVsZW1lbnRzID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShsaW5lcyksIF90b0NvbnN1bWFibGVBcnJheShkb3RzKSk7XG4gIHZhciBhcmVhcyA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIFJlZmVyZW5jZUFyZWEpO1xuICB2YXIgaWRLZXkgPSBcIlwiLmNvbmNhdChheGlzVHlwZSwgXCJJZFwiKTtcbiAgdmFyIHZhbHVlS2V5ID0gYXhpc1R5cGVbMF07XG4gIHZhciBmaW5hbERvbWFpbiA9IGRvbWFpbjtcbiAgaWYgKGVsZW1lbnRzLmxlbmd0aCkge1xuICAgIGZpbmFsRG9tYWluID0gZWxlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGVsKSB7XG4gICAgICBpZiAoZWwucHJvcHNbaWRLZXldID09PSBheGlzSWQgJiYgaWZPdmVyZmxvd01hdGNoZXMoZWwucHJvcHMsICdleHRlbmREb21haW4nKSAmJiBpc051bWJlcihlbC5wcm9wc1t2YWx1ZUtleV0pKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGVsLnByb3BzW3ZhbHVlS2V5XTtcbiAgICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXN1bHRbMF0sIHZhbHVlKSwgTWF0aC5tYXgocmVzdWx0WzFdLCB2YWx1ZSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBmaW5hbERvbWFpbik7XG4gIH1cbiAgaWYgKGFyZWFzLmxlbmd0aCkge1xuICAgIHZhciBrZXkxID0gXCJcIi5jb25jYXQodmFsdWVLZXksIFwiMVwiKTtcbiAgICB2YXIga2V5MiA9IFwiXCIuY29uY2F0KHZhbHVlS2V5LCBcIjJcIik7XG4gICAgZmluYWxEb21haW4gPSBhcmVhcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZWwpIHtcbiAgICAgIGlmIChlbC5wcm9wc1tpZEtleV0gPT09IGF4aXNJZCAmJiBpZk92ZXJmbG93TWF0Y2hlcyhlbC5wcm9wcywgJ2V4dGVuZERvbWFpbicpICYmIGlzTnVtYmVyKGVsLnByb3BzW2tleTFdKSAmJiBpc051bWJlcihlbC5wcm9wc1trZXkyXSkpIHtcbiAgICAgICAgdmFyIHZhbHVlMSA9IGVsLnByb3BzW2tleTFdO1xuICAgICAgICB2YXIgdmFsdWUyID0gZWwucHJvcHNba2V5Ml07XG4gICAgICAgIHJldHVybiBbTWF0aC5taW4ocmVzdWx0WzBdLCB2YWx1ZTEsIHZhbHVlMiksIE1hdGgubWF4KHJlc3VsdFsxXSwgdmFsdWUxLCB2YWx1ZTIpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgZmluYWxEb21haW4pO1xuICB9XG4gIGlmIChzcGVjaWZpZWRUaWNrcyAmJiBzcGVjaWZpZWRUaWNrcy5sZW5ndGgpIHtcbiAgICBmaW5hbERvbWFpbiA9IHNwZWNpZmllZFRpY2tzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCB0aWNrKSB7XG4gICAgICBpZiAoaXNOdW1iZXIodGljaykpIHtcbiAgICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXN1bHRbMF0sIHRpY2spLCBNYXRoLm1heChyZXN1bHRbMV0sIHRpY2spXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgZmluYWxEb21haW4pO1xuICB9XG4gIHJldHVybiBmaW5hbERvbWFpbjtcbn07Il0sIm5hbWVzIjpbIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiaXNBcnJheSIsImxlbiIsImxlbmd0aCIsImkiLCJhcnIyIiwiUmVmZXJlbmNlRG90IiwiUmVmZXJlbmNlTGluZSIsIlJlZmVyZW5jZUFyZWEiLCJpZk92ZXJmbG93TWF0Y2hlcyIsImZpbmRBbGxCeVR5cGUiLCJpc051bWJlciIsImRldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluIiwiY2hpbGRyZW4iLCJkb21haW4iLCJheGlzSWQiLCJheGlzVHlwZSIsInNwZWNpZmllZFRpY2tzIiwibGluZXMiLCJkb3RzIiwiZWxlbWVudHMiLCJjb25jYXQiLCJhcmVhcyIsImlkS2V5IiwidmFsdWVLZXkiLCJmaW5hbERvbWFpbiIsInJlZHVjZSIsInJlc3VsdCIsImVsIiwicHJvcHMiLCJ2YWx1ZSIsIk1hdGgiLCJtaW4iLCJtYXgiLCJrZXkxIiwia2V5MiIsInZhbHVlMSIsInZhbHVlMiIsInRpY2siXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/Events.js":
/*!**************************************************!*\
!*** ./node_modules/recharts/es6/util/Events.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SYNC_EVENT: () => (/* binding */ SYNC_EVENT),\n/* harmony export */ eventCenter: () => (/* binding */ eventCenter)\n/* harmony export */ });\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! eventemitter3 */ \"(ssr)/./node_modules/eventemitter3/index.js\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_0__);\n\nvar eventCenter = new (eventemitter3__WEBPACK_IMPORTED_MODULE_0___default())();\n\nvar SYNC_EVENT = 'recharts.syncMouseEvents';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRXZlbnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBeUM7QUFDekMsSUFBSUMsY0FBYyxJQUFJRCxzREFBWUE7QUFDWDtBQUNoQixJQUFJRSxhQUFhLDJCQUEyQiIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9FdmVudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tICdldmVudGVtaXR0ZXIzJztcbnZhciBldmVudENlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmV4cG9ydCB7IGV2ZW50Q2VudGVyIH07XG5leHBvcnQgdmFyIFNZTkNfRVZFTlQgPSAncmVjaGFydHMuc3luY01vdXNlRXZlbnRzJzsiXSwibmFtZXMiOlsiRXZlbnRFbWl0dGVyIiwiZXZlbnRDZW50ZXIiLCJTWU5DX0VWRU5UIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/Events.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/Global.js":
/*!**************************************************!*\
!*** ./node_modules/recharts/es6/util/Global.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Global: () => (/* binding */ Global)\n/* harmony export */ });\nvar parseIsSsrByDefault = function parseIsSsrByDefault() {\n return !( false && 0);\n};\nvar Global = {\n isSsr: parseIsSsrByDefault(),\n get: function get(key) {\n return Global[key];\n },\n set: function set(key, value) {\n if (typeof key === 'string') {\n Global[key] = value;\n } else {\n var keys = Object.keys(key);\n if (keys && keys.length) {\n keys.forEach(function(k) {\n Global[k] = key[k];\n });\n }\n }\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvR2xvYmFsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFJQSxzQkFBc0IsU0FBU0E7SUFDakMsT0FBTyxDQUFFLE9BQWlGLElBQUlDLENBQWlCO0FBQ2pIO0FBQ08sSUFBSUksU0FBUztJQUNsQkMsT0FBT047SUFDUE8sS0FBSyxTQUFTQSxJQUFJQyxHQUFHO1FBQ25CLE9BQU9ILE1BQU0sQ0FBQ0csSUFBSTtJQUNwQjtJQUNBQyxLQUFLLFNBQVNBLElBQUlELEdBQUcsRUFBRUUsS0FBSztRQUMxQixJQUFJLE9BQU9GLFFBQVEsVUFBVTtZQUMzQkgsTUFBTSxDQUFDRyxJQUFJLEdBQUdFO1FBQ2hCLE9BQU87WUFDTCxJQUFJQyxPQUFPQyxPQUFPRCxJQUFJLENBQUNIO1lBQ3ZCLElBQUlHLFFBQVFBLEtBQUtFLE1BQU0sRUFBRTtnQkFDdkJGLEtBQUtHLE9BQU8sQ0FBQyxTQUFVQyxDQUFDO29CQUN0QlYsTUFBTSxDQUFDVSxFQUFFLEdBQUdQLEdBQUcsQ0FBQ08sRUFBRTtnQkFDcEI7WUFDRjtRQUNGO0lBQ0Y7QUFDRixFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0dsb2JhbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcGFyc2VJc1NzckJ5RGVmYXVsdCA9IGZ1bmN0aW9uIHBhcnNlSXNTc3JCeURlZmF1bHQoKSB7XG4gIHJldHVybiAhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAmJiB3aW5kb3cuc2V0VGltZW91dCk7XG59O1xuZXhwb3J0IHZhciBHbG9iYWwgPSB7XG4gIGlzU3NyOiBwYXJzZUlzU3NyQnlEZWZhdWx0KCksXG4gIGdldDogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgIHJldHVybiBHbG9iYWxba2V5XTtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgR2xvYmFsW2tleV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhrZXkpO1xuICAgICAgaWYgKGtleXMgJiYga2V5cy5sZW5ndGgpIHtcbiAgICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgR2xvYmFsW2tdID0ga2V5W2tdO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07Il0sIm5hbWVzIjpbInBhcnNlSXNTc3JCeURlZmF1bHQiLCJ3aW5kb3ciLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRUaW1lb3V0IiwiR2xvYmFsIiwiaXNTc3IiLCJnZXQiLCJrZXkiLCJzZXQiLCJ2YWx1ZSIsImtleXMiLCJPYmplY3QiLCJsZW5ndGgiLCJmb3JFYWNoIiwiayJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/Global.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js":
/*!*************************************************************!*\
!*** ./node_modules/recharts/es6/util/IfOverflowMatches.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ifOverflowMatches: () => (/* binding */ ifOverflowMatches)\n/* harmony export */ });\nvar ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n return ifOverflow === value;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvSWZPdmVyZmxvd01hdGNoZXMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLElBQUlBLG9CQUFvQixTQUFTQSxrQkFBa0JDLEtBQUssRUFBRUMsS0FBSztJQUNwRSxJQUFJQyxhQUFhRixNQUFNRSxVQUFVO0lBQ2pDLElBQUlDLGFBQWFILE1BQU1HLFVBQVU7SUFDakMsSUFBSUQsWUFBWTtRQUNkQyxhQUFhO0lBQ2Y7SUFDQSxPQUFPQSxlQUFlRjtBQUN4QixFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0lmT3ZlcmZsb3dNYXRjaGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgaWZPdmVyZmxvd01hdGNoZXMgPSBmdW5jdGlvbiBpZk92ZXJmbG93TWF0Y2hlcyhwcm9wcywgdmFsdWUpIHtcbiAgdmFyIGFsd2F5c1Nob3cgPSBwcm9wcy5hbHdheXNTaG93O1xuICB2YXIgaWZPdmVyZmxvdyA9IHByb3BzLmlmT3ZlcmZsb3c7XG4gIGlmIChhbHdheXNTaG93KSB7XG4gICAgaWZPdmVyZmxvdyA9ICdleHRlbmREb21haW4nO1xuICB9XG4gIHJldHVybiBpZk92ZXJmbG93ID09PSB2YWx1ZTtcbn07Il0sIm5hbWVzIjpbImlmT3ZlcmZsb3dNYXRjaGVzIiwicHJvcHMiLCJ2YWx1ZSIsImFsd2F5c1Nob3ciLCJpZk92ZXJmbG93Il0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/LogUtils.js":
/*!****************************************************!*\
!*** ./node_modules/recharts/es6/util/LogUtils.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ warn: () => (/* binding */ warn)\n/* harmony export */ });\n/* eslint no-console: 0 */ var isDev = \"development\" !== 'production';\nvar warn = function warn(condition, format) {\n for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){\n args[_key - 2] = arguments[_key];\n }\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function() {\n return args[argIndex++];\n }));\n }\n }\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvTG9nVXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHdCQUF3QixHQUN4QixJQUFJQSxRQUFRQyxrQkFBeUI7QUFDOUIsSUFBSUMsT0FBTyxTQUFTQSxLQUFLQyxTQUFTLEVBQUVDLE1BQU07SUFDL0MsSUFBSyxJQUFJQyxPQUFPQyxVQUFVQyxNQUFNLEVBQUVDLE9BQU8sSUFBSUMsTUFBTUosT0FBTyxJQUFJQSxPQUFPLElBQUksSUFBSUssT0FBTyxHQUFHQSxPQUFPTCxNQUFNSyxPQUFRO1FBQzFHRixJQUFJLENBQUNFLE9BQU8sRUFBRSxHQUFHSixTQUFTLENBQUNJLEtBQUs7SUFDbEM7SUFDQSxJQUFJVixTQUFTLE9BQU9XLFlBQVksZUFBZUEsUUFBUVQsSUFBSSxFQUFFO1FBQzNELElBQUlFLFdBQVdRLFdBQVc7WUFDeEJELFFBQVFULElBQUksQ0FBQztRQUNmO1FBQ0EsSUFBSSxDQUFDQyxXQUFXO1lBQ2QsSUFBSUMsV0FBV1EsV0FBVztnQkFDeEJELFFBQVFULElBQUksQ0FBQyx1RUFBdUU7WUFDdEYsT0FBTztnQkFDTCxJQUFJVyxXQUFXO2dCQUNmRixRQUFRVCxJQUFJLENBQUNFLE9BQU9VLE9BQU8sQ0FBQyxPQUFPO29CQUNqQyxPQUFPTixJQUFJLENBQUNLLFdBQVc7Z0JBQ3pCO1lBQ0Y7UUFDRjtJQUNGO0FBQ0YsRUFBRSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9Mb2dVdGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tY29uc29sZTogMCAqL1xudmFyIGlzRGV2ID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJztcbmV4cG9ydCB2YXIgd2FybiA9IGZ1bmN0aW9uIHdhcm4oY29uZGl0aW9uLCBmb3JtYXQpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDIgPyBfbGVuIC0gMiA6IDApLCBfa2V5ID0gMjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG4gIGlmIChpc0RldiAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0xvZ1V0aWxzIHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICAgIGNvbnNvbGUud2Fybihmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59OyJdLCJuYW1lcyI6WyJpc0RldiIsInByb2Nlc3MiLCJ3YXJuIiwiY29uZGl0aW9uIiwiZm9ybWF0IiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25zb2xlIiwidW5kZWZpbmVkIiwiYXJnSW5kZXgiLCJyZXBsYWNlIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/LogUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/PolarUtils.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/util/PolarUtils.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RADIAN: () => (/* binding */ RADIAN),\n/* harmony export */ degreeToRadian: () => (/* binding */ degreeToRadian),\n/* harmony export */ distanceBetweenPoints: () => (/* binding */ distanceBetweenPoints),\n/* harmony export */ formatAngleOfSector: () => (/* binding */ formatAngleOfSector),\n/* harmony export */ formatAxisMap: () => (/* binding */ formatAxisMap),\n/* harmony export */ getAngleOfPoint: () => (/* binding */ getAngleOfPoint),\n/* harmony export */ getMaxRadius: () => (/* binding */ getMaxRadius),\n/* harmony export */ getTickClassName: () => (/* binding */ getTickClassName),\n/* harmony export */ inRangeOfSector: () => (/* binding */ inRangeOfSector),\n/* harmony export */ polarToCartesian: () => (/* binding */ polarToCartesian),\n/* harmony export */ radianToDegree: () => (/* binding */ radianToDegree)\n/* harmony export */ });\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _ChartUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\n\n\n\n\nvar RADIAN = Math.PI / 180;\nvar degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nvar radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nvar polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nvar getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {Object} axisType The type of axes, radius-axis or angle-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */ var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width, height = props.height;\n var startAngle = props.startAngle, endAngle = props.endAngle;\n var cx = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_3__.getPercentValue)(props.cx, width, width / 2);\n var cy = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_3__.getPercentValue)(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_3__.getPercentValue)(props.innerRadius, maxRadius, 0);\n var outerRadius = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_3__.getPercentValue)(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function(result, id) {\n var axis = axisMap[id];\n var domain = axis.domain, reversed = axis.reversed;\n var range;\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_0___default()(axis.range)) {\n if (axisType === 'angleAxis') {\n range = [\n startAngle,\n endAngle\n ];\n } else if (axisType === 'radiusAxis') {\n range = [\n innerRadius,\n outerRadius\n ];\n }\n if (reversed) {\n range = [\n range[1],\n range[0]\n ];\n }\n } else {\n range = axis.range;\n var _range = range;\n var _range2 = _slicedToArray(_range, 2);\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n var _parseScale = (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_4__.parseScale)(axis, chartName), realScaleType = _parseScale.realScaleType, scale = _parseScale.scale;\n scale.domain(domain).range(range);\n (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_4__.checkDomainOfScale)(scale);\n var ticks = (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_4__.getTicksOfScale)(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nvar distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x, y1 = point.y;\n var x2 = anotherPoint.x, y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nvar getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x, y = _ref.y;\n var cx = _ref2.cx, cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nvar formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle, endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle, endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\nvar inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x, y = _ref5.y;\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector), radius = _getAngleOfPoint.radius, angle = _getAngleOfPoint.angle;\n var innerRadius = sector.innerRadius, outerRadius = sector.outerRadius;\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n if (radius === 0) {\n return true;\n }\n var _formatAngleOfSector = formatAngleOfSector(sector), startAngle = _formatAngleOfSector.startAngle, endAngle = _formatAngleOfSector.endAngle;\n var formatAngle = angle;\n var inRange;\n if (startAngle <= endAngle) {\n while(formatAngle > endAngle){\n formatAngle -= 360;\n }\n while(formatAngle < startAngle){\n formatAngle += 360;\n }\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while(formatAngle > startAngle){\n formatAngle -= 360;\n }\n while(formatAngle < endAngle){\n formatAngle += 360;\n }\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n if (inRange) {\n return _objectSpread(_objectSpread({}, sector), {}, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n return null;\n};\nvar getTickClassName = function getTickClassName(tick) {\n return !/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(tick) && !lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(tick) && typeof tick !== 'boolean' ? tick.className : '';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvUG9sYXJVdGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlDLE9BQU9DLElBQUksQ0FBQ0o7SUFBSSxJQUFJRyxPQUFPRSxxQkFBcUIsRUFBRTtRQUFFLElBQUlYLElBQUlTLE9BQU9FLHFCQUFxQixDQUFDTDtRQUFJQyxLQUFNUCxDQUFBQSxJQUFJQSxFQUFFWSxNQUFNLENBQUMsU0FBVUwsQ0FBQztZQUFJLE9BQU9FLE9BQU9JLHdCQUF3QixDQUFDUCxHQUFHQyxHQUFHTyxVQUFVO1FBQUUsRUFBQyxHQUFJTixFQUFFTyxJQUFJLENBQUNDLEtBQUssQ0FBQ1IsR0FBR1I7SUFBSTtJQUFFLE9BQU9RO0FBQUc7QUFDOVAsU0FBU1MsY0FBY1gsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVyxVQUFVQyxNQUFNLEVBQUVaLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFVLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHVyxTQUFTLENBQUNYLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUUksT0FBT0QsSUFBSSxDQUFDLEdBQUdZLE9BQU8sQ0FBQyxTQUFVYixDQUFDO1lBQUljLGdCQUFnQmYsR0FBR0MsR0FBR0MsQ0FB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LElBQUlLLG1CQUFtQixTQUFTQSxpQkFBaUJDLElBQUk7SUFDMUQsT0FBTyxDQUFFLFdBQVcsR0FBRXJGLHFEQUFjQSxDQUFDcUYsU0FBUyxDQUFDcEYsd0RBQVVBLENBQUNvRixTQUFTLE9BQU9BLFNBQVMsWUFBWUEsS0FBS0MsU0FBUyxHQUFHO0FBQ2xILEVBQUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvUG9sYXJVdGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7IHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07IGlmIChudWxsICE9IHQpIHsgdmFyIGUsIG4sIGksIHUsIGEgPSBbXSwgZiA9ICEwLCBvID0gITE7IHRyeSB7IGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHsgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuOyBmID0gITE7IH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTsgfSBjYXRjaCAocikgeyBvID0gITAsIG4gPSByOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47IH0gZmluYWxseSB7IGlmIChvKSB0aHJvdyBuOyB9IH0gcmV0dXJuIGE7IH0gfVxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCB7IGlzVmFsaWRFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHsgZ2V0UGVyY2VudFZhbHVlIH0gZnJvbSAnLi9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgcGFyc2VTY2FsZSwgY2hlY2tEb21haW5PZlNjYWxlLCBnZXRUaWNrc09mU2NhbGUgfSBmcm9tICcuL0NoYXJ0VXRpbHMnO1xuZXhwb3J0IHZhciBSQURJQU4gPSBNYXRoLlBJIC8gMTgwO1xuZXhwb3J0IHZhciBkZWdyZWVUb1JhZGlhbiA9IGZ1bmN0aW9uIGRlZ3JlZVRvUmFkaWFuKGFuZ2xlKSB7XG4gIHJldHVybiBhbmdsZSAqIE1hdGguUEkgLyAxODA7XG59O1xuZXhwb3J0IHZhciByYWRpYW5Ub0RlZ3JlZSA9IGZ1bmN0aW9uIHJhZGlhblRvRGVncmVlKGFuZ2xlSW5SYWRpYW4pIHtcbiAgcmV0dXJuIGFuZ2xlSW5SYWRpYW4gKiAxODAgLyBNYXRoLlBJO1xufTtcbmV4cG9ydCB2YXIgcG9sYXJUb0NhcnRlc2lhbiA9IGZ1bmN0aW9uIHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByYWRpdXMsIGFuZ2xlKSB7XG4gIHJldHVybiB7XG4gICAgeDogY3ggKyBNYXRoLmNvcygtUkFESUFOICogYW5nbGUpICogcmFkaXVzLFxuICAgIHk6IGN5ICsgTWF0aC5zaW4oLVJBRElBTiAqIGFuZ2xlKSAqIHJhZGl1c1xuICB9O1xufTtcbmV4cG9ydCB2YXIgZ2V0TWF4UmFkaXVzID0gZnVuY3Rpb24gZ2V0TWF4UmFkaXVzKHdpZHRoLCBoZWlnaHQpIHtcbiAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMFxuICB9O1xuICByZXR1cm4gTWF0aC5taW4oTWF0aC5hYnMod2lkdGggLSAob2Zmc2V0LmxlZnQgfHwgMCkgLSAob2Zmc2V0LnJpZ2h0IHx8IDApKSwgTWF0aC5hYnMoaGVpZ2h0IC0gKG9mZnNldC50b3AgfHwgMCkgLSAob2Zmc2V0LmJvdHRvbSB8fCAwKSkpIC8gMjtcbn07XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBzY2FsZSBmdW5jdGlvbiwgcG9zaXRpb24sIHdpZHRoLCBoZWlnaHQgb2YgYXhlc1xuICogQHBhcmFtICB7T2JqZWN0fSBwcm9wcyAgICAgTGF0ZXN0IHByb3BzXG4gKiBAcGFyYW0gIHtPYmplY3R9IGF4aXNNYXAgICBUaGUgY29uZmlndXJhdGlvbiBvZiBheGVzXG4gKiBAcGFyYW0gIHtPYmplY3R9IG9mZnNldCAgICBUaGUgb2Zmc2V0IG9mIG1haW4gcGFydCBpbiB0aGUgc3ZnIGVsZW1lbnRcbiAqIEBwYXJhbSAge09iamVjdH0gYXhpc1R5cGUgIFRoZSB0eXBlIG9mIGF4ZXMsIHJhZGl1cy1heGlzIG9yIGFuZ2xlLWF4aXNcbiAqIEBwYXJhbSAge1N0cmluZ30gY2hhcnROYW1lIFRoZSBuYW1lIG9mIGNoYXJ0XG4gKiBAcmV0dXJuIHtPYmplY3R9IENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IHZhciBmb3JtYXRBeGlzTWFwID0gZnVuY3Rpb24gZm9ybWF0QXhpc01hcChwcm9wcywgYXhpc01hcCwgb2Zmc2V0LCBheGlzVHlwZSwgY2hhcnROYW1lKSB7XG4gIHZhciB3aWR0aCA9IHByb3BzLndpZHRoLFxuICAgIGhlaWdodCA9IHByb3BzLmhlaWdodDtcbiAgdmFyIHN0YXJ0QW5nbGUgPSBwcm9wcy5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gcHJvcHMuZW5kQW5nbGU7XG4gIHZhciBjeCA9IGdldFBlcmNlbnRWYWx1ZShwcm9wcy5jeCwgd2lkdGgsIHdpZHRoIC8gMik7XG4gIHZhciBjeSA9IGdldFBlcmNlbnRWYWx1ZShwcm9wcy5jeSwgaGVpZ2h0LCBoZWlnaHQgLyAyKTtcbiAgdmFyIG1heFJhZGl1cyA9IGdldE1heFJhZGl1cyh3aWR0aCwgaGVpZ2h0LCBvZmZzZXQpO1xuICB2YXIgaW5uZXJSYWRpdXMgPSBnZXRQZXJjZW50VmFsdWUocHJvcHMuaW5uZXJSYWRpdXMsIG1heFJhZGl1cywgMCk7XG4gIHZhciBvdXRlclJhZGl1cyA9IGdldFBlcmNlbnRWYWx1ZShwcm9wcy5vdXRlclJhZGl1cywgbWF4UmFkaXVzLCBtYXhSYWRpdXMgKiAwLjgpO1xuICB2YXIgaWRzID0gT2JqZWN0LmtleXMoYXhpc01hcCk7XG4gIHJldHVybiBpZHMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGlkKSB7XG4gICAgdmFyIGF4aXMgPSBheGlzTWFwW2lkXTtcbiAgICB2YXIgZG9tYWluID0gYXhpcy5kb21haW4sXG4gICAgICByZXZlcnNlZCA9IGF4aXMucmV2ZXJzZWQ7XG4gICAgdmFyIHJhbmdlO1xuICAgIGlmIChpc05pbChheGlzLnJhbmdlKSkge1xuICAgICAgaWYgKGF4aXNUeXBlID09PSAnYW5nbGVBeGlzJykge1xuICAgICAgICByYW5nZSA9IFtzdGFydEFuZ2xlLCBlbmRBbmdsZV07XG4gICAgICB9IGVsc2UgaWYgKGF4aXNUeXBlID09PSAncmFkaXVzQXhpcycpIHtcbiAgICAgICAgcmFuZ2UgPSBbaW5uZXJSYWRpdXMsIG91dGVyUmFkaXVzXTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXZlcnNlZCkge1xuICAgICAgICByYW5nZSA9IFtyYW5nZVsxXSwgcmFuZ2VbMF1dO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByYW5nZSA9IGF4aXMucmFuZ2U7XG4gICAgICB2YXIgX3JhbmdlID0gcmFuZ2U7XG4gICAgICB2YXIgX3JhbmdlMiA9IF9zbGljZWRUb0FycmF5KF9yYW5nZSwgMik7XG4gICAgICBzdGFydEFuZ2xlID0gX3JhbmdlMlswXTtcbiAgICAgIGVuZEFuZ2xlID0gX3JhbmdlMlsxXTtcbiAgICB9XG4gICAgdmFyIF9wYXJzZVNjYWxlID0gcGFyc2VTY2FsZShheGlzLCBjaGFydE5hbWUpLFxuICAgICAgcmVhbFNjYWxlVHlwZSA9IF9wYXJzZVNjYWxlLnJlYWxTY2FsZVR5cGUsXG4gICAgICBzY2FsZSA9IF9wYXJzZVNjYWxlLnNjYWxlO1xuICAgIHNjYWxlLmRvbWFpbihkb21haW4pLnJhbmdlKHJhbmdlKTtcbiAgICBjaGVja0RvbWFpbk9mU2NhbGUoc2NhbGUpO1xuICAgIHZhciB0aWNrcyA9IGdldFRpY2tzT2ZTY2FsZShzY2FsZSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBheGlzKSwge30sIHtcbiAgICAgIHJlYWxTY2FsZVR5cGU6IHJlYWxTY2FsZVR5cGVcbiAgICB9KSk7XG4gICAgdmFyIGZpbmFsQXhpcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBheGlzKSwgdGlja3MpLCB7fSwge1xuICAgICAgcmFuZ2U6IHJhbmdlLFxuICAgICAgcmFkaXVzOiBvdXRlclJhZGl1cyxcbiAgICAgIHJlYWxTY2FsZVR5cGU6IHJlYWxTY2FsZVR5cGUsXG4gICAgICBzY2FsZTogc2NhbGUsXG4gICAgICBjeDogY3gsXG4gICAgICBjeTogY3ksXG4gICAgICBpbm5lclJhZGl1czogaW5uZXJSYWRpdXMsXG4gICAgICBvdXRlclJhZGl1czogb3V0ZXJSYWRpdXMsXG4gICAgICBzdGFydEFuZ2xlOiBzdGFydEFuZ2xlLFxuICAgICAgZW5kQW5nbGU6IGVuZEFuZ2xlXG4gICAgfSk7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgaWQsIGZpbmFsQXhpcykpO1xuICB9LCB7fSk7XG59O1xuZXhwb3J0IHZhciBkaXN0YW5jZUJldHdlZW5Qb2ludHMgPSBmdW5jdGlvbiBkaXN0YW5jZUJldHdlZW5Qb2ludHMocG9pbnQsIGFub3RoZXJQb2ludCkge1xuICB2YXIgeDEgPSBwb2ludC54LFxuICAgIHkxID0gcG9pbnQueTtcbiAgdmFyIHgyID0gYW5vdGhlclBvaW50LngsXG4gICAgeTIgPSBhbm90aGVyUG9pbnQueTtcbiAgcmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyh4MSAtIHgyLCAyKSArIE1hdGgucG93KHkxIC0geTIsIDIpKTtcbn07XG5leHBvcnQgdmFyIGdldEFuZ2xlT2ZQb2ludCA9IGZ1bmN0aW9uIGdldEFuZ2xlT2ZQb2ludChfcmVmLCBfcmVmMikge1xuICB2YXIgeCA9IF9yZWYueCxcbiAgICB5ID0gX3JlZi55O1xuICB2YXIgY3ggPSBfcmVmMi5jeCxcbiAgICBjeSA9IF9yZWYyLmN5O1xuICB2YXIgcmFkaXVzID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRzKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSwge1xuICAgIHg6IGN4LFxuICAgIHk6IGN5XG4gIH0pO1xuICBpZiAocmFkaXVzIDw9IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmFkaXVzOiByYWRpdXNcbiAgICB9O1xuICB9XG4gIHZhciBjb3MgPSAoeCAtIGN4KSAvIHJhZGl1cztcbiAgdmFyIGFuZ2xlSW5SYWRpYW4gPSBNYXRoLmFjb3MoY29zKTtcbiAgaWYgKHkgPiBjeSkge1xuICAgIGFuZ2xlSW5SYWRpYW4gPSAyICogTWF0aC5QSSAtIGFuZ2xlSW5SYWRpYW47XG4gIH1cbiAgcmV0dXJuIHtcbiAgICByYWRpdXM6IHJhZGl1cyxcbiAgICBhbmdsZTogcmFkaWFuVG9EZWdyZWUoYW5nbGVJblJhZGlhbiksXG4gICAgYW5nbGVJblJhZGlhbjogYW5nbGVJblJhZGlhblxuICB9O1xufTtcbmV4cG9ydCB2YXIgZm9ybWF0QW5nbGVPZlNlY3RvciA9IGZ1bmN0aW9uIGZvcm1hdEFuZ2xlT2ZTZWN0b3IoX3JlZjMpIHtcbiAgdmFyIHN0YXJ0QW5nbGUgPSBfcmVmMy5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gX3JlZjMuZW5kQW5nbGU7XG4gIHZhciBzdGFydENudCA9IE1hdGguZmxvb3Ioc3RhcnRBbmdsZSAvIDM2MCk7XG4gIHZhciBlbmRDbnQgPSBNYXRoLmZsb29yKGVuZEFuZ2xlIC8gMzYwKTtcbiAgdmFyIG1pbiA9IE1hdGgubWluKHN0YXJ0Q250LCBlbmRDbnQpO1xuICByZXR1cm4ge1xuICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUgLSBtaW4gKiAzNjAsXG4gICAgZW5kQW5nbGU6IGVuZEFuZ2xlIC0gbWluICogMzYwXG4gIH07XG59O1xudmFyIHJldmVyc2VGb3JtYXRBbmdsZU9mU2V0b3IgPSBmdW5jdGlvbiByZXZlcnNlRm9ybWF0QW5nbGVPZlNldG9yKGFuZ2xlLCBfcmVmNCkge1xuICB2YXIgc3RhcnRBbmdsZSA9IF9yZWY0LnN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGUgPSBfcmVmNC5lbmRBbmdsZTtcbiAgdmFyIHN0YXJ0Q250ID0gTWF0aC5mbG9vcihzdGFydEFuZ2xlIC8gMzYwKTtcbiAgdmFyIGVuZENudCA9IE1hdGguZmxvb3IoZW5kQW5nbGUgLyAzNjApO1xuICB2YXIgbWluID0gTWF0aC5taW4oc3RhcnRDbnQsIGVuZENudCk7XG4gIHJldHVybiBhbmdsZSArIG1pbiAqIDM2MDtcbn07XG5leHBvcnQgdmFyIGluUmFuZ2VPZlNlY3RvciA9IGZ1bmN0aW9uIGluUmFuZ2VPZlNlY3RvcihfcmVmNSwgc2VjdG9yKSB7XG4gIHZhciB4ID0gX3JlZjUueCxcbiAgICB5ID0gX3JlZjUueTtcbiAgdmFyIF9nZXRBbmdsZU9mUG9pbnQgPSBnZXRBbmdsZU9mUG9pbnQoe1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LCBzZWN0b3IpLFxuICAgIHJhZGl1cyA9IF9nZXRBbmdsZU9mUG9pbnQucmFkaXVzLFxuICAgIGFuZ2xlID0gX2dldEFuZ2xlT2ZQb2ludC5hbmdsZTtcbiAgdmFyIGlubmVyUmFkaXVzID0gc2VjdG9yLmlubmVyUmFkaXVzLFxuICAgIG91dGVyUmFkaXVzID0gc2VjdG9yLm91dGVyUmFkaXVzO1xuICBpZiAocmFkaXVzIDwgaW5uZXJSYWRpdXMgfHwgcmFkaXVzID4gb3V0ZXJSYWRpdXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHJhZGl1cyA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBfZm9ybWF0QW5nbGVPZlNlY3RvciA9IGZvcm1hdEFuZ2xlT2ZTZWN0b3Ioc2VjdG9yKSxcbiAgICBzdGFydEFuZ2xlID0gX2Zvcm1hdEFuZ2xlT2ZTZWN0b3Iuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IF9mb3JtYXRBbmdsZU9mU2VjdG9yLmVuZEFuZ2xlO1xuICB2YXIgZm9ybWF0QW5nbGUgPSBhbmdsZTtcbiAgdmFyIGluUmFuZ2U7XG4gIGlmIChzdGFydEFuZ2xlIDw9IGVuZEFuZ2xlKSB7XG4gICAgd2hpbGUgKGZvcm1hdEFuZ2xlID4gZW5kQW5nbGUpIHtcbiAgICAgIGZvcm1hdEFuZ2xlIC09IDM2MDtcbiAgICB9XG4gICAgd2hpbGUgKGZvcm1hdEFuZ2xlIDwgc3RhcnRBbmdsZSkge1xuICAgICAgZm9ybWF0QW5nbGUgKz0gMzYwO1xuICAgIH1cbiAgICBpblJhbmdlID0gZm9ybWF0QW5nbGUgPj0gc3RhcnRBbmdsZSAmJiBmb3JtYXRBbmdsZSA8PSBlbmRBbmdsZTtcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoZm9ybWF0QW5nbGUgPiBzdGFydEFuZ2xlKSB7XG4gICAgICBmb3JtYXRBbmdsZSAtPSAzNjA7XG4gICAgfVxuICAgIHdoaWxlIChmb3JtYXRBbmdsZSA8IGVuZEFuZ2xlKSB7XG4gICAgICBmb3JtYXRBbmdsZSArPSAzNjA7XG4gICAgfVxuICAgIGluUmFuZ2UgPSBmb3JtYXRBbmdsZSA+PSBlbmRBbmdsZSAmJiBmb3JtYXRBbmdsZSA8PSBzdGFydEFuZ2xlO1xuICB9XG4gIGlmIChpblJhbmdlKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc2VjdG9yKSwge30sIHtcbiAgICAgIHJhZGl1czogcmFkaXVzLFxuICAgICAgYW5nbGU6IHJldmVyc2VGb3JtYXRBbmdsZU9mU2V0b3IoZm9ybWF0QW5nbGUsIHNlY3RvcilcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5leHBvcnQgdmFyIGdldFRpY2tDbGFzc05hbWUgPSBmdW5jdGlvbiBnZXRUaWNrQ2xhc3NOYW1lKHRpY2spIHtcbiAgcmV0dXJuICEgLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KHRpY2spICYmICFpc0Z1bmN0aW9uKHRpY2spICYmIHR5cGVvZiB0aWNrICE9PSAnYm9vbGVhbicgPyB0aWNrLmNsYXNzTmFtZSA6ICcnO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImxlbiIsImFycjIiLCJsIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJpc0FycmF5IiwiaXNOaWwiLCJpc1ZhbGlkRWxlbWVudCIsImlzRnVuY3Rpb24iLCJnZXRQZXJjZW50VmFsdWUiLCJwYXJzZVNjYWxlIiwiY2hlY2tEb21haW5PZlNjYWxlIiwiZ2V0VGlja3NPZlNjYWxlIiwiUkFESUFOIiwiTWF0aCIsIlBJIiwiZGVncmVlVG9SYWRpYW4iLCJhbmdsZSIsInJhZGlhblRvRGVncmVlIiwiYW5nbGVJblJhZGlhbiIsInBvbGFyVG9DYXJ0ZXNpYW4iLCJjeCIsImN5IiwicmFkaXVzIiwieCIsImNvcyIsInkiLCJzaW4iLCJnZXRNYXhSYWRpdXMiLCJ3aWR0aCIsImhlaWdodCIsIm9mZnNldCIsInVuZGVmaW5lZCIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsIm1pbiIsImFicyIsImZvcm1hdEF4aXNNYXAiLCJwcm9wcyIsImF4aXNNYXAiLCJheGlzVHlwZSIsImNoYXJ0TmFtZSIsInN0YXJ0QW5nbGUiLCJlbmRBbmdsZSIsIm1heFJhZGl1cyIsImlubmVyUmFkaXVzIiwib3V0ZXJSYWRpdXMiLCJpZHMiLCJyZWR1Y2UiLCJyZXN1bHQiLCJpZCIsImF4aXMiLCJkb21haW4iLCJyZXZlcnNlZCIsInJhbmdlIiwiX3JhbmdlIiwiX3JhbmdlMiIsIl9wYXJzZVNjYWxlIiwicmVhbFNjYWxlVHlwZSIsInNjYWxlIiwidGlja3MiLCJmaW5hbEF4aXMiLCJkaXN0YW5jZUJldHdlZW5Qb2ludHMiLCJwb2ludCIsImFub3RoZXJQb2ludCIsIngxIiwieTEiLCJ4MiIsInkyIiwic3FydCIsInBvdyIsImdldEFuZ2xlT2ZQb2ludCIsIl9yZWYiLCJfcmVmMiIsImFjb3MiLCJmb3JtYXRBbmdsZU9mU2VjdG9yIiwiX3JlZjMiLCJzdGFydENudCIsImZsb29yIiwiZW5kQ250IiwicmV2ZXJzZUZvcm1hdEFuZ2xlT2ZTZXRvciIsIl9yZWY0IiwiaW5SYW5nZU9mU2VjdG9yIiwiX3JlZjUiLCJzZWN0b3IiLCJfZ2V0QW5nbGVPZlBvaW50IiwiX2Zvcm1hdEFuZ2xlT2ZTZWN0b3IiLCJmb3JtYXRBbmdsZSIsImluUmFuZ2UiLCJnZXRUaWNrQ2xhc3NOYW1lIiwidGljayIsImNsYXNzTmFtZSJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/ReactUtils.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/util/ReactUtils.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LEGEND_TYPES: () => (/* binding */ LEGEND_TYPES),\n/* harmony export */ SCALE_TYPES: () => (/* binding */ SCALE_TYPES),\n/* harmony export */ TOOLTIP_TYPES: () => (/* binding */ TOOLTIP_TYPES),\n/* harmony export */ filterProps: () => (/* binding */ filterProps),\n/* harmony export */ filterSvgElements: () => (/* binding */ filterSvgElements),\n/* harmony export */ findAllByType: () => (/* binding */ findAllByType),\n/* harmony export */ findChildByType: () => (/* binding */ findChildByType),\n/* harmony export */ getDisplayName: () => (/* binding */ getDisplayName),\n/* harmony export */ getReactEventByType: () => (/* binding */ getReactEventByType),\n/* harmony export */ hasClipDot: () => (/* binding */ hasClipDot),\n/* harmony export */ isChildrenEqual: () => (/* binding */ isChildrenEqual),\n/* harmony export */ isSingleChildEqual: () => (/* binding */ isSingleChildEqual),\n/* harmony export */ isValidSpreadableProp: () => (/* binding */ isValidSpreadableProp),\n/* harmony export */ parseChildIndex: () => (/* binding */ parseChildIndex),\n/* harmony export */ renderByOrder: () => (/* binding */ renderByOrder),\n/* harmony export */ toArray: () => (/* binding */ toArray),\n/* harmony export */ validateWidthHeight: () => (/* binding */ validateWidthHeight),\n/* harmony export */ withoutType: () => (/* binding */ withoutType)\n/* harmony export */ });\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isString */ \"(ssr)/./node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isObject */ \"(ssr)/./node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-is */ \"(ssr)/./node_modules/react-is/index.js\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _ShallowEqual__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ShallowEqual */ \"(ssr)/./node_modules/recharts/es6/util/ShallowEqual.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\nvar _excluded = [\n \"children\"\n], _excluded2 = [\n \"children\"\n];\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\n\n\n\n\n\n\n\n\n\nvar REACT_BROWSER_EVENT_MAP = {\n click: 'onClick',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart',\n contextmenu: 'onContextMenu',\n dblclick: 'onDoubleClick'\n};\nvar SCALE_TYPES = [\n 'auto',\n 'linear',\n 'pow',\n 'sqrt',\n 'log',\n 'identity',\n 'time',\n 'band',\n 'point',\n 'ordinal',\n 'quantile',\n 'quantize',\n 'utc',\n 'sequential',\n 'threshold'\n];\nvar LEGEND_TYPES = [\n 'plainline',\n 'line',\n 'square',\n 'rect',\n 'circle',\n 'cross',\n 'diamond',\n 'star',\n 'triangle',\n 'wye',\n 'none'\n];\nvar TOOLTIP_TYPES = [\n 'none'\n];\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */ var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === 'string') {\n return Comp;\n }\n if (!Comp) {\n return '';\n }\n return Comp.displayName || Comp.name || 'Component';\n};\n// `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\nvar lastChildren = null;\nvar lastResult = null;\nvar toArray = function toArray(children) {\n if (children === lastChildren && Array.isArray(lastResult)) {\n return lastResult;\n }\n var result = [];\n react__WEBPACK_IMPORTED_MODULE_5__.Children.forEach(children, function(child) {\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(child)) return;\n if ((0,react_is__WEBPACK_IMPORTED_MODULE_6__.isFragment)(child)) {\n result = result.concat(toArray(child.props.children));\n } else {\n // @ts-expect-error this could still be Iterable<ReactNode> and TS does not like that\n result.push(child);\n }\n });\n lastResult = result;\n lastChildren = children;\n return result;\n};\n/*\n * Find and return all matched children by type.\n * `type` must be a React.ComponentType\n */ function findAllByType(children, type) {\n var result = [];\n var types = [];\n if (Array.isArray(type)) {\n types = type.map(function(t) {\n return getDisplayName(t);\n });\n } else {\n types = [\n getDisplayName(type)\n ];\n }\n toArray(children).forEach(function(child) {\n var childType = lodash_get__WEBPACK_IMPORTED_MODULE_0___default()(child, 'type.displayName') || lodash_get__WEBPACK_IMPORTED_MODULE_0___default()(child, 'type.name');\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n}\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` must be a React.ComponentType\n */ function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n}\n/*\n * Create a new array of children excluding the ones matched the type\n */ var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n if (Array.isArray(type)) {\n types = type.map(function(t) {\n return getDisplayName(t);\n });\n } else {\n types = [\n getDisplayName(type)\n ];\n }\n toArray(children).forEach(function(child) {\n var displayName = lodash_get__WEBPACK_IMPORTED_MODULE_0___default()(child, 'type.displayName');\n if (displayName && types.indexOf(displayName) !== -1) {\n return;\n }\n newChildren.push(child);\n });\n return newChildren;\n};\n/**\n * validate the width and height props of a chart element\n * @param {Object} el A chart element\n * @return {Boolean} true If the props width and height are number, and greater than 0\n */ var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n var _el$props = el.props, width = _el$props.width, height = _el$props.height;\n if (!(0,_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(width) || width <= 0 || !(0,_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(height) || height <= 0) {\n return false;\n }\n return true;\n};\nvar SVG_TAGS = [\n 'a',\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animate',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'circle',\n 'clipPath',\n 'color-profile',\n 'cursor',\n 'defs',\n 'desc',\n 'ellipse',\n 'feBlend',\n 'feColormatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'filter',\n 'font',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-url',\n 'foreignObject',\n 'g',\n 'glyph',\n 'glyphRef',\n 'hkern',\n 'image',\n 'line',\n 'lineGradient',\n 'marker',\n 'mask',\n 'metadata',\n 'missing-glyph',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'script',\n 'set',\n 'stop',\n 'style',\n 'svg',\n 'switch',\n 'symbol',\n 'text',\n 'textPath',\n 'title',\n 'tref',\n 'tspan',\n 'use',\n 'view',\n 'vkern'\n];\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && lodash_isString__WEBPACK_IMPORTED_MODULE_2___default()(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\nvar hasClipDot = function hasClipDot(dot) {\n return dot && _typeof(dot) === 'object' && 'clipDot' in dot;\n};\n/**\n * Checks if the property is valid to spread onto an SVG element or onto a specific component\n * @param {unknown} property property value currently being compared\n * @param {string} key property key currently being compared\n * @param {boolean} includeEvents if events are included in spreadable props\n * @param {boolean} svgElementType checks against map of SVG element types to attributes\n * @returns {boolean} is prop valid\n */ var isValidSpreadableProp = function isValidSpreadableProp(property, key, includeEvents, svgElementType) {\n var _FilteredElementKeyMa;\n /**\n * If the svg element type is explicitly included, check against the filtered element key map\n * to determine if there are attributes that should only exist on that element type.\n * @todo Add an internal cjs version of https://github.com/wooorm/svg-element-attributes for full coverage.\n */ var matchingElementTypeKeys = (_FilteredElementKeyMa = _types__WEBPACK_IMPORTED_MODULE_8__.FilteredElementKeyMap === null || _types__WEBPACK_IMPORTED_MODULE_8__.FilteredElementKeyMap === void 0 ? void 0 : _types__WEBPACK_IMPORTED_MODULE_8__.FilteredElementKeyMap[svgElementType]) !== null && _FilteredElementKeyMa !== void 0 ? _FilteredElementKeyMa : [];\n return key.startsWith('data-') || !lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(property) && (svgElementType && matchingElementTypeKeys.includes(key) || _types__WEBPACK_IMPORTED_MODULE_8__.SVGElementPropKeys.includes(key)) || includeEvents && _types__WEBPACK_IMPORTED_MODULE_8__.EventKeys.includes(key);\n};\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */ var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n toArray(children).forEach(function(entry) {\n if (isSvgElement(entry)) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\nvar filterProps = function filterProps(props, includeEvents, svgElementType) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_5__.isValidElement)(props)) {\n inputProps = props.props;\n }\n if (!lodash_isObject__WEBPACK_IMPORTED_MODULE_4___default()(inputProps)) {\n return null;\n }\n var out = {};\n /**\n * Props are blindly spread onto SVG elements. This loop filters out properties that we don't want to spread.\n * Items filtered out are as follows:\n * - functions in properties that are SVG attributes (functions are included when includeEvents is true)\n * - props that are SVG attributes but don't matched the passed svgElementType\n * - any prop that is not in SVGElementPropKeys (or in EventKeys if includeEvents is true)\n */ Object.keys(inputProps).forEach(function(key) {\n var _inputProps;\n if (isValidSpreadableProp((_inputProps = inputProps) === null || _inputProps === void 0 ? void 0 : _inputProps[key], key, includeEvents, svgElementType)) {\n out[key] = inputProps[key];\n }\n });\n return out;\n};\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */ var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n var count = react__WEBPACK_IMPORTED_MODULE_5__.Children.count(nextChildren);\n if (count !== react__WEBPACK_IMPORTED_MODULE_5__.Children.count(prevChildren)) {\n return false;\n }\n if (count === 0) {\n return true;\n }\n if (count === 1) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return isSingleChildEqual(Array.isArray(nextChildren) ? nextChildren[0] : nextChildren, Array.isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n for(var i = 0; i < count; i++){\n var nextChild = nextChildren[i];\n var prevChild = prevChildren[i];\n if (Array.isArray(nextChild) || Array.isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n return true;\n};\nvar isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(nextChild) && lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(prevChild)) {\n return true;\n }\n if (!lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(nextChild) && !lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(prevChild)) {\n var _ref = nextChild.props || {}, nextChildren = _ref.children, nextProps = _objectWithoutProperties(_ref, _excluded);\n var _ref2 = prevChild.props || {}, prevChildren = _ref2.children, prevProps = _objectWithoutProperties(_ref2, _excluded2);\n if (nextChildren && prevChildren) {\n return (0,_ShallowEqual__WEBPACK_IMPORTED_MODULE_9__.shallowEqual)(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n if (!nextChildren && !prevChildren) {\n return (0,_ShallowEqual__WEBPACK_IMPORTED_MODULE_9__.shallowEqual)(nextProps, prevProps);\n }\n return false;\n }\n return false;\n};\nvar renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n toArray(children).forEach(function(child, index) {\n if (isSvgElement(child)) {\n elements.push(child);\n } else if (child) {\n var displayName = getDisplayName(child.type);\n var _ref3 = renderMap[displayName] || {}, handler = _ref3.handler, once = _ref3.once;\n if (handler && (!once || !record[displayName])) {\n var results = handler(child, displayName, index);\n elements.push(results);\n record[displayName] = true;\n }\n }\n });\n return elements;\n};\nvar getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n return null;\n};\nvar parseChildIndex = function parseChildIndex(child, children) {\n return toArray(children).indexOf(child);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvUmVhY3RVdGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0NBQVcsRUFDMUJDLGFBQWE7SUFBQztDQUFXO0FBQzNCLFNBQVNDLHlCQUF5QkMsTUFBTSxFQUFFQyxRQUFRO0lBQUksSUFBSUQsVUFBVSxNQUFNLE9BQU8sQ0FBQztJQUFHLElBQUlFLFNBQVNDLDhCQUE4QkgsUUFBUUM7SUFBVyxJQUFJRyxLQUFLQztJQUFHLElBQUlDLE9BQU9DLHFCQUFxQixFQUFFO1FBQUUsSUFBSUMsbUJBQW1CRixPQUFPQyxxQkFBcUIsQ0FBQ1A7UUFBUyxJQUFLSyxJQUFJLEdBQUdBLElBQUlHLGlCQUFpQkMsTUFBTSxFQUFFSixJQUFLO1lBQUVELE1BQU1JLGdCQUFnQixDQUFDSCxFQUFFO1lBQUUsSUFBSUosU0FBU1MsT0FBTyxDQUFDTixRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNFLE9BQU9LLFNBQVMsQ0FBQ0Msb0JBQW9CLENBQUNDLElBQUksQ0FBQ2IsUUFBUUksTUFBTTtZQUFVRixNQUFNLENBQUNFLElBQUksR0FBR0osTUFBTSxDQUFDSSxJQUFJO1FBQUU7SUFBRTtJQUFFLE9BQU9GO0FBQVE7QUFDM2UsU0FBU0MsOEJBQThCSCxNQUFNLEVBQUVDLFFBQVE7SUFBSSxJQUFJRCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUUsU0FBUyxDQUFDO0lBQUcsSUFBSyxJQUFJRSxPQUFPSixPQUFRO1FBQUUsSUFBSU0sT0FBT0ssU0FBUyxDQUFDRyxjQUFjLENBQUNELElBQUksQ0FBQ2IsUUFBUUksTUFBTTtZQUFFLElBQUlILFNBQVNTLE9BQU8sQ0FBQ04sUUFBUSxHQUFHO1lBQVVGLE1BQU0sQ0FBQ0UsSUFBSSxHQUFHSixNQUFNLENBQUNJLElBQUk7UUFBRTtJQUFFO0lBQUUsT0FBT0Y7QUFBUTtBQUN0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O1lBQ3hCO1FBQ0Y7SUFDRjtJQUNBLE9BQU82RDtBQUNULEVBQUU7QUFDSyxJQUFJTyxzQkFBc0IsU0FBU0Esb0JBQW9CQyxDQUFDO0lBQzdELElBQUl0RCxPQUFPc0QsS0FBS0EsRUFBRXRELElBQUk7SUFDdEIsSUFBSUEsUUFBUW5DLHVCQUF1QixDQUFDbUMsS0FBSyxFQUFFO1FBQ3pDLE9BQU9uQyx1QkFBdUIsQ0FBQ21DLEtBQUs7SUFDdEM7SUFDQSxPQUFPO0FBQ1QsRUFBRTtBQUNLLElBQUl1RCxrQkFBa0IsU0FBU0EsZ0JBQWdCNUQsS0FBSyxFQUFFTCxRQUFRO0lBQ25FLE9BQU9ELFFBQVFDLFVBQVVoRCxPQUFPLENBQUNxRDtBQUNuQyxFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL1JlYWN0VXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCJdLFxuICBfZXhjbHVkZWQyID0gW1wiY2hpbGRyZW5cIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc05pbCBmcm9tICdsb2Rhc2gvaXNOaWwnO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJ2xvZGFzaC9pc1N0cmluZyc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmltcG9ydCB7IENoaWxkcmVuLCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGlzRnJhZ21lbnQgfSBmcm9tICdyZWFjdC1pcyc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4vRGF0YVV0aWxzJztcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCB9IGZyb20gJy4vU2hhbGxvd0VxdWFsJztcbmltcG9ydCB7IEZpbHRlcmVkRWxlbWVudEtleU1hcCwgU1ZHRWxlbWVudFByb3BLZXlzLCBFdmVudEtleXMgfSBmcm9tICcuL3R5cGVzJztcbnZhciBSRUFDVF9CUk9XU0VSX0VWRU5UX01BUCA9IHtcbiAgY2xpY2s6ICdvbkNsaWNrJyxcbiAgbW91c2Vkb3duOiAnb25Nb3VzZURvd24nLFxuICBtb3VzZXVwOiAnb25Nb3VzZVVwJyxcbiAgbW91c2VvdmVyOiAnb25Nb3VzZU92ZXInLFxuICBtb3VzZW1vdmU6ICdvbk1vdXNlTW92ZScsXG4gIG1vdXNlb3V0OiAnb25Nb3VzZU91dCcsXG4gIG1vdXNlZW50ZXI6ICdvbk1vdXNlRW50ZXInLFxuICBtb3VzZWxlYXZlOiAnb25Nb3VzZUxlYXZlJyxcbiAgdG91Y2hjYW5jZWw6ICdvblRvdWNoQ2FuY2VsJyxcbiAgdG91Y2hlbmQ6ICdvblRvdWNoRW5kJyxcbiAgdG91Y2htb3ZlOiAnb25Ub3VjaE1vdmUnLFxuICB0b3VjaHN0YXJ0OiAnb25Ub3VjaFN0YXJ0JyxcbiAgY29udGV4dG1lbnU6ICdvbkNvbnRleHRNZW51JyxcbiAgZGJsY2xpY2s6ICdvbkRvdWJsZUNsaWNrJ1xufTtcbmV4cG9ydCB2YXIgU0NBTEVfVFlQRVMgPSBbJ2F1dG8nLCAnbGluZWFyJywgJ3BvdycsICdzcXJ0JywgJ2xvZycsICdpZGVudGl0eScsICd0aW1lJywgJ2JhbmQnLCAncG9pbnQnLCAnb3JkaW5hbCcsICdxdWFudGlsZScsICdxdWFudGl6ZScsICd1dGMnLCAnc2VxdWVudGlhbCcsICd0aHJlc2hvbGQnXTtcbmV4cG9ydCB2YXIgTEVHRU5EX1RZUEVTID0gWydwbGFpbmxpbmUnLCAnbGluZScsICdzcXVhcmUnLCAncmVjdCcsICdjaXJjbGUnLCAnY3Jvc3MnLCAnZGlhbW9uZCcsICdzdGFyJywgJ3RyaWFuZ2xlJywgJ3d5ZScsICdub25lJ107XG5leHBvcnQgdmFyIFRPT0xUSVBfVFlQRVMgPSBbJ25vbmUnXTtcblxuLyoqXG4gKiBHZXQgdGhlIGRpc3BsYXkgbmFtZSBvZiBhIGNvbXBvbmVudFxuICogQHBhcmFtICB7T2JqZWN0fSBDb21wIFNwZWNpZmllZCBDb21wb25lbnRcbiAqIEByZXR1cm4ge1N0cmluZ30gICAgICBEaXNwbGF5IG5hbWUgb2YgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCB2YXIgZ2V0RGlzcGxheU5hbWUgPSBmdW5jdGlvbiBnZXREaXNwbGF5TmFtZShDb21wKSB7XG4gIGlmICh0eXBlb2YgQ29tcCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gQ29tcDtcbiAgfVxuICBpZiAoIUNvbXApIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIENvbXAuZGlzcGxheU5hbWUgfHwgQ29tcC5uYW1lIHx8ICdDb21wb25lbnQnO1xufTtcblxuLy8gYHRvQXJyYXlgIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGR1cmluZyB0aGUgcmVuZGVyXG4vLyBzbyB3ZSBjYW4gbWVtb2l6ZSBsYXN0IGludm9jYXRpb24gKHNpbmNlIHJlZmVyZW5jZSB0byBgY2hpbGRyZW5gIGlzIHRoZSBzYW1lKVxudmFyIGxhc3RDaGlsZHJlbiA9IG51bGw7XG52YXIgbGFzdFJlc3VsdCA9IG51bGw7XG5leHBvcnQgdmFyIHRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4gIGlmIChjaGlsZHJlbiA9PT0gbGFzdENoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkobGFzdFJlc3VsdCkpIHtcbiAgICByZXR1cm4gbGFzdFJlc3VsdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIENoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIGlmIChpc05pbChjaGlsZCkpIHJldHVybjtcbiAgICBpZiAoaXNGcmFnbWVudChjaGlsZCkpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodG9BcnJheShjaGlsZC5wcm9wcy5jaGlsZHJlbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoaXMgY291bGQgc3RpbGwgYmUgSXRlcmFibGU8UmVhY3ROb2RlPiBhbmQgVFMgZG9lcyBub3QgbGlrZSB0aGF0XG4gICAgICByZXN1bHQucHVzaChjaGlsZCk7XG4gICAgfVxuICB9KTtcbiAgbGFzdFJlc3VsdCA9IHJlc3VsdDtcbiAgbGFzdENoaWxkcmVuID0gY2hpbGRyZW47XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKlxuICogRmluZCBhbmQgcmV0dXJuIGFsbCBtYXRjaGVkIGNoaWxkcmVuIGJ5IHR5cGUuXG4gKiBgdHlwZWAgbXVzdCBiZSBhIFJlYWN0LkNvbXBvbmVudFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIHR5cGUpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgdHlwZXMgPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICB0eXBlcyA9IHR5cGUubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUodCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdHlwZXMgPSBbZ2V0RGlzcGxheU5hbWUodHlwZSldO1xuICB9XG4gIHRvQXJyYXkoY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgdmFyIGNoaWxkVHlwZSA9IGdldChjaGlsZCwgJ3R5cGUuZGlzcGxheU5hbWUnKSB8fCBnZXQoY2hpbGQsICd0eXBlLm5hbWUnKTtcbiAgICBpZiAodHlwZXMuaW5kZXhPZihjaGlsZFR5cGUpICE9PSAtMSkge1xuICAgICAgcmVzdWx0LnB1c2goY2hpbGQpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qXG4gKiBSZXR1cm4gdGhlIGZpcnN0IG1hdGNoZWQgY2hpbGQgYnkgdHlwZSwgcmV0dXJuIG51bGwgb3RoZXJ3aXNlLlxuICogYHR5cGVgIG11c3QgYmUgYSBSZWFjdC5Db21wb25lbnRUeXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIHR5cGUpIHtcbiAgdmFyIHJlc3VsdCA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIHR5cGUpO1xuICByZXR1cm4gcmVzdWx0ICYmIHJlc3VsdFswXTtcbn1cblxuLypcbiAqIENyZWF0ZSBhIG5ldyBhcnJheSBvZiBjaGlsZHJlbiBleGNsdWRpbmcgdGhlIG9uZXMgbWF0Y2hlZCB0aGUgdHlwZVxuICovXG5leHBvcnQgdmFyIHdpdGhvdXRUeXBlID0gZnVuY3Rpb24gd2l0aG91dFR5cGUoY2hpbGRyZW4sIHR5cGUpIHtcbiAgdmFyIG5ld0NoaWxkcmVuID0gW107XG4gIHZhciB0eXBlcztcbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICB0eXBlcyA9IHR5cGUubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUodCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdHlwZXMgPSBbZ2V0RGlzcGxheU5hbWUodHlwZSldO1xuICB9XG4gIHRvQXJyYXkoY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgdmFyIGRpc3BsYXlOYW1lID0gZ2V0KGNoaWxkLCAndHlwZS5kaXNwbGF5TmFtZScpO1xuICAgIGlmIChkaXNwbGF5TmFtZSAmJiB0eXBlcy5pbmRleE9mKGRpc3BsYXlOYW1lKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbmV3Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gIH0pO1xuICByZXR1cm4gbmV3Q2hpbGRyZW47XG59O1xuXG4vKipcbiAqIHZhbGlkYXRlIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHByb3BzIG9mIGEgY2hhcnQgZWxlbWVudFxuICogQHBhcmFtICB7T2JqZWN0fSBlbCBBIGNoYXJ0IGVsZW1lbnRcbiAqIEByZXR1cm4ge0Jvb2xlYW59ICAgdHJ1ZSBJZiB0aGUgcHJvcHMgd2lkdGggYW5kIGhlaWdodCBhcmUgbnVtYmVyLCBhbmQgZ3JlYXRlciB0aGFuIDBcbiAqL1xuZXhwb3J0IHZhciB2YWxpZGF0ZVdpZHRoSGVpZ2h0ID0gZnVuY3Rpb24gdmFsaWRhdGVXaWR0aEhlaWdodChlbCkge1xuICBpZiAoIWVsIHx8ICFlbC5wcm9wcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgX2VsJHByb3BzID0gZWwucHJvcHMsXG4gICAgd2lkdGggPSBfZWwkcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gX2VsJHByb3BzLmhlaWdodDtcbiAgaWYgKCFpc051bWJlcih3aWR0aCkgfHwgd2lkdGggPD0gMCB8fCAhaXNOdW1iZXIoaGVpZ2h0KSB8fCBoZWlnaHQgPD0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgU1ZHX1RBR1MgPSBbJ2EnLCAnYWx0R2x5cGgnLCAnYWx0R2x5cGhEZWYnLCAnYWx0R2x5cGhJdGVtJywgJ2FuaW1hdGUnLCAnYW5pbWF0ZUNvbG9yJywgJ2FuaW1hdGVNb3Rpb24nLCAnYW5pbWF0ZVRyYW5zZm9ybScsICdjaXJjbGUnLCAnY2xpcFBhdGgnLCAnY29sb3ItcHJvZmlsZScsICdjdXJzb3InLCAnZGVmcycsICdkZXNjJywgJ2VsbGlwc2UnLCAnZmVCbGVuZCcsICdmZUNvbG9ybWF0cml4JywgJ2ZlQ29tcG9uZW50VHJhbnNmZXInLCAnZmVDb21wb3NpdGUnLCAnZmVDb252b2x2ZU1hdHJpeCcsICdmZURpZmZ1c2VMaWdodGluZycsICdmZURpc3BsYWNlbWVudE1hcCcsICdmZURpc3RhbnRMaWdodCcsICdmZUZsb29kJywgJ2ZlRnVuY0EnLCAnZmVGdW5jQicsICdmZUZ1bmNHJywgJ2ZlRnVuY1InLCAnZmVHYXVzc2lhbkJsdXInLCAnZmVJbWFnZScsICdmZU1lcmdlJywgJ2ZlTWVyZ2VOb2RlJywgJ2ZlTW9ycGhvbG9neScsICdmZU9mZnNldCcsICdmZVBvaW50TGlnaHQnLCAnZmVTcGVjdWxhckxpZ2h0aW5nJywgJ2ZlU3BvdExpZ2h0JywgJ2ZlVGlsZScsICdmZVR1cmJ1bGVuY2UnLCAnZmlsdGVyJywgJ2ZvbnQnLCAnZm9udC1mYWNlJywgJ2ZvbnQtZmFjZS1mb3JtYXQnLCAnZm9udC1mYWNlLW5hbWUnLCAnZm9udC1mYWNlLXVybCcsICdmb3JlaWduT2JqZWN0JywgJ2cnLCAnZ2x5cGgnLCAnZ2x5cGhSZWYnLCAnaGtlcm4nLCAnaW1hZ2UnLCAnbGluZScsICdsaW5lR3JhZGllbnQnLCAnbWFya2VyJywgJ21hc2snLCAnbWV0YWRhdGEnLCAnbWlzc2luZy1nbHlwaCcsICdtcGF0aCcsICdwYXRoJywgJ3BhdHRlcm4nLCAncG9seWdvbicsICdwb2x5bGluZScsICdyYWRpYWxHcmFkaWVudCcsICdyZWN0JywgJ3NjcmlwdCcsICdzZXQnLCAnc3RvcCcsICdzdHlsZScsICdzdmcnLCAnc3dpdGNoJywgJ3N5bWJvbCcsICd0ZXh0JywgJ3RleHRQYXRoJywgJ3RpdGxlJywgJ3RyZWYnLCAndHNwYW4nLCAndXNlJywgJ3ZpZXcnLCAndmtlcm4nXTtcbnZhciBpc1N2Z0VsZW1lbnQgPSBmdW5jdGlvbiBpc1N2Z0VsZW1lbnQoY2hpbGQpIHtcbiAgcmV0dXJuIGNoaWxkICYmIGNoaWxkLnR5cGUgJiYgaXNTdHJpbmcoY2hpbGQudHlwZSkgJiYgU1ZHX1RBR1MuaW5kZXhPZihjaGlsZC50eXBlKSA+PSAwO1xufTtcbmV4cG9ydCB2YXIgaGFzQ2xpcERvdCA9IGZ1bmN0aW9uIGhhc0NsaXBEb3QoZG90KSB7XG4gIHJldHVybiBkb3QgJiYgX3R5cGVvZihkb3QpID09PSAnb2JqZWN0JyAmJiAnY2xpcERvdCcgaW4gZG90O1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkIHRvIHNwcmVhZCBvbnRvIGFuIFNWRyBlbGVtZW50IG9yIG9udG8gYSBzcGVjaWZpYyBjb21wb25lbnRcbiAqIEBwYXJhbSB7dW5rbm93bn0gcHJvcGVydHkgcHJvcGVydHkgdmFsdWUgY3VycmVudGx5IGJlaW5nIGNvbXBhcmVkXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHByb3BlcnR5IGtleSBjdXJyZW50bHkgYmVpbmcgY29tcGFyZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUV2ZW50cyBpZiBldmVudHMgYXJlIGluY2x1ZGVkIGluIHNwcmVhZGFibGUgcHJvcHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc3ZnRWxlbWVudFR5cGUgY2hlY2tzIGFnYWluc3QgbWFwIG9mIFNWRyBlbGVtZW50IHR5cGVzIHRvIGF0dHJpYnV0ZXNcbiAqIEByZXR1cm5zIHtib29sZWFufSBpcyBwcm9wIHZhbGlkXG4gKi9cbmV4cG9ydCB2YXIgaXNWYWxpZFNwcmVhZGFibGVQcm9wID0gZnVuY3Rpb24gaXNWYWxpZFNwcmVhZGFibGVQcm9wKHByb3BlcnR5LCBrZXksIGluY2x1ZGVFdmVudHMsIHN2Z0VsZW1lbnRUeXBlKSB7XG4gIHZhciBfRmlsdGVyZWRFbGVtZW50S2V5TWE7XG4gIC8qKlxuICAgKiBJZiB0aGUgc3ZnIGVsZW1lbnQgdHlwZSBpcyBleHBsaWNpdGx5IGluY2x1ZGVkLCBjaGVjayBhZ2FpbnN0IHRoZSBmaWx0ZXJlZCBlbGVtZW50IGtleSBtYXBcbiAgICogdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIG9ubHkgZXhpc3Qgb24gdGhhdCBlbGVtZW50IHR5cGUuXG4gICAqIEB0b2RvIEFkZCBhbiBpbnRlcm5hbCBjanMgdmVyc2lvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vd29vb3JtL3N2Zy1lbGVtZW50LWF0dHJpYnV0ZXMgZm9yIGZ1bGwgY292ZXJhZ2UuXG4gICAqL1xuICB2YXIgbWF0Y2hpbmdFbGVtZW50VHlwZUtleXMgPSAoX0ZpbHRlcmVkRWxlbWVudEtleU1hID0gRmlsdGVyZWRFbGVtZW50S2V5TWFwID09PSBudWxsIHx8IEZpbHRlcmVkRWxlbWVudEtleU1hcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogRmlsdGVyZWRFbGVtZW50S2V5TWFwW3N2Z0VsZW1lbnRUeXBlXSkgIT09IG51bGwgJiYgX0ZpbHRlcmVkRWxlbWVudEtleU1hICE9PSB2b2lkIDAgPyBfRmlsdGVyZWRFbGVtZW50S2V5TWEgOiBbXTtcbiAgcmV0dXJuIGtleS5zdGFydHNXaXRoKCdkYXRhLScpIHx8ICFpc0Z1bmN0aW9uKHByb3BlcnR5KSAmJiAoc3ZnRWxlbWVudFR5cGUgJiYgbWF0Y2hpbmdFbGVtZW50VHlwZUtleXMuaW5jbHVkZXMoa2V5KSB8fCBTVkdFbGVtZW50UHJvcEtleXMuaW5jbHVkZXMoa2V5KSkgfHwgaW5jbHVkZUV2ZW50cyAmJiBFdmVudEtleXMuaW5jbHVkZXMoa2V5KTtcbn07XG5cbi8qKlxuICogRmlsdGVyIGFsbCB0aGUgc3ZnIGVsZW1lbnRzIG9mIGNoaWxkcmVuXG4gKiBAcGFyYW0gIHtBcnJheX0gY2hpbGRyZW4gVGhlIGNoaWxkcmVuIG9mIGEgcmVhY3QgZWxlbWVudFxuICogQHJldHVybiB7QXJyYXl9ICAgICAgICAgIEFsbCB0aGUgc3ZnIGVsZW1lbnRzXG4gKi9cbmV4cG9ydCB2YXIgZmlsdGVyU3ZnRWxlbWVudHMgPSBmdW5jdGlvbiBmaWx0ZXJTdmdFbGVtZW50cyhjaGlsZHJlbikge1xuICB2YXIgc3ZnRWxlbWVudHMgPSBbXTtcbiAgdG9BcnJheShjaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICBpZiAoaXNTdmdFbGVtZW50KGVudHJ5KSkge1xuICAgICAgc3ZnRWxlbWVudHMucHVzaChlbnRyeSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHN2Z0VsZW1lbnRzO1xufTtcbmV4cG9ydCB2YXIgZmlsdGVyUHJvcHMgPSBmdW5jdGlvbiBmaWx0ZXJQcm9wcyhwcm9wcywgaW5jbHVkZUV2ZW50cywgc3ZnRWxlbWVudFR5cGUpIHtcbiAgaWYgKCFwcm9wcyB8fCB0eXBlb2YgcHJvcHMgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHByb3BzID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgaW5wdXRQcm9wcyA9IHByb3BzO1xuICBpZiAoIC8qI19fUFVSRV9fKi9pc1ZhbGlkRWxlbWVudChwcm9wcykpIHtcbiAgICBpbnB1dFByb3BzID0gcHJvcHMucHJvcHM7XG4gIH1cbiAgaWYgKCFpc09iamVjdChpbnB1dFByb3BzKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBvdXQgPSB7fTtcblxuICAvKipcbiAgICogUHJvcHMgYXJlIGJsaW5kbHkgc3ByZWFkIG9udG8gU1ZHIGVsZW1lbnRzLiBUaGlzIGxvb3AgZmlsdGVycyBvdXQgcHJvcGVydGllcyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gc3ByZWFkLlxuICAgKiBJdGVtcyBmaWx0ZXJlZCBvdXQgYXJlIGFzIGZvbGxvd3M6XG4gICAqICAgLSBmdW5jdGlvbnMgaW4gcHJvcGVydGllcyB0aGF0IGFyZSBTVkcgYXR0cmlidXRlcyAoZnVuY3Rpb25zIGFyZSBpbmNsdWRlZCB3aGVuIGluY2x1ZGVFdmVudHMgaXMgdHJ1ZSlcbiAgICogICAtIHByb3BzIHRoYXQgYXJlIFNWRyBhdHRyaWJ1dGVzIGJ1dCBkb24ndCBtYXRjaGVkIHRoZSBwYXNzZWQgc3ZnRWxlbWVudFR5cGVcbiAgICogICAtIGFueSBwcm9wIHRoYXQgaXMgbm90IGluIFNWR0VsZW1lbnRQcm9wS2V5cyAob3IgaW4gRXZlbnRLZXlzIGlmIGluY2x1ZGVFdmVudHMgaXMgdHJ1ZSlcbiAgICovXG4gIE9iamVjdC5rZXlzKGlucHV0UHJvcHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBfaW5wdXRQcm9wcztcbiAgICBpZiAoaXNWYWxpZFNwcmVhZGFibGVQcm9wKChfaW5wdXRQcm9wcyA9IGlucHV0UHJvcHMpID09PSBudWxsIHx8IF9pbnB1dFByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaW5wdXRQcm9wc1trZXldLCBrZXksIGluY2x1ZGVFdmVudHMsIHN2Z0VsZW1lbnRUeXBlKSkge1xuICAgICAgb3V0W2tleV0gPSBpbnB1dFByb3BzW2tleV07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG91dDtcbn07XG5cbi8qKlxuICogV2V0aGVyIHByb3BzIG9mIGNoaWxkcmVuIGNoYW5nZWRcbiAqIEBwYXJhbSAge09iamVjdH0gbmV4dENoaWxkcmVuIFRoZSBsYXRlc3QgY2hpbGRyZW5cbiAqIEBwYXJhbSAge09iamVjdH0gcHJldkNoaWxkcmVuIFRoZSBwcmV2IGNoaWxkcmVuXG4gKiBAcmV0dXJuIHtCb29sZWFufSAgICAgICAgICAgICBlcXVhbCBvciBub3RcbiAqL1xuZXhwb3J0IHZhciBpc0NoaWxkcmVuRXF1YWwgPSBmdW5jdGlvbiBpc0NoaWxkcmVuRXF1YWwobmV4dENoaWxkcmVuLCBwcmV2Q2hpbGRyZW4pIHtcbiAgaWYgKG5leHRDaGlsZHJlbiA9PT0gcHJldkNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIGNvdW50ID0gQ2hpbGRyZW4uY291bnQobmV4dENoaWxkcmVuKTtcbiAgaWYgKGNvdW50ICE9PSBDaGlsZHJlbi5jb3VudChwcmV2Q2hpbGRyZW4pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChjb3VudCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChjb3VudCA9PT0gMSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICByZXR1cm4gaXNTaW5nbGVDaGlsZEVxdWFsKEFycmF5LmlzQXJyYXkobmV4dENoaWxkcmVuKSA/IG5leHRDaGlsZHJlblswXSA6IG5leHRDaGlsZHJlbiwgQXJyYXkuaXNBcnJheShwcmV2Q2hpbGRyZW4pID8gcHJldkNoaWxkcmVuWzBdIDogcHJldkNoaWxkcmVuKTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICB2YXIgbmV4dENoaWxkID0gbmV4dENoaWxkcmVuW2ldO1xuICAgIHZhciBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW5baV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV4dENoaWxkKSB8fCBBcnJheS5pc0FycmF5KHByZXZDaGlsZCkpIHtcbiAgICAgIGlmICghaXNDaGlsZHJlbkVxdWFsKG5leHRDaGlsZCwgcHJldkNoaWxkKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgfSBlbHNlIGlmICghaXNTaW5nbGVDaGlsZEVxdWFsKG5leHRDaGlsZCwgcHJldkNoaWxkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5leHBvcnQgdmFyIGlzU2luZ2xlQ2hpbGRFcXVhbCA9IGZ1bmN0aW9uIGlzU2luZ2xlQ2hpbGRFcXVhbChuZXh0Q2hpbGQsIHByZXZDaGlsZCkge1xuICBpZiAoaXNOaWwobmV4dENoaWxkKSAmJiBpc05pbChwcmV2Q2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKCFpc05pbChuZXh0Q2hpbGQpICYmICFpc05pbChwcmV2Q2hpbGQpKSB7XG4gICAgdmFyIF9yZWYgPSBuZXh0Q2hpbGQucHJvcHMgfHwge30sXG4gICAgICBuZXh0Q2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuLFxuICAgICAgbmV4dFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gICAgdmFyIF9yZWYyID0gcHJldkNoaWxkLnByb3BzIHx8IHt9LFxuICAgICAgcHJldkNoaWxkcmVuID0gX3JlZjIuY2hpbGRyZW4sXG4gICAgICBwcmV2UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjIsIF9leGNsdWRlZDIpO1xuICAgIGlmIChuZXh0Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gc2hhbGxvd0VxdWFsKG5leHRQcm9wcywgcHJldlByb3BzKSAmJiBpc0NoaWxkcmVuRXF1YWwobmV4dENoaWxkcmVuLCBwcmV2Q2hpbGRyZW4pO1xuICAgIH1cbiAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gc2hhbGxvd0VxdWFsKG5leHRQcm9wcywgcHJldlByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgdmFyIHJlbmRlckJ5T3JkZXIgPSBmdW5jdGlvbiByZW5kZXJCeU9yZGVyKGNoaWxkcmVuLCByZW5kZXJNYXApIHtcbiAgdmFyIGVsZW1lbnRzID0gW107XG4gIHZhciByZWNvcmQgPSB7fTtcbiAgdG9BcnJheShjaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgaWYgKGlzU3ZnRWxlbWVudChjaGlsZCkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goY2hpbGQpO1xuICAgIH0gZWxzZSBpZiAoY2hpbGQpIHtcbiAgICAgIHZhciBkaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lKGNoaWxkLnR5cGUpO1xuICAgICAgdmFyIF9yZWYzID0gcmVuZGVyTWFwW2Rpc3BsYXlOYW1lXSB8fCB7fSxcbiAgICAgICAgaGFuZGxlciA9IF9yZWYzLmhhbmRsZXIsXG4gICAgICAgIG9uY2UgPSBfcmVmMy5vbmNlO1xuICAgICAgaWYgKGhhbmRsZXIgJiYgKCFvbmNlIHx8ICFyZWNvcmRbZGlzcGxheU5hbWVdKSkge1xuICAgICAgICB2YXIgcmVzdWx0cyA9IGhhbmRsZXIoY2hpbGQsIGRpc3BsYXlOYW1lLCBpbmRleCk7XG4gICAgICAgIGVsZW1lbnRzLnB1c2gocmVzdWx0cyk7XG4gICAgICAgIHJlY29yZFtkaXNwbGF5TmFtZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBlbGVtZW50cztcbn07XG5leHBvcnQgdmFyIGdldFJlYWN0RXZlbnRCeVR5cGUgPSBmdW5jdGlvbiBnZXRSZWFjdEV2ZW50QnlUeXBlKGUpIHtcbiAgdmFyIHR5cGUgPSBlICYmIGUudHlwZTtcbiAgaWYgKHR5cGUgJiYgUkVBQ1RfQlJPV1NFUl9FVkVOVF9NQVBbdHlwZV0pIHtcbiAgICByZXR1cm4gUkVBQ1RfQlJPV1NFUl9FVkVOVF9NQVBbdHlwZV07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuZXhwb3J0IHZhciBwYXJzZUNoaWxkSW5kZXggPSBmdW5jdGlvbiBwYXJzZUNoaWxkSW5kZXgoY2hpbGQsIGNoaWxkcmVuKSB7XG4gIHJldHVybiB0b0FycmF5KGNoaWxkcmVuKS5pbmRleE9mKGNoaWxkKTtcbn07Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwia2V5IiwiaSIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwicHJvdG90eXBlIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjYWxsIiwiaGFzT3duUHJvcGVydHkiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJnZXQiLCJpc05pbCIsImlzU3RyaW5nIiwiaXNGdW5jdGlvbiIsImlzT2JqZWN0IiwiQ2hpbGRyZW4iLCJpc1ZhbGlkRWxlbWVudCIsImlzRnJhZ21lbnQiLCJpc051bWJlciIsInNoYWxsb3dFcXVhbCIsIkZpbHRlcmVkRWxlbWVudEtleU1hcCIsIlNWR0VsZW1lbnRQcm9wS2V5cyIsIkV2ZW50S2V5cyIsIlJFQUNUX0JST1dTRVJfRVZFTlRfTUFQIiwiY2xpY2siLCJtb3VzZWRvd24iLCJtb3VzZXVwIiwibW91c2VvdmVyIiwibW91c2Vtb3ZlIiwibW91c2VvdXQiLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInRvdWNoY2FuY2VsIiwidG91Y2hlbmQiLCJ0b3VjaG1vdmUiLCJ0b3VjaHN0YXJ0IiwiY29udGV4dG1lbnUiLCJkYmxjbGljayIsIlNDQUxFX1RZUEVTIiwiTEVHRU5EX1RZUEVTIiwiVE9PTFRJUF9UWVBFUyIsImdldERpc3BsYXlOYW1lIiwiQ29tcCIsImRpc3BsYXlOYW1lIiwibmFtZSIsImxhc3RDaGlsZHJlbiIsImxhc3RSZXN1bHQiLCJ0b0FycmF5IiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJyZXN1bHQiLCJmb3JFYWNoIiwiY2hpbGQiLCJjb25jYXQiLCJwcm9wcyIsInB1c2giLCJmaW5kQWxsQnlUeXBlIiwidHlwZSIsInR5cGVzIiwibWFwIiwidCIsImNoaWxkVHlwZSIsImZpbmRDaGlsZEJ5VHlwZSIsIndpdGhvdXRUeXBlIiwibmV3Q2hpbGRyZW4iLCJ2YWxpZGF0ZVdpZHRoSGVpZ2h0IiwiZWwiLCJfZWwkcHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsIlNWR19UQUdTIiwiaXNTdmdFbGVtZW50IiwiaGFzQ2xpcERvdCIsImRvdCIsImlzVmFsaWRTcHJlYWRhYmxlUHJvcCIsInByb3BlcnR5IiwiaW5jbHVkZUV2ZW50cyIsInN2Z0VsZW1lbnRUeXBlIiwiX0ZpbHRlcmVkRWxlbWVudEtleU1hIiwibWF0Y2hpbmdFbGVtZW50VHlwZUtleXMiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJmaWx0ZXJTdmdFbGVtZW50cyIsInN2Z0VsZW1lbnRzIiwiZW50cnkiLCJmaWx0ZXJQcm9wcyIsImlucHV0UHJvcHMiLCJvdXQiLCJrZXlzIiwiX2lucHV0UHJvcHMiLCJpc0NoaWxkcmVuRXF1YWwiLCJuZXh0Q2hpbGRyZW4iLCJwcmV2Q2hpbGRyZW4iLCJjb3VudCIsImlzU2luZ2xlQ2hpbGRFcXVhbCIsIm5leHRDaGlsZCIsInByZXZDaGlsZCIsIl9yZWYiLCJuZXh0UHJvcHMiLCJfcmVmMiIsInByZXZQcm9wcyIsInJlbmRlckJ5T3JkZXIiLCJyZW5kZXJNYXAiLCJlbGVtZW50cyIsInJlY29yZCIsImluZGV4IiwiX3JlZjMiLCJoYW5kbGVyIiwib25jZSIsInJlc3VsdHMiLCJnZXRSZWFjdEV2ZW50QnlUeXBlIiwiZSIsInBhcnNlQ2hpbGRJbmRleCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/ReduceCSSCalc.js":
/*!*********************************************************!*\
!*** ./node_modules/recharts/es6/util/ReduceCSSCalc.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ reduceCSSCalc: () => (/* binding */ reduceCSSCalc),\n/* harmony export */ safeEvaluateExpression: () => (/* binding */ safeEvaluateExpression)\n/* harmony export */ });\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nvar MULTIPLY_OR_DIVIDE_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([*/])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar ADD_OR_SUBTRACT_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([+-])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar CSS_LENGTH_UNIT_REGEX = /^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/;\nvar NUM_SPLIT_REGEX = /(-?\\d+(?:\\.\\d+)?)([a-zA-Z%]+)?/;\nvar CONVERSION_RATES = {\n cm: 96 / 2.54,\n mm: 96 / 25.4,\n pt: 96 / 72,\n pc: 96 / 6,\n \"in\": 96,\n Q: 96 / (2.54 * 40),\n px: 1\n};\nvar FIXED_CSS_LENGTH_UNITS = Object.keys(CONVERSION_RATES);\nvar STR_NAN = 'NaN';\nfunction convertToPx(value, unit) {\n return value * CONVERSION_RATES[unit];\n}\nvar DecimalCSS = /*#__PURE__*/ function() {\n function DecimalCSS(num, unit) {\n _classCallCheck(this, DecimalCSS);\n this.num = num;\n this.unit = unit;\n this.num = num;\n this.unit = unit;\n if (Number.isNaN(num)) {\n this.unit = '';\n }\n if (unit !== '' && !CSS_LENGTH_UNIT_REGEX.test(unit)) {\n this.num = NaN;\n this.unit = '';\n }\n if (FIXED_CSS_LENGTH_UNITS.includes(unit)) {\n this.num = convertToPx(num, unit);\n this.unit = 'px';\n }\n }\n return _createClass(DecimalCSS, [\n {\n key: \"add\",\n value: function add(other) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num + other.num, this.unit);\n }\n },\n {\n key: \"subtract\",\n value: function subtract(other) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num - other.num, this.unit);\n }\n },\n {\n key: \"multiply\",\n value: function multiply(other) {\n if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num * other.num, this.unit || other.unit);\n }\n },\n {\n key: \"divide\",\n value: function divide(other) {\n if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num / other.num, this.unit || other.unit);\n }\n },\n {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.num).concat(this.unit);\n }\n },\n {\n key: \"isNaN\",\n value: function isNaN() {\n return Number.isNaN(this.num);\n }\n }\n ], [\n {\n key: \"parse\",\n value: function parse(str) {\n var _NUM_SPLIT_REGEX$exec;\n var _ref = (_NUM_SPLIT_REGEX$exec = NUM_SPLIT_REGEX.exec(str)) !== null && _NUM_SPLIT_REGEX$exec !== void 0 ? _NUM_SPLIT_REGEX$exec : [], _ref2 = _slicedToArray(_ref, 3), numStr = _ref2[1], unit = _ref2[2];\n return new DecimalCSS(parseFloat(numStr), unit !== null && unit !== void 0 ? unit : '');\n }\n }\n ]);\n}();\nfunction calculateArithmetic(expr) {\n if (expr.includes(STR_NAN)) {\n return STR_NAN;\n }\n var newExpr = expr;\n while(newExpr.includes('*') || newExpr.includes('/')){\n var _MULTIPLY_OR_DIVIDE_R;\n var _ref3 = (_MULTIPLY_OR_DIVIDE_R = MULTIPLY_OR_DIVIDE_REGEX.exec(newExpr)) !== null && _MULTIPLY_OR_DIVIDE_R !== void 0 ? _MULTIPLY_OR_DIVIDE_R : [], _ref4 = _slicedToArray(_ref3, 4), leftOperand = _ref4[1], operator = _ref4[2], rightOperand = _ref4[3];\n var lTs = DecimalCSS.parse(leftOperand !== null && leftOperand !== void 0 ? leftOperand : '');\n var rTs = DecimalCSS.parse(rightOperand !== null && rightOperand !== void 0 ? rightOperand : '');\n var result = operator === '*' ? lTs.multiply(rTs) : lTs.divide(rTs);\n if (result.isNaN()) {\n return STR_NAN;\n }\n newExpr = newExpr.replace(MULTIPLY_OR_DIVIDE_REGEX, result.toString());\n }\n while(newExpr.includes('+') || /.-\\d+(?:\\.\\d+)?/.test(newExpr)){\n var _ADD_OR_SUBTRACT_REGE;\n var _ref5 = (_ADD_OR_SUBTRACT_REGE = ADD_OR_SUBTRACT_REGEX.exec(newExpr)) !== null && _ADD_OR_SUBTRACT_REGE !== void 0 ? _ADD_OR_SUBTRACT_REGE : [], _ref6 = _slicedToArray(_ref5, 4), _leftOperand = _ref6[1], _operator = _ref6[2], _rightOperand = _ref6[3];\n var _lTs = DecimalCSS.parse(_leftOperand !== null && _leftOperand !== void 0 ? _leftOperand : '');\n var _rTs = DecimalCSS.parse(_rightOperand !== null && _rightOperand !== void 0 ? _rightOperand : '');\n var _result = _operator === '+' ? _lTs.add(_rTs) : _lTs.subtract(_rTs);\n if (_result.isNaN()) {\n return STR_NAN;\n }\n newExpr = newExpr.replace(ADD_OR_SUBTRACT_REGEX, _result.toString());\n }\n return newExpr;\n}\nvar PARENTHESES_REGEX = /\\(([^()]*)\\)/;\nfunction calculateParentheses(expr) {\n var newExpr = expr;\n while(newExpr.includes('(')){\n var _PARENTHESES_REGEX$ex = PARENTHESES_REGEX.exec(newExpr), _PARENTHESES_REGEX$ex2 = _slicedToArray(_PARENTHESES_REGEX$ex, 2), parentheticalExpression = _PARENTHESES_REGEX$ex2[1];\n newExpr = newExpr.replace(PARENTHESES_REGEX, calculateArithmetic(parentheticalExpression));\n }\n return newExpr;\n}\nfunction evaluateExpression(expression) {\n var newExpr = expression.replace(/\\s+/g, '');\n newExpr = calculateParentheses(newExpr);\n newExpr = calculateArithmetic(newExpr);\n return newExpr;\n}\nfunction safeEvaluateExpression(expression) {\n try {\n return evaluateExpression(expression);\n } catch (e) {\n /* istanbul ignore next */ return STR_NAN;\n }\n}\nfunction reduceCSSCalc(expression) {\n var result = safeEvaluateExpression(expression.slice(5, -1));\n if (result === STR_NAN) {\n // notify the user\n return '';\n }\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvUmVkdWNlQ1NTQ2FsYy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxlQUFlQyxHQUFHLEVBQUVDLENBQUM7SUFBSSxPQUFPQyxnQkFBZ0JGLFFBQVFHLHNCQUFzQkgsS0FBS0MsTUFBTUcsNEJBQTRCSixLQUFLQyxNQUFNSTtBQUFvQjtBQUM3SixTQUFTQTtJQUFxQixNQUFNLElBQUlDLFVBQVU7QUFBOEk7QUFDaE0sU0FBU0YsNEJBQTRCVixDQUFDLEVBQUVhLE1BQU07SUFBSSxJQUFJLENBQUNiLEdBQUc7SUFBUSxJQUFJLE9BQU9BLE1BQU0sVUFBVSxPQUFPYyxrQkFBa0JkLEdBQUdhO0lBQVMsSUFBSUUsSUFBSUMsT0FBT1osU0FBUyxDQUFDYSxRQUFRLENBQUNDLElBQUksQ0FBQ2xCLEdBQUdtQixLQUFLLENBQUMsR0FBRyxDQUFDO0lBQUksSUFBSUosTUFBTSxZQUFZZixFQUFFRyxXQUFXLEVBQUVZLElBQUlmLEVBQUVHLFdBQVcsQ0FBQ2lCLElBQUk7SUFBRSxJQUFJTCxNQUFNLFNBQVNBLE1BQU0sT0FBTyxPQUFPTSxNQUFNQyxJQUFJLENBQUN0QjtJQUFJLElBQUllLE1BQU0sZUFBZSwyQ0FBMkNRLElBQUksQ0FBQ1IsSUFBSSxPQUFPRCxrQkFBa0JkLEdBQUdhO0FBQVM7QUFDL1osU0FBU0Msa0JBQWtCUixHQUFHLEVBQUVrQixH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QUNUO0FBQ0Y7QUFDTyxTQUFTb0QsY0FBY0YsVUFBVTtJQUN0QyxJQUFJakIsU0FBU2tCLHVCQUF1QkQsV0FBV3ZHLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDekQsSUFBSXNGLFdBQVdqQyxTQUFTO1FBQ3RCLGtCQUFrQjtRQUNsQixPQUFPO0lBQ1Q7SUFDQSxPQUFPaUM7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9SZWR1Y2VDU1NDYWxjLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbnZhciBNVUxUSVBMWV9PUl9ESVZJREVfUkVHRVggPSAvKC0/XFxkKyg/OlxcLlxcZCspP1thLXpBLVolXSopKFsqL10pKC0/XFxkKyg/OlxcLlxcZCspP1thLXpBLVolXSopLztcbnZhciBBRERfT1JfU1VCVFJBQ1RfUkVHRVggPSAvKC0/XFxkKyg/OlxcLlxcZCspP1thLXpBLVolXSopKFsrLV0pKC0/XFxkKyg/OlxcLlxcZCspP1thLXpBLVolXSopLztcbnZhciBDU1NfTEVOR1RIX1VOSVRfUkVHRVggPSAvXnB4fGNtfHZofHZ3fGVtfHJlbXwlfG1tfGlufHB0fHBjfGV4fGNofHZtaW58dm1heHxRJC87XG52YXIgTlVNX1NQTElUX1JFR0VYID0gLygtP1xcZCsoPzpcXC5cXGQrKT8pKFthLXpBLVolXSspPy87XG52YXIgQ09OVkVSU0lPTl9SQVRFUyA9IHtcbiAgY206IDk2IC8gMi41NCxcbiAgbW06IDk2IC8gMjUuNCxcbiAgcHQ6IDk2IC8gNzIsXG4gIHBjOiA5NiAvIDYsXG4gIFwiaW5cIjogOTYsXG4gIFE6IDk2IC8gKDIuNTQgKiA0MCksXG4gIHB4OiAxXG59O1xudmFyIEZJWEVEX0NTU19MRU5HVEhfVU5JVFMgPSBPYmplY3Qua2V5cyhDT05WRVJTSU9OX1JBVEVTKTtcbnZhciBTVFJfTkFOID0gJ05hTic7XG5mdW5jdGlvbiBjb252ZXJ0VG9QeCh2YWx1ZSwgdW5pdCkge1xuICByZXR1cm4gdmFsdWUgKiBDT05WRVJTSU9OX1JBVEVTW3VuaXRdO1xufVxudmFyIERlY2ltYWxDU1MgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBEZWNpbWFsQ1NTKG51bSwgdW5pdCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEZWNpbWFsQ1NTKTtcbiAgICB0aGlzLm51bSA9IG51bTtcbiAgICB0aGlzLnVuaXQgPSB1bml0O1xuICAgIHRoaXMubnVtID0gbnVtO1xuICAgIHRoaXMudW5pdCA9IHVuaXQ7XG4gICAgaWYgKE51bWJlci5pc05hTihudW0pKSB7XG4gICAgICB0aGlzLnVuaXQgPSAnJztcbiAgICB9XG4gICAgaWYgKHVuaXQgIT09ICcnICYmICFDU1NfTEVOR1RIX1VOSVRfUkVHRVgudGVzdCh1bml0KSkge1xuICAgICAgdGhpcy5udW0gPSBOYU47XG4gICAgICB0aGlzLnVuaXQgPSAnJztcbiAgICB9XG4gICAgaWYgKEZJWEVEX0NTU19MRU5HVEhfVU5JVFMuaW5jbHVkZXModW5pdCkpIHtcbiAgICAgIHRoaXMubnVtID0gY29udmVydFRvUHgobnVtLCB1bml0KTtcbiAgICAgIHRoaXMudW5pdCA9ICdweCc7XG4gICAgfVxuICB9XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoRGVjaW1hbENTUywgW3tcbiAgICBrZXk6IFwiYWRkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZChvdGhlcikge1xuICAgICAgaWYgKHRoaXMudW5pdCAhPT0gb3RoZXIudW5pdCkge1xuICAgICAgICByZXR1cm4gbmV3IERlY2ltYWxDU1MoTmFOLCAnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IERlY2ltYWxDU1ModGhpcy5udW0gKyBvdGhlci5udW0sIHRoaXMudW5pdCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN1YnRyYWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YnRyYWN0KG90aGVyKSB7XG4gICAgICBpZiAodGhpcy51bml0ICE9PSBvdGhlci51bml0KSB7XG4gICAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyhOYU4sICcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyh0aGlzLm51bSAtIG90aGVyLm51bSwgdGhpcy51bml0KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibXVsdGlwbHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbXVsdGlwbHkob3RoZXIpIHtcbiAgICAgIGlmICh0aGlzLnVuaXQgIT09ICcnICYmIG90aGVyLnVuaXQgIT09ICcnICYmIHRoaXMudW5pdCAhPT0gb3RoZXIudW5pdCkge1xuICAgICAgICByZXR1cm4gbmV3IERlY2ltYWxDU1MoTmFOLCAnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IERlY2ltYWxDU1ModGhpcy5udW0gKiBvdGhlci5udW0sIHRoaXMudW5pdCB8fCBvdGhlci51bml0KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGl2aWRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpdmlkZShvdGhlcikge1xuICAgICAgaWYgKHRoaXMudW5pdCAhPT0gJycgJiYgb3RoZXIudW5pdCAhPT0gJycgJiYgdGhpcy51bml0ICE9PSBvdGhlci51bml0KSB7XG4gICAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyhOYU4sICcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyh0aGlzLm51bSAvIG90aGVyLm51bSwgdGhpcy51bml0IHx8IG90aGVyLnVuaXQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh0aGlzLm51bSkuY29uY2F0KHRoaXMudW5pdCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzTmFOXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzTmFOKCkge1xuICAgICAgcmV0dXJuIE51bWJlci5pc05hTih0aGlzLm51bSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2Uoc3RyKSB7XG4gICAgICB2YXIgX05VTV9TUExJVF9SRUdFWCRleGVjO1xuICAgICAgdmFyIF9yZWYgPSAoX05VTV9TUExJVF9SRUdFWCRleGVjID0gTlVNX1NQTElUX1JFR0VYLmV4ZWMoc3RyKSkgIT09IG51bGwgJiYgX05VTV9TUExJVF9SRUdFWCRleGVjICE9PSB2b2lkIDAgPyBfTlVNX1NQTElUX1JFR0VYJGV4ZWMgOiBbXSxcbiAgICAgICAgX3JlZjIgPSBfc2xpY2VkVG9BcnJheShfcmVmLCAzKSxcbiAgICAgICAgbnVtU3RyID0gX3JlZjJbMV0sXG4gICAgICAgIHVuaXQgPSBfcmVmMlsyXTtcbiAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyhwYXJzZUZsb2F0KG51bVN0ciksIHVuaXQgIT09IG51bGwgJiYgdW5pdCAhPT0gdm9pZCAwID8gdW5pdCA6ICcnKTtcbiAgICB9XG4gIH1dKTtcbn0oKTtcbmZ1bmN0aW9uIGNhbGN1bGF0ZUFyaXRobWV0aWMoZXhwcikge1xuICBpZiAoZXhwci5pbmNsdWRlcyhTVFJfTkFOKSkge1xuICAgIHJldHVybiBTVFJfTkFOO1xuICB9XG4gIHZhciBuZXdFeHByID0gZXhwcjtcbiAgd2hpbGUgKG5ld0V4cHIuaW5jbHVkZXMoJyonKSB8fCBuZXdFeHByLmluY2x1ZGVzKCcvJykpIHtcbiAgICB2YXIgX01VTFRJUExZX09SX0RJVklERV9SO1xuICAgIHZhciBfcmVmMyA9IChfTVVMVElQTFlfT1JfRElWSURFX1IgPSBNVUxUSVBMWV9PUl9ESVZJREVfUkVHRVguZXhlYyhuZXdFeHByKSkgIT09IG51bGwgJiYgX01VTFRJUExZX09SX0RJVklERV9SICE9PSB2b2lkIDAgPyBfTVVMVElQTFlfT1JfRElWSURFX1IgOiBbXSxcbiAgICAgIF9yZWY0ID0gX3NsaWNlZFRvQXJyYXkoX3JlZjMsIDQpLFxuICAgICAgbGVmdE9wZXJhbmQgPSBfcmVmNFsxXSxcbiAgICAgIG9wZXJhdG9yID0gX3JlZjRbMl0sXG4gICAgICByaWdodE9wZXJhbmQgPSBfcmVmNFszXTtcbiAgICB2YXIgbFRzID0gRGVjaW1hbENTUy5wYXJzZShsZWZ0T3BlcmFuZCAhPT0gbnVsbCAmJiBsZWZ0T3BlcmFuZCAhPT0gdm9pZCAwID8gbGVmdE9wZXJhbmQgOiAnJyk7XG4gICAgdmFyIHJUcyA9IERlY2ltYWxDU1MucGFyc2UocmlnaHRPcGVyYW5kICE9PSBudWxsICYmIHJpZ2h0T3BlcmFuZCAhPT0gdm9pZCAwID8gcmlnaHRPcGVyYW5kIDogJycpO1xuICAgIHZhciByZXN1bHQgPSBvcGVyYXRvciA9PT0gJyonID8gbFRzLm11bHRpcGx5KHJUcykgOiBsVHMuZGl2aWRlKHJUcyk7XG4gICAgaWYgKHJlc3VsdC5pc05hTigpKSB7XG4gICAgICByZXR1cm4gU1RSX05BTjtcbiAgICB9XG4gICAgbmV3RXhwciA9IG5ld0V4cHIucmVwbGFjZShNVUxUSVBMWV9PUl9ESVZJREVfUkVHRVgsIHJlc3VsdC50b1N0cmluZygpKTtcbiAgfVxuICB3aGlsZSAobmV3RXhwci5pbmNsdWRlcygnKycpIHx8IC8uLVxcZCsoPzpcXC5cXGQrKT8vLnRlc3QobmV3RXhwcikpIHtcbiAgICB2YXIgX0FERF9PUl9TVUJUUkFDVF9SRUdFO1xuICAgIHZhciBfcmVmNSA9IChfQUREX09SX1NVQlRSQUNUX1JFR0UgPSBBRERfT1JfU1VCVFJBQ1RfUkVHRVguZXhlYyhuZXdFeHByKSkgIT09IG51bGwgJiYgX0FERF9PUl9TVUJUUkFDVF9SRUdFICE9PSB2b2lkIDAgPyBfQUREX09SX1NVQlRSQUNUX1JFR0UgOiBbXSxcbiAgICAgIF9yZWY2ID0gX3NsaWNlZFRvQXJyYXkoX3JlZjUsIDQpLFxuICAgICAgX2xlZnRPcGVyYW5kID0gX3JlZjZbMV0sXG4gICAgICBfb3BlcmF0b3IgPSBfcmVmNlsyXSxcbiAgICAgIF9yaWdodE9wZXJhbmQgPSBfcmVmNlszXTtcbiAgICB2YXIgX2xUcyA9IERlY2ltYWxDU1MucGFyc2UoX2xlZnRPcGVyYW5kICE9PSBudWxsICYmIF9sZWZ0T3BlcmFuZCAhPT0gdm9pZCAwID8gX2xlZnRPcGVyYW5kIDogJycpO1xuICAgIHZhciBfclRzID0gRGVjaW1hbENTUy5wYXJzZShfcmlnaHRPcGVyYW5kICE9PSBudWxsICYmIF9yaWdodE9wZXJhbmQgIT09IHZvaWQgMCA/IF9yaWdodE9wZXJhbmQgOiAnJyk7XG4gICAgdmFyIF9yZXN1bHQgPSBfb3BlcmF0b3IgPT09ICcrJyA/IF9sVHMuYWRkKF9yVHMpIDogX2xUcy5zdWJ0cmFjdChfclRzKTtcbiAgICBpZiAoX3Jlc3VsdC5pc05hTigpKSB7XG4gICAgICByZXR1cm4gU1RSX05BTjtcbiAgICB9XG4gICAgbmV3RXhwciA9IG5ld0V4cHIucmVwbGFjZShBRERfT1JfU1VCVFJBQ1RfUkVHRVgsIF9yZXN1bHQudG9TdHJpbmcoKSk7XG4gIH1cbiAgcmV0dXJuIG5ld0V4cHI7XG59XG52YXIgUEFSRU5USEVTRVNfUkVHRVggPSAvXFwoKFteKCldKilcXCkvO1xuZnVuY3Rpb24gY2FsY3VsYXRlUGFyZW50aGVzZXMoZXhwcikge1xuICB2YXIgbmV3RXhwciA9IGV4cHI7XG4gIHdoaWxlIChuZXdFeHByLmluY2x1ZGVzKCcoJykpIHtcbiAgICB2YXIgX1BBUkVOVEhFU0VTX1JFR0VYJGV4ID0gUEFSRU5USEVTRVNfUkVHRVguZXhlYyhuZXdFeHByKSxcbiAgICAgIF9QQVJFTlRIRVNFU19SRUdFWCRleDIgPSBfc2xpY2VkVG9BcnJheShfUEFSRU5USEVTRVNfUkVHRVgkZXgsIDIpLFxuICAgICAgcGFyZW50aGV0aWNhbEV4cHJlc3Npb24gPSBfUEFSRU5USEVTRVNfUkVHRVgkZXgyWzFdO1xuICAgIG5ld0V4cHIgPSBuZXdFeHByLnJlcGxhY2UoUEFSRU5USEVTRVNfUkVHRVgsIGNhbGN1bGF0ZUFyaXRobWV0aWMocGFyZW50aGV0aWNhbEV4cHJlc3Npb24pKTtcbiAgfVxuICByZXR1cm4gbmV3RXhwcjtcbn1cbmZ1bmN0aW9uIGV2YWx1YXRlRXhwcmVzc2lvbihleHByZXNzaW9uKSB7XG4gIHZhciBuZXdFeHByID0gZXhwcmVzc2lvbi5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgbmV3RXhwciA9IGNhbGN1bGF0ZVBhcmVudGhlc2VzKG5ld0V4cHIpO1xuICBuZXdFeHByID0gY2FsY3VsYXRlQXJpdGhtZXRpYyhuZXdFeHByKTtcbiAgcmV0dXJuIG5ld0V4cHI7XG59XG5leHBvcnQgZnVuY3Rpb24gc2FmZUV2YWx1YXRlRXhwcmVzc2lvbihleHByZXNzaW9uKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGV2YWx1YXRlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIFNUUl9OQU47XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VDU1NDYWxjKGV4cHJlc3Npb24pIHtcbiAgdmFyIHJlc3VsdCA9IHNhZmVFdmFsdWF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbi5zbGljZSg1LCAtMSkpO1xuICBpZiAocmVzdWx0ID09PSBTVFJfTkFOKSB7XG4gICAgLy8gbm90aWZ5IHRoZSB1c2VyXG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiaSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJPYmplY3QiLCJ0b1N0cmluZyIsImNhbGwiLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwibGVuZ3RoIiwiYXJyMiIsInIiLCJsIiwidCIsImUiLCJ1IiwiYSIsImYiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImlzQXJyYXkiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJNVUxUSVBMWV9PUl9ESVZJREVfUkVHRVgiLCJBRERfT1JfU1VCVFJBQ1RfUkVHRVgiLCJDU1NfTEVOR1RIX1VOSVRfUkVHRVgiLCJOVU1fU1BMSVRfUkVHRVgiLCJDT05WRVJTSU9OX1JBVEVTIiwiY20iLCJtbSIsInB0IiwicGMiLCJRIiwicHgiLCJGSVhFRF9DU1NfTEVOR1RIX1VOSVRTIiwia2V5cyIsIlNUUl9OQU4iLCJjb252ZXJ0VG9QeCIsInVuaXQiLCJEZWNpbWFsQ1NTIiwibnVtIiwiaXNOYU4iLCJOYU4iLCJpbmNsdWRlcyIsImFkZCIsIm90aGVyIiwic3VidHJhY3QiLCJtdWx0aXBseSIsImRpdmlkZSIsImNvbmNhdCIsInBhcnNlIiwic3RyIiwiX05VTV9TUExJVF9SRUdFWCRleGVjIiwiX3JlZiIsImV4ZWMiLCJfcmVmMiIsIm51bVN0ciIsInBhcnNlRmxvYXQiLCJjYWxjdWxhdGVBcml0aG1ldGljIiwiZXhwciIsIm5ld0V4cHIiLCJfTVVMVElQTFlfT1JfRElWSURFX1IiLCJfcmVmMyIsIl9yZWY0IiwibGVmdE9wZXJhbmQiLCJvcGVyYXRvciIsInJpZ2h0T3BlcmFuZCIsImxUcyIsInJUcyIsInJlc3VsdCIsInJlcGxhY2UiLCJfQUREX09SX1NVQlRSQUNUX1JFR0UiLCJfcmVmNSIsIl9yZWY2IiwiX2xlZnRPcGVyYW5kIiwiX29wZXJhdG9yIiwiX3JpZ2h0T3BlcmFuZCIsIl9sVHMiLCJfclRzIiwiX3Jlc3VsdCIsIlBBUkVOVEhFU0VTX1JFR0VYIiwiY2FsY3VsYXRlUGFyZW50aGVzZXMiLCJfUEFSRU5USEVTRVNfUkVHRVgkZXgiLCJfUEFSRU5USEVTRVNfUkVHRVgkZXgyIiwicGFyZW50aGV0aWNhbEV4cHJlc3Npb24iLCJldmFsdWF0ZUV4cHJlc3Npb24iLCJleHByZXNzaW9uIiwic2FmZUV2YWx1YXRlRXhwcmVzc2lvbiIsInJlZHVjZUNTU0NhbGMiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ReduceCSSCalc.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/ShallowEqual.js":
/*!********************************************************!*\
!*** ./node_modules/recharts/es6/util/ShallowEqual.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ shallowEqual: () => (/* binding */ shallowEqual)\n/* harmony export */ });\nfunction shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */ for(var key in a){\n if (({}).hasOwnProperty.call(a, key) && (!({}).hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n for(var _key in b){\n if (({}).hasOwnProperty.call(b, _key) && !({}).hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n return true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvU2hhbGxvd0VxdWFsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxTQUFTQSxhQUFhQyxDQUFDLEVBQUVDLENBQUM7SUFDL0IsdUNBQXVDLEdBQ3ZDLElBQUssSUFBSUMsT0FBT0YsRUFBRztRQUNqQixJQUFJLEVBQUMsR0FBRUcsY0FBYyxDQUFDQyxJQUFJLENBQUNKLEdBQUdFLFFBQVMsRUFBQyxFQUFDLEdBQUVDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxHQUFHQyxRQUFRRixDQUFDLENBQUNFLElBQUksS0FBS0QsQ0FBQyxDQUFDQyxJQUFJLEdBQUc7WUFDNUYsT0FBTztRQUNUO0lBQ0Y7SUFDQSxJQUFLLElBQUlHLFFBQVFKLEVBQUc7UUFDbEIsSUFBSSxFQUFDLEdBQUVFLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxHQUFHSSxTQUFTLENBQUMsRUFBQyxHQUFFRixjQUFjLENBQUNDLElBQUksQ0FBQ0osR0FBR0ssT0FBTztZQUN2RSxPQUFPO1FBQ1Q7SUFDRjtJQUNBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9TaGFsbG93RXF1YWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHNoYWxsb3dFcXVhbChhLCBiKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4gIGZvciAodmFyIGtleSBpbiBhKSB7XG4gICAgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwoYSwga2V5KSAmJiAoIXt9Lmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5KSB8fCBhW2tleV0gIT09IGJba2V5XSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgX2tleSBpbiBiKSB7XG4gICAgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwoYiwgX2tleSkgJiYgIXt9Lmhhc093blByb3BlcnR5LmNhbGwoYSwgX2tleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59Il0sIm5hbWVzIjpbInNoYWxsb3dFcXVhbCIsImEiLCJiIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiX2tleSJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ShallowEqual.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/TickUtils.js":
/*!*****************************************************!*\
!*** ./node_modules/recharts/es6/util/TickUtils.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAngledTickWidth: () => (/* binding */ getAngledTickWidth),\n/* harmony export */ getNumberIntervalTicks: () => (/* binding */ getNumberIntervalTicks),\n/* harmony export */ getTickBoundaries: () => (/* binding */ getTickBoundaries),\n/* harmony export */ isVisible: () => (/* binding */ isVisible)\n/* harmony export */ });\n/* harmony import */ var _CartesianUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CartesianUtils */ \"(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\");\n/* harmony import */ var _getEveryNthWithCondition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getEveryNthWithCondition */ \"(ssr)/./node_modules/recharts/es6/util/getEveryNthWithCondition.js\");\n\n\nfunction getAngledTickWidth(contentSize, unitSize, angle) {\n var size = {\n width: contentSize.width + unitSize.width,\n height: contentSize.height + unitSize.height\n };\n return (0,_CartesianUtils__WEBPACK_IMPORTED_MODULE_0__.getAngledRectangleWidth)(size, angle);\n}\nfunction getTickBoundaries(viewBox, sign, sizeKey) {\n var isWidth = sizeKey === 'width';\n var x = viewBox.x, y = viewBox.y, width = viewBox.width, height = viewBox.height;\n if (sign === 1) {\n return {\n start: isWidth ? x : y,\n end: isWidth ? x + width : y + height\n };\n }\n return {\n start: isWidth ? x + width : y + height,\n end: isWidth ? x : y\n };\n}\nfunction isVisible(sign, tickPosition, getSize, start, end) {\n /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating\n * the tick's size. */ if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {\n return false;\n }\n var size = getSize();\n return sign * (tickPosition - sign * size / 2 - start) >= 0 && sign * (tickPosition + sign * size / 2 - end) <= 0;\n}\nfunction getNumberIntervalTicks(ticks, interval) {\n return (0,_getEveryNthWithCondition__WEBPACK_IMPORTED_MODULE_1__.getEveryNthWithCondition)(ticks, interval + 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvVGlja1V0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEyRDtBQUNXO0FBQy9ELFNBQVNFLG1CQUFtQkMsV0FBVyxFQUFFQyxRQUFRLEVBQUVDLEtBQUs7SUFDN0QsSUFBSUMsT0FBTztRQUNUQyxPQUFPSixZQUFZSSxLQUFLLEdBQUdILFNBQVNHLEtBQUs7UUFDekNDLFFBQVFMLFlBQVlLLE1BQU0sR0FBR0osU0FBU0ksTUFBTTtJQUM5QztJQUNBLE9BQU9SLHdFQUF1QkEsQ0FBQ00sTUFBTUQ7QUFDdkM7QUFDTyxTQUFTSSxrQkFBa0JDLE9BQU8sRUFBRUMsSUFBSSxFQUFFQyxPQUFPO0lBQ3RELElBQUlDLFVBQVVELFlBQVk7SUFDMUIsSUFBSUUsSUFBSUosUUFBUUksQ0FBQyxFQUNmQyxJQUFJTCxRQUFRSyxDQUFDLEVBQ2JSLFFBQVFHLFFBQVFILEtBQUssRUFDckJDLFNBQVNFLFFBQVFGLE1BQU07SUFDekIsSUFBSUcsU0FBUyxHQUFHO1FBQ2QsT0FBTztZQUNMSyxPQUFPSCxVQUFVQyxJQUFJQztZQUNyQkUsS0FBS0osVUFBVUMsSUFBSVAsUUFBUVEsSUFBSVA7UUFDakM7SUFDRjtJQUNBLE9BQU87UUFDTFEsT0FBT0gsVUFBVUMsSUFBSVAsUUFBUVEsSUFBSVA7UUFDakNTLEtBQUtKLFVBQVVDLElBQUlDO0lBQ3JCO0FBQ0Y7QUFDTyxTQUFTRyxVQUFVUCxJQUFJLEVBQUVRLFlBQVksRUFBRUMsT0FBTyxFQUFFSixLQUFLLEVBQUVDLEdBQUc7SUFDL0Q7c0JBQ29CLEdBQ3BCLElBQUlOLE9BQU9RLGVBQWVSLE9BQU9LLFNBQVNMLE9BQU9RLGVBQWVSLE9BQU9NLEtBQUs7UUFDMUUsT0FBTztJQUNUO0lBQ0EsSUFBSVgsT0FBT2M7SUFDWCxPQUFPVCxPQUFRUSxDQUFBQSxlQUFlUixPQUFPTCxPQUFPLElBQUlVLEtBQUksS0FBTSxLQUFLTCxPQUFRUSxDQUFBQSxlQUFlUixPQUFPTCxPQUFPLElBQUlXLEdBQUUsS0FBTTtBQUNsSDtBQUNPLFNBQVNJLHVCQUF1QkMsS0FBSyxFQUFFQyxRQUFRO0lBQ3BELE9BQU90QixtRkFBd0JBLENBQUNxQixPQUFPQyxXQUFXO0FBQ3BEIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL1RpY2tVdGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRBbmdsZWRSZWN0YW5nbGVXaWR0aCB9IGZyb20gJy4vQ2FydGVzaWFuVXRpbHMnO1xuaW1wb3J0IHsgZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uIH0gZnJvbSAnLi9nZXRFdmVyeU50aFdpdGhDb25kaXRpb24nO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xlZFRpY2tXaWR0aChjb250ZW50U2l6ZSwgdW5pdFNpemUsIGFuZ2xlKSB7XG4gIHZhciBzaXplID0ge1xuICAgIHdpZHRoOiBjb250ZW50U2l6ZS53aWR0aCArIHVuaXRTaXplLndpZHRoLFxuICAgIGhlaWdodDogY29udGVudFNpemUuaGVpZ2h0ICsgdW5pdFNpemUuaGVpZ2h0XG4gIH07XG4gIHJldHVybiBnZXRBbmdsZWRSZWN0YW5nbGVXaWR0aChzaXplLCBhbmdsZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGlja0JvdW5kYXJpZXModmlld0JveCwgc2lnbiwgc2l6ZUtleSkge1xuICB2YXIgaXNXaWR0aCA9IHNpemVLZXkgPT09ICd3aWR0aCc7XG4gIHZhciB4ID0gdmlld0JveC54LFxuICAgIHkgPSB2aWV3Qm94LnksXG4gICAgd2lkdGggPSB2aWV3Qm94LndpZHRoLFxuICAgIGhlaWdodCA9IHZpZXdCb3guaGVpZ2h0O1xuICBpZiAoc2lnbiA9PT0gMSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFydDogaXNXaWR0aCA/IHggOiB5LFxuICAgICAgZW5kOiBpc1dpZHRoID8geCArIHdpZHRoIDogeSArIGhlaWdodFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogaXNXaWR0aCA/IHggKyB3aWR0aCA6IHkgKyBoZWlnaHQsXG4gICAgZW5kOiBpc1dpZHRoID8geCA6IHlcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1Zpc2libGUoc2lnbiwgdGlja1Bvc2l0aW9uLCBnZXRTaXplLCBzdGFydCwgZW5kKSB7XG4gIC8qIFNpbmNlIGdldFNpemUoKSBpcyBleHBlbnNpdmUgKGl0IHJlYWRzIHRoZSB0aWNrcycgc2l6ZSBmcm9tIHRoZSBET00pLCB3ZSBkbyB0aGlzIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGNhbGN1bGF0aW5nXG4gICAqIHRoZSB0aWNrJ3Mgc2l6ZS4gKi9cbiAgaWYgKHNpZ24gKiB0aWNrUG9zaXRpb24gPCBzaWduICogc3RhcnQgfHwgc2lnbiAqIHRpY2tQb3NpdGlvbiA+IHNpZ24gKiBlbmQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHNpemUgPSBnZXRTaXplKCk7XG4gIHJldHVybiBzaWduICogKHRpY2tQb3NpdGlvbiAtIHNpZ24gKiBzaXplIC8gMiAtIHN0YXJ0KSA+PSAwICYmIHNpZ24gKiAodGlja1Bvc2l0aW9uICsgc2lnbiAqIHNpemUgLyAyIC0gZW5kKSA8PSAwO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE51bWJlckludGVydmFsVGlja3ModGlja3MsIGludGVydmFsKSB7XG4gIHJldHVybiBnZXRFdmVyeU50aFdpdGhDb25kaXRpb24odGlja3MsIGludGVydmFsICsgMSk7XG59Il0sIm5hbWVzIjpbImdldEFuZ2xlZFJlY3RhbmdsZVdpZHRoIiwiZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uIiwiZ2V0QW5nbGVkVGlja1dpZHRoIiwiY29udGVudFNpemUiLCJ1bml0U2l6ZSIsImFuZ2xlIiwic2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwiZ2V0VGlja0JvdW5kYXJpZXMiLCJ2aWV3Qm94Iiwic2lnbiIsInNpemVLZXkiLCJpc1dpZHRoIiwieCIsInkiLCJzdGFydCIsImVuZCIsImlzVmlzaWJsZSIsInRpY2tQb3NpdGlvbiIsImdldFNpemUiLCJnZXROdW1iZXJJbnRlcnZhbFRpY2tzIiwidGlja3MiLCJpbnRlcnZhbCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/TickUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/calculateViewBox.js":
/*!************************************************************!*\
!*** ./node_modules/recharts/es6/util/calculateViewBox.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ calculateViewBox: () => (/* binding */ calculateViewBox)\n/* harmony export */ });\n/* harmony import */ var lodash_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/memoize */ \"(ssr)/./node_modules/lodash/memoize.js\");\n/* harmony import */ var lodash_memoize__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_memoize__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * This is memoized because the viewBox is unlikely to change often\n * - but because it is computed from offset, any change to it would re-render all children.\n *\n * And because we have many readers of the viewBox, and update it only rarely,\n * then let's optimize with memoization.\n */ var calculateViewBox = lodash_memoize__WEBPACK_IMPORTED_MODULE_0___default()(function(offset) {\n return {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n };\n}, function(offset) {\n return [\n 'l',\n offset.left,\n 't',\n offset.top,\n 'w',\n offset.width,\n 'h',\n offset.height\n ].join('');\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY2FsY3VsYXRlVmlld0JveC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBcUM7QUFDckM7Ozs7OztDQU1DLEdBQ00sSUFBSUMsbUJBQW1CRCxxREFBT0EsQ0FBQyxTQUFVRSxNQUFNO0lBQ3BELE9BQU87UUFDTEMsR0FBR0QsT0FBT0UsSUFBSTtRQUNkQyxHQUFHSCxPQUFPSSxHQUFHO1FBQ2JDLE9BQU9MLE9BQU9LLEtBQUs7UUFDbkJDLFFBQVFOLE9BQU9NLE1BQU07SUFDdkI7QUFDRixHQUFHLFNBQVVOLE1BQU07SUFDakIsT0FBTztRQUFDO1FBQUtBLE9BQU9FLElBQUk7UUFBRTtRQUFLRixPQUFPSSxHQUFHO1FBQUU7UUFBS0osT0FBT0ssS0FBSztRQUFFO1FBQUtMLE9BQU9NLE1BQU07S0FBQyxDQUFDQyxJQUFJLENBQUM7QUFDekYsR0FBRyIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9jYWxjdWxhdGVWaWV3Qm94LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcbi8qKlxuICogVGhpcyBpcyBtZW1vaXplZCBiZWNhdXNlIHRoZSB2aWV3Qm94IGlzIHVubGlrZWx5IHRvIGNoYW5nZSBvZnRlblxuICogLSBidXQgYmVjYXVzZSBpdCBpcyBjb21wdXRlZCBmcm9tIG9mZnNldCwgYW55IGNoYW5nZSB0byBpdCB3b3VsZCByZS1yZW5kZXIgYWxsIGNoaWxkcmVuLlxuICpcbiAqIEFuZCBiZWNhdXNlIHdlIGhhdmUgbWFueSByZWFkZXJzIG9mIHRoZSB2aWV3Qm94LCBhbmQgdXBkYXRlIGl0IG9ubHkgcmFyZWx5LFxuICogdGhlbiBsZXQncyBvcHRpbWl6ZSB3aXRoIG1lbW9pemF0aW9uLlxuICovXG5leHBvcnQgdmFyIGNhbGN1bGF0ZVZpZXdCb3ggPSBtZW1vaXplKGZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiBvZmZzZXQubGVmdCxcbiAgICB5OiBvZmZzZXQudG9wLFxuICAgIHdpZHRoOiBvZmZzZXQud2lkdGgsXG4gICAgaGVpZ2h0OiBvZmZzZXQuaGVpZ2h0XG4gIH07XG59LCBmdW5jdGlvbiAob2Zmc2V0KSB7XG4gIHJldHVybiBbJ2wnLCBvZmZzZXQubGVmdCwgJ3QnLCBvZmZzZXQudG9wLCAndycsIG9mZnNldC53aWR0aCwgJ2gnLCBvZmZzZXQuaGVpZ2h0XS5qb2luKCcnKTtcbn0pOyJdLCJuYW1lcyI6WyJtZW1vaXplIiwiY2FsY3VsYXRlVmlld0JveCIsIm9mZnNldCIsIngiLCJsZWZ0IiwieSIsInRvcCIsIndpZHRoIiwiaGVpZ2h0Iiwiam9pbiJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/calculateViewBox.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/cursor/getCursorPoints.js":
/*!******************************************************************!*\
!*** ./node_modules/recharts/es6/util/cursor/getCursorPoints.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCursorPoints: () => (/* binding */ getCursorPoints)\n/* harmony export */ });\n/* harmony import */ var _PolarUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\n/* harmony import */ var _getRadialCursorPoints__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getRadialCursorPoints */ \"(ssr)/./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js\");\n\n\nfunction getCursorPoints(layout, activeCoordinate, offset) {\n var x1, y1, x2, y2;\n if (layout === 'horizontal') {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === 'vertical') {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (activeCoordinate.cx != null && activeCoordinate.cy != null) {\n if (layout === 'centric') {\n var cx = activeCoordinate.cx, cy = activeCoordinate.cy, innerRadius = activeCoordinate.innerRadius, outerRadius = activeCoordinate.outerRadius, angle = activeCoordinate.angle;\n var innerPoint = (0,_PolarUtils__WEBPACK_IMPORTED_MODULE_0__.polarToCartesian)(cx, cy, innerRadius, angle);\n var outerPoint = (0,_PolarUtils__WEBPACK_IMPORTED_MODULE_0__.polarToCartesian)(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n return (0,_getRadialCursorPoints__WEBPACK_IMPORTED_MODULE_1__.getRadialCursorPoints)(activeCoordinate);\n }\n }\n return [\n {\n x: x1,\n y: y1\n },\n {\n x: x2,\n y: y2\n }\n ];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldEN1cnNvclBvaW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBaUQ7QUFDZTtBQUN6RCxTQUFTRSxnQkFBZ0JDLE1BQU0sRUFBRUMsZ0JBQWdCLEVBQUVDLE1BQU07SUFDOUQsSUFBSUMsSUFBSUMsSUFBSUMsSUFBSUM7SUFDaEIsSUFBSU4sV0FBVyxjQUFjO1FBQzNCRyxLQUFLRixpQkFBaUJNLENBQUM7UUFDdkJGLEtBQUtGO1FBQ0xDLEtBQUtGLE9BQU9NLEdBQUc7UUFDZkYsS0FBS0osT0FBT00sR0FBRyxHQUFHTixPQUFPTyxNQUFNO0lBQ2pDLE9BQU8sSUFBSVQsV0FBVyxZQUFZO1FBQ2hDSSxLQUFLSCxpQkFBaUJTLENBQUM7UUFDdkJKLEtBQUtGO1FBQ0xELEtBQUtELE9BQU9TLElBQUk7UUFDaEJOLEtBQUtILE9BQU9TLElBQUksR0FBR1QsT0FBT1UsS0FBSztJQUNqQyxPQUFPLElBQUlYLGlCQUFpQlksRUFBRSxJQUFJLFFBQVFaLGlCQUFpQmEsRUFBRSxJQUFJLE1BQU07UUFDckUsSUFBSWQsV0FBVyxXQUFXO1lBQ3hCLElBQUlhLEtBQUtaLGlCQUFpQlksRUFBRSxFQUMxQkMsS0FBS2IsaUJBQWlCYSxFQUFFLEVBQ3hCQyxjQUFjZCxpQkFBaUJjLFdBQVcsRUFDMUNDLGNBQWNmLGlCQUFpQmUsV0FBVyxFQUMxQ0MsUUFBUWhCLGlCQUFpQmdCLEtBQUs7WUFDaEMsSUFBSUMsYUFBYXJCLDZEQUFnQkEsQ0FBQ2dCLElBQUlDLElBQUlDLGFBQWFFO1lBQ3ZELElBQUlFLGFBQWF0Qiw2REFBZ0JBLENBQUNnQixJQUFJQyxJQUFJRSxhQUFhQztZQUN2RGQsS0FBS2UsV0FBV1gsQ0FBQztZQUNqQkgsS0FBS2MsV0FBV1IsQ0FBQztZQUNqQkwsS0FBS2MsV0FBV1osQ0FBQztZQUNqQkQsS0FBS2EsV0FBV1QsQ0FBQztRQUNuQixPQUFPO1lBQ0wsT0FBT1osNkVBQXFCQSxDQUFDRztRQUMvQjtJQUNGO0lBQ0EsT0FBTztRQUFDO1lBQ05NLEdBQUdKO1lBQ0hPLEdBQUdOO1FBQ0w7UUFBRztZQUNERyxHQUFHRjtZQUNISyxHQUFHSjtRQUNMO0tBQUU7QUFDSiIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9jdXJzb3IvZ2V0Q3Vyc29yUG9pbnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvbGFyVG9DYXJ0ZXNpYW4gfSBmcm9tICcuLi9Qb2xhclV0aWxzJztcbmltcG9ydCB7IGdldFJhZGlhbEN1cnNvclBvaW50cyB9IGZyb20gJy4vZ2V0UmFkaWFsQ3Vyc29yUG9pbnRzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJzb3JQb2ludHMobGF5b3V0LCBhY3RpdmVDb29yZGluYXRlLCBvZmZzZXQpIHtcbiAgdmFyIHgxLCB5MSwgeDIsIHkyO1xuICBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICB4MSA9IGFjdGl2ZUNvb3JkaW5hdGUueDtcbiAgICB4MiA9IHgxO1xuICAgIHkxID0gb2Zmc2V0LnRvcDtcbiAgICB5MiA9IG9mZnNldC50b3AgKyBvZmZzZXQuaGVpZ2h0O1xuICB9IGVsc2UgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgIHkxID0gYWN0aXZlQ29vcmRpbmF0ZS55O1xuICAgIHkyID0geTE7XG4gICAgeDEgPSBvZmZzZXQubGVmdDtcbiAgICB4MiA9IG9mZnNldC5sZWZ0ICsgb2Zmc2V0LndpZHRoO1xuICB9IGVsc2UgaWYgKGFjdGl2ZUNvb3JkaW5hdGUuY3ggIT0gbnVsbCAmJiBhY3RpdmVDb29yZGluYXRlLmN5ICE9IG51bGwpIHtcbiAgICBpZiAobGF5b3V0ID09PSAnY2VudHJpYycpIHtcbiAgICAgIHZhciBjeCA9IGFjdGl2ZUNvb3JkaW5hdGUuY3gsXG4gICAgICAgIGN5ID0gYWN0aXZlQ29vcmRpbmF0ZS5jeSxcbiAgICAgICAgaW5uZXJSYWRpdXMgPSBhY3RpdmVDb29yZGluYXRlLmlubmVyUmFkaXVzLFxuICAgICAgICBvdXRlclJhZGl1cyA9IGFjdGl2ZUNvb3JkaW5hdGUub3V0ZXJSYWRpdXMsXG4gICAgICAgIGFuZ2xlID0gYWN0aXZlQ29vcmRpbmF0ZS5hbmdsZTtcbiAgICAgIHZhciBpbm5lclBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIGlubmVyUmFkaXVzLCBhbmdsZSk7XG4gICAgICB2YXIgb3V0ZXJQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCBvdXRlclJhZGl1cywgYW5nbGUpO1xuICAgICAgeDEgPSBpbm5lclBvaW50Lng7XG4gICAgICB5MSA9IGlubmVyUG9pbnQueTtcbiAgICAgIHgyID0gb3V0ZXJQb2ludC54O1xuICAgICAgeTIgPSBvdXRlclBvaW50Lnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBnZXRSYWRpYWxDdXJzb3JQb2ludHMoYWN0aXZlQ29vcmRpbmF0ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbe1xuICAgIHg6IHgxLFxuICAgIHk6IHkxXG4gIH0sIHtcbiAgICB4OiB4MixcbiAgICB5OiB5MlxuICB9XTtcbn0iXSwibmFtZXMiOlsicG9sYXJUb0NhcnRlc2lhbiIsImdldFJhZGlhbEN1cnNvclBvaW50cyIsImdldEN1cnNvclBvaW50cyIsImxheW91dCIsImFjdGl2ZUNvb3JkaW5hdGUiLCJvZmZzZXQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsIngiLCJ0b3AiLCJoZWlnaHQiLCJ5IiwibGVmdCIsIndpZHRoIiwiY3giLCJjeSIsImlubmVyUmFkaXVzIiwib3V0ZXJSYWRpdXMiLCJhbmdsZSIsImlubmVyUG9pbnQiLCJvdXRlclBvaW50Il0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/cursor/getCursorPoints.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/cursor/getCursorRectangle.js":
/*!*********************************************************************!*\
!*** ./node_modules/recharts/es6/util/cursor/getCursorRectangle.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCursorRectangle: () => (/* binding */ getCursorRectangle)\n/* harmony export */ });\nfunction getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize) {\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldEN1cnNvclJlY3RhbmdsZS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sU0FBU0EsbUJBQW1CQyxNQUFNLEVBQUVDLGdCQUFnQixFQUFFQyxNQUFNLEVBQUVDLG1CQUFtQjtJQUN0RixJQUFJQyxXQUFXRCxzQkFBc0I7SUFDckMsT0FBTztRQUNMRSxRQUFRO1FBQ1JDLE1BQU07UUFDTkMsR0FBR1AsV0FBVyxlQUFlQyxpQkFBaUJNLENBQUMsR0FBR0gsV0FBV0YsT0FBT00sSUFBSSxHQUFHO1FBQzNFQyxHQUFHVCxXQUFXLGVBQWVFLE9BQU9RLEdBQUcsR0FBRyxNQUFNVCxpQkFBaUJRLENBQUMsR0FBR0w7UUFDckVPLE9BQU9YLFdBQVcsZUFBZUcsc0JBQXNCRCxPQUFPUyxLQUFLLEdBQUc7UUFDdEVDLFFBQVFaLFdBQVcsZUFBZUUsT0FBT1UsTUFBTSxHQUFHLElBQUlUO0lBQ3hEO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldEN1cnNvclJlY3RhbmdsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0Q3Vyc29yUmVjdGFuZ2xlKGxheW91dCwgYWN0aXZlQ29vcmRpbmF0ZSwgb2Zmc2V0LCB0b29sdGlwQXhpc0JhbmRTaXplKSB7XG4gIHZhciBoYWxmU2l6ZSA9IHRvb2x0aXBBeGlzQmFuZFNpemUgLyAyO1xuICByZXR1cm4ge1xuICAgIHN0cm9rZTogJ25vbmUnLFxuICAgIGZpbGw6ICcjY2NjJyxcbiAgICB4OiBsYXlvdXQgPT09ICdob3Jpem9udGFsJyA/IGFjdGl2ZUNvb3JkaW5hdGUueCAtIGhhbGZTaXplIDogb2Zmc2V0LmxlZnQgKyAwLjUsXG4gICAgeTogbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgPyBvZmZzZXQudG9wICsgMC41IDogYWN0aXZlQ29vcmRpbmF0ZS55IC0gaGFsZlNpemUsXG4gICAgd2lkdGg6IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gdG9vbHRpcEF4aXNCYW5kU2l6ZSA6IG9mZnNldC53aWR0aCAtIDEsXG4gICAgaGVpZ2h0OiBsYXlvdXQgPT09ICdob3Jpem9udGFsJyA/IG9mZnNldC5oZWlnaHQgLSAxIDogdG9vbHRpcEF4aXNCYW5kU2l6ZVxuICB9O1xufSJdLCJuYW1lcyI6WyJnZXRDdXJzb3JSZWN0YW5nbGUiLCJsYXlvdXQiLCJhY3RpdmVDb29yZGluYXRlIiwib2Zmc2V0IiwidG9vbHRpcEF4aXNCYW5kU2l6ZSIsImhhbGZTaXplIiwic3Ryb2tlIiwiZmlsbCIsIngiLCJsZWZ0IiwieSIsInRvcCIsIndpZHRoIiwiaGVpZ2h0Il0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/cursor/getCursorRectangle.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js":
/*!************************************************************************!*\
!*** ./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js ***!
\************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getRadialCursorPoints: () => (/* binding */ getRadialCursorPoints)\n/* harmony export */ });\n/* harmony import */ var _PolarUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\n\n/**\n * Only applicable for radial layouts\n * @param {Object} activeCoordinate ChartCoordinate\n * @returns {Object} RadialCursorPoints\n */ function getRadialCursorPoints(activeCoordinate) {\n var cx = activeCoordinate.cx, cy = activeCoordinate.cy, radius = activeCoordinate.radius, startAngle = activeCoordinate.startAngle, endAngle = activeCoordinate.endAngle;\n var startPoint = (0,_PolarUtils__WEBPACK_IMPORTED_MODULE_0__.polarToCartesian)(cx, cy, radius, startAngle);\n var endPoint = (0,_PolarUtils__WEBPACK_IMPORTED_MODULE_0__.polarToCartesian)(cx, cy, radius, endAngle);\n return {\n points: [\n startPoint,\n endPoint\n ],\n cx: cx,\n cy: cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldFJhZGlhbEN1cnNvclBvaW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFpRDtBQUNqRDs7OztDQUlDLEdBQ00sU0FBU0Msc0JBQXNCQyxnQkFBZ0I7SUFDcEQsSUFBSUMsS0FBS0QsaUJBQWlCQyxFQUFFLEVBQzFCQyxLQUFLRixpQkFBaUJFLEVBQUUsRUFDeEJDLFNBQVNILGlCQUFpQkcsTUFBTSxFQUNoQ0MsYUFBYUosaUJBQWlCSSxVQUFVLEVBQ3hDQyxXQUFXTCxpQkFBaUJLLFFBQVE7SUFDdEMsSUFBSUMsYUFBYVIsNkRBQWdCQSxDQUFDRyxJQUFJQyxJQUFJQyxRQUFRQztJQUNsRCxJQUFJRyxXQUFXVCw2REFBZ0JBLENBQUNHLElBQUlDLElBQUlDLFFBQVFFO0lBQ2hELE9BQU87UUFDTEcsUUFBUTtZQUFDRjtZQUFZQztTQUFTO1FBQzlCTixJQUFJQTtRQUNKQyxJQUFJQTtRQUNKQyxRQUFRQTtRQUNSQyxZQUFZQTtRQUNaQyxVQUFVQTtJQUNaO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldFJhZGlhbEN1cnNvclBvaW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb2xhclRvQ2FydGVzaWFuIH0gZnJvbSAnLi4vUG9sYXJVdGlscyc7XG4vKipcbiAqIE9ubHkgYXBwbGljYWJsZSBmb3IgcmFkaWFsIGxheW91dHNcbiAqIEBwYXJhbSB7T2JqZWN0fSBhY3RpdmVDb29yZGluYXRlIENoYXJ0Q29vcmRpbmF0ZVxuICogQHJldHVybnMge09iamVjdH0gUmFkaWFsQ3Vyc29yUG9pbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYWRpYWxDdXJzb3JQb2ludHMoYWN0aXZlQ29vcmRpbmF0ZSkge1xuICB2YXIgY3ggPSBhY3RpdmVDb29yZGluYXRlLmN4LFxuICAgIGN5ID0gYWN0aXZlQ29vcmRpbmF0ZS5jeSxcbiAgICByYWRpdXMgPSBhY3RpdmVDb29yZGluYXRlLnJhZGl1cyxcbiAgICBzdGFydEFuZ2xlID0gYWN0aXZlQ29vcmRpbmF0ZS5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gYWN0aXZlQ29vcmRpbmF0ZS5lbmRBbmdsZTtcbiAgdmFyIHN0YXJ0UG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgcmFkaXVzLCBzdGFydEFuZ2xlKTtcbiAgdmFyIGVuZFBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHJhZGl1cywgZW5kQW5nbGUpO1xuICByZXR1cm4ge1xuICAgIHBvaW50czogW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSxcbiAgICBjeDogY3gsXG4gICAgY3k6IGN5LFxuICAgIHJhZGl1czogcmFkaXVzLFxuICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGU6IGVuZEFuZ2xlXG4gIH07XG59Il0sIm5hbWVzIjpbInBvbGFyVG9DYXJ0ZXNpYW4iLCJnZXRSYWRpYWxDdXJzb3JQb2ludHMiLCJhY3RpdmVDb29yZGluYXRlIiwiY3giLCJjeSIsInJhZGl1cyIsInN0YXJ0QW5nbGUiLCJlbmRBbmdsZSIsInN0YXJ0UG9pbnQiLCJlbmRQb2ludCIsInBvaW50cyJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/getEveryNthWithCondition.js":
/*!********************************************************************!*\
!*** ./node_modules/recharts/es6/util/getEveryNthWithCondition.js ***!
\********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getEveryNthWithCondition: () => (/* binding */ getEveryNthWithCondition)\n/* harmony export */ });\n/**\n * Given an array and a number N, return a new array which contains every nTh\n * element of the input array. For n below 1, an empty array is returned.\n * If isValid is provided, all candidates must suffice the condition, else undefined is returned.\n * @param {T[]} array An input array.\n * @param {integer} n A number\n * @param {Function} isValid A function to evaluate a candidate form the array\n * @returns {T[]} The result array of the same type as the input array.\n */ function getEveryNthWithCondition(array, n, isValid) {\n if (n < 1) {\n return [];\n }\n if (n === 1 && isValid === undefined) {\n return array;\n }\n var result = [];\n for(var i = 0; i < array.length; i += n){\n if (isValid === undefined || isValid(array[i]) === true) {\n result.push(array[i]);\n } else {\n return undefined;\n }\n }\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Q0FRQyxHQUNNLFNBQVNBLHlCQUF5QkMsS0FBSyxFQUFFQyxDQUFDLEVBQUVDLE9BQU87SUFDeEQsSUFBSUQsSUFBSSxHQUFHO1FBQ1QsT0FBTyxFQUFFO0lBQ1g7SUFDQSxJQUFJQSxNQUFNLEtBQUtDLFlBQVlDLFdBQVc7UUFDcEMsT0FBT0g7SUFDVDtJQUNBLElBQUlJLFNBQVMsRUFBRTtJQUNmLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJTCxNQUFNTSxNQUFNLEVBQUVELEtBQUtKLEVBQUc7UUFDeEMsSUFBSUMsWUFBWUMsYUFBYUQsUUFBUUYsS0FBSyxDQUFDSyxFQUFFLE1BQU0sTUFBTTtZQUN2REQsT0FBT0csSUFBSSxDQUFDUCxLQUFLLENBQUNLLEVBQUU7UUFDdEIsT0FBTztZQUNMLE9BQU9GO1FBQ1Q7SUFDRjtJQUNBLE9BQU9DO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2l2ZW4gYW4gYXJyYXkgYW5kIGEgbnVtYmVyIE4sIHJldHVybiBhIG5ldyBhcnJheSB3aGljaCBjb250YWlucyBldmVyeSBuVGhcbiAqIGVsZW1lbnQgb2YgdGhlIGlucHV0IGFycmF5LiBGb3IgbiBiZWxvdyAxLCBhbiBlbXB0eSBhcnJheSBpcyByZXR1cm5lZC5cbiAqIElmIGlzVmFsaWQgaXMgcHJvdmlkZWQsIGFsbCBjYW5kaWRhdGVzIG11c3Qgc3VmZmljZSB0aGUgY29uZGl0aW9uLCBlbHNlIHVuZGVmaW5lZCBpcyByZXR1cm5lZC5cbiAqIEBwYXJhbSB7VFtdfSBhcnJheSBBbiBpbnB1dCBhcnJheS5cbiAqIEBwYXJhbSB7aW50ZWdlcn0gbiBBIG51bWJlclxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXNWYWxpZCBBIGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGEgY2FuZGlkYXRlIGZvcm0gdGhlIGFycmF5XG4gKiBAcmV0dXJucyB7VFtdfSBUaGUgcmVzdWx0IGFycmF5IG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGlucHV0IGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uKGFycmF5LCBuLCBpc1ZhbGlkKSB7XG4gIGlmIChuIDwgMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAobiA9PT0gMSAmJiBpc1ZhbGlkID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSArPSBuKSB7XG4gICAgaWYgKGlzVmFsaWQgPT09IHVuZGVmaW5lZCB8fCBpc1ZhbGlkKGFycmF5W2ldKSA9PT0gdHJ1ZSkge1xuICAgICAgcmVzdWx0LnB1c2goYXJyYXlbaV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSJdLCJuYW1lcyI6WyJnZXRFdmVyeU50aFdpdGhDb25kaXRpb24iLCJhcnJheSIsIm4iLCJpc1ZhbGlkIiwidW5kZWZpbmVkIiwicmVzdWx0IiwiaSIsImxlbmd0aCIsInB1c2giXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/getEveryNthWithCondition.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/getLegendProps.js":
/*!**********************************************************!*\
!*** ./node_modules/recharts/es6/util/getLegendProps.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getLegendProps: () => (/* binding */ getLegendProps)\n/* harmony export */ });\n/* harmony import */ var _component_Legend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../component/Legend */ \"(ssr)/./node_modules/recharts/es6/component/Legend.js\");\n/* harmony import */ var _ChartUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _ReactUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\nvar getLegendProps = function getLegendProps(_ref) {\n var children = _ref.children, formattedGraphicalItems = _ref.formattedGraphicalItems, legendWidth = _ref.legendWidth, legendContent = _ref.legendContent;\n var legendItem = (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_0__.findChildByType)(children, _component_Legend__WEBPACK_IMPORTED_MODULE_1__.Legend);\n if (!legendItem) {\n return null;\n }\n var legendDefaultProps = _component_Legend__WEBPACK_IMPORTED_MODULE_1__.Legend.defaultProps;\n var legendProps = legendDefaultProps !== undefined ? _objectSpread(_objectSpread({}, legendDefaultProps), legendItem.props) : {};\n var legendData;\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formattedGraphicalItems || []).reduce(function(result, _ref2) {\n var item = _ref2.item, props = _ref2.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function(entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formattedGraphicalItems || []).map(function(_ref3) {\n var item = _ref3.item;\n var itemDefaultProps = item.type.defaultProps;\n var itemProps = itemDefaultProps !== undefined ? _objectSpread(_objectSpread({}, itemDefaultProps), item.props) : {};\n var dataKey = itemProps.dataKey, name = itemProps.name, legendType = itemProps.legendType, hide = itemProps.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendProps.iconType || legendType || 'square',\n color: (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_2__.getMainColorOfGraphicItem)(item),\n value: name || dataKey,\n // @ts-expect-error property strokeDasharray is required in Payload but optional in props\n payload: itemProps\n };\n });\n }\n return _objectSpread(_objectSpread(_objectSpread({}, legendProps), _component_Legend__WEBPACK_IMPORTED_MODULE_1__.Legend.getWithHeight(legendItem, legendWidth)), {}, {\n payload: legendData,\n item: legendItem\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvZ2V0TGVnZW5kUHJvcHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0QsRUFB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QUUsRUFBRWtCLEdBQUcsQ0FBQyxTQUFVUSxLQUFLO1lBQzlELElBQUlaLE9BQU9ZLE1BQU1aLElBQUk7WUFDckIsSUFBSWEsbUJBQW1CYixLQUFLTSxJQUFJLENBQUNmLFlBQVk7WUFDN0MsSUFBSXVCLFlBQVlELHFCQUFxQnBCLFlBQVlsQyxjQUFjQSxjQUFjLENBQUMsR0FBR3NELG1CQUFtQmIsS0FBS04sS0FBSyxJQUFJLENBQUM7WUFDbkgsSUFBSXFCLFVBQVVELFVBQVVDLE9BQU8sRUFDN0JOLE9BQU9LLFVBQVVMLElBQUksRUFDckJELGFBQWFNLFVBQVVOLFVBQVUsRUFDakNRLE9BQU9GLFVBQVVFLElBQUk7WUFDdkIsT0FBTztnQkFDTEMsVUFBVUQ7Z0JBQ1ZELFNBQVNBO2dCQUNUVCxNQUFNZCxZQUFZZSxRQUFRLElBQUlDLGNBQWM7Z0JBQzVDRSxPQUFPN0Isc0VBQXlCQSxDQUFDbUI7Z0JBQ2pDL0IsT0FBT3dDLFFBQVFNO2dCQUNmLHlGQUF5RjtnQkFDekZuQixTQUFTa0I7WUFDWDtRQUNGO0lBQ0Y7SUFDQSxPQUFPdkQsY0FBY0EsY0FBY0EsY0FBYyxDQUFDLEdBQUdpQyxjQUFjWixxREFBTUEsQ0FBQ3NDLGFBQWEsQ0FBQzdCLFlBQVlGLGVBQWUsQ0FBQyxHQUFHO1FBQ3JIUyxTQUFTRDtRQUNUSyxNQUFNWDtJQUNSO0FBQ0YsRUFBRSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9nZXRMZWdlbmRQcm9wcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuaW1wb3J0IHsgTGVnZW5kIH0gZnJvbSAnLi4vY29tcG9uZW50L0xlZ2VuZCc7XG5pbXBvcnQgeyBnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtIH0gZnJvbSAnLi9DaGFydFV0aWxzJztcbmltcG9ydCB7IGZpbmRDaGlsZEJ5VHlwZSB9IGZyb20gJy4vUmVhY3RVdGlscyc7XG5leHBvcnQgdmFyIGdldExlZ2VuZFByb3BzID0gZnVuY3Rpb24gZ2V0TGVnZW5kUHJvcHMoX3JlZikge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuLFxuICAgIGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zID0gX3JlZi5mb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyxcbiAgICBsZWdlbmRXaWR0aCA9IF9yZWYubGVnZW5kV2lkdGgsXG4gICAgbGVnZW5kQ29udGVudCA9IF9yZWYubGVnZW5kQ29udGVudDtcbiAgdmFyIGxlZ2VuZEl0ZW0gPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIExlZ2VuZCk7XG4gIGlmICghbGVnZW5kSXRlbSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBsZWdlbmREZWZhdWx0UHJvcHMgPSBMZWdlbmQuZGVmYXVsdFByb3BzO1xuICB2YXIgbGVnZW5kUHJvcHMgPSBsZWdlbmREZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbGVnZW5kRGVmYXVsdFByb3BzKSwgbGVnZW5kSXRlbS5wcm9wcykgOiB7fTtcbiAgdmFyIGxlZ2VuZERhdGE7XG4gIGlmIChsZWdlbmRJdGVtLnByb3BzICYmIGxlZ2VuZEl0ZW0ucHJvcHMucGF5bG9hZCkge1xuICAgIGxlZ2VuZERhdGEgPSBsZWdlbmRJdGVtLnByb3BzICYmIGxlZ2VuZEl0ZW0ucHJvcHMucGF5bG9hZDtcbiAgfSBlbHNlIGlmIChsZWdlbmRDb250ZW50ID09PSAnY2hpbGRyZW4nKSB7XG4gICAgbGVnZW5kRGF0YSA9IChmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyB8fCBbXSkucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIF9yZWYyKSB7XG4gICAgICB2YXIgaXRlbSA9IF9yZWYyLml0ZW0sXG4gICAgICAgIHByb3BzID0gX3JlZjIucHJvcHM7XG4gICAgICB2YXIgZGF0YSA9IHByb3BzLnNlY3RvcnMgfHwgcHJvcHMuZGF0YSB8fCBbXTtcbiAgICAgIHJldHVybiByZXN1bHQuY29uY2F0KGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IGxlZ2VuZEl0ZW0ucHJvcHMuaWNvblR5cGUgfHwgaXRlbS5wcm9wcy5sZWdlbmRUeXBlLFxuICAgICAgICAgIHZhbHVlOiBlbnRyeS5uYW1lLFxuICAgICAgICAgIGNvbG9yOiBlbnRyeS5maWxsLFxuICAgICAgICAgIHBheWxvYWQ6IGVudHJ5XG4gICAgICAgIH07XG4gICAgICB9KSk7XG4gICAgfSwgW10pO1xuICB9IGVsc2Uge1xuICAgIGxlZ2VuZERhdGEgPSAoZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgfHwgW10pLm1hcChmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICAgIHZhciBpdGVtID0gX3JlZjMuaXRlbTtcbiAgICAgIHZhciBpdGVtRGVmYXVsdFByb3BzID0gaXRlbS50eXBlLmRlZmF1bHRQcm9wcztcbiAgICAgIHZhciBpdGVtUHJvcHMgPSBpdGVtRGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW1EZWZhdWx0UHJvcHMpLCBpdGVtLnByb3BzKSA6IHt9O1xuICAgICAgdmFyIGRhdGFLZXkgPSBpdGVtUHJvcHMuZGF0YUtleSxcbiAgICAgICAgbmFtZSA9IGl0ZW1Qcm9wcy5uYW1lLFxuICAgICAgICBsZWdlbmRUeXBlID0gaXRlbVByb3BzLmxlZ2VuZFR5cGUsXG4gICAgICAgIGhpZGUgPSBpdGVtUHJvcHMuaGlkZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGluYWN0aXZlOiBoaWRlLFxuICAgICAgICBkYXRhS2V5OiBkYXRhS2V5LFxuICAgICAgICB0eXBlOiBsZWdlbmRQcm9wcy5pY29uVHlwZSB8fCBsZWdlbmRUeXBlIHx8ICdzcXVhcmUnLFxuICAgICAgICBjb2xvcjogZ2V0TWFpbkNvbG9yT2ZHcmFwaGljSXRlbShpdGVtKSxcbiAgICAgICAgdmFsdWU6IG5hbWUgfHwgZGF0YUtleSxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwcm9wZXJ0eSBzdHJva2VEYXNoYXJyYXkgaXMgcmVxdWlyZWQgaW4gUGF5bG9hZCBidXQgb3B0aW9uYWwgaW4gcHJvcHNcbiAgICAgICAgcGF5bG9hZDogaXRlbVByb3BzXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbGVnZW5kUHJvcHMpLCBMZWdlbmQuZ2V0V2l0aEhlaWdodChsZWdlbmRJdGVtLCBsZWdlbmRXaWR0aCkpLCB7fSwge1xuICAgIHBheWxvYWQ6IGxlZ2VuZERhdGEsXG4gICAgaXRlbTogbGVnZW5kSXRlbVxuICB9KTtcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJMZWdlbmQiLCJnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtIiwiZmluZENoaWxkQnlUeXBlIiwiZ2V0TGVnZW5kUHJvcHMiLCJfcmVmIiwiY2hpbGRyZW4iLCJmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyIsImxlZ2VuZFdpZHRoIiwibGVnZW5kQ29udGVudCIsImxlZ2VuZEl0ZW0iLCJsZWdlbmREZWZhdWx0UHJvcHMiLCJkZWZhdWx0UHJvcHMiLCJsZWdlbmRQcm9wcyIsInVuZGVmaW5lZCIsInByb3BzIiwibGVnZW5kRGF0YSIsInBheWxvYWQiLCJyZWR1Y2UiLCJyZXN1bHQiLCJfcmVmMiIsIml0ZW0iLCJkYXRhIiwic2VjdG9ycyIsImNvbmNhdCIsIm1hcCIsImVudHJ5IiwidHlwZSIsImljb25UeXBlIiwibGVnZW5kVHlwZSIsIm5hbWUiLCJjb2xvciIsImZpbGwiLCJfcmVmMyIsIml0ZW1EZWZhdWx0UHJvcHMiLCJpdGVtUHJvcHMiLCJkYXRhS2V5IiwiaGlkZSIsImluYWN0aXZlIiwiZ2V0V2l0aEhlaWdodCJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/getLegendProps.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/isDomainSpecifiedByUser.js":
/*!*******************************************************************!*\
!*** ./node_modules/recharts/es6/util/isDomainSpecifiedByUser.js ***!
\*******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isDomainSpecifiedByUser: () => (/* binding */ isDomainSpecifiedByUser)\n/* harmony export */ });\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n\n/**\n * Takes a domain and user props to determine whether he provided the domain via props or if we need to calculate it.\n * @param {AxisDomain} domain The potential domain from props\n * @param {Boolean} allowDataOverflow from props\n * @param {String} axisType from props\n * @returns {Boolean} `true` if domain is specified by user\n */ function isDomainSpecifiedByUser(domain, allowDataOverflow, axisType) {\n if (axisType === 'number' && allowDataOverflow === true && Array.isArray(domain)) {\n var domainStart = domain === null || domain === void 0 ? void 0 : domain[0];\n var domainEnd = domain === null || domain === void 0 ? void 0 : domain[1];\n /*\n * The `isNumber` check is needed because the user could also provide strings like \"dataMin\" via the domain props.\n * In such case, we have to compute the domain from the data.\n */ if (!!domainStart && !!domainEnd && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_0__.isNumber)(domainStart) && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_0__.isNumber)(domainEnd)) {\n return true;\n }\n }\n return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvaXNEb21haW5TcGVjaWZpZWRCeVVzZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBdUM7QUFDdkM7Ozs7OztDQU1DLEdBQ00sU0FBU0Msd0JBQXdCQyxNQUFNLEVBQUVDLGlCQUFpQixFQUFFQyxRQUFRO0lBQ3pFLElBQUlBLGFBQWEsWUFBWUQsc0JBQXNCLFFBQVFFLE1BQU1DLE9BQU8sQ0FBQ0osU0FBUztRQUNoRixJQUFJSyxjQUFjTCxXQUFXLFFBQVFBLFdBQVcsS0FBSyxJQUFJLEtBQUssSUFBSUEsTUFBTSxDQUFDLEVBQUU7UUFDM0UsSUFBSU0sWUFBWU4sV0FBVyxRQUFRQSxXQUFXLEtBQUssSUFBSSxLQUFLLElBQUlBLE1BQU0sQ0FBQyxFQUFFO1FBRXpFOzs7S0FHQyxHQUNELElBQUksQ0FBQyxDQUFDSyxlQUFlLENBQUMsQ0FBQ0MsYUFBYVIsb0RBQVFBLENBQUNPLGdCQUFnQlAsb0RBQVFBLENBQUNRLFlBQVk7WUFDaEYsT0FBTztRQUNUO0lBQ0Y7SUFDQSxPQUFPO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvaXNEb21haW5TcGVjaWZpZWRCeVVzZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL0RhdGFVdGlscyc7XG4vKipcbiAqIFRha2VzIGEgZG9tYWluIGFuZCB1c2VyIHByb3BzIHRvIGRldGVybWluZSB3aGV0aGVyIGhlIHByb3ZpZGVkIHRoZSBkb21haW4gdmlhIHByb3BzIG9yIGlmIHdlIG5lZWQgdG8gY2FsY3VsYXRlIGl0LlxuICogQHBhcmFtICAge0F4aXNEb21haW59ICBkb21haW4gICAgICAgICAgICAgIFRoZSBwb3RlbnRpYWwgZG9tYWluIGZyb20gcHJvcHNcbiAqIEBwYXJhbSAgIHtCb29sZWFufSAgICAgYWxsb3dEYXRhT3ZlcmZsb3cgICBmcm9tIHByb3BzXG4gKiBAcGFyYW0gICB7U3RyaW5nfSAgICAgIGF4aXNUeXBlICAgICAgICAgICAgZnJvbSBwcm9wc1xuICogQHJldHVybnMge0Jvb2xlYW59ICAgICAgICAgICAgICAgICAgICAgICAgIGB0cnVlYCBpZiBkb21haW4gaXMgc3BlY2lmaWVkIGJ5IHVzZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRG9tYWluU3BlY2lmaWVkQnlVc2VyKGRvbWFpbiwgYWxsb3dEYXRhT3ZlcmZsb3csIGF4aXNUeXBlKSB7XG4gIGlmIChheGlzVHlwZSA9PT0gJ251bWJlcicgJiYgYWxsb3dEYXRhT3ZlcmZsb3cgPT09IHRydWUgJiYgQXJyYXkuaXNBcnJheShkb21haW4pKSB7XG4gICAgdmFyIGRvbWFpblN0YXJ0ID0gZG9tYWluID09PSBudWxsIHx8IGRvbWFpbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogZG9tYWluWzBdO1xuICAgIHZhciBkb21haW5FbmQgPSBkb21haW4gPT09IG51bGwgfHwgZG9tYWluID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkb21haW5bMV07XG5cbiAgICAvKlxuICAgICAqIFRoZSBgaXNOdW1iZXJgIGNoZWNrIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSB1c2VyIGNvdWxkIGFsc28gcHJvdmlkZSBzdHJpbmdzIGxpa2UgXCJkYXRhTWluXCIgdmlhIHRoZSBkb21haW4gcHJvcHMuXG4gICAgICogSW4gc3VjaCBjYXNlLCB3ZSBoYXZlIHRvIGNvbXB1dGUgdGhlIGRvbWFpbiBmcm9tIHRoZSBkYXRhLlxuICAgICAqL1xuICAgIGlmICghIWRvbWFpblN0YXJ0ICYmICEhZG9tYWluRW5kICYmIGlzTnVtYmVyKGRvbWFpblN0YXJ0KSAmJiBpc051bWJlcihkb21haW5FbmQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSJdLCJuYW1lcyI6WyJpc051bWJlciIsImlzRG9tYWluU3BlY2lmaWVkQnlVc2VyIiwiZG9tYWluIiwiYWxsb3dEYXRhT3ZlcmZsb3ciLCJheGlzVHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImRvbWFpblN0YXJ0IiwiZG9tYWluRW5kIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/isDomainSpecifiedByUser.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/payload/getUniqPayload.js":
/*!******************************************************************!*\
!*** ./node_modules/recharts/es6/util/payload/getUniqPayload.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getUniqPayload: () => (/* binding */ getUniqPayload)\n/* harmony export */ });\n/* harmony import */ var lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/uniqBy */ \"(ssr)/./node_modules/lodash/uniqBy.js\");\n/* harmony import */ var lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n\n\n/**\n * This is configuration option that decides how to filter for unique values only:\n *\n * - `false` means \"no filter\"\n * - `true` means \"use recharts default filter\"\n * - function means \"use return of this function as the default key\"\n */ function getUniqPayload(payload, option, defaultUniqBy) {\n if (option === true) {\n return lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0___default()(payload, defaultUniqBy);\n }\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n return lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0___default()(payload, option);\n }\n return payload;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvcGF5bG9hZC9nZXRVbmlxUGF5bG9hZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFtQztBQUNRO0FBRTNDOzs7Ozs7Q0FNQyxHQUVNLFNBQVNFLGVBQWVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxhQUFhO0lBQzNELElBQUlELFdBQVcsTUFBTTtRQUNuQixPQUFPSixvREFBTUEsQ0FBQ0csU0FBU0U7SUFDekI7SUFDQSxJQUFJSix3REFBVUEsQ0FBQ0csU0FBUztRQUN0QixPQUFPSixvREFBTUEsQ0FBQ0csU0FBU0M7SUFDekI7SUFDQSxPQUFPRDtBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL3BheWxvYWQvZ2V0VW5pcVBheWxvYWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gvdW5pcUJ5JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcblxuLyoqXG4gKiBUaGlzIGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgZGVjaWRlcyBob3cgdG8gZmlsdGVyIGZvciB1bmlxdWUgdmFsdWVzIG9ubHk6XG4gKlxuICogLSBgZmFsc2VgIG1lYW5zIFwibm8gZmlsdGVyXCJcbiAqIC0gYHRydWVgIG1lYW5zIFwidXNlIHJlY2hhcnRzIGRlZmF1bHQgZmlsdGVyXCJcbiAqIC0gZnVuY3Rpb24gbWVhbnMgXCJ1c2UgcmV0dXJuIG9mIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGRlZmF1bHQga2V5XCJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pcVBheWxvYWQocGF5bG9hZCwgb3B0aW9uLCBkZWZhdWx0VW5pcUJ5KSB7XG4gIGlmIChvcHRpb24gPT09IHRydWUpIHtcbiAgICByZXR1cm4gdW5pcUJ5KHBheWxvYWQsIGRlZmF1bHRVbmlxQnkpO1xuICB9XG4gIGlmIChpc0Z1bmN0aW9uKG9wdGlvbikpIHtcbiAgICByZXR1cm4gdW5pcUJ5KHBheWxvYWQsIG9wdGlvbik7XG4gIH1cbiAgcmV0dXJuIHBheWxvYWQ7XG59Il0sIm5hbWVzIjpbInVuaXFCeSIsImlzRnVuY3Rpb24iLCJnZXRVbmlxUGF5bG9hZCIsInBheWxvYWQiLCJvcHRpb24iLCJkZWZhdWx0VW5pcUJ5Il0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/payload/getUniqPayload.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/tooltip/translate.js":
/*!*************************************************************!*\
!*** ./node_modules/recharts/es6/util/tooltip/translate.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getTooltipCSSClassName: () => (/* binding */ getTooltipCSSClassName),\n/* harmony export */ getTooltipTranslate: () => (/* binding */ getTooltipTranslate),\n/* harmony export */ getTooltipTranslateXY: () => (/* binding */ getTooltipTranslateXY),\n/* harmony export */ getTransformStyle: () => (/* binding */ getTransformStyle)\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\nvar CSS_CLASS_PREFIX = 'recharts-tooltip-wrapper';\nvar TOOLTIP_HIDDEN = {\n visibility: 'hidden'\n};\nfunction getTooltipCSSClassName(_ref) {\n var coordinate = _ref.coordinate, translateX = _ref.translateX, translateY = _ref.translateY;\n return (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(CSS_CLASS_PREFIX, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(CSS_CLASS_PREFIX, \"-right\"), (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(translateX) && coordinate && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(coordinate.x) && translateX >= coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-left\"), (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(translateX) && coordinate && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(coordinate.x) && translateX < coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-bottom\"), (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(translateY) && coordinate && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(coordinate.y) && translateY >= coordinate.y), \"\".concat(CSS_CLASS_PREFIX, \"-top\"), (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(translateY) && coordinate && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(coordinate.y) && translateY < coordinate.y));\n}\nfunction getTooltipTranslateXY(_ref2) {\n var allowEscapeViewBox = _ref2.allowEscapeViewBox, coordinate = _ref2.coordinate, key = _ref2.key, offsetTopLeft = _ref2.offsetTopLeft, position = _ref2.position, reverseDirection = _ref2.reverseDirection, tooltipDimension = _ref2.tooltipDimension, viewBox = _ref2.viewBox, viewBoxDimension = _ref2.viewBoxDimension;\n if (position && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(position[key])) {\n return position[key];\n }\n var negative = coordinate[key] - tooltipDimension - offsetTopLeft;\n var positive = coordinate[key] + offsetTopLeft;\n if (allowEscapeViewBox[key]) {\n return reverseDirection[key] ? negative : positive;\n }\n if (reverseDirection[key]) {\n var _tooltipBoundary = negative;\n var _viewBoxBoundary = viewBox[key];\n if (_tooltipBoundary < _viewBoxBoundary) {\n return Math.max(positive, viewBox[key]);\n }\n return Math.max(negative, viewBox[key]);\n }\n var tooltipBoundary = positive + tooltipDimension;\n var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(negative, viewBox[key]);\n }\n return Math.max(positive, viewBox[key]);\n}\nfunction getTransformStyle(_ref3) {\n var translateX = _ref3.translateX, translateY = _ref3.translateY, useTranslate3d = _ref3.useTranslate3d;\n return {\n transform: useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n };\n}\nfunction getTooltipTranslate(_ref4) {\n var allowEscapeViewBox = _ref4.allowEscapeViewBox, coordinate = _ref4.coordinate, offsetTopLeft = _ref4.offsetTopLeft, position = _ref4.position, reverseDirection = _ref4.reverseDirection, tooltipBox = _ref4.tooltipBox, useTranslate3d = _ref4.useTranslate3d, viewBox = _ref4.viewBox;\n var cssProperties, translateX, translateY;\n if (tooltipBox.height > 0 && tooltipBox.width > 0 && coordinate) {\n translateX = getTooltipTranslateXY({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n key: 'x',\n offsetTopLeft: offsetTopLeft,\n position: position,\n reverseDirection: reverseDirection,\n tooltipDimension: tooltipBox.width,\n viewBox: viewBox,\n viewBoxDimension: viewBox.width\n });\n translateY = getTooltipTranslateXY({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n key: 'y',\n offsetTopLeft: offsetTopLeft,\n position: position,\n reverseDirection: reverseDirection,\n tooltipDimension: tooltipBox.height,\n viewBox: viewBox,\n viewBoxDimension: viewBox.height\n });\n cssProperties = getTransformStyle({\n translateX: translateX,\n translateY: translateY,\n useTranslate3d: useTranslate3d\n });\n } else {\n cssProperties = TOOLTIP_HIDDEN;\n }\n return {\n cssProperties: cssProperties,\n cssClasses: getTooltipCSSClassName({\n translateX: translateX,\n translateY: translateY,\n coordinate: coordinate\n })\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvdG9vbHRpcC90cmFuc2xhdGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLGdCQUFnQkMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLEtBQUs7SUFBSUQsTUFBTUUsZUFBZUY7SUFBTSxJQUFJQSxPQUFPRCxLQUFLO1FBQUVJLE9BQU9DLGNBQWMsQ0FBQ0wsS0FBS0MsS0FBSztZQUFFQyxPQUFPQTtZQUFPSSxZQUFZO1lBQU1DLGNBQWM7WUFBTUMsVUFBVTtRQUFLO0lBQUksT0FBTztRQUFFUixHQUFHLENBQUNDLElBQUksR0FBR0M7SUFBTztJQUFFLE9BQU9GO0FBQUs7QUFDM08sU0FBU0csZUFBZU0sQ0FBQztJQUFJLElBQUlDLElBQUlDLGFBQWFGLEdBQUc7SUFBVyxPQUFPLFlBQVloQixRQUFRaUIsS0FBS0EsSUFBSUEsSUFBSTtBQUFJO0FBQzVHLFNBQVNDLGFBQWFGLENBQUMsRUFBRUcsQ0FBQztJQUFJLElBQUksWUFBWW5CLFFBQVFnQixNQUFNLENBQUNBLEdBQUcsT0FBT0E7SUFBRyxJQUFJSSxJQUFJSixDQUFDLENBQUNkLE9BQU9tQixXQUFXLENBQUM7SUFBRSxJQUFJLEtBQUssTUFBTUQsR0FBRztRQUFFLElBQUlILElBQUlHLEVBQUVFLElBQUksQ0FBQ04sR0FBR0csS0FBSztRQUFZLElBQUksWUFBWW5CLFFBQVFpQixJQUFJ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WUE7WUFDWkMsWUFBWUE7WUFDWnVCLGdCQUFnQkE7UUFDbEI7SUFDRixPQUFPO1FBQ0xLLGdCQUFnQmxDO0lBQ2xCO0lBQ0EsT0FBTztRQUNMa0MsZUFBZUE7UUFDZkcsWUFBWW5DLHVCQUF1QjtZQUNqQ0csWUFBWUE7WUFDWkMsWUFBWUE7WUFDWkYsWUFBWUE7UUFDZDtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvdG9vbHRpcC90cmFuc2xhdGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vRGF0YVV0aWxzJztcbnZhciBDU1NfQ0xBU1NfUFJFRklYID0gJ3JlY2hhcnRzLXRvb2x0aXAtd3JhcHBlcic7XG52YXIgVE9PTFRJUF9ISURERU4gPSB7XG4gIHZpc2liaWxpdHk6ICdoaWRkZW4nXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBDU1NDbGFzc05hbWUoX3JlZikge1xuICB2YXIgY29vcmRpbmF0ZSA9IF9yZWYuY29vcmRpbmF0ZSxcbiAgICB0cmFuc2xhdGVYID0gX3JlZi50cmFuc2xhdGVYLFxuICAgIHRyYW5zbGF0ZVkgPSBfcmVmLnRyYW5zbGF0ZVk7XG4gIHJldHVybiBjbHN4KENTU19DTEFTU19QUkVGSVgsIF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQoQ1NTX0NMQVNTX1BSRUZJWCwgXCItcmlnaHRcIiksIGlzTnVtYmVyKHRyYW5zbGF0ZVgpICYmIGNvb3JkaW5hdGUgJiYgaXNOdW1iZXIoY29vcmRpbmF0ZS54KSAmJiB0cmFuc2xhdGVYID49IGNvb3JkaW5hdGUueCksIFwiXCIuY29uY2F0KENTU19DTEFTU19QUkVGSVgsIFwiLWxlZnRcIiksIGlzTnVtYmVyKHRyYW5zbGF0ZVgpICYmIGNvb3JkaW5hdGUgJiYgaXNOdW1iZXIoY29vcmRpbmF0ZS54KSAmJiB0cmFuc2xhdGVYIDwgY29vcmRpbmF0ZS54KSwgXCJcIi5jb25jYXQoQ1NTX0NMQVNTX1BSRUZJWCwgXCItYm90dG9tXCIpLCBpc051bWJlcih0cmFuc2xhdGVZKSAmJiBjb29yZGluYXRlICYmIGlzTnVtYmVyKGNvb3JkaW5hdGUueSkgJiYgdHJhbnNsYXRlWSA+PSBjb29yZGluYXRlLnkpLCBcIlwiLmNvbmNhdChDU1NfQ0xBU1NfUFJFRklYLCBcIi10b3BcIiksIGlzTnVtYmVyKHRyYW5zbGF0ZVkpICYmIGNvb3JkaW5hdGUgJiYgaXNOdW1iZXIoY29vcmRpbmF0ZS55KSAmJiB0cmFuc2xhdGVZIDwgY29vcmRpbmF0ZS55KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFRyYW5zbGF0ZVhZKF9yZWYyKSB7XG4gIHZhciBhbGxvd0VzY2FwZVZpZXdCb3ggPSBfcmVmMi5hbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgY29vcmRpbmF0ZSA9IF9yZWYyLmNvb3JkaW5hdGUsXG4gICAga2V5ID0gX3JlZjIua2V5LFxuICAgIG9mZnNldFRvcExlZnQgPSBfcmVmMi5vZmZzZXRUb3BMZWZ0LFxuICAgIHBvc2l0aW9uID0gX3JlZjIucG9zaXRpb24sXG4gICAgcmV2ZXJzZURpcmVjdGlvbiA9IF9yZWYyLnJldmVyc2VEaXJlY3Rpb24sXG4gICAgdG9vbHRpcERpbWVuc2lvbiA9IF9yZWYyLnRvb2x0aXBEaW1lbnNpb24sXG4gICAgdmlld0JveCA9IF9yZWYyLnZpZXdCb3gsXG4gICAgdmlld0JveERpbWVuc2lvbiA9IF9yZWYyLnZpZXdCb3hEaW1lbnNpb247XG4gIGlmIChwb3NpdGlvbiAmJiBpc051bWJlcihwb3NpdGlvbltrZXldKSkge1xuICAgIHJldHVybiBwb3NpdGlvbltrZXldO1xuICB9XG4gIHZhciBuZWdhdGl2ZSA9IGNvb3JkaW5hdGVba2V5XSAtIHRvb2x0aXBEaW1lbnNpb24gLSBvZmZzZXRUb3BMZWZ0O1xuICB2YXIgcG9zaXRpdmUgPSBjb29yZGluYXRlW2tleV0gKyBvZmZzZXRUb3BMZWZ0O1xuICBpZiAoYWxsb3dFc2NhcGVWaWV3Qm94W2tleV0pIHtcbiAgICByZXR1cm4gcmV2ZXJzZURpcmVjdGlvbltrZXldID8gbmVnYXRpdmUgOiBwb3NpdGl2ZTtcbiAgfVxuICBpZiAocmV2ZXJzZURpcmVjdGlvbltrZXldKSB7XG4gICAgdmFyIF90b29sdGlwQm91bmRhcnkgPSBuZWdhdGl2ZTtcbiAgICB2YXIgX3ZpZXdCb3hCb3VuZGFyeSA9IHZpZXdCb3hba2V5XTtcbiAgICBpZiAoX3Rvb2x0aXBCb3VuZGFyeSA8IF92aWV3Qm94Qm91bmRhcnkpIHtcbiAgICAgIHJldHVybiBNYXRoLm1heChwb3NpdGl2ZSwgdmlld0JveFtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWF4KG5lZ2F0aXZlLCB2aWV3Qm94W2tleV0pO1xuICB9XG4gIHZhciB0b29sdGlwQm91bmRhcnkgPSBwb3NpdGl2ZSArIHRvb2x0aXBEaW1lbnNpb247XG4gIHZhciB2aWV3Qm94Qm91bmRhcnkgPSB2aWV3Qm94W2tleV0gKyB2aWV3Qm94RGltZW5zaW9uO1xuICBpZiAodG9vbHRpcEJvdW5kYXJ5ID4gdmlld0JveEJvdW5kYXJ5KSB7XG4gICAgcmV0dXJuIE1hdGgubWF4KG5lZ2F0aXZlLCB2aWV3Qm94W2tleV0pO1xuICB9XG4gIHJldHVybiBNYXRoLm1heChwb3NpdGl2ZSwgdmlld0JveFtrZXldKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2Zvcm1TdHlsZShfcmVmMykge1xuICB2YXIgdHJhbnNsYXRlWCA9IF9yZWYzLnRyYW5zbGF0ZVgsXG4gICAgdHJhbnNsYXRlWSA9IF9yZWYzLnRyYW5zbGF0ZVksXG4gICAgdXNlVHJhbnNsYXRlM2QgPSBfcmVmMy51c2VUcmFuc2xhdGUzZDtcbiAgcmV0dXJuIHtcbiAgICB0cmFuc2Zvcm06IHVzZVRyYW5zbGF0ZTNkID8gXCJ0cmFuc2xhdGUzZChcIi5jb25jYXQodHJhbnNsYXRlWCwgXCJweCwgXCIpLmNvbmNhdCh0cmFuc2xhdGVZLCBcInB4LCAwKVwiKSA6IFwidHJhbnNsYXRlKFwiLmNvbmNhdCh0cmFuc2xhdGVYLCBcInB4LCBcIikuY29uY2F0KHRyYW5zbGF0ZVksIFwicHgpXCIpXG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFRyYW5zbGF0ZShfcmVmNCkge1xuICB2YXIgYWxsb3dFc2NhcGVWaWV3Qm94ID0gX3JlZjQuYWxsb3dFc2NhcGVWaWV3Qm94LFxuICAgIGNvb3JkaW5hdGUgPSBfcmVmNC5jb29yZGluYXRlLFxuICAgIG9mZnNldFRvcExlZnQgPSBfcmVmNC5vZmZzZXRUb3BMZWZ0LFxuICAgIHBvc2l0aW9uID0gX3JlZjQucG9zaXRpb24sXG4gICAgcmV2ZXJzZURpcmVjdGlvbiA9IF9yZWY0LnJldmVyc2VEaXJlY3Rpb24sXG4gICAgdG9vbHRpcEJveCA9IF9yZWY0LnRvb2x0aXBCb3gsXG4gICAgdXNlVHJhbnNsYXRlM2QgPSBfcmVmNC51c2VUcmFuc2xhdGUzZCxcbiAgICB2aWV3Qm94ID0gX3JlZjQudmlld0JveDtcbiAgdmFyIGNzc1Byb3BlcnRpZXMsIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVk7XG4gIGlmICh0b29sdGlwQm94LmhlaWdodCA+IDAgJiYgdG9vbHRpcEJveC53aWR0aCA+IDAgJiYgY29vcmRpbmF0ZSkge1xuICAgIHRyYW5zbGF0ZVggPSBnZXRUb29sdGlwVHJhbnNsYXRlWFkoe1xuICAgICAgYWxsb3dFc2NhcGVWaWV3Qm94OiBhbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgICBjb29yZGluYXRlOiBjb29yZGluYXRlLFxuICAgICAga2V5OiAneCcsXG4gICAgICBvZmZzZXRUb3BMZWZ0OiBvZmZzZXRUb3BMZWZ0LFxuICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgcmV2ZXJzZURpcmVjdGlvbjogcmV2ZXJzZURpcmVjdGlvbixcbiAgICAgIHRvb2x0aXBEaW1lbnNpb246IHRvb2x0aXBCb3gud2lkdGgsXG4gICAgICB2aWV3Qm94OiB2aWV3Qm94LFxuICAgICAgdmlld0JveERpbWVuc2lvbjogdmlld0JveC53aWR0aFxuICAgIH0pO1xuICAgIHRyYW5zbGF0ZVkgPSBnZXRUb29sdGlwVHJhbnNsYXRlWFkoe1xuICAgICAgYWxsb3dFc2NhcGVWaWV3Qm94OiBhbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgICBjb29yZGluYXRlOiBjb29yZGluYXRlLFxuICAgICAga2V5OiAneScsXG4gICAgICBvZmZzZXRUb3BMZWZ0OiBvZmZzZXRUb3BMZWZ0LFxuICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgcmV2ZXJzZURpcmVjdGlvbjogcmV2ZXJzZURpcmVjdGlvbixcbiAgICAgIHRvb2x0aXBEaW1lbnNpb246IHRvb2x0aXBCb3guaGVpZ2h0LFxuICAgICAgdmlld0JveDogdmlld0JveCxcbiAgICAgIHZpZXdCb3hEaW1lbnNpb246IHZpZXdCb3guaGVpZ2h0XG4gICAgfSk7XG4gICAgY3NzUHJvcGVydGllcyA9IGdldFRyYW5zZm9ybVN0eWxlKHtcbiAgICAgIHRyYW5zbGF0ZVg6IHRyYW5zbGF0ZVgsXG4gICAgICB0cmFuc2xhdGVZOiB0cmFuc2xhdGVZLFxuICAgICAgdXNlVHJhbnNsYXRlM2Q6IHVzZVRyYW5zbGF0ZTNkXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY3NzUHJvcGVydGllcyA9IFRPT0xUSVBfSElEREVOO1xuICB9XG4gIHJldHVybiB7XG4gICAgY3NzUHJvcGVydGllczogY3NzUHJvcGVydGllcyxcbiAgICBjc3NDbGFzc2VzOiBnZXRUb29sdGlwQ1NTQ2xhc3NOYW1lKHtcbiAgICAgIHRyYW5zbGF0ZVg6IHRyYW5zbGF0ZVgsXG4gICAgICB0cmFuc2xhdGVZOiB0cmFuc2xhdGVZLFxuICAgICAgY29vcmRpbmF0ZTogY29vcmRpbmF0ZVxuICAgIH0pXG4gIH07XG59Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsInQiLCJpIiwiX3RvUHJpbWl0aXZlIiwiciIsImUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJjbHN4IiwiaXNOdW1iZXIiLCJDU1NfQ0xBU1NfUFJFRklYIiwiVE9PTFRJUF9ISURERU4iLCJ2aXNpYmlsaXR5IiwiZ2V0VG9vbHRpcENTU0NsYXNzTmFtZSIsIl9yZWYiLCJjb29yZGluYXRlIiwidHJhbnNsYXRlWCIsInRyYW5zbGF0ZVkiLCJjb25jYXQiLCJ4IiwieSIsImdldFRvb2x0aXBUcmFuc2xhdGVYWSIsIl9yZWYyIiwiYWxsb3dFc2NhcGVWaWV3Qm94Iiwib2Zmc2V0VG9wTGVmdCIsInBvc2l0aW9uIiwicmV2ZXJzZURpcmVjdGlvbiIsInRvb2x0aXBEaW1lbnNpb24iLCJ2aWV3Qm94Iiwidmlld0JveERpbWVuc2lvbiIsIm5lZ2F0aXZlIiwicG9zaXRpdmUiLCJfdG9vbHRpcEJvdW5kYXJ5IiwiX3ZpZXdCb3hCb3VuZGFyeSIsIk1hdGgiLCJtYXgiLCJ0b29sdGlwQm91bmRhcnkiLCJ2aWV3Qm94Qm91bmRhcnkiLCJnZXRUcmFuc2Zvcm1TdHlsZSIsIl9yZWYzIiwidXNlVHJhbnNsYXRlM2QiLCJ0cmFuc2Zvcm0iLCJnZXRUb29sdGlwVHJhbnNsYXRlIiwiX3JlZjQiLCJ0b29sdGlwQm94IiwiY3NzUHJvcGVydGllcyIsImhlaWdodCIsIndpZHRoIiwiY3NzQ2xhc3NlcyJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/tooltip/translate.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/types.js":
/*!*************************************************!*\
!*** ./node_modules/recharts/es6/util/types.js ***!
\*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EventKeys: () => (/* binding */ EventKeys),\n/* harmony export */ FilteredElementKeyMap: () => (/* binding */ FilteredElementKeyMap),\n/* harmony export */ SVGElementPropKeys: () => (/* binding */ SVGElementPropKeys),\n/* harmony export */ adaptEventHandlers: () => (/* binding */ adaptEventHandlers),\n/* harmony export */ adaptEventsOfChild: () => (/* binding */ adaptEventsOfChild)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isObject */ \"(ssr)/./node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_1__);\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\n\n/**\n * Determines how values are stacked:\n *\n * - `none` is the default, it adds values on top of each other. No smarts. Negative values will overlap.\n * - `expand` make it so that the values always add up to 1 - so the chart will look like a rectangle.\n * - `wiggle` and `silhouette` tries to keep the chart centered.\n * - `sign` stacks positive values above zero and negative values below zero. Similar to `none` but handles negatives.\n * - `positive` ignores all negative values, and then behaves like \\`none\\`.\n *\n * Also see https://d3js.org/d3-shape/stack#stack-offsets\n * (note that the `diverging` offset in d3 is named `sign` in recharts)\n */ //\n// Event Handler Types -- Copied from @types/react/index.d.ts and adapted for Props.\n//\nvar SVGContainerPropKeys = [\n 'viewBox',\n 'children'\n];\nvar SVGElementPropKeys = [\n 'aria-activedescendant',\n 'aria-atomic',\n 'aria-autocomplete',\n 'aria-busy',\n 'aria-checked',\n 'aria-colcount',\n 'aria-colindex',\n 'aria-colspan',\n 'aria-controls',\n 'aria-current',\n 'aria-describedby',\n 'aria-details',\n 'aria-disabled',\n 'aria-errormessage',\n 'aria-expanded',\n 'aria-flowto',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-invalid',\n 'aria-keyshortcuts',\n 'aria-label',\n 'aria-labelledby',\n 'aria-level',\n 'aria-live',\n 'aria-modal',\n 'aria-multiline',\n 'aria-multiselectable',\n 'aria-orientation',\n 'aria-owns',\n 'aria-placeholder',\n 'aria-posinset',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-relevant',\n 'aria-required',\n 'aria-roledescription',\n 'aria-rowcount',\n 'aria-rowindex',\n 'aria-rowspan',\n 'aria-selected',\n 'aria-setsize',\n 'aria-sort',\n 'aria-valuemax',\n 'aria-valuemin',\n 'aria-valuenow',\n 'aria-valuetext',\n 'className',\n 'color',\n 'height',\n 'id',\n 'lang',\n 'max',\n 'media',\n 'method',\n 'min',\n 'name',\n 'style',\n /*\n * removed 'type' SVGElementPropKey because we do not currently use any SVG elements\n * that can use it and it conflicts with the recharts prop 'type'\n * https://github.com/recharts/recharts/pull/3327\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/type\n */ // 'type',\n 'target',\n 'width',\n 'role',\n 'tabIndex',\n 'accentHeight',\n 'accumulate',\n 'additive',\n 'alignmentBaseline',\n 'allowReorder',\n 'alphabetic',\n 'amplitude',\n 'arabicForm',\n 'ascent',\n 'attributeName',\n 'attributeType',\n 'autoReverse',\n 'azimuth',\n 'baseFrequency',\n 'baselineShift',\n 'baseProfile',\n 'bbox',\n 'begin',\n 'bias',\n 'by',\n 'calcMode',\n 'capHeight',\n 'clip',\n 'clipPath',\n 'clipPathUnits',\n 'clipRule',\n 'colorInterpolation',\n 'colorInterpolationFilters',\n 'colorProfile',\n 'colorRendering',\n 'contentScriptType',\n 'contentStyleType',\n 'cursor',\n 'cx',\n 'cy',\n 'd',\n 'decelerate',\n 'descent',\n 'diffuseConstant',\n 'direction',\n 'display',\n 'divisor',\n 'dominantBaseline',\n 'dur',\n 'dx',\n 'dy',\n 'edgeMode',\n 'elevation',\n 'enableBackground',\n 'end',\n 'exponent',\n 'externalResourcesRequired',\n 'fill',\n 'fillOpacity',\n 'fillRule',\n 'filter',\n 'filterRes',\n 'filterUnits',\n 'floodColor',\n 'floodOpacity',\n 'focusable',\n 'fontFamily',\n 'fontSize',\n 'fontSizeAdjust',\n 'fontStretch',\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'format',\n 'from',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyphName',\n 'glyphOrientationHorizontal',\n 'glyphOrientationVertical',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'hanging',\n 'horizAdvX',\n 'horizOriginX',\n 'href',\n 'ideographic',\n 'imageRendering',\n 'in2',\n 'in',\n 'intercept',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'k',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'kerning',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'letterSpacing',\n 'lightingColor',\n 'limitingConeAngle',\n 'local',\n 'markerEnd',\n 'markerHeight',\n 'markerMid',\n 'markerStart',\n 'markerUnits',\n 'markerWidth',\n 'mask',\n 'maskContentUnits',\n 'maskUnits',\n 'mathematical',\n 'mode',\n 'numOctaves',\n 'offset',\n 'opacity',\n 'operator',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'overlinePosition',\n 'overlineThickness',\n 'paintOrder',\n 'panose1',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointerEvents',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'r',\n 'radius',\n 'refX',\n 'refY',\n 'renderingIntent',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'restart',\n 'result',\n 'rotate',\n 'rx',\n 'ry',\n 'seed',\n 'shapeRendering',\n 'slope',\n 'spacing',\n 'specularConstant',\n 'specularExponent',\n 'speed',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stemh',\n 'stemv',\n 'stitchTiles',\n 'stopColor',\n 'stopOpacity',\n 'strikethroughPosition',\n 'strikethroughThickness',\n 'string',\n 'stroke',\n 'strokeDasharray',\n 'strokeDashoffset',\n 'strokeLinecap',\n 'strokeLinejoin',\n 'strokeMiterlimit',\n 'strokeOpacity',\n 'strokeWidth',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textAnchor',\n 'textDecoration',\n 'textLength',\n 'textRendering',\n 'to',\n 'transform',\n 'u1',\n 'u2',\n 'underlinePosition',\n 'underlineThickness',\n 'unicode',\n 'unicodeBidi',\n 'unicodeRange',\n 'unitsPerEm',\n 'vAlphabetic',\n 'values',\n 'vectorEffect',\n 'version',\n 'vertAdvY',\n 'vertOriginX',\n 'vertOriginY',\n 'vHanging',\n 'vIdeographic',\n 'viewTarget',\n 'visibility',\n 'vMathematical',\n 'widths',\n 'wordSpacing',\n 'writingMode',\n 'x1',\n 'x2',\n 'x',\n 'xChannelSelector',\n 'xHeight',\n 'xlinkActuate',\n 'xlinkArcrole',\n 'xlinkHref',\n 'xlinkRole',\n 'xlinkShow',\n 'xlinkTitle',\n 'xlinkType',\n 'xmlBase',\n 'xmlLang',\n 'xmlns',\n 'xmlnsXlink',\n 'xmlSpace',\n 'y1',\n 'y2',\n 'y',\n 'yChannelSelector',\n 'z',\n 'zoomAndPan',\n 'ref',\n 'key',\n 'angle'\n];\nvar PolyElementKeys = [\n 'points',\n 'pathLength'\n];\n/** svg element types that have specific attribute filtration requirements */ /** map of svg element types to unique svg attributes that belong to that element */ var FilteredElementKeyMap = {\n svg: SVGContainerPropKeys,\n polygon: PolyElementKeys,\n polyline: PolyElementKeys\n};\nvar EventKeys = [\n 'dangerouslySetInnerHTML',\n 'onCopy',\n 'onCopyCapture',\n 'onCut',\n 'onCutCapture',\n 'onPaste',\n 'onPasteCapture',\n 'onCompositionEnd',\n 'onCompositionEndCapture',\n 'onCompositionStart',\n 'onCompositionStartCapture',\n 'onCompositionUpdate',\n 'onCompositionUpdateCapture',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onChangeCapture',\n 'onBeforeInput',\n 'onBeforeInputCapture',\n 'onInput',\n 'onInputCapture',\n 'onReset',\n 'onResetCapture',\n 'onSubmit',\n 'onSubmitCapture',\n 'onInvalid',\n 'onInvalidCapture',\n 'onLoad',\n 'onLoadCapture',\n 'onError',\n 'onErrorCapture',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyPressCapture',\n 'onKeyUp',\n 'onKeyUpCapture',\n 'onAbort',\n 'onAbortCapture',\n 'onCanPlay',\n 'onCanPlayCapture',\n 'onCanPlayThrough',\n 'onCanPlayThroughCapture',\n 'onDurationChange',\n 'onDurationChangeCapture',\n 'onEmptied',\n 'onEmptiedCapture',\n 'onEncrypted',\n 'onEncryptedCapture',\n 'onEnded',\n 'onEndedCapture',\n 'onLoadedData',\n 'onLoadedDataCapture',\n 'onLoadedMetadata',\n 'onLoadedMetadataCapture',\n 'onLoadStart',\n 'onLoadStartCapture',\n 'onPause',\n 'onPauseCapture',\n 'onPlay',\n 'onPlayCapture',\n 'onPlaying',\n 'onPlayingCapture',\n 'onProgress',\n 'onProgressCapture',\n 'onRateChange',\n 'onRateChangeCapture',\n 'onSeeked',\n 'onSeekedCapture',\n 'onSeeking',\n 'onSeekingCapture',\n 'onStalled',\n 'onStalledCapture',\n 'onSuspend',\n 'onSuspendCapture',\n 'onTimeUpdate',\n 'onTimeUpdateCapture',\n 'onVolumeChange',\n 'onVolumeChangeCapture',\n 'onWaiting',\n 'onWaitingCapture',\n 'onAuxClick',\n 'onAuxClickCapture',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onContextMenuCapture',\n 'onDoubleClick',\n 'onDoubleClickCapture',\n 'onDrag',\n 'onDragCapture',\n 'onDragEnd',\n 'onDragEndCapture',\n 'onDragEnter',\n 'onDragEnterCapture',\n 'onDragExit',\n 'onDragExitCapture',\n 'onDragLeave',\n 'onDragLeaveCapture',\n 'onDragOver',\n 'onDragOverCapture',\n 'onDragStart',\n 'onDragStartCapture',\n 'onDrop',\n 'onDropCapture',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseMoveCapture',\n 'onMouseOut',\n 'onMouseOutCapture',\n 'onMouseOver',\n 'onMouseOverCapture',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onSelectCapture',\n 'onTouchCancel',\n 'onTouchCancelCapture',\n 'onTouchEnd',\n 'onTouchEndCapture',\n 'onTouchMove',\n 'onTouchMoveCapture',\n 'onTouchStart',\n 'onTouchStartCapture',\n 'onPointerDown',\n 'onPointerDownCapture',\n 'onPointerMove',\n 'onPointerMoveCapture',\n 'onPointerUp',\n 'onPointerUpCapture',\n 'onPointerCancel',\n 'onPointerCancelCapture',\n 'onPointerEnter',\n 'onPointerEnterCapture',\n 'onPointerLeave',\n 'onPointerLeaveCapture',\n 'onPointerOver',\n 'onPointerOverCapture',\n 'onPointerOut',\n 'onPointerOutCapture',\n 'onGotPointerCapture',\n 'onGotPointerCaptureCapture',\n 'onLostPointerCapture',\n 'onLostPointerCaptureCapture',\n 'onScroll',\n 'onScrollCapture',\n 'onWheel',\n 'onWheelCapture',\n 'onAnimationStart',\n 'onAnimationStartCapture',\n 'onAnimationEnd',\n 'onAnimationEndCapture',\n 'onAnimationIteration',\n 'onAnimationIterationCapture',\n 'onTransitionEnd',\n 'onTransitionEndCapture'\n];\n/** The type of easing function to use for animations */ /** Specifies the duration of animation, the unit of this option is ms. */ /** the offset of a chart, which define the blank space all around */ /**\n * The domain of axis.\n * This is the definition\n *\n * Numeric domain is always defined by an array of exactly two values, for the min and the max of the axis.\n * Categorical domain is defined as array of all possible values.\n *\n * Can be specified in many ways:\n * - array of numbers\n * - with special strings like 'dataMin' and 'dataMax'\n * - with special string math like 'dataMin - 100'\n * - with keyword 'auto'\n * - or a function\n * - array of functions\n * - or a combination of the above\n */ /**\n * NumberDomain is an evaluated {@link AxisDomain}.\n * Unlike {@link AxisDomain}, it has no variety - it's a tuple of two number.\n * This is after all the keywords and functions were evaluated and what is left is [min, max].\n *\n * Know that the min, max values are not guaranteed to be nice numbers - values like -Infinity or NaN are possible.\n *\n * There are also `category` axes that have different things than numbers in their domain.\n */ /** The props definition of base axis */ /** Defines how ticks are placed and whether / how tick collisions are handled.\n * 'preserveStart' keeps the left tick on collision and ensures that the first tick is always shown.\n * 'preserveEnd' keeps the right tick on collision and ensures that the last tick is always shown.\n * 'preserveStartEnd' keeps the left tick on collision and ensures that the first and last ticks are always shown.\n * 'equidistantPreserveStart' selects a number N such that every nTh tick will be shown without collision.\n */ var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(props)) {\n inputProps = props.props;\n }\n if (!lodash_isObject__WEBPACK_IMPORTED_MODULE_1___default()(inputProps)) {\n return null;\n }\n var out = {};\n Object.keys(inputProps).forEach(function(key) {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || function(e) {\n return inputProps[key](inputProps, e);\n };\n }\n });\n return out;\n};\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function(e) {\n originalHandler(data, index, e);\n return null;\n };\n};\nvar adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n if (!lodash_isObject__WEBPACK_IMPORTED_MODULE_1___default()(props) || _typeof(props) !== 'object') {\n return null;\n }\n var out = null;\n Object.keys(props).forEach(function(key) {\n var item = props[key];\n if (EventKeys.includes(key) && typeof item === 'function') {\n if (!out) out = {};\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n return out;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvdHlwZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQ3RSO0FBQ0E7QUFFdkM7Ozs7Ozs7Ozs7O0NBV0MsR0FFRCxFQUFFO0FBQ0Ysb0ZBQW9GO0FBQ3BGLEVBQUU7QUFFRixJQUFJTyx1QkFBdUI7SUFBQztJQUFXO0NBQVc7QUFDM0MsSUFBSUMscUJBQXFCO0lBQUM7SUFBeUI7SUFBZTtJQUFxQjtJQUFhO0lBQWdCO0lBQWlCO0lBQWlCO0lBQWdCO0lBQWlCO0lBQWdCO0lBQW9CO0lBQWdCO0lBQWlCO0lBQXFCO0lBQWlCO0lBQWU7SUFBaUI7SUFBZTtJQUFnQjtJQUFxQjtJQUFjO0lBQW1CO0lBQWM7SUFBYTtJQUFjO0lBQWtCO0lBQXdCO0lBQW9CO0lBQWE7SUFBb0I7SUFBaUI7SUFBZ0I7SUFBaUI7SUFBaUI7SUFBaUI7SUFBd0I7SUFBaUI7SUFBaUI7SUFBZ0I7SUFBaUI7SUFBZ0I7SUFBYTtJQUFpQjtJQUFpQjtJQUFpQjtJQUFrQjtJQUFhO0lBQVM7SUFBVTtJQUFNO0lBQVE7SUFBTztJQUFTO0lBQVU7SUFBTztJQUFRO0lBQzk0Qjs7Ozs7Q0FLQyxHQUNELFVBQVU7SUFDVjtJQUFVO0lBQVM7SUFBUTtJQUFZO0lBQWdCO0lBQWM7SUFBWTtJQUFxQjtJQUFnQjtJQUFjO0lBQWE7SUFBYztJQUFVO0lBQWlCO0lBQWlCO0lBQWU7SUFBVztJ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U0FBVUMsR0FBRztRQUMzQyxJQUFJVCxVQUFVVSxRQUFRLENBQUNELE1BQU07WUFDM0JKLEdBQUcsQ0FBQ0ksSUFBSSxHQUFHTixjQUFjLFNBQVVRLENBQUM7Z0JBQ2xDLE9BQU9QLFVBQVUsQ0FBQ0ssSUFBSSxDQUFDTCxZQUFZTztZQUNyQztRQUNGO0lBQ0Y7SUFDQSxPQUFPTjtBQUNULEVBQUU7QUFDRixJQUFJTyx5QkFBeUIsU0FBU0EsdUJBQXVCQyxlQUFlLEVBQUVDLElBQUksRUFBRUMsS0FBSztJQUN2RixPQUFPLFNBQVVKLENBQUM7UUFDaEJFLGdCQUFnQkMsTUFBTUMsT0FBT0o7UUFDN0IsT0FBTztJQUNUO0FBQ0Y7QUFDTyxJQUFJSyxxQkFBcUIsU0FBU0EsbUJBQW1CZCxLQUFLLEVBQUVZLElBQUksRUFBRUMsS0FBSztJQUM1RSxJQUFJLENBQUN2QixzREFBUUEsQ0FBQ1UsVUFBVWpCLFFBQVFpQixXQUFXLFVBQVU7UUFDbkQsT0FBTztJQUNUO0lBQ0EsSUFBSUcsTUFBTTtJQUNWQyxPQUFPQyxJQUFJLENBQUNMLE9BQU9NLE9BQU8sQ0FBQyxTQUFVQyxHQUFHO1FBQ3RDLElBQUlRLE9BQU9mLEtBQUssQ0FBQ08sSUFBSTtRQUNyQixJQUFJVCxVQUFVVSxRQUFRLENBQUNELFFBQVEsT0FBT1EsU0FBUyxZQUFZO1lBQ3pELElBQUksQ0FBQ1osS0FBS0EsTUFBTSxDQUFDO1lBQ2pCQSxHQUFHLENBQUNJLElBQUksR0FBR0csdUJBQXVCSyxNQUFNSCxNQUFNQztRQUNoRDtJQUNGO0lBQ0EsT0FBT1Y7QUFDVCxFQUFFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL3R5cGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmltcG9ydCB7IGlzVmFsaWRFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgdmFsdWVzIGFyZSBzdGFja2VkOlxuICpcbiAqIC0gYG5vbmVgIGlzIHRoZSBkZWZhdWx0LCBpdCBhZGRzIHZhbHVlcyBvbiB0b3Agb2YgZWFjaCBvdGhlci4gTm8gc21hcnRzLiBOZWdhdGl2ZSB2YWx1ZXMgd2lsbCBvdmVybGFwLlxuICogLSBgZXhwYW5kYCBtYWtlIGl0IHNvIHRoYXQgdGhlIHZhbHVlcyBhbHdheXMgYWRkIHVwIHRvIDEgLSBzbyB0aGUgY2hhcnQgd2lsbCBsb29rIGxpa2UgYSByZWN0YW5nbGUuXG4gKiAtIGB3aWdnbGVgIGFuZCBgc2lsaG91ZXR0ZWAgdHJpZXMgdG8ga2VlcCB0aGUgY2hhcnQgY2VudGVyZWQuXG4gKiAtIGBzaWduYCBzdGFja3MgcG9zaXRpdmUgdmFsdWVzIGFib3ZlIHplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBiZWxvdyB6ZXJvLiBTaW1pbGFyIHRvIGBub25lYCBidXQgaGFuZGxlcyBuZWdhdGl2ZXMuXG4gKiAtIGBwb3NpdGl2ZWAgaWdub3JlcyBhbGwgbmVnYXRpdmUgdmFsdWVzLCBhbmQgdGhlbiBiZWhhdmVzIGxpa2UgXFxgbm9uZVxcYC5cbiAqXG4gKiBBbHNvIHNlZSBodHRwczovL2QzanMub3JnL2QzLXNoYXBlL3N0YWNrI3N0YWNrLW9mZnNldHNcbiAqIChub3RlIHRoYXQgdGhlIGBkaXZlcmdpbmdgIG9mZnNldCBpbiBkMyBpcyBuYW1lZCBgc2lnbmAgaW4gcmVjaGFydHMpXG4gKi9cblxuLy9cbi8vIEV2ZW50IEhhbmRsZXIgVHlwZXMgLS0gQ29waWVkIGZyb20gQHR5cGVzL3JlYWN0L2luZGV4LmQudHMgYW5kIGFkYXB0ZWQgZm9yIFByb3BzLlxuLy9cblxudmFyIFNWR0NvbnRhaW5lclByb3BLZXlzID0gWyd2aWV3Qm94JywgJ2NoaWxkcmVuJ107XG5leHBvcnQgdmFyIFNWR0VsZW1lbnRQcm9wS2V5cyA9IFsnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgJ2FyaWEtYXRvbWljJywgJ2FyaWEtYXV0b2NvbXBsZXRlJywgJ2FyaWEtYnVzeScsICdhcmlhLWNoZWNrZWQnLCAnYXJpYS1jb2xjb3VudCcsICdhcmlhLWNvbGluZGV4JywgJ2FyaWEtY29sc3BhbicsICdhcmlhLWNvbnRyb2xzJywgJ2FyaWEtY3VycmVudCcsICdhcmlhLWRlc2NyaWJlZGJ5JywgJ2FyaWEtZGV0YWlscycsICdhcmlhLWRpc2FibGVkJywgJ2FyaWEtZXJyb3JtZXNzYWdlJywgJ2FyaWEtZXhwYW5kZWQnLCAnYXJpYS1mbG93dG8nLCAnYXJpYS1oYXNwb3B1cCcsICdhcmlhLWhpZGRlbicsICdhcmlhLWludmFsaWQnLCAnYXJpYS1rZXlzaG9ydGN1dHMnLCAnYXJpYS1sYWJlbCcsICdhcmlhLWxhYmVsbGVkYnknLCAnYXJpYS1sZXZlbCcsICdhcmlhLWxpdmUnLCAnYXJpYS1tb2RhbCcsICdhcmlhLW11bHRpbGluZScsICdhcmlhLW11bHRpc2VsZWN0YWJsZScsICdhcmlhLW9yaWVudGF0aW9uJywgJ2FyaWEtb3ducycsICdhcmlhLXBsYWNlaG9sZGVyJywgJ2FyaWEtcG9zaW5zZXQnLCAnYXJpYS1wcmVzc2VkJywgJ2FyaWEtcmVhZG9ubHknLCAnYXJpYS1yZWxldmFudCcsICdhcmlhLXJlcXVpcmVkJywgJ2FyaWEtcm9sZWRlc2NyaXB0aW9uJywgJ2FyaWEtcm93Y291bnQnLCAnYXJpYS1yb3dpbmRleCcsICdhcmlhLXJvd3NwYW4nLCAnYXJpYS1zZWxlY3RlZCcsICdhcmlhLXNldHNpemUnLCAnYXJpYS1zb3J0JywgJ2FyaWEtdmFsdWVtYXgnLCAnYXJpYS12YWx1ZW1pbicsICdhcmlhLXZhbHVlbm93JywgJ2FyaWEtdmFsdWV0ZXh0JywgJ2NsYXNzTmFtZScsICdjb2xvcicsICdoZWlnaHQnLCAnaWQnLCAnbGFuZycsICdtYXgnLCAnbWVkaWEnLCAnbWV0aG9kJywgJ21pbicsICduYW1lJywgJ3N0eWxlJyxcbi8qXG4gKiByZW1vdmVkICd0eXBlJyBTVkdFbGVtZW50UHJvcEtleSBiZWNhdXNlIHdlIGRvIG5vdCBjdXJyZW50bHkgdXNlIGFueSBTVkcgZWxlbWVudHNcbiAqIHRoYXQgY2FuIHVzZSBpdCBhbmQgaXQgY29uZmxpY3RzIHdpdGggdGhlIHJlY2hhcnRzIHByb3AgJ3R5cGUnXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmVjaGFydHMvcmVjaGFydHMvcHVsbC8zMzI3XG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvQXR0cmlidXRlL3R5cGVcbiAqL1xuLy8gJ3R5cGUnLFxuJ3RhcmdldCcsICd3aWR0aCcsICdyb2xlJywgJ3RhYkluZGV4JywgJ2FjY2VudEhlaWdodCcsICdhY2N1bXVsYXRlJywgJ2FkZGl0aXZlJywgJ2FsaWdubWVudEJhc2VsaW5lJywgJ2FsbG93UmVvcmRlcicsICdhbHBoYWJldGljJywgJ2FtcGxpdHVkZScsICdhcmFiaWNGb3JtJywgJ2FzY2VudCcsICdhdHRyaWJ1dGVOYW1lJywgJ2F0dHJpYnV0ZVR5cGUnLCAnYXV0b1JldmVyc2UnLCAnYXppbXV0aCcsICdiYXNlRnJlcXVlbmN5JywgJ2Jhc2VsaW5lU2hpZnQnLCAnYmFzZVByb2ZpbGUnLCAnYmJveCcsICdiZWdpbicsICdiaWFzJywgJ2J5JywgJ2NhbGNNb2RlJywgJ2NhcEhlaWdodCcsICdjbGlwJywgJ2NsaXBQYXRoJywgJ2NsaXBQYXRoVW5pdHMnLCAnY2xpcFJ1bGUnLCAnY29sb3JJbnRlcnBvbGF0aW9uJywgJ2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMnLCAnY29sb3JQcm9maWxlJywgJ2NvbG9yUmVuZGVyaW5nJywgJ2NvbnRlbnRTY3JpcHRUeXBlJywgJ2NvbnRlbnRTdHlsZVR5cGUnLCAnY3Vyc29yJywgJ2N4JywgJ2N5JywgJ2QnLCAnZGVjZWxlcmF0ZScsICdkZXNjZW50JywgJ2RpZmZ1c2VDb25zdGFudCcsICdkaXJlY3Rpb24nLCAnZGlzcGxheScsICdkaXZpc29yJywgJ2RvbWluYW50QmFzZWxpbmUnLCAnZHVyJywgJ2R4JywgJ2R5JywgJ2VkZ2VNb2RlJywgJ2VsZXZhdGlvbicsICdlbmFibGVCYWNrZ3JvdW5kJywgJ2VuZCcsICdleHBvbmVudCcsICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJywgJ2ZpbGwnLCAnZmlsbE9wYWNpdHknLCAnZmlsbFJ1bGUnLCAnZmlsdGVyJywgJ2ZpbHRlclJlcycsICdmaWx0ZXJVbml0cycsICdmbG9vZENvbG9yJywgJ2Zsb29kT3BhY2l0eScsICdmb2N1c2FibGUnLCAnZm9udEZhbWlseScsICdmb250U2l6ZScsICdmb250U2l6ZUFkanVzdCcsICdmb250U3RyZXRjaCcsICdmb250U3R5bGUnLCAnZm9udFZhcmlhbnQnLCAnZm9udFdlaWdodCcsICdmb3JtYXQnLCAnZnJvbScsICdmeCcsICdmeScsICdnMScsICdnMicsICdnbHlwaE5hbWUnLCAnZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwnLCAnZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsJywgJ2dseXBoUmVmJywgJ2dyYWRpZW50VHJhbnNmb3JtJywgJ2dyYWRpZW50VW5pdHMnLCAnaGFuZ2luZycsICdob3JpekFkdlgnLCAnaG9yaXpPcmlnaW5YJywgJ2hyZWYnLCAnaWRlb2dyYXBoaWMnLCAnaW1hZ2VSZW5kZXJpbmcnLCAnaW4yJywgJ2luJywgJ2ludGVyY2VwdCcsICdrMScsICdrMicsICdrMycsICdrNCcsICdrJywgJ2tlcm5lbE1hdHJpeCcsICdrZXJuZWxVbml0TGVuZ3RoJywgJ2tlcm5pbmcnLCAna2V5UG9pbnRzJywgJ2tleVNwbGluZXMnLCAna2V5VGltZXMnLCAnbGVuZ3RoQWRqdXN0JywgJ2xldHRlclNwYWNpbmcnLCAnbGlnaHRpbmdDb2xvcicsICdsaW1pdGluZ0NvbmVBbmdsZScsICdsb2NhbCcsICdtYXJrZXJFbmQnLCAnbWFya2VySGVpZ2h0JywgJ21hcmtlck1pZCcsICdtYXJrZXJTdGFydCcsICdtYXJrZXJVbml0cycsICdtYXJrZXJXaWR0aCcsICdtYXNrJywgJ21hc2tDb250ZW50VW5pdHMnLCAnbWFza1VuaXRzJywgJ21hdGhlbWF0aWNhbCcsICdtb2RlJywgJ251bU9jdGF2ZXMnLCAnb2Zmc2V0JywgJ29wYWNpdHknLCAnb3BlcmF0b3InLCAnb3JkZXInLCAnb3JpZW50JywgJ29yaWVudGF0aW9uJywgJ29yaWdpbicsICdvdmVyZmxvdycsICdvdmVybGluZVBvc2l0aW9uJywgJ292ZXJsaW5lVGhpY2tuZXNzJywgJ3BhaW50T3JkZXInLCAncGFub3NlMScsICdwYXRoTGVuZ3RoJywgJ3BhdHRlcm5Db250ZW50VW5pdHMnLCAncGF0dGVyblRyYW5zZm9ybScsICdwYXR0ZXJuVW5pdHMnLCAncG9pbnRlckV2ZW50cycsICdwb2ludHNBdFgnLCAncG9pbnRzQXRZJywgJ3BvaW50c0F0WicsICdwcmVzZXJ2ZUFscGhhJywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAncHJpbWl0aXZlVW5pdHMnLCAncicsICdyYWRpdXMnLCAncmVmWCcsICdyZWZZJywgJ3JlbmRlcmluZ0ludGVudCcsICdyZXBlYXRDb3VudCcsICdyZXBlYXREdXInLCAncmVxdWlyZWRFeHRlbnNpb25zJywgJ3JlcXVpcmVkRmVhdHVyZXMnLCAncmVzdGFydCcsICdyZXN1bHQnLCAncm90YXRlJywgJ3J4JywgJ3J5JywgJ3NlZWQnLCAnc2hhcGVSZW5kZXJpbmcnLCAnc2xvcGUnLCAnc3BhY2luZycsICdzcGVjdWxhckNvbnN0YW50JywgJ3NwZWN1bGFyRXhwb25lbnQnLCAnc3BlZWQnLCAnc3ByZWFkTWV0aG9kJywgJ3N0YXJ0T2Zmc2V0JywgJ3N0ZERldmlhdGlvbicsICdzdGVtaCcsICdzdGVtdicsICdzdGl0Y2hUaWxlcycsICdzdG9wQ29sb3InLCAnc3RvcE9wYWNpdHknLCAnc3RyaWtldGhyb3VnaFBvc2l0aW9uJywgJ3N0cmlrZXRocm91Z2hUaGlja25lc3MnLCAnc3RyaW5nJywgJ3N0cm9rZScsICdzdHJva2VEYXNoYXJyYXknLCAnc3Ryb2tlRGFzaG9mZnNldCcsICdzdHJva2VMaW5lY2FwJywgJ3N0cm9rZUxpbmVqb2luJywgJ3N0cm9rZU1pdGVybGltaXQnLCAnc3Ryb2tlT3BhY2l0eScsICdzdHJva2VXaWR0aCcsICdzdXJmYWNlU2NhbGUnLCAnc3lzdGVtTGFuZ3VhZ2UnLCAndGFibGVWYWx1ZXMnLCAndGFyZ2V0WCcsICd0YXJnZXRZJywgJ3RleHRBbmNob3InLCAndGV4dERlY29yYXRpb24nLCAndGV4dExlbmd0aCcsICd0ZXh0UmVuZGVyaW5nJywgJ3RvJywgJ3RyYW5zZm9ybScsICd1MScsICd1MicsICd1bmRlcmxpbmVQb3NpdGlvbicsICd1bmRlcmxpbmVUaGlja25lc3MnLCAndW5pY29kZScsICd1bmljb2RlQmlkaScsICd1bmljb2RlUmFuZ2UnLCAndW5pdHNQZXJFbScsICd2QWxwaGFiZXRpYycsICd2YWx1ZXMnLCAndmVjdG9yRWZmZWN0JywgJ3ZlcnNpb24nLCAndmVydEFkdlknLCAndmVydE9yaWdpblgnLCAndmVydE9yaWdpblknLCAndkhhbmdpbmcnLCAndklkZW9ncmFwaGljJywgJ3ZpZXdUYXJnZXQnLCAndmlzaWJpbGl0eScsICd2TWF0aGVtYXRpY2FsJywgJ3dpZHRocycsICd3b3JkU3BhY2luZycsICd3cml0aW5nTW9kZScsICd4MScsICd4MicsICd4JywgJ3hDaGFubmVsU2VsZWN0b3InLCAneEhlaWdodCcsICd4bGlua0FjdHVhdGUnLCAneGxpbmtBcmNyb2xlJywgJ3hsaW5rSHJlZicsICd4bGlua1JvbGUnLCAneGxpbmtTaG93JywgJ3hsaW5rVGl0bGUnLCAneGxpbmtUeXBlJywgJ3htbEJhc2UnLCAneG1sTGFuZycsICd4bWxucycsICd4bWxuc1hsaW5rJywgJ3htbFNwYWNlJywgJ3kxJywgJ3kyJywgJ3knLCAneUNoYW5uZWxTZWxlY3RvcicsICd6JywgJ3pvb21BbmRQYW4nLCAncmVmJywgJ2tleScsICdhbmdsZSddO1xudmFyIFBvbHlFbGVtZW50S2V5cyA9IFsncG9pbnRzJywgJ3BhdGhMZW5ndGgnXTtcblxuLyoqIHN2ZyBlbGVtZW50IHR5cGVzIHRoYXQgaGF2ZSBzcGVjaWZpYyBhdHRyaWJ1dGUgZmlsdHJhdGlvbiByZXF1aXJlbWVudHMgKi9cblxuLyoqIG1hcCBvZiBzdmcgZWxlbWVudCB0eXBlcyB0byB1bmlxdWUgc3ZnIGF0dHJpYnV0ZXMgdGhhdCBiZWxvbmcgdG8gdGhhdCBlbGVtZW50ICovXG5leHBvcnQgdmFyIEZpbHRlcmVkRWxlbWVudEtleU1hcCA9IHtcbiAgc3ZnOiBTVkdDb250YWluZXJQcm9wS2V5cyxcbiAgcG9seWdvbjogUG9seUVsZW1lbnRLZXlzLFxuICBwb2x5bGluZTogUG9seUVsZW1lbnRLZXlzXG59O1xuZXhwb3J0IHZhciBFdmVudEtleXMgPSBbJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJywgJ29uQ29weScsICdvbkNvcHlDYXB0dXJlJywgJ29uQ3V0JywgJ29uQ3V0Q2FwdHVyZScsICdvblBhc3RlJywgJ29uUGFzdGVDYXB0dXJlJywgJ29uQ29tcG9zaXRpb25FbmQnLCAnb25Db21wb3NpdGlvbkVuZENhcHR1cmUnLCAnb25Db21wb3NpdGlvblN0YXJ0JywgJ29uQ29tcG9zaXRpb25TdGFydENhcHR1cmUnLCAnb25Db21wb3NpdGlvblVwZGF0ZScsICdvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZScsICdvbkZvY3VzJywgJ29uRm9jdXNDYXB0dXJlJywgJ29uQmx1cicsICdvbkJsdXJDYXB0dXJlJywgJ29uQ2hhbmdlJywgJ29uQ2hhbmdlQ2FwdHVyZScsICdvbkJlZm9yZUlucHV0JywgJ29uQmVmb3JlSW5wdXRDYXB0dXJlJywgJ29uSW5wdXQnLCAnb25JbnB1dENhcHR1cmUnLCAnb25SZXNldCcsICdvblJlc2V0Q2FwdHVyZScsICdvblN1Ym1pdCcsICdvblN1Ym1pdENhcHR1cmUnLCAnb25JbnZhbGlkJywgJ29uSW52YWxpZENhcHR1cmUnLCAnb25Mb2FkJywgJ29uTG9hZENhcHR1cmUnLCAnb25FcnJvcicsICdvbkVycm9yQ2FwdHVyZScsICdvbktleURvd24nLCAnb25LZXlEb3duQ2FwdHVyZScsICdvbktleVByZXNzJywgJ29uS2V5UHJlc3NDYXB0dXJlJywgJ29uS2V5VXAnLCAnb25LZXlVcENhcHR1cmUnLCAnb25BYm9ydCcsICdvbkFib3J0Q2FwdHVyZScsICdvbkNhblBsYXknLCAnb25DYW5QbGF5Q2FwdHVyZScsICdvbkNhblBsYXlUaHJvdWdoJywgJ29uQ2FuUGxheVRocm91Z2hDYXB0dXJlJywgJ29uRHVyYXRpb25DaGFuZ2UnLCAnb25EdXJhdGlvbkNoYW5nZUNhcHR1cmUnLCAnb25FbXB0aWVkJywgJ29uRW1wdGllZENhcHR1cmUnLCAnb25FbmNyeXB0ZWQnLCAnb25FbmNyeXB0ZWRDYXB0dXJlJywgJ29uRW5kZWQnLCAnb25FbmRlZENhcHR1cmUnLCAnb25Mb2FkZWREYXRhJywgJ29uTG9hZGVkRGF0YUNhcHR1cmUnLCAnb25Mb2FkZWRNZXRhZGF0YScsICdvbkxvYWRlZE1ldGFkYXRhQ2FwdHVyZScsICdvbkxvYWRTdGFydCcsICdvbkxvYWRTdGFydENhcHR1cmUnLCAnb25QYXVzZScsICdvblBhdXNlQ2FwdHVyZScsICdvblBsYXknLCAnb25QbGF5Q2FwdHVyZScsICdvblBsYXlpbmcnLCAnb25QbGF5aW5nQ2FwdHVyZScsICdvblByb2dyZXNzJywgJ29uUHJvZ3Jlc3NDYXB0dXJlJywgJ29uUmF0ZUNoYW5nZScsICdvblJhdGVDaGFuZ2VDYXB0dXJlJywgJ29uU2Vla2VkJywgJ29uU2Vla2VkQ2FwdHVyZScsICdvblNlZWtpbmcnLCAnb25TZWVraW5nQ2FwdHVyZScsICdvblN0YWxsZWQnLCAnb25TdGFsbGVkQ2FwdHVyZScsICdvblN1c3BlbmQnLCAnb25TdXNwZW5kQ2FwdHVyZScsICdvblRpbWVVcGRhdGUnLCAnb25UaW1lVXBkYXRlQ2FwdHVyZScsICdvblZvbHVtZUNoYW5nZScsICdvblZvbHVtZUNoYW5nZUNhcHR1cmUnLCAnb25XYWl0aW5nJywgJ29uV2FpdGluZ0NhcHR1cmUnLCAnb25BdXhDbGljaycsICdvbkF1eENsaWNrQ2FwdHVyZScsICdvbkNsaWNrJywgJ29uQ2xpY2tDYXB0dXJlJywgJ29uQ29udGV4dE1lbnUnLCAnb25Db250ZXh0TWVudUNhcHR1cmUnLCAnb25Eb3VibGVDbGljaycsICdvbkRvdWJsZUNsaWNrQ2FwdHVyZScsICdvbkRyYWcnLCAnb25EcmFnQ2FwdHVyZScsICdvbkRyYWdFbmQnLCAnb25EcmFnRW5kQ2FwdHVyZScsICdvbkRyYWdFbnRlcicsICdvbkRyYWdFbnRlckNhcHR1cmUnLCAnb25EcmFnRXhpdCcsICdvbkRyYWdFeGl0Q2FwdHVyZScsICdvbkRyYWdMZWF2ZScsICdvbkRyYWdMZWF2ZUNhcHR1cmUnLCAnb25EcmFnT3ZlcicsICdvbkRyYWdPdmVyQ2FwdHVyZScsICdvbkRyYWdTdGFydCcsICdvbkRyYWdTdGFydENhcHR1cmUnLCAnb25Ecm9wJywgJ29uRHJvcENhcHR1cmUnLCAnb25Nb3VzZURvd24nLCAnb25Nb3VzZURvd25DYXB0dXJlJywgJ29uTW91c2VFbnRlcicsICdvbk1vdXNlTGVhdmUnLCAnb25Nb3VzZU1vdmUnLCAnb25Nb3VzZU1vdmVDYXB0dXJlJywgJ29uTW91c2VPdXQnLCAnb25Nb3VzZU91dENhcHR1cmUnLCAnb25Nb3VzZU92ZXInLCAnb25Nb3VzZU92ZXJDYXB0dXJlJywgJ29uTW91c2VVcCcsICdvbk1vdXNlVXBDYXB0dXJlJywgJ29uU2VsZWN0JywgJ29uU2VsZWN0Q2FwdHVyZScsICdvblRvdWNoQ2FuY2VsJywgJ29uVG91Y2hDYW5jZWxDYXB0dXJlJywgJ29uVG91Y2hFbmQnLCAnb25Ub3VjaEVuZENhcHR1cmUnLCAnb25Ub3VjaE1vdmUnLCAnb25Ub3VjaE1vdmVDYXB0dXJlJywgJ29uVG91Y2hTdGFydCcsICdvblRvdWNoU3RhcnRDYXB0dXJlJywgJ29uUG9pbnRlckRvd24nLCAnb25Qb2ludGVyRG93bkNhcHR1cmUnLCAnb25Qb2ludGVyTW92ZScsICdvblBvaW50ZXJNb3ZlQ2FwdHVyZScsICdvblBvaW50ZXJVcCcsICdvblBvaW50ZXJVcENhcHR1cmUnLCAnb25Qb2ludGVyQ2FuY2VsJywgJ29uUG9pbnRlckNhbmNlbENhcHR1cmUnLCAnb25Qb2ludGVyRW50ZXInLCAnb25Qb2ludGVyRW50ZXJDYXB0dXJlJywgJ29uUG9pbnRlckxlYXZlJywgJ29uUG9pbnRlckxlYXZlQ2FwdHVyZScsICdvblBvaW50ZXJPdmVyJywgJ29uUG9pbnRlck92ZXJDYXB0dXJlJywgJ29uUG9pbnRlck91dCcsICdvblBvaW50ZXJPdXRDYXB0dXJlJywgJ29uR290UG9pbnRlckNhcHR1cmUnLCAnb25Hb3RQb2ludGVyQ2FwdHVyZUNhcHR1cmUnLCAnb25Mb3N0UG9pbnRlckNhcHR1cmUnLCAnb25Mb3N0UG9pbnRlckNhcHR1cmVDYXB0dXJlJywgJ29uU2Nyb2xsJywgJ29uU2Nyb2xsQ2FwdHVyZScsICdvbldoZWVsJywgJ29uV2hlZWxDYXB0dXJlJywgJ29uQW5pbWF0aW9uU3RhcnQnLCAnb25BbmltYXRpb25TdGFydENhcHR1cmUnLCAnb25BbmltYXRpb25FbmQnLCAnb25BbmltYXRpb25FbmRDYXB0dXJlJywgJ29uQW5pbWF0aW9uSXRlcmF0aW9uJywgJ29uQW5pbWF0aW9uSXRlcmF0aW9uQ2FwdHVyZScsICdvblRyYW5zaXRpb25FbmQnLCAnb25UcmFuc2l0aW9uRW5kQ2FwdHVyZSddO1xuXG4vKiogVGhlIHR5cGUgb2YgZWFzaW5nIGZ1bmN0aW9uIHRvIHVzZSBmb3IgYW5pbWF0aW9ucyAqL1xuXG4vKiogU3BlY2lmaWVzIHRoZSBkdXJhdGlvbiBvZiBhbmltYXRpb24sIHRoZSB1bml0IG9mIHRoaXMgb3B0aW9uIGlzIG1zLiAqL1xuXG4vKiogdGhlIG9mZnNldCBvZiBhIGNoYXJ0LCB3aGljaCBkZWZpbmUgdGhlIGJsYW5rIHNwYWNlIGFsbCBhcm91bmQgKi9cblxuLyoqXG4gKiBUaGUgZG9tYWluIG9mIGF4aXMuXG4gKiBUaGlzIGlzIHRoZSBkZWZpbml0aW9uXG4gKlxuICogTnVtZXJpYyBkb21haW4gaXMgYWx3YXlzIGRlZmluZWQgYnkgYW4gYXJyYXkgb2YgZXhhY3RseSB0d28gdmFsdWVzLCBmb3IgdGhlIG1pbiBhbmQgdGhlIG1heCBvZiB0aGUgYXhpcy5cbiAqIENhdGVnb3JpY2FsIGRvbWFpbiBpcyBkZWZpbmVkIGFzIGFycmF5IG9mIGFsbCBwb3NzaWJsZSB2YWx1ZXMuXG4gKlxuICogQ2FuIGJlIHNwZWNpZmllZCBpbiBtYW55IHdheXM6XG4gKiAtIGFycmF5IG9mIG51bWJlcnNcbiAqIC0gd2l0aCBzcGVjaWFsIHN0cmluZ3MgbGlrZSAnZGF0YU1pbicgYW5kICdkYXRhTWF4J1xuICogLSB3aXRoIHNwZWNpYWwgc3RyaW5nIG1hdGggbGlrZSAnZGF0YU1pbiAtIDEwMCdcbiAqIC0gd2l0aCBrZXl3b3JkICdhdXRvJ1xuICogLSBvciBhIGZ1bmN0aW9uXG4gKiAtIGFycmF5IG9mIGZ1bmN0aW9uc1xuICogLSBvciBhIGNvbWJpbmF0aW9uIG9mIHRoZSBhYm92ZVxuICovXG5cbi8qKlxuICogTnVtYmVyRG9tYWluIGlzIGFuIGV2YWx1YXRlZCB7QGxpbmsgQXhpc0RvbWFpbn0uXG4gKiBVbmxpa2Uge0BsaW5rIEF4aXNEb21haW59LCBpdCBoYXMgbm8gdmFyaWV0eSAtIGl0J3MgYSB0dXBsZSBvZiB0d28gbnVtYmVyLlxuICogVGhpcyBpcyBhZnRlciBhbGwgdGhlIGtleXdvcmRzIGFuZCBmdW5jdGlvbnMgd2VyZSBldmFsdWF0ZWQgYW5kIHdoYXQgaXMgbGVmdCBpcyBbbWluLCBtYXhdLlxuICpcbiAqIEtub3cgdGhhdCB0aGUgbWluLCBtYXggdmFsdWVzIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBuaWNlIG51bWJlcnMgLSB2YWx1ZXMgbGlrZSAtSW5maW5pdHkgb3IgTmFOIGFyZSBwb3NzaWJsZS5cbiAqXG4gKiBUaGVyZSBhcmUgYWxzbyBgY2F0ZWdvcnlgIGF4ZXMgdGhhdCBoYXZlIGRpZmZlcmVudCB0aGluZ3MgdGhhbiBudW1iZXJzIGluIHRoZWlyIGRvbWFpbi5cbiAqL1xuXG4vKiogVGhlIHByb3BzIGRlZmluaXRpb24gb2YgYmFzZSBheGlzICovXG5cbi8qKiBEZWZpbmVzIGhvdyB0aWNrcyBhcmUgcGxhY2VkIGFuZCB3aGV0aGVyIC8gaG93IHRpY2sgY29sbGlzaW9ucyBhcmUgaGFuZGxlZC5cbiAqICdwcmVzZXJ2ZVN0YXJ0JyBrZWVwcyB0aGUgbGVmdCB0aWNrIG9uIGNvbGxpc2lvbiBhbmQgZW5zdXJlcyB0aGF0IHRoZSBmaXJzdCB0aWNrIGlzIGFsd2F5cyBzaG93bi5cbiAqICdwcmVzZXJ2ZUVuZCcga2VlcHMgdGhlIHJpZ2h0IHRpY2sgb24gY29sbGlzaW9uIGFuZCBlbnN1cmVzIHRoYXQgdGhlIGxhc3QgdGljayBpcyBhbHdheXMgc2hvd24uXG4gKiAncHJlc2VydmVTdGFydEVuZCcga2VlcHMgdGhlIGxlZnQgdGljayBvbiBjb2xsaXNpb24gYW5kIGVuc3VyZXMgdGhhdCB0aGUgZmlyc3QgYW5kIGxhc3QgdGlja3MgYXJlIGFsd2F5cyBzaG93bi5cbiAqICdlcXVpZGlzdGFudFByZXNlcnZlU3RhcnQnIHNlbGVjdHMgYSBudW1iZXIgTiBzdWNoIHRoYXQgZXZlcnkgblRoIHRpY2sgd2lsbCBiZSBzaG93biB3aXRob3V0IGNvbGxpc2lvbi5cbiAqL1xuXG5leHBvcnQgdmFyIGFkYXB0RXZlbnRIYW5kbGVycyA9IGZ1bmN0aW9uIGFkYXB0RXZlbnRIYW5kbGVycyhwcm9wcywgbmV3SGFuZGxlcikge1xuICBpZiAoIXByb3BzIHx8IHR5cGVvZiBwcm9wcyA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgcHJvcHMgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBpbnB1dFByb3BzID0gcHJvcHM7XG4gIGlmICggLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KHByb3BzKSkge1xuICAgIGlucHV0UHJvcHMgPSBwcm9wcy5wcm9wcztcbiAgfVxuICBpZiAoIWlzT2JqZWN0KGlucHV0UHJvcHMpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIG91dCA9IHt9O1xuICBPYmplY3Qua2V5cyhpbnB1dFByb3BzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoRXZlbnRLZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIG91dFtrZXldID0gbmV3SGFuZGxlciB8fCBmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gaW5wdXRQcm9wc1trZXldKGlucHV0UHJvcHMsIGUpO1xuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufTtcbnZhciBnZXRFdmVudEhhbmRsZXJPZkNoaWxkID0gZnVuY3Rpb24gZ2V0RXZlbnRIYW5kbGVyT2ZDaGlsZChvcmlnaW5hbEhhbmRsZXIsIGRhdGEsIGluZGV4KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZSkge1xuICAgIG9yaWdpbmFsSGFuZGxlcihkYXRhLCBpbmRleCwgZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59O1xuZXhwb3J0IHZhciBhZGFwdEV2ZW50c09mQ2hpbGQgPSBmdW5jdGlvbiBhZGFwdEV2ZW50c09mQ2hpbGQocHJvcHMsIGRhdGEsIGluZGV4KSB7XG4gIGlmICghaXNPYmplY3QocHJvcHMpIHx8IF90eXBlb2YocHJvcHMpICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBvdXQgPSBudWxsO1xuICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGl0ZW0gPSBwcm9wc1trZXldO1xuICAgIGlmIChFdmVudEtleXMuaW5jbHVkZXMoa2V5KSAmJiB0eXBlb2YgaXRlbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKCFvdXQpIG91dCA9IHt9O1xuICAgICAgb3V0W2tleV0gPSBnZXRFdmVudEhhbmRsZXJPZkNoaWxkKGl0ZW0sIGRhdGEsIGluZGV4KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiaXNWYWxpZEVsZW1lbnQiLCJpc09iamVjdCIsIlNWR0NvbnRhaW5lclByb3BLZXlzIiwiU1ZHRWxlbWVudFByb3BLZXlzIiwiUG9seUVsZW1lbnRLZXlzIiwiRmlsdGVyZWRFbGVtZW50S2V5TWFwIiwic3ZnIiwicG9seWdvbiIsInBvbHlsaW5lIiwiRXZlbnRLZXlzIiwiYWRhcHRFdmVudEhhbmRsZXJzIiwicHJvcHMiLCJuZXdIYW5kbGVyIiwiaW5wdXRQcm9wcyIsIm91dCIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiaW5jbHVkZXMiLCJlIiwiZ2V0RXZlbnRIYW5kbGVyT2ZDaGlsZCIsIm9yaWdpbmFsSGFuZGxlciIsImRhdGEiLCJpbmRleCIsImFkYXB0RXZlbnRzT2ZDaGlsZCIsIml0ZW0iXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/types.js\n");
/***/ })
};
;