"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/future/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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QUFRO2dCQUNmdkIsR0FBR0EsSUFBSXlCLFNBQVM7WUFDbEI7UUFDRjtJQUNGO0lBQ0EsT0FBTzlILGNBQWM7UUFDbkJtRixNQUFNb0g7UUFDTjlGLFFBQVFBO0lBQ1YsR0FBRzJDO0FBQ0wiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9CYXIuanM/OGNjZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1widmFsdWVcIiwgXCJiYWNrZ3JvdW5kXCJdO1xudmFyIF9CYXI7XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIF9jYWxsU3VwZXIodCwgbywgZSkgeyByZXR1cm4gbyA9IF9nZXRQcm90b3R5cGVPZihvKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpID8gUmVmbGVjdC5jb25zdHJ1Y3QobywgZSB8fCBbXSwgX2dldFByb3RvdHlwZU9mKHQpLmNvbnN0cnVjdG9yKSA6IG8uYXBwbHkodCwgZSkpOyB9XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IGVsc2UgaWYgKGNhbGwgIT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgdHJ5IHsgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyB9IGNhdGNoICh0KSB7fSByZXR1cm4gKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyByZXR1cm4gISF0OyB9KSgpOyB9XG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBSZW5kZXIgYSBncm91cCBvZiBiYXJcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBBbmltYXRlIGZyb20gJ3JlYWN0LXNtb290aCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vY29udGFpbmVyL0xheWVyJztcbmltcG9ydCB7IEVycm9yQmFyIH0gZnJvbSAnLi9FcnJvckJhcic7XG5pbXBvcnQgeyBDZWxsIH0gZnJvbSAnLi4vY29tcG9uZW50L0NlbGwnO1xuaW1wb3J0IHsgTGFiZWxMaXN0IH0gZnJvbSAnLi4vY29tcG9uZW50L0xhYmVsTGlzdCc7XG5pbXBvcnQgeyB1bmlxdWVJZCwgbWF0aFNpZ24sIGludGVycG9sYXRlTnVtYmVyIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMsIGZpbmRBbGxCeVR5cGUgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnLi4vdXRpbC9HbG9iYWwnO1xuaW1wb3J0IHsgZ2V0Q2F0ZUNvb3JkaW5hdGVPZkJhciwgZ2V0VmFsdWVCeURhdGFLZXksIHRydW5jYXRlQnlEb21haW4sIGdldEJhc2VWYWx1ZU9mQmFyLCBmaW5kUG9zaXRpb25PZkJhciwgZ2V0VG9vbHRpcEl0ZW0gfSBmcm9tICcuLi91dGlsL0NoYXJ0VXRpbHMnO1xuaW1wb3J0IHsgYWRhcHRFdmVudHNPZkNoaWxkIH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQgeyBCYXJSZWN0YW5nbGUsIG1pblBvaW50U2l6ZUNhbGxiYWNrIH0gZnJvbSAnLi4vdXRpbC9CYXJVdGlscyc7XG5leHBvcnQgdmFyIEJhciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1B1cmVDb21wb25lbnQpIHtcbiAgZnVuY3Rpb24gQmFyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQmFyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX2NhbGxTdXBlcih0aGlzLCBCYXIsIFtdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInN0YXRlXCIsIHtcbiAgICAgIGlzQW5pbWF0aW9uRmluaXNoZWQ6IGZhbHNlXG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImlkXCIsIHVuaXF1ZUlkKCdyZWNoYXJ0cy1iYXItJykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVBbmltYXRpb25FbmRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG9uQW5pbWF0aW9uRW5kID0gX3RoaXMucHJvcHMub25BbmltYXRpb25FbmQ7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzQW5pbWF0aW9uRmluaXNoZWQ6IHRydWVcbiAgICAgIH0pO1xuICAgICAgaWYgKG9uQW5pbWF0aW9uRW5kKSB7XG4gICAgICAgIG9uQW5pbWF0aW9uRW5kKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZUFuaW1hdGlvblN0YXJ0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBvbkFuaW1hdGlvblN0YXJ0ID0gX3RoaXMucHJvcHMub25BbmltYXRpb25TdGFydDtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNBbmltYXRpb25GaW5pc2hlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgaWYgKG9uQW5pbWF0aW9uU3RhcnQpIHtcbiAgICAgICAgb25BbmltYXRpb25TdGFydCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfaW5oZXJpdHMoQmFyLCBfUHVyZUNvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoQmFyLCBbe1xuICAgIGtleTogXCJyZW5kZXJSZWN0YW5nbGVzU3RhdGljYWxseVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJSZWN0YW5nbGVzU3RhdGljYWxseShkYXRhKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgIHNoYXBlID0gX3RoaXMkcHJvcHMuc2hhcGUsXG4gICAgICAgIGRhdGFLZXkgPSBfdGhpcyRwcm9wcy5kYXRhS2V5LFxuICAgICAgICBhY3RpdmVJbmRleCA9IF90aGlzJHByb3BzLmFjdGl2ZUluZGV4LFxuICAgICAgICBhY3RpdmVCYXIgPSBfdGhpcyRwcm9wcy5hY3RpdmVCYXI7XG4gICAgICB2YXIgYmFzZVByb3BzID0gZmlsdGVyUHJvcHModGhpcy5wcm9wcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIGRhdGEgJiYgZGF0YS5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgICAgIHZhciBpc0FjdGl2ZSA9IGkgPT09IGFjdGl2ZUluZGV4O1xuICAgICAgICB2YXIgb3B0aW9uID0gaXNBY3RpdmUgPyBhY3RpdmVCYXIgOiBzaGFwZTtcbiAgICAgICAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGJhc2VQcm9wcyksIGVudHJ5KSwge30sIHtcbiAgICAgICAgICBpc0FjdGl2ZTogaXNBY3RpdmUsXG4gICAgICAgICAgb3B0aW9uOiBvcHRpb24sXG4gICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgZGF0YUtleTogZGF0YUtleSxcbiAgICAgICAgICBvbkFuaW1hdGlvblN0YXJ0OiBfdGhpczIuaGFuZGxlQW5pbWF0aW9uU3RhcnQsXG4gICAgICAgICAgb25BbmltYXRpb25FbmQ6IF90aGlzMi5oYW5kbGVBbmltYXRpb25FbmRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgX2V4dGVuZHMoe1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1iYXItcmVjdGFuZ2xlXCJcbiAgICAgICAgfSwgYWRhcHRFdmVudHNPZkNoaWxkKF90aGlzMi5wcm9wcywgZW50cnksIGkpLCB7XG4gICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlY2hhcnRzL3JlY2hhcnRzL2lzc3Vlcy81NDE1XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgICAgIGtleTogXCJyZWN0YW5nbGUtXCIuY29uY2F0KGVudHJ5ID09PSBudWxsIHx8IGVudHJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS54LCBcIi1cIikuY29uY2F0KGVudHJ5ID09PSBudWxsIHx8IGVudHJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS55LCBcIi1cIikuY29uY2F0KGVudHJ5ID09PSBudWxsIHx8IGVudHJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS52YWx1ZSwgXCItXCIpLmNvbmNhdChpKVxuICAgICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQmFyUmVjdGFuZ2xlLCBwcm9wcykpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclJlY3RhbmdsZXNXaXRoQW5pbWF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclJlY3RhbmdsZXNXaXRoQW5pbWF0aW9uKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzMi5kYXRhLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wczIubGF5b3V0LFxuICAgICAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IF90aGlzJHByb3BzMi5pc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgICAgYW5pbWF0aW9uQmVnaW4gPSBfdGhpcyRwcm9wczIuYW5pbWF0aW9uQmVnaW4sXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gX3RoaXMkcHJvcHMyLmFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgICBhbmltYXRpb25FYXNpbmcgPSBfdGhpcyRwcm9wczIuYW5pbWF0aW9uRWFzaW5nLFxuICAgICAgICBhbmltYXRpb25JZCA9IF90aGlzJHByb3BzMi5hbmltYXRpb25JZDtcbiAgICAgIHZhciBwcmV2RGF0YSA9IHRoaXMuc3RhdGUucHJldkRhdGE7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQW5pbWF0ZSwge1xuICAgICAgICBiZWdpbjogYW5pbWF0aW9uQmVnaW4sXG4gICAgICAgIGR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgaXNBY3RpdmU6IGlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBlYXNpbmc6IGFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHQ6IDBcbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB0OiAxXG4gICAgICAgIH0sXG4gICAgICAgIGtleTogXCJiYXItXCIuY29uY2F0KGFuaW1hdGlvbklkKSxcbiAgICAgICAgb25BbmltYXRpb25FbmQ6IHRoaXMuaGFuZGxlQW5pbWF0aW9uRW5kLFxuICAgICAgICBvbkFuaW1hdGlvblN0YXJ0OiB0aGlzLmhhbmRsZUFuaW1hdGlvblN0YXJ0XG4gICAgICB9LCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgdCA9IF9yZWYudDtcbiAgICAgICAgdmFyIHN0ZXBEYXRhID0gZGF0YS5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xuICAgICAgICAgIHZhciBwcmV2ID0gcHJldkRhdGEgJiYgcHJldkRhdGFbaW5kZXhdO1xuICAgICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgICB2YXIgaW50ZXJwb2xhdG9yWCA9IGludGVycG9sYXRlTnVtYmVyKHByZXYueCwgZW50cnkueCk7XG4gICAgICAgICAgICB2YXIgaW50ZXJwb2xhdG9yWSA9IGludGVycG9sYXRlTnVtYmVyKHByZXYueSwgZW50cnkueSk7XG4gICAgICAgICAgICB2YXIgaW50ZXJwb2xhdG9yV2lkdGggPSBpbnRlcnBvbGF0ZU51bWJlcihwcmV2LndpZHRoLCBlbnRyeS53aWR0aCk7XG4gICAgICAgICAgICB2YXIgaW50ZXJwb2xhdG9ySGVpZ2h0ID0gaW50ZXJwb2xhdGVOdW1iZXIocHJldi5oZWlnaHQsIGVudHJ5LmhlaWdodCk7XG4gICAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgICAgICAgIHg6IGludGVycG9sYXRvclgodCksXG4gICAgICAgICAgICAgIHk6IGludGVycG9sYXRvclkodCksXG4gICAgICAgICAgICAgIHdpZHRoOiBpbnRlcnBvbGF0b3JXaWR0aCh0KSxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBpbnRlcnBvbGF0b3JIZWlnaHQodClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIHZhciBfaW50ZXJwb2xhdG9ySGVpZ2h0ID0gaW50ZXJwb2xhdGVOdW1iZXIoMCwgZW50cnkuaGVpZ2h0KTtcbiAgICAgICAgICAgIHZhciBoID0gX2ludGVycG9sYXRvckhlaWdodCh0KTtcbiAgICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGVudHJ5KSwge30sIHtcbiAgICAgICAgICAgICAgeTogZW50cnkueSArIGVudHJ5LmhlaWdodCAtIGgsXG4gICAgICAgICAgICAgIGhlaWdodDogaFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBpbnRlcnBvbGF0b3IgPSBpbnRlcnBvbGF0ZU51bWJlcigwLCBlbnRyeS53aWR0aCk7XG4gICAgICAgICAgdmFyIHcgPSBpbnRlcnBvbGF0b3IodCk7XG4gICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICAgICAgd2lkdGg6IHdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgbnVsbCwgX3RoaXMzLnJlbmRlclJlY3RhbmdsZXNTdGF0aWNhbGx5KHN0ZXBEYXRhKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyUmVjdGFuZ2xlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJSZWN0YW5nbGVzKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczMuZGF0YSxcbiAgICAgICAgaXNBbmltYXRpb25BY3RpdmUgPSBfdGhpcyRwcm9wczMuaXNBbmltYXRpb25BY3RpdmU7XG4gICAgICB2YXIgcHJldkRhdGEgPSB0aGlzLnN0YXRlLnByZXZEYXRhO1xuICAgICAgaWYgKGlzQW5pbWF0aW9uQWN0aXZlICYmIGRhdGEgJiYgZGF0YS5sZW5ndGggJiYgKCFwcmV2RGF0YSB8fCAhaXNFcXVhbChwcmV2RGF0YSwgZGF0YSkpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlclJlY3RhbmdsZXNXaXRoQW5pbWF0aW9uKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJSZWN0YW5nbGVzU3RhdGljYWxseShkYXRhKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQmFja2dyb3VuZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJCYWNrZ3JvdW5kKCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM0ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzNC5kYXRhLFxuICAgICAgICBkYXRhS2V5ID0gX3RoaXMkcHJvcHM0LmRhdGFLZXksXG4gICAgICAgIGFjdGl2ZUluZGV4ID0gX3RoaXMkcHJvcHM0LmFjdGl2ZUluZGV4O1xuICAgICAgdmFyIGJhY2tncm91bmRQcm9wcyA9IGZpbHRlclByb3BzKHRoaXMucHJvcHMuYmFja2dyb3VuZCwgZmFsc2UpO1xuICAgICAgcmV0dXJuIGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBlbnRyeS52YWx1ZSxcbiAgICAgICAgICBiYWNrZ3JvdW5kID0gZW50cnkuYmFja2dyb3VuZCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGVudHJ5LCBfZXhjbHVkZWQpO1xuICAgICAgICBpZiAoIWJhY2tncm91bmQpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3QpLCB7fSwge1xuICAgICAgICAgIGZpbGw6ICcjZWVlJ1xuICAgICAgICB9LCBiYWNrZ3JvdW5kKSwgYmFja2dyb3VuZFByb3BzKSwgYWRhcHRFdmVudHNPZkNoaWxkKF90aGlzNC5wcm9wcywgZW50cnksIGkpKSwge30sIHtcbiAgICAgICAgICBvbkFuaW1hdGlvblN0YXJ0OiBfdGhpczQuaGFuZGxlQW5pbWF0aW9uU3RhcnQsXG4gICAgICAgICAgb25BbmltYXRpb25FbmQ6IF90aGlzNC5oYW5kbGVBbmltYXRpb25FbmQsXG4gICAgICAgICAgZGF0YUtleTogZGF0YUtleSxcbiAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWNoYXJ0cy1iYXItYmFja2dyb3VuZC1yZWN0YW5nbGUnXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQmFyUmVjdGFuZ2xlLCBfZXh0ZW5kcyh7XG4gICAgICAgICAga2V5OiBcImJhY2tncm91bmQtYmFyLVwiLmNvbmNhdChpKSxcbiAgICAgICAgICBvcHRpb246IF90aGlzNC5wcm9wcy5iYWNrZ3JvdW5kLFxuICAgICAgICAgIGlzQWN0aXZlOiBpID09PSBhY3RpdmVJbmRleFxuICAgICAgICB9LCBwcm9wcykpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckVycm9yQmFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckVycm9yQmFyKG5lZWRDbGlwLCBjbGlwUGF0aElkKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5pc0FuaW1hdGlvbkFjdGl2ZSAmJiAhdGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIF90aGlzJHByb3BzNSA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczUuZGF0YSxcbiAgICAgICAgeEF4aXMgPSBfdGhpcyRwcm9wczUueEF4aXMsXG4gICAgICAgIHlBeGlzID0gX3RoaXMkcHJvcHM1LnlBeGlzLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wczUubGF5b3V0LFxuICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNS5jaGlsZHJlbjtcbiAgICAgIHZhciBlcnJvckJhckl0ZW1zID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgRXJyb3JCYXIpO1xuICAgICAgaWYgKCFlcnJvckJhckl0ZW1zKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIG9mZnNldCA9IGxheW91dCA9PT0gJ3ZlcnRpY2FsJyA/IGRhdGFbMF0uaGVpZ2h0IC8gMiA6IGRhdGFbMF0ud2lkdGggLyAyO1xuICAgICAgdmFyIGRhdGFQb2ludEZvcm1hdHRlciA9IGZ1bmN0aW9uIGRhdGFQb2ludEZvcm1hdHRlcihkYXRhUG9pbnQsIGRhdGFLZXkpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGlmIHRoZSB2YWx1ZSBjb21pbmcgZnJvbSBgZ2V0Q29tcG9zZWREYXRhYCBpcyBhbiBhcnJheSB0aGVuIHRoaXMgaXMgYSBzdGFja2VkIGJhciBjaGFydC5cbiAgICAgICAgICogYXJyWzFdIHJlcHJlc2VudHMgZW5kIHZhbHVlIG9mIHRoZSBiYXIgc2luY2UgdGhlIGRhdGEgaXMgaW4gdGhlIGZvcm0gb2YgW3N0YXJ0VmFsdWUsIGVuZFZhbHVlXS5cbiAgICAgICAgICogKi9cbiAgICAgICAgdmFyIHZhbHVlID0gQXJyYXkuaXNBcnJheShkYXRhUG9pbnQudmFsdWUpID8gZGF0YVBvaW50LnZhbHVlWzFdIDogZGF0YVBvaW50LnZhbHVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IGRhdGFQb2ludC54LFxuICAgICAgICAgIHk6IGRhdGFQb2ludC55LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBlcnJvclZhbDogZ2V0VmFsdWVCeURhdGFLZXkoZGF0YVBvaW50LCBkYXRhS2V5KVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHZhciBlcnJvckJhclByb3BzID0ge1xuICAgICAgICBjbGlwUGF0aDogbmVlZENsaXAgPyBcInVybCgjY2xpcFBhdGgtXCIuY29uY2F0KGNsaXBQYXRoSWQsIFwiKVwiKSA6IG51bGxcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIGVycm9yQmFyUHJvcHMsIGVycm9yQmFySXRlbXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGl0ZW0sIHtcbiAgICAgICAgICBrZXk6IFwiZXJyb3ItYmFyLVwiLmNvbmNhdChjbGlwUGF0aElkLCBcIi1cIikuY29uY2F0KGl0ZW0ucHJvcHMuZGF0YUtleSksXG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICB4QXhpczogeEF4aXMsXG4gICAgICAgICAgeUF4aXM6IHlBeGlzLFxuICAgICAgICAgIGxheW91dDogbGF5b3V0LFxuICAgICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICAgIGRhdGFQb2ludEZvcm1hdHRlcjogZGF0YVBvaW50Rm9ybWF0dGVyXG4gICAgICAgIH0pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGhpZGUgPSBfdGhpcyRwcm9wczYuaGlkZSxcbiAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzNi5kYXRhLFxuICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczYuY2xhc3NOYW1lLFxuICAgICAgICB4QXhpcyA9IF90aGlzJHByb3BzNi54QXhpcyxcbiAgICAgICAgeUF4aXMgPSBfdGhpcyRwcm9wczYueUF4aXMsXG4gICAgICAgIGxlZnQgPSBfdGhpcyRwcm9wczYubGVmdCxcbiAgICAgICAgdG9wID0gX3RoaXMkcHJvcHM2LnRvcCxcbiAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczYud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzNi5oZWlnaHQsXG4gICAgICAgIGlzQW5pbWF0aW9uQWN0aXZlID0gX3RoaXMkcHJvcHM2LmlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBiYWNrZ3JvdW5kID0gX3RoaXMkcHJvcHM2LmJhY2tncm91bmQsXG4gICAgICAgIGlkID0gX3RoaXMkcHJvcHM2LmlkO1xuICAgICAgaWYgKGhpZGUgfHwgIWRhdGEgfHwgIWRhdGEubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGlzQW5pbWF0aW9uRmluaXNoZWQgPSB0aGlzLnN0YXRlLmlzQW5pbWF0aW9uRmluaXNoZWQ7XG4gICAgICB2YXIgbGF5ZXJDbGFzcyA9IGNsc3goJ3JlY2hhcnRzLWJhcicsIGNsYXNzTmFtZSk7XG4gICAgICB2YXIgbmVlZENsaXBYID0geEF4aXMgJiYgeEF4aXMuYWxsb3dEYXRhT3ZlcmZsb3c7XG4gICAgICB2YXIgbmVlZENsaXBZID0geUF4aXMgJiYgeUF4aXMuYWxsb3dEYXRhT3ZlcmZsb3c7XG4gICAgICB2YXIgbmVlZENsaXAgPSBuZWVkQ2xpcFggfHwgbmVlZENsaXBZO1xuICAgICAgdmFyIGNsaXBQYXRoSWQgPSBpc05pbChpZCkgPyB0aGlzLmlkIDogaWQ7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBsYXllckNsYXNzXG4gICAgICB9LCBuZWVkQ2xpcFggfHwgbmVlZENsaXBZID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkZWZzXCIsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY2xpcFBhdGhcIiwge1xuICAgICAgICBpZDogXCJjbGlwUGF0aC1cIi5jb25jYXQoY2xpcFBhdGhJZClcbiAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7XG4gICAgICAgIHg6IG5lZWRDbGlwWCA/IGxlZnQgOiBsZWZ0IC0gd2lkdGggLyAyLFxuICAgICAgICB5OiBuZWVkQ2xpcFkgPyB0b3AgOiB0b3AgLSBoZWlnaHQgLyAyLFxuICAgICAgICB3aWR0aDogbmVlZENsaXBYID8gd2lkdGggOiB3aWR0aCAqIDIsXG4gICAgICAgIGhlaWdodDogbmVlZENsaXBZID8gaGVpZ2h0IDogaGVpZ2h0ICogMlxuICAgICAgfSkpKSA6IG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1iYXItcmVjdGFuZ2xlc1wiLFxuICAgICAgICBjbGlwUGF0aDogbmVlZENsaXAgPyBcInVybCgjY2xpcFBhdGgtXCIuY29uY2F0KGNsaXBQYXRoSWQsIFwiKVwiKSA6IG51bGxcbiAgICAgIH0sIGJhY2tncm91bmQgPyB0aGlzLnJlbmRlckJhY2tncm91bmQoKSA6IG51bGwsIHRoaXMucmVuZGVyUmVjdGFuZ2xlcygpKSwgdGhpcy5yZW5kZXJFcnJvckJhcihuZWVkQ2xpcCwgY2xpcFBhdGhJZCksICghaXNBbmltYXRpb25BY3RpdmUgfHwgaXNBbmltYXRpb25GaW5pc2hlZCkgJiYgTGFiZWxMaXN0LnJlbmRlckNhbGxCeVBhcmVudCh0aGlzLnByb3BzLCBkYXRhKSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgaWYgKG5leHRQcm9wcy5hbmltYXRpb25JZCAhPT0gcHJldlN0YXRlLnByZXZBbmltYXRpb25JZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHByZXZBbmltYXRpb25JZDogbmV4dFByb3BzLmFuaW1hdGlvbklkLFxuICAgICAgICAgIGN1ckRhdGE6IG5leHRQcm9wcy5kYXRhLFxuICAgICAgICAgIHByZXZEYXRhOiBwcmV2U3RhdGUuY3VyRGF0YVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKG5leHRQcm9wcy5kYXRhICE9PSBwcmV2U3RhdGUuY3VyRGF0YSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGN1ckRhdGE6IG5leHRQcm9wcy5kYXRhXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1dKTtcbn0oUHVyZUNvbXBvbmVudCk7XG5fQmFyID0gQmFyO1xuX2RlZmluZVByb3BlcnR5KEJhciwgXCJkaXNwbGF5TmFtZVwiLCAnQmFyJyk7XG5fZGVmaW5lUHJvcGVydHkoQmFyLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHhBeGlzSWQ6IDAsXG4gIHlBeGlzSWQ6IDAsXG4gIGxlZ2VuZFR5cGU6ICdyZWN0JyxcbiAgbWluUG9pbnRTaXplOiAwLFxuICBoaWRlOiBmYWxzZSxcbiAgZGF0YTogW10sXG4gIGxheW91dDogJ3ZlcnRpY2FsJyxcbiAgYWN0aXZlQmFyOiBmYWxzZSxcbiAgaXNBbmltYXRpb25BY3RpdmU6ICFHbG9iYWwuaXNTc3IsXG4gIGFuaW1hdGlvbkJlZ2luOiAwLFxuICBhbmltYXRpb25EdXJhdGlvbjogNDAwLFxuICBhbmltYXRpb25FYXNpbmc6ICdlYXNlJ1xufSk7XG4vKipcbiAqIENvbXBvc2UgdGhlIGRhdGEgb2YgZWFjaCBncm91cFxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIFByb3BzIGZvciB0aGUgY29tcG9uZW50XG4gKiBAcGFyYW0ge09iamVjdH0gaXRlbSAgICAgICAgQW4gaW5zdGFuY2Ugb2YgQmFyXG4gKiBAcGFyYW0ge0FycmF5fSBiYXJQb3NpdGlvbiAgVGhlIG9mZnNldCBhbmQgc2l6ZSBvZiBlYWNoIGJhclxuICogQHBhcmFtIHtPYmplY3R9IHhBeGlzICAgICAgIFRoZSBjb25maWd1cmF0aW9uIG9mIHgtYXhpc1xuICogQHBhcmFtIHtPYmplY3R9IHlBeGlzICAgICAgIFRoZSBjb25maWd1cmF0aW9uIG9mIHktYXhpc1xuICogQHBhcmFtIHtBcnJheX0gc3RhY2tlZERhdGEgIFRoZSBzdGFja2VkIGRhdGEgb2YgYSBiYXIgaXRlbVxuICogQHJldHVybntBcnJheX0gQ29tcG9zZWQgZGF0YVxuICovXG5fZGVmaW5lUHJvcGVydHkoQmFyLCBcImdldENvbXBvc2VkRGF0YVwiLCBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgdmFyIHByb3BzID0gX3JlZjIucHJvcHMsXG4gICAgaXRlbSA9IF9yZWYyLml0ZW0sXG4gICAgYmFyUG9zaXRpb24gPSBfcmVmMi5iYXJQb3NpdGlvbixcbiAgICBiYW5kU2l6ZSA9IF9yZWYyLmJhbmRTaXplLFxuICAgIHhBeGlzID0gX3JlZjIueEF4aXMsXG4gICAgeUF4aXMgPSBfcmVmMi55QXhpcyxcbiAgICB4QXhpc1RpY2tzID0gX3JlZjIueEF4aXNUaWNrcyxcbiAgICB5QXhpc1RpY2tzID0gX3JlZjIueUF4aXNUaWNrcyxcbiAgICBzdGFja2VkRGF0YSA9IF9yZWYyLnN0YWNrZWREYXRhLFxuICAgIGRhdGFTdGFydEluZGV4ID0gX3JlZjIuZGF0YVN0YXJ0SW5kZXgsXG4gICAgZGlzcGxheWVkRGF0YSA9IF9yZWYyLmRpc3BsYXllZERhdGEsXG4gICAgb2Zmc2V0ID0gX3JlZjIub2Zmc2V0O1xuICB2YXIgcG9zID0gZmluZFBvc2l0aW9uT2ZCYXIoYmFyUG9zaXRpb24sIGl0ZW0pO1xuICBpZiAoIXBvcykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBsYXlvdXQgPSBwcm9wcy5sYXlvdXQ7XG4gIHZhciBpdGVtRGVmYXVsdFByb3BzID0gaXRlbS50eXBlLmRlZmF1bHRQcm9wcztcbiAgdmFyIGl0ZW1Qcm9wcyA9IGl0ZW1EZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbURlZmF1bHRQcm9wcyksIGl0ZW0ucHJvcHMpIDogaXRlbS5wcm9wcztcbiAgdmFyIGRhdGFLZXkgPSBpdGVtUHJvcHMuZGF0YUtleSxcbiAgICBjaGlsZHJlbiA9IGl0ZW1Qcm9wcy5jaGlsZHJlbixcbiAgICBtaW5Qb2ludFNpemVQcm9wID0gaXRlbVByb3BzLm1pblBvaW50U2l6ZTtcbiAgdmFyIG51bWVyaWNBeGlzID0gbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgPyB5QXhpcyA6IHhBeGlzO1xuICB2YXIgc3RhY2tlZERvbWFpbiA9IHN0YWNrZWREYXRhID8gbnVtZXJpY0F4aXMuc2NhbGUuZG9tYWluKCkgOiBudWxsO1xuICB2YXIgYmFzZVZhbHVlID0gZ2V0QmFzZVZhbHVlT2ZCYXIoe1xuICAgIG51bWVyaWNBeGlzOiBudW1lcmljQXhpc1xuICB9KTtcbiAgdmFyIGNlbGxzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgQ2VsbCk7XG4gIHZhciByZWN0cyA9IGRpc3BsYXllZERhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICB2YXIgdmFsdWUsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJhY2tncm91bmQ7XG4gICAgaWYgKHN0YWNrZWREYXRhKSB7XG4gICAgICB2YWx1ZSA9IHRydW5jYXRlQnlEb21haW4oc3RhY2tlZERhdGFbZGF0YVN0YXJ0SW5kZXggKyBpbmRleF0sIHN0YWNrZWREb21haW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCBkYXRhS2V5KTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBbYmFzZVZhbHVlLCB2YWx1ZV07XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBtaW5Qb2ludFNpemUgPSBtaW5Qb2ludFNpemVDYWxsYmFjayhtaW5Qb2ludFNpemVQcm9wLCBfQmFyLmRlZmF1bHRQcm9wcy5taW5Qb2ludFNpemUpKHZhbHVlWzFdLCBpbmRleCk7XG4gICAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICB2YXIgX3JlZjQ7XG4gICAgICB2YXIgX3JlZjMgPSBbeUF4aXMuc2NhbGUodmFsdWVbMF0pLCB5QXhpcy5zY2FsZSh2YWx1ZVsxXSldLFxuICAgICAgICBiYXNlVmFsdWVTY2FsZSA9IF9yZWYzWzBdLFxuICAgICAgICBjdXJyZW50VmFsdWVTY2FsZSA9IF9yZWYzWzFdO1xuICAgICAgeCA9IGdldENhdGVDb29yZGluYXRlT2ZCYXIoe1xuICAgICAgICBheGlzOiB4QXhpcyxcbiAgICAgICAgdGlja3M6IHhBeGlzVGlja3MsXG4gICAgICAgIGJhbmRTaXplOiBiYW5kU2l6ZSxcbiAgICAgICAgb2Zmc2V0OiBwb3Mub2Zmc2V0LFxuICAgICAgICBlbnRyeTogZW50cnksXG4gICAgICAgIGluZGV4OiBpbmRleFxuICAgICAgfSk7XG4gICAgICB5ID0gKF9yZWY0ID0gY3VycmVudFZhbHVlU2NhbGUgIT09IG51bGwgJiYgY3VycmVudFZhbHVlU2NhbGUgIT09IHZvaWQgMCA/IGN1cnJlbnRWYWx1ZVNjYWxlIDogYmFzZVZhbHVlU2NhbGUpICE9PSBudWxsICYmIF9yZWY0ICE9PSB2b2lkIDAgPyBfcmVmNCA6IHVuZGVmaW5lZDtcbiAgICAgIHdpZHRoID0gcG9zLnNpemU7XG4gICAgICB2YXIgY29tcHV0ZWRIZWlnaHQgPSBiYXNlVmFsdWVTY2FsZSAtIGN1cnJlbnRWYWx1ZVNjYWxlO1xuICAgICAgaGVpZ2h0ID0gTnVtYmVyLmlzTmFOKGNvbXB1dGVkSGVpZ2h0KSA/IDAgOiBjb21wdXRlZEhlaWdodDtcbiAgICAgIGJhY2tncm91bmQgPSB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHlBeGlzLnksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiB5QXhpcy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBpZiAoTWF0aC5hYnMobWluUG9pbnRTaXplKSA+IDAgJiYgTWF0aC5hYnMoaGVpZ2h0KSA8IE1hdGguYWJzKG1pblBvaW50U2l6ZSkpIHtcbiAgICAgICAgdmFyIGRlbHRhID0gbWF0aFNpZ24oaGVpZ2h0IHx8IG1pblBvaW50U2l6ZSkgKiAoTWF0aC5hYnMobWluUG9pbnRTaXplKSAtIE1hdGguYWJzKGhlaWdodCkpO1xuICAgICAgICB5IC09IGRlbHRhO1xuICAgICAgICBoZWlnaHQgKz0gZGVsdGE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfcmVmNSA9IFt4QXhpcy5zY2FsZSh2YWx1ZVswXSksIHhBeGlzLnNjYWxlKHZhbHVlWzFdKV0sXG4gICAgICAgIF9iYXNlVmFsdWVTY2FsZSA9IF9yZWY1WzBdLFxuICAgICAgICBfY3VycmVudFZhbHVlU2NhbGUgPSBfcmVmNVsxXTtcbiAgICAgIHggPSBfYmFzZVZhbHVlU2NhbGU7XG4gICAgICB5ID0gZ2V0Q2F0ZUNvb3JkaW5hdGVPZkJhcih7XG4gICAgICAgIGF4aXM6IHlBeGlzLFxuICAgICAgICB0aWNrczogeUF4aXNUaWNrcyxcbiAgICAgICAgYmFuZFNpemU6IGJhbmRTaXplLFxuICAgICAgICBvZmZzZXQ6IHBvcy5vZmZzZXQsXG4gICAgICAgIGVudHJ5OiBlbnRyeSxcbiAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICB9KTtcbiAgICAgIHdpZHRoID0gX2N1cnJlbnRWYWx1ZVNjYWxlIC0gX2Jhc2VWYWx1ZVNjYWxlO1xuICAgICAgaGVpZ2h0ID0gcG9zLnNpemU7XG4gICAgICBiYWNrZ3JvdW5kID0ge1xuICAgICAgICB4OiB4QXhpcy54LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogeEF4aXMud2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9O1xuICAgICAgaWYgKE1hdGguYWJzKG1pblBvaW50U2l6ZSkgPiAwICYmIE1hdGguYWJzKHdpZHRoKSA8IE1hdGguYWJzKG1pblBvaW50U2l6ZSkpIHtcbiAgICAgICAgdmFyIF9kZWx0YSA9IG1hdGhTaWduKHdpZHRoIHx8IG1pblBvaW50U2l6ZSkgKiAoTWF0aC5hYnMobWluUG9pbnRTaXplKSAtIE1hdGguYWJzKHdpZHRoKSk7XG4gICAgICAgIHdpZHRoICs9IF9kZWx0YTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeSxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgdmFsdWU6IHN0YWNrZWREYXRhID8gdmFsdWUgOiB2YWx1ZVsxXSxcbiAgICAgIHBheWxvYWQ6IGVudHJ5LFxuICAgICAgYmFja2dyb3VuZDogYmFja2dyb3VuZFxuICAgIH0sIGNlbGxzICYmIGNlbGxzW2luZGV4XSAmJiBjZWxsc1tpbmRleF0ucHJvcHMpLCB7fSwge1xuICAgICAgdG9vbHRpcFBheWxvYWQ6IFtnZXRUb29sdGlwSXRlbShpdGVtLCBlbnRyeSldLFxuICAgICAgdG9vbHRpcFBvc2l0aW9uOiB7XG4gICAgICAgIHg6IHggKyB3aWR0aCAvIDIsXG4gICAgICAgIHk6IHkgKyBoZWlnaHQgLyAyXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgZGF0YTogcmVjdHMsXG4gICAgbGF5b3V0OiBsYXlvdXRcbiAgfSwgb2Zmc2V0KTtcbn0pOyJdLCJuYW1lcyI6WyJfZXhjbHVkZWQiLCJfQmFyIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwic291cmNlIiwiZXhjbHVkZWQiLCJ0YXJnZXQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImtleSIsImkiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwibGVuZ3RoIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY2FsbCIsImhhc093blByb3BlcnR5IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiY2xzeCIsIkFuaW1hdGUiLCJpc0VxdWFsIiwiaXNOaWwiLCJMYXllciIsIkVycm9yQmFyIiwiQ2VsbCIsIkxhYmVsTGlzdCIsInVuaXF1ZUlkIiwibWF0aFNpZ24iLCJpbnRlcnBvbGF0ZU51bWJlciIsImZpbHRlclByb3BzIiwiZmluZEFsbEJ5VHlwZSIsIkdsb2JhbCIsImdldENhdGVDb29yZGluYXRlT2ZCYXIiLCJnZXRWYWx1ZUJ5RGF0YUtleSIsInRydW5jYXRlQnlEb21haW4iLCJnZXRCYXNlVmFsdWVPZkJhciIsImZpbmRQb3NpdGlvbk9mQmFyIiwiZ2V0VG9vbHRpcEl0ZW0iLCJhZGFwdEV2ZW50c09mQ2hpbGQiLCJCYXJSZWN0YW5nbGUiLCJtaW5Qb2ludFNpemVDYWxsYmFjayIsIkJhciIsIl9QdXJlQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsImlzQW5pbWF0aW9uRmluaXNoZWQiLCJvbkFuaW1hdGlvbkVuZCIsInNldFN0YXRlIiwib25BbmltYXRpb25TdGFydCIsInJlbmRlclJlY3RhbmdsZXNTdGF0aWNhbGx5IiwiZGF0YSIsIl90aGlzMiIsIl90aGlzJHByb3BzIiwic2hhcGUiLCJkYXRhS2V5IiwiYWN0aXZlSW5kZXgiLCJhY3RpdmVCYXIiLCJiYXNlUHJvcHMiLCJtYXAiLCJlbnRyeSIsImlzQWN0aXZlIiwib3B0aW9uIiwiaW5kZXgiLCJoYW5kbGVBbmltYXRpb25TdGFydCIsImhhbmRsZUFuaW1hdGlvbkVuZCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJ4IiwieSIsInJlbmRlclJlY3RhbmdsZXNXaXRoQW5pbWF0aW9uIiwiX3RoaXMzIiwiX3RoaXMkcHJvcHMyIiwibGF5b3V0IiwiaXNBbmltYXRpb25BY3RpdmUiLCJhbmltYXRpb25CZWdpbiIsImFuaW1hdGlvbkR1cmF0aW9uIiwiYW5pbWF0aW9uRWFzaW5nIiwiYW5pbWF0aW9uSWQiLCJwcmV2RGF0YSIsInN0YXRlIiwiYmVnaW4iLCJkdXJhdGlvbiIsImVhc2luZyIsImZyb20iLCJ0byIsIl9yZWYiLCJzdGVwRGF0YSIsInByZXYiLCJpbnRlcnBvbGF0b3JYIiwiaW50ZXJwb2xhdG9yWSIsImludGVycG9sYXRvcldpZHRoIiwid2lkdGgiLCJpbnRlcnBvbGF0b3JIZWlnaHQiLCJoZWlnaHQiLCJfaW50ZXJwb2xhdG9ySGVpZ2h0IiwiaCIsImludGVycG9sYXRvciIsInciLCJyZW5kZXJSZWN0YW5nbGVzIiwiX3RoaXMkcHJvcHMzIiwicmVuZGVyQmFja2dyb3VuZCIsIl90aGlzNCIsIl90aGlzJHByb3BzNCIsImJhY2tncm91bmRQcm9wcyIsImJhY2tncm91bmQiLCJyZXN0IiwiZmlsbCIsInJlbmRlckVycm9yQmFyIiwibmVlZENsaXAiLCJjbGlwUGF0aElkIiwiX3RoaXMkcHJvcHM1IiwieEF4aXMiLCJ5QXhpcyIsImNoaWxkcmVuIiwiZXJyb3JCYXJJdGVtcyIsIm9mZnNldCIsImRhdGFQb2ludEZvcm1hdHRlciIsImRhdGFQb2ludCIsImlzQXJyYXkiLCJlcnJvclZhbCIsImVycm9yQmFyUHJvcHMiLCJjbGlwUGF0aCIsIml0ZW0iLCJjbG9uZUVsZW1lbnQiLCJyZW5kZXIiLCJfdGhpcyRwcm9wczYiLCJoaWRlIiwibGVmdCIsInRvcCIsImlkIiwibGF5ZXJDbGFzcyIsIm5lZWRDbGlwWCIsImFsbG93RGF0YU92ZXJmbG93IiwibmVlZENsaXBZIiwicmVuZGVyQ2FsbEJ5UGFyZW50IiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwibmV4dFByb3BzIiwicHJldlN0YXRlIiwicHJldkFuaW1hdGlvbklkIiwiY3VyRGF0YSIsInhBeGlzSWQiLCJ5QXhpc0lkIiwibGVnZW5kVHlwZSIsIm1pblBvaW50U2l6ZSIsImlzU3NyIiwiX3JlZjIiLCJiYXJQb3NpdGlvbiIsImJhbmRTaXplIiwieEF4aXNUaWNrcyIsInlBeGlzVGlja3MiLCJzdGFja2VkRGF0YSIsImRhdGFTdGFydEluZGV4IiwiZGlzcGxheWVkRGF0YSIsInBvcyIsIml0ZW1EZWZhdWx0UHJvcHMiLCJ0eXBlIiwiZGVmYXVsdFByb3BzIiwiaXRlbVByb3BzIiwidW5kZWZpbmVkIiwibWluUG9pbnRTaXplUHJvcCIsIm51bWVyaWNBeGlzIiwic3RhY2tlZERvbWFpbiIsInNjYWxlIiwiZG9tYWluIiwiYmFzZVZhbHVlIiwiY2VsbHMiLCJyZWN0cyIsIl9yZWY0IiwiX3JlZjMiLCJiYXNlVmFsdWVTY2FsZSIsImN1cnJlbnRWYWx1ZVNjYWxlIiwiYXhpcyIsInRpY2tzIiwic2l6ZSIsImNvbXB1dGVkSGVpZ2h0IiwiaXNOYU4iLCJNYXRoIiwiYWJzIiwiZGVsdGEiLCJfcmVmNSIsIl9iYXNlVmFsdWVTY2FsZSIsIl9jdXJyZW50VmFsdWVTY2FsZSIsIl9kZWx0YSIsInBheWxvYWQiLCJ0b29sdGlwUGF5bG9hZCIsInRvb2x0aXBQb3NpdGlvbiJdLCJzb3VyY2VSb290IjoiIn0=\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/future/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9CcnVzaC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlmLE9BQU9nQixJQUFJLENBQUNIO0lBQUksSUFBSWIsT0FBT2lCLHFCQUFxQixFQUFFO1FBQUUsSUFBSXZCLElBQUlNLE9BQU9pQixxQkFBcUIsQ0FBQ0o7UUFBSUMsS0FBTXBCLENBQUFBLElBQUlBLEVBQUV3QixNQUFNLENBQUMsU0FBVUosQ0FBQztZQUFJLE9BQU9kLE9BQU9tQix3QkFBd0IsQ0FBQ04sR0FBR0MsR0FBR00sVUFBVTtRQUFFLEVBQUMsR0FBSUwsRUFBRU0sSUFBSSxDQUFDVixLQUFLLENBQUNJLEdBQUdyQjtJQUFJO0lBQUUsT0FBT3FCO0FBQUc7QUFDOVAsU0FBU08sY0FBY1QsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVCxVQUFVQyxNQUFNLEVBQUVRLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFWLFNBQVMsQ0FBQ1MsRUFBRSxHQUFHVCxTQUFTLENBQUNTLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUVosT0FBT2UsSUFBSSxDQUFDLEdBQUdRLE9BQU8sQ0FBQyxTQUFVVCxDQUFDO1lBQUlVLGdCQUFnQlgsR0FBR0MsR0FBR0MsQ0FBQyxDQUFDRCxFQUFFO1FBQUcsS0FBS2QsT0FBT3lCLHlCQUF5QixHQUFHekIsT0FBTzBCLGdCQUFnQixDQUFDYixHQUFHYixPQUFPeUIseUJBQXlCLENBQUNWLE1BQU1ILFFBQVFaLE9BQU9lLElBQUlRLE9BQU8sQ0FBQyxTQUFVVCxDQUFDO1lBQUlkLE9BQU8yQixjQUFjLENBQUNkLEdBQUdDLEdBQUdkLE9BQU9tQix3QkFBd0IsQ0FBQ0osR0FBR0Q7UUFBSztJQUFJO0lBQUUsT0FBT0Q7QUFBRztBQUN0YixTQUFTZSxnQkFBZ0JDLFFBQVEsRUFBRUMsV0FBVztJQUFJLElBQUksQ0FBRUQsQ0FBQUEsb0JBQW9CQyxXQUFVLEdBQUk7UUFBRSxNQUFNLElBQUlDLFVBQVU7SUFBc0M7QUFBRTtBQUN4SixTQUFTQyxrQkFBa0I3QixNQUFNLEVBQUU4QixLQUFLO0lBQUksSUFBSyxJQUFJN0IsSUFBSSxHQUFHQSxJQUFJNkIsTUFBTTNCLE1BQU0sRUFBRUYsSUFBSztRQUFFLElBQUk4QixhQUFhRCxLQUFLLENBQUM3QixFQUFFO1FBQUU4QixXQUFXZCxVQUFVLEdBQUdjLFdBQVdkLFVBQVUsSUFBSTtRQUFPYyxXQUFXQyxZQUFZLEdBQUc7UUFBTSxJQUFJLFdBQVdELFlBQVlBLFdBQVdFLFFBQVEsR0FBRztRQUFNcEMsT0FBTzJCLGNBQWMsQ0FBQ3hCLFFBQVFrQyxlQUFlSCxXQUFXMUIsR0FBRyxHQUFHMEI7SUFBYTtBQUFFO0FBQzVVLFNBQVNJLGFBQWFSLFdBQVcsRUFBRVMsVUFBVSxFQUFFQyxXQUFXO0lBQUksSUFBSUQsWUFBWVAsa0JBQWtCRixZQUFZaEMsU0FBUyxFQUFFeUM7SUFBYSxJQUFJQyxhQUFhUixrQkFBa0JGLGFBQWFVO0lBQWN4QyxPQUFPMkIsY0FBYyxDQUFDRyxhQUFhLGFBQWE7UUFBRU0sVUFBVTtJQUFNO0lBQUksT0FBT047QUFBYTtBQUM1UixTQUFTVyxXQUFXMUIsQ0FBQyxFQUFFckIsQ0FBQyxFQUFFbUIsQ0FBQztJQUFJLE9BQU9uQixJQUFJZ0QsZ0JBQWdCaEQsSUFBSWlELDJCQUEyQjVCLEdBQUc2Qiw4QkFBOEJDLFFBQVFDLFNBQVMsQ0FBQ3BELEdBQUdtQixLQUFLLEVBQUUsRUFBRTZCLGdCQUFnQjNCLEdBQUdsQixXQUFXLElBQUlILEVBQUVpQixLQUFLLENBQUNJLEdBQUdGO0FBQUs7QUFDMU0sU0FBUzhCLDJCQUEyQkksSUFBSSxFQUFFckMsSUFBSTtJQUFJLElBQUlBLFFBQVNqQixDQUFBQSxRQUFRaUIsVUFBVSxZQUFZLE9BQU9BLFNBQVMsVUFBUyxHQUFJO1FBQUUsT0FBT0E7SUFBTSxPQUFPLElBQUlBLFNBQVMsS0FBSyxHQUFHO1FBQUUsTUFBTSxJQUFJcUIsVUFBVTtJQUE2RDtJQUFFLE9BQU9pQix1QkFBdUJEO0FBQU87QUFDL1IsU0FBU0MsdUJBQXVCRCxJQUFJO0lBQUksSUFBSUEsU0FBUyxLQUFLLEdBQUc7UUFBRSxNQUFNLElBQUlFLGVBQWU7SUFBOEQ7SUFBRSxPQUFPRjtBQUFNO0FBQ3JLLFNBQVNIO0lBQThCLElBQUk7UUFBRSxJQUFJN0IsSUFBSSxDQUFDbUMsUUFBUXBELFNBQVMsQ0FBQ3FELE9BQU8sQ0FBQ3pDLElBQUksQ0FBQ21DLFFBQVFDLFNBQVMsQ0FBQ0ksU0FBUyxFQUFFLEVBQUUsWUFBYTtJQUFLLEVBQUUsT0FBT25DLEdBQUcsQ0FBQztJQUFFLE9BQU8sQ0FBQzZCLDRCQUE0QixTQUFTQTtRQUE4QixPQUFPLENBQUMsQ0FBQzdCO0lBQUc7QUFBTTtBQUNsUCxTQUFTMkIsZ0JBQWdCaEQsQ0FBQztJQUFJZ0Qsa0JBQWtCMUMsT0FBT29ELGNBQWMsR0FBR3BELE9BQU9xRCxjQUFjLENBQUNuRCxJQUFJLEtBQUssU0FBU3dDLGdCQUFnQmhELENBQUM7UUFBSSxPQUFPQSxFQUFFNEQsU0FBUyxJQUFJdEQsT0FBT3FELGNBQWMsQ0FBQzNEO0lBQUk7SUFBRyxPQUFPZ0QsZ0JBQWdCaEQ7QUFBSTtBQUNuTixTQUFTNkQsVUFBVUMsUUFBUSxFQUFFQyxVQUFVO0lBQUksSUFBSSxPQUFPQSxlQUFlLGNBQWNBLGVBQWUsTUFBTTtRQUFFLE1BQU0sSUFBSTFCLFVBQVU7SUFBdUQ7SUFBRXlCLFNBQVMxRCxTQUFTLEdBQUdFLE9BQU8wRCxNQUFNLENBQUNELGNBQWNBLFdBQVczRCxTQUFTLEVBQUU7UUFBRUQsYUFBYTtZQUFFOEQsT0FBT0g7WUFBVXBCLFVBQVU7WUFBTUQsY0FBYztRQUFLO0lBQUU7SUFBSW5DLE9BQU8yQixjQUFjLENBQUM2QixVQUFVLGFBQWE7UUFBRXBCLFVBQVU7SUFBTTtJQUFJLElBQUlxQixZQUFZRyxnQkFBZ0JKLFVBQVVDO0FBQWE7QUFDbmMsU0FBU0csZ0JBQWdCbEUsQ0FBQyxFQUFFbUUsQ0FBQztJQUFJRCxrQkFBa0I1RCxPQUFPb0QsY0FBYyxHQUFHcEQsT0FBT29ELGNBQWMsQ0FBQ2xELElBQUksS0FBSyxTQUFTMEQsZ0JBQWdCbEUsQ0FBQyxFQUFFbUUsQ0FBQztRQUFJbkUsRUFBRTRELFNBQVMsR0FBR087UUFBRyxPQUFPbkU7SUFBRztJQUFHLE9BQU9rRSxnQkFBZ0JsRSxHQUFHbUU7QUFBSTtBQUN2TSxTQUFTckMsZ0JBQWdCc0MsR0FBRyxFQUFFdEQsR0FBRyxFQUFFbUQsS0FBSztJQUFJbkQsTUFBTTZCLGVBQWU3QjtJQUFNLElBQUlBLE9BQU9zRCxLQUFLO1FBQUU5RCxPQUFPMkIsY0FBYyxDQUFDbUMsS0FBS3RELEtBQUs7WUFBRW1ELE9BQU9BO1lBQU92QyxZQUFZO1lBQU1lLGNBQWM7WUFBTUMsVUFBVTtRQUFLO0lBQUksT0FBTztRQUFFMEIsR0FBRyxDQUFDdEQsSUFBSSxHQUFHbUQ7SUFBTztJQUFFLE9BQU9HO0FBQUs7QUFDM08sU0FBU3pCLGVBQWV0QixDQUFDO0lBQUksSUFBSVgsSUFBSTJELGFBQWFoRCxHQUFHO0lBQVcsT0FBTyxZQUFZdEIsUUFBUVcsS0FBS0EsSUFBSUEsSUFBSTtBQUFJO0FBQzVHLFNBQVMyRCxhQUFhaEQsQ0FBQyxFQUFFRCxDQUFDO0lBQUksSUFBSSxZQUFZckIsUUFBUXNCLE1BQU0sQ0FBQ0EsR0FBRyxPQUFPQTtJQUFHLElBQUlGLElBQUlFLENBQUMsQ0FBQ3BCLE9BQU9xRSxXQUFXLENBQUM7SUFBRSxJQUFJLEtBQUssTUFBTW5ELEdBQUc7UUFBRSxJQUFJVCxJQUFJUyxFQUFFSCxJQUFJLENBQUNLLEdBQUdELEtBQUs7UUFBWSxJQUFJLFlBQVlyQixRQUFRVyxJQUFJLE9BQU9BO1FBQUcsTUFBTSxJQUFJMkIsVUFBVTtJQUFpRDtJQUFFLE9BQU8sQ0FBQyxhQUFhakIsSUFBSW1ELFNBQVNDLE1BQUssRUFBR25EO0FBQUk7QUFDM1Q7O0NBRUMsR0FDc0Q7QUFDL0I7QUFDNkI7QUFDVjtBQUNWO0FBQ1U7QUFDRjtBQUNjO0FBQ1Y7QUFDZ0I7QUFDWjtBQUNqRCxJQUFJaUUsY0FBYyxTQUFTQSxZQUFZQyxJQUFJO0lBQ3pDLElBQUlDLE9BQU9ELEtBQUtDLElBQUksRUFDbEJDLGFBQWFGLEtBQUtFLFVBQVUsRUFDNUJDLFdBQVdILEtBQUtHLFFBQVEsRUFDeEJDLElBQUlKLEtBQUtJLENBQUMsRUFDVkMsUUFBUUwsS0FBS0ssS0FBSyxFQUNsQkMsaUJBQWlCTixLQUFLTSxjQUFjO0lBQ3RDLElBQUksQ0FBQ0wsUUFBUSxDQUFDQSxLQUFLNUUsTUFBTSxFQUFFO1FBQ3pCLE9BQU8sQ0FBQztJQUNWO0lBQ0EsSUFBSWtGLE1BQU1OLEtBQUs1RSxNQUFNO0lBQ3JCLElBQUltRixRQUFRbEIsbUVBQVVBLEdBQUdtQixNQUFNLENBQUNqQixtREFBS0EsQ0FBQyxHQUFHZSxNQUFNZixLQUFLLENBQUM7UUFBQ1k7UUFBR0EsSUFBSUMsUUFBUUM7S0FBZTtJQUNwRixJQUFJSSxjQUFjRixNQUFNQyxNQUFNLEdBQUdFLEdBQUcsQ0FBQyxTQUFVQyxLQUFLO1FBQ2xELE9BQU9KLE1BQU1JO0lBQ2Y7SUFDQSxPQUFPO1FBQ0xDLGNBQWM7UUFDZEMsZUFBZTtRQUNmQyxtQkFBbUI7UUFDbkJDLG9CQUFvQjtRQUNwQkMsUUFBUVQsTUFBTU47UUFDZGdCLE1BQU1WLE1BQU1MO1FBQ1pLLE9BQU9BO1FBQ1BFLGFBQWFBO0lBQ2Y7QUFDRjtBQUNBLElBQUlTLFVBQVUsU0FBU0EsUUFBUXZGLENBQUM7SUFDOUIsT0FBT0EsRUFBRXdGLGNBQWMsSUFBSSxDQUFDLENBQUN4RixFQUFFd0YsY0FBYyxDQUFDL0YsTUFBTTtBQUN0RDtBQUNPLElBQUlnRyxRQUFRLFdBQVcsR0FBRSxTQUFVQyxjQUFjO0lBQ3RELFNBQVNELE1BQU1yRSxLQUFLO1FBQ2xCLElBQUl1RTtRQUNKNUUsZ0JBQWdCLElBQUksRUFBRTBFO1FBQ3RCRSxRQUFRL0QsV0FBVyxJQUFJLEVBQUU2RCxPQUFPO1lBQUNyRTtTQUFNO1FBQ3ZDVCxnQkFBZ0JnRixPQUFPLGNBQWMsU0FBVTNGLENBQUM7WUFDOUMsSUFBSTJGLE1BQU1DLFVBQVUsRUFBRTtnQkFDcEJDLGFBQWFGLE1BQU1DLFVBQVU7Z0JBQzdCRCxNQUFNQyxVQUFVLEdBQUc7WUFDckI7WUFDQSxJQUFJRCxNQUFNRyxLQUFLLENBQUNYLGlCQUFpQixFQUFFO2dCQUNqQ1EsTUFBTUksbUJBQW1CLENBQUMvRjtZQUM1QixPQUFPLElBQUkyRixNQUFNRyxLQUFLLENBQUNaLGFBQWEsRUFBRTtnQkFDcENTLE1BQU1LLGVBQWUsQ0FBQ2hHO1lBQ3hCO1FBQ0Y7UUFDQVcsZ0JBQWdCZ0YsT0FBTyxtQkFBbUIsU0FBVTNGLENBQUM7WUFDbkQsSUFBSUEsRUFBRXdGLGNBQWMsSUFBSSxRQUFReEYsRUFBRXdGLGNBQWMsQ0FBQy9GLE1BQU0sR0FBRyxHQUFHO2dCQUMzRGtHLE1BQU1NLFVBQVUsQ0FBQ2pHLEVBQUV3RixjQUFjLENBQUMsRUFBRTtZQUN0QztRQUNGO1FBQ0E3RSxnQkFBZ0JnRixPQUFPLGlCQUFpQjtZQUN0Q0EsTUFBTU8sUUFBUSxDQUFDO2dCQUNiZixtQkFBbUI7Z0JBQ25CRCxlQUFlO1lBQ2pCLEdBQUc7Z0JBQ0QsSUFBSWlCLGNBQWNSLE1BQU12RSxLQUFLLEVBQzNCbUQsV0FBVzRCLFlBQVk1QixRQUFRLEVBQy9CNkIsWUFBWUQsWUFBWUMsU0FBUyxFQUNqQzlCLGFBQWE2QixZQUFZN0IsVUFBVTtnQkFDckM4QixjQUFjLFFBQVFBLGNBQWMsS0FBSyxLQUFLQSxVQUFVO29CQUN0RDdCLFVBQVVBO29CQUNWRCxZQUFZQTtnQkFDZDtZQUNGO1lBQ0FxQixNQUFNVSxxQkFBcUI7UUFDN0I7UUFDQTFGLGdCQUFnQmdGLE9BQU8sc0JBQXNCO1lBQzNDLElBQUlBLE1BQU1HLEtBQUssQ0FBQ1gsaUJBQWlCLElBQUlRLE1BQU1HLEtBQUssQ0FBQ1osYUFBYSxFQUFFO2dCQUM5RFMsTUFBTUMsVUFBVSxHQUFHVSxPQUFPQyxVQUFVLENBQUNaLE1BQU1hLGFBQWEsRUFBRWIsTUFBTXZFLEtBQUssQ0FBQ3FGLFlBQVk7WUFDcEY7UUFDRjtRQUNBOUYsZ0JBQWdCZ0YsT0FBTywrQkFBK0I7WUFDcERBLE1BQU1PLFFBQVEsQ0FBQztnQkFDYmpCLGNBQWM7WUFDaEI7UUFDRjtRQUNBdEUsZ0JBQWdCZ0YsT0FBTywrQkFBK0I7WUFDcERBLE1BQU1PLFFBQVEsQ0FBQztnQkFDYmpCLGNBQWM7WUFDaEI7UUFDRjtRQUNBdEUsZ0JBQWdCZ0YsT0FBTyx3QkFBd0IsU0FBVTNGLENBQUM7WUFDeEQsSUFBSTBHLFFBQVFuQixRQUFRdkYsS0FBS0EsRUFBRXdGLGNBQWMsQ0FBQyxFQUFFLEdBQUd4RjtZQUMvQzJGLE1BQU1PLFFBQVEsQ0FBQztnQkFDYmYsbUJBQW1CO2dCQUNuQkQsZUFBZTtnQkFDZnlCLGlCQUFpQkQsTUFBTUUsS0FBSztZQUM5QjtZQUNBakIsTUFBTWtCLHFCQUFxQjtRQUM3QjtRQUNBbEIsTUFBTW1CLDBCQUEwQixHQUFHO1lBQ2pDekIsUUFBUU0sTUFBTW9CLHdCQUF3QixDQUFDMUgsSUFBSSxDQUFDc0csT0FBTztZQUNuREwsTUFBTUssTUFBTW9CLHdCQUF3QixDQUFDMUgsSUFBSSxDQUFDc0csT0FBTztRQUNuRDtRQUNBQSxNQUFNRyxLQUFLLEdBQUcsQ0FBQztRQUNmLE9BQU9IO0lBQ1Q7SUFDQWpELFVBQVUrQyxPQUFPQztJQUNqQixPQUFPakUsYUFBYWdFLE9BQU87UUFBQztZQUMxQjlGLEtBQUs7WUFDTG1ELE9BQU8sU0FBU2tFO2dCQUNkLElBQUksSUFBSSxDQUFDcEIsVUFBVSxFQUFFO29CQUNuQkMsYUFBYSxJQUFJLENBQUNELFVBQVU7b0JBQzVCLElBQUksQ0FBQ0EsVUFBVSxHQUFHO2dCQUNwQjtnQkFDQSxJQUFJLENBQUNTLHFCQUFxQjtZQUM1QjtRQUNGO1FBQUc7WUFDRDFHLEtBQUs7WUFDTG1ELE9BQU8sU0FBU21FLFNBQVNDLEtBQUs7Z0JBQzVCLElBQUk3QixTQUFTNkIsTUFBTTdCLE1BQU0sRUFDdkJDLE9BQU80QixNQUFNNUIsSUFBSTtnQkFDbkIsSUFBSVIsY0FBYyxJQUFJLENBQUNnQixLQUFLLENBQUNoQixXQUFXO2dCQUN4QyxJQUFJcUMsZUFBZSxJQUFJLENBQUMvRixLQUFLLEVBQzNCZ0csTUFBTUQsYUFBYUMsR0FBRyxFQUN0Qi9DLE9BQU84QyxhQUFhOUMsSUFBSTtnQkFDMUIsSUFBSWdELFlBQVloRCxLQUFLNUUsTUFBTSxHQUFHO2dCQUM5QixJQUFJNkgsTUFBTUMsS0FBS0QsR0FBRyxDQUFDakMsUUFBUUM7Z0JBQzNCLElBQUlrQyxNQUFNRCxLQUFLQyxHQUFHLENBQUNuQyxRQUFRQztnQkFDM0IsSUFBSW1DLFdBQVdoQyxNQUFNaUMsZUFBZSxDQUFDNUMsYUFBYXdDO2dCQUNsRCxJQUFJSyxXQUFXbEMsTUFBTWlDLGVBQWUsQ0FBQzVDLGFBQWEwQztnQkFDbEQsT0FBTztvQkFDTGxELFlBQVltRCxXQUFXQSxXQUFXTDtvQkFDbEM3QyxVQUFVb0QsYUFBYU4sWUFBWUEsWUFBWU0sV0FBV0EsV0FBV1A7Z0JBQ3ZFO1lBQ0Y7UUFDRjtRQUFHO1lBQ0R6SCxLQUFLO1lBQ0xtRCxPQUFPLFNBQVM4RSxjQUFjQyxLQUFLO2dCQUNqQyxJQUFJQyxlQUFlLElBQUksQ0FBQzFHLEtBQUssRUFDM0JpRCxPQUFPeUQsYUFBYXpELElBQUksRUFDeEIwRCxnQkFBZ0JELGFBQWFDLGFBQWEsRUFDMUNDLFVBQVVGLGFBQWFFLE9BQU87Z0JBQ2hDLElBQUlDLE9BQU9sRSxtRUFBaUJBLENBQUNNLElBQUksQ0FBQ3dELE1BQU0sRUFBRUcsU0FBU0g7Z0JBQ25ELE9BQU9sRSx3REFBVUEsQ0FBQ29FLGlCQUFpQkEsY0FBY0UsTUFBTUosU0FBU0k7WUFDbEU7UUFDRjtRQUFHO1lBQ0R0SSxLQUFLO1lBQ0xtRCxPQUFPLFNBQVMrRDtnQkFDZFAsT0FBTzRCLGdCQUFnQixDQUFDLFdBQVcsSUFBSSxDQUFDMUIsYUFBYSxFQUFFO2dCQUN2REYsT0FBTzRCLGdCQUFnQixDQUFDLFlBQVksSUFBSSxDQUFDMUIsYUFBYSxFQUFFO2dCQUN4REYsT0FBTzRCLGdCQUFnQixDQUFDLGFBQWEsSUFBSSxDQUFDakMsVUFBVSxFQUFFO1lBQ3hEO1FBQ0Y7UUFBRztZQUNEdEcsS0FBSztZQUNMbUQsT0FBTyxTQUFTdUQ7Z0JBQ2RDLE9BQU82QixtQkFBbUIsQ0FBQyxXQUFXLElBQUksQ0FBQzNCLGFBQWEsRUFBRTtnQkFDMURGLE9BQU82QixtQkFBbUIsQ0FBQyxZQUFZLElBQUksQ0FBQzNCLGFBQWEsRUFBRTtnQkFDM0RGLE9BQU82QixtQkFBbUIsQ0FBQyxhQUFhLElBQUksQ0FBQ2xDLFVBQVUsRUFBRTtZQUMzRDtRQUNGO1FBQUc7WUFDRHRHLEtBQUs7WUFDTG1ELE9BQU8sU0FBU2tELGdCQUFnQmhHLENBQUM7Z0JBQy9CLElBQUlvSSxjQUFjLElBQUksQ0FBQ3RDLEtBQUssRUFDMUJhLGtCQUFrQnlCLFlBQVl6QixlQUFlLEVBQzdDdEIsU0FBUytDLFlBQVkvQyxNQUFNLEVBQzNCQyxPQUFPOEMsWUFBWTlDLElBQUk7Z0JBQ3pCLElBQUkrQyxlQUFlLElBQUksQ0FBQ2pILEtBQUssRUFDM0JvRCxJQUFJNkQsYUFBYTdELENBQUMsRUFDbEJDLFFBQVE0RCxhQUFhNUQsS0FBSyxFQUMxQkMsaUJBQWlCMkQsYUFBYTNELGNBQWMsRUFDNUNKLGFBQWErRCxhQUFhL0QsVUFBVSxFQUNwQ0MsV0FBVzhELGFBQWE5RCxRQUFRLEVBQ2hDK0QsV0FBV0QsYUFBYUMsUUFBUTtnQkFDbEMsSUFBSUMsUUFBUXZJLEVBQUU0RyxLQUFLLEdBQUdEO2dCQUN0QixJQUFJNEIsUUFBUSxHQUFHO29CQUNiQSxRQUFRaEIsS0FBS0QsR0FBRyxDQUFDaUIsT0FBTy9ELElBQUlDLFFBQVFDLGlCQUFpQlksTUFBTWQsSUFBSUMsUUFBUUMsaUJBQWlCVztnQkFDMUYsT0FBTyxJQUFJa0QsUUFBUSxHQUFHO29CQUNwQkEsUUFBUWhCLEtBQUtDLEdBQUcsQ0FBQ2UsT0FBTy9ELElBQUlhLFFBQVFiLElBQUljO2dCQUMxQztnQkFDQSxJQUFJa0QsV0FBVyxJQUFJLENBQUN2QixRQUFRLENBQUM7b0JBQzNCNUIsUUFBUUEsU0FBU2tEO29CQUNqQmpELE1BQU1BLE9BQU9pRDtnQkFDZjtnQkFDQSxJQUFJLENBQUNDLFNBQVNsRSxVQUFVLEtBQUtBLGNBQWNrRSxTQUFTakUsUUFBUSxLQUFLQSxRQUFPLEtBQU0rRCxVQUFVO29CQUN0RkEsU0FBU0U7Z0JBQ1g7Z0JBQ0EsSUFBSSxDQUFDdEMsUUFBUSxDQUFDO29CQUNaYixRQUFRQSxTQUFTa0Q7b0JBQ2pCakQsTUFBTUEsT0FBT2lEO29CQUNiNUIsaUJBQWlCM0csRUFBRTRHLEtBQUs7Z0JBQzFCO1lBQ0Y7UUFDRjtRQUFHO1lBQ0RqSCxLQUFLO1lBQ0xtRCxPQUFPLFNBQVNpRSx5QkFBeUIwQixFQUFFLEVBQUV6SSxDQUFDO2dCQUM1QyxJQUFJMEcsUUFBUW5CLFFBQVF2RixLQUFLQSxFQUFFd0YsY0FBYyxDQUFDLEVBQUUsR0FBR3hGO2dCQUMvQyxJQUFJLENBQUNrRyxRQUFRLENBQUM7b0JBQ1poQixlQUFlO29CQUNmQyxtQkFBbUI7b0JBQ25CdUQsbUJBQW1CRDtvQkFDbkJFLGlCQUFpQmpDLE1BQU1FLEtBQUs7Z0JBQzlCO2dCQUNBLElBQUksQ0FBQ0MscUJBQXFCO1lBQzVCO1FBQ0Y7UUFBRztZQUNEbEgsS0FBSztZQUNMbUQsT0FBTyxTQUFTaUQsb0JBQW9CL0YsQ0FBQztnQkFDbkMsSUFBSTRJLGVBQWUsSUFBSSxDQUFDOUMsS0FBSyxFQUMzQjZDLGtCQUFrQkMsYUFBYUQsZUFBZSxFQUM5Q0Qsb0JBQW9CRSxhQUFhRixpQkFBaUIsRUFDbERwRCxPQUFPc0QsYUFBYXRELElBQUksRUFDeEJELFNBQVN1RCxhQUFhdkQsTUFBTTtnQkFDOUIsSUFBSXdELFlBQVksSUFBSSxDQUFDL0MsS0FBSyxDQUFDNEMsa0JBQWtCO2dCQUM3QyxJQUFJSSxlQUFlLElBQUksQ0FBQzFILEtBQUssRUFDM0JvRCxJQUFJc0UsYUFBYXRFLENBQUMsRUFDbEJDLFFBQVFxRSxhQUFhckUsS0FBSyxFQUMxQkMsaUJBQWlCb0UsYUFBYXBFLGNBQWMsRUFDNUM0RCxXQUFXUSxhQUFhUixRQUFRLEVBQ2hDbEIsTUFBTTBCLGFBQWExQixHQUFHLEVBQ3RCL0MsT0FBT3lFLGFBQWF6RSxJQUFJO2dCQUMxQixJQUFJMEUsU0FBUztvQkFDWDFELFFBQVEsSUFBSSxDQUFDUyxLQUFLLENBQUNULE1BQU07b0JBQ3pCQyxNQUFNLElBQUksQ0FBQ1EsS0FBSyxDQUFDUixJQUFJO2dCQUN2QjtnQkFDQSxJQUFJaUQsUUFBUXZJLEVBQUU0RyxLQUFLLEdBQUcrQjtnQkFDdEIsSUFBSUosUUFBUSxHQUFHO29CQUNiQSxRQUFRaEIsS0FBS0QsR0FBRyxDQUFDaUIsT0FBTy9ELElBQUlDLFFBQVFDLGlCQUFpQm1FO2dCQUN2RCxPQUFPLElBQUlOLFFBQVEsR0FBRztvQkFDcEJBLFFBQVFoQixLQUFLQyxHQUFHLENBQUNlLE9BQU8vRCxJQUFJcUU7Z0JBQzlCO2dCQUNBRSxNQUFNLENBQUNMLGtCQUFrQixHQUFHRyxZQUFZTjtnQkFDeEMsSUFBSUMsV0FBVyxJQUFJLENBQUN2QixRQUFRLENBQUM4QjtnQkFDN0IsSUFBSXpFLGFBQWFrRSxTQUFTbEUsVUFBVSxFQUNsQ0MsV0FBV2lFLFNBQVNqRSxRQUFRO2dCQUM5QixJQUFJeUUsWUFBWSxTQUFTQTtvQkFDdkIsSUFBSTNCLFlBQVloRCxLQUFLNUUsTUFBTSxHQUFHO29CQUM5QixJQUFJaUosc0JBQXNCLFlBQWFwRCxDQUFBQSxPQUFPRCxTQUFTZixhQUFhOEMsUUFBUSxJQUFJN0MsV0FBVzZDLFFBQVEsTUFBTTlCLE9BQU9ELFVBQVVkLGFBQWE4QyxhQUFhcUIsc0JBQXNCLFVBQVdwRCxDQUFBQSxPQUFPRCxTQUFTZCxXQUFXNkMsUUFBUSxJQUFJOUMsYUFBYThDLFFBQVEsTUFBTTlCLE9BQU9ELFVBQVVkLGFBQWE4QyxXQUFXO3dCQUM5UixPQUFPO29CQUNUO29CQUNBLE9BQU87Z0JBQ1Q7Z0JBQ0EsSUFBSSxDQUFDbkIsUUFBUSxDQUFDdkYsZ0JBQWdCQSxnQkFBZ0IsQ0FBQyxHQUFHK0gsbUJBQW1CRyxZQUFZTixRQUFRLG1CQUFtQnZJLEVBQUU0RyxLQUFLLEdBQUc7b0JBQ3BILElBQUkwQixVQUFVO3dCQUNaLElBQUlVLGFBQWE7NEJBQ2ZWLFNBQVNFO3dCQUNYO29CQUNGO2dCQUNGO1lBQ0Y7UUFDRjtRQUFHO1lBQ0Q3SSxLQUFLO1lBQ0xtRCxPQUFPLFNBQVNtRyw0QkFBNEJDLFNBQVMsRUFBRVQsRUFBRTtnQkFDdkQsSUFBSVUsU0FBUyxJQUFJO2dCQUNqQixxRkFBcUY7Z0JBQ3JGLElBQUlDLGVBQWUsSUFBSSxDQUFDdEQsS0FBSyxFQUMzQmhCLGNBQWNzRSxhQUFhdEUsV0FBVyxFQUN0Q08sU0FBUytELGFBQWEvRCxNQUFNLEVBQzVCQyxPQUFPOEQsYUFBYTlELElBQUk7Z0JBQzFCLDBGQUEwRjtnQkFDMUYsSUFBSStELG9CQUFvQixJQUFJLENBQUN2RCxLQUFLLENBQUMyQyxHQUFHO2dCQUN0QyxJQUFJYSxlQUFleEUsWUFBWXlFLE9BQU8sQ0FBQ0Y7Z0JBQ3ZDLElBQUlDLGlCQUFpQixDQUFDLEdBQUc7b0JBQ3ZCO2dCQUNGO2dCQUNBLElBQUlkLFdBQVdjLGVBQWVKO2dCQUM5QixJQUFJVixhQUFhLENBQUMsS0FBS0EsWUFBWTFELFlBQVlyRixNQUFNLEVBQUU7b0JBQ3JEO2dCQUNGO2dCQUNBLElBQUkrSixnQkFBZ0IxRSxXQUFXLENBQUMwRCxTQUFTO2dCQUV6QyxvRUFBb0U7Z0JBQ3BFLElBQUlDLE9BQU8sWUFBWWUsaUJBQWlCbEUsUUFBUW1ELE9BQU8sVUFBVWUsaUJBQWlCbkUsUUFBUTtvQkFDeEY7Z0JBQ0Y7Z0JBQ0EsSUFBSSxDQUFDYSxRQUFRLENBQUN2RixnQkFBZ0IsQ0FBQyxHQUFHOEgsSUFBSWUsZ0JBQWdCO29CQUNwREwsT0FBTy9ILEtBQUssQ0FBQ2tILFFBQVEsQ0FBQ2EsT0FBT2xDLFFBQVEsQ0FBQzt3QkFDcEM1QixRQUFROEQsT0FBT3JELEtBQUssQ0FBQ1QsTUFBTTt3QkFDM0JDLE1BQU02RCxPQUFPckQsS0FBSyxDQUFDUixJQUFJO29CQUN6QjtnQkFDRjtZQUNGO1FBQ0Y7UUFBRztZQUNEM0YsS0FBSztZQUNMbUQsT0FBTyxTQUFTMkc7Z0JBQ2QsSUFBSUMsZUFBZSxJQUFJLENBQUN0SSxLQUFLLEVBQzNCb0QsSUFBSWtGLGFBQWFsRixDQUFDLEVBQ2xCbUYsSUFBSUQsYUFBYUMsQ0FBQyxFQUNsQmxGLFFBQVFpRixhQUFhakYsS0FBSyxFQUMxQm1GLFNBQVNGLGFBQWFFLE1BQU0sRUFDNUJDLE9BQU9ILGFBQWFHLElBQUksRUFDeEJDLFNBQVNKLGFBQWFJLE1BQU07Z0JBQzlCLE9BQU8sV0FBVyxHQUFFeEcsMERBQW1CLENBQUMsUUFBUTtvQkFDOUN3RyxRQUFRQTtvQkFDUkQsTUFBTUE7b0JBQ05yRixHQUFHQTtvQkFDSG1GLEdBQUdBO29CQUNIbEYsT0FBT0E7b0JBQ1BtRixRQUFRQTtnQkFDVjtZQUNGO1FBQ0Y7UUFBRztZQUNEakssS0FBSztZQUNMbUQsT0FBTyxTQUFTa0g7Z0JBQ2QsSUFBSUMsZUFBZSxJQUFJLENBQUM3SSxLQUFLLEVBQzNCb0QsSUFBSXlGLGFBQWF6RixDQUFDLEVBQ2xCbUYsSUFBSU0sYUFBYU4sQ0FBQyxFQUNsQmxGLFFBQVF3RixhQUFheEYsS0FBSyxFQUMxQm1GLFNBQVNLLGFBQWFMLE1BQU0sRUFDNUJ2RixPQUFPNEYsYUFBYTVGLElBQUksRUFDeEI2RixXQUFXRCxhQUFhQyxRQUFRLEVBQ2hDQyxVQUFVRixhQUFhRSxPQUFPO2dCQUNoQyxJQUFJQyxlQUFlNUcsMkNBQVFBLENBQUM2RyxJQUFJLENBQUNIO2dCQUNqQyxJQUFJLENBQUNFLGNBQWM7b0JBQ2pCLE9BQU87Z0JBQ1Q7Z0JBQ0EsT0FBTyxXQUFXLEdBQUU5Ryx5REFBa0IsQ0FBQzhHLGNBQWM7b0JBQ25ENUYsR0FBR0E7b0JBQ0htRixHQUFHQTtvQkFDSGxGLE9BQU9BO29CQUNQbUYsUUFBUUE7b0JBQ1JXLFFBQVFKO29CQUNSSyxTQUFTO29CQUNUbkcsTUFBTUE7Z0JBQ1I7WUFDRjtRQUNGO1FBQUc7WUFDRDFFLEtBQUs7WUFDTG1ELE9BQU8sU0FBUzJILHFCQUFxQkMsVUFBVSxFQUFFakMsRUFBRTtnQkFDakQsSUFBSWtDLGtCQUNGQyxnQkFDQUMsU0FBUyxJQUFJO2dCQUNmLElBQUlDLGVBQWUsSUFBSSxDQUFDMUosS0FBSyxFQUMzQnVJLElBQUltQixhQUFhbkIsQ0FBQyxFQUNsQmpGLGlCQUFpQm9HLGFBQWFwRyxjQUFjLEVBQzVDa0YsU0FBU2tCLGFBQWFsQixNQUFNLEVBQzVCbUIsWUFBWUQsYUFBYUMsU0FBUyxFQUNsQ0MsWUFBWUYsYUFBYUUsU0FBUyxFQUNsQzNHLE9BQU95RyxhQUFhekcsSUFBSSxFQUN4QkMsYUFBYXdHLGFBQWF4RyxVQUFVLEVBQ3BDQyxXQUFXdUcsYUFBYXZHLFFBQVE7Z0JBQ2xDLElBQUlDLElBQUkrQyxLQUFLQyxHQUFHLENBQUNrRCxZQUFZLElBQUksQ0FBQ3RKLEtBQUssQ0FBQ29ELENBQUM7Z0JBQ3pDLElBQUl5RyxpQkFBaUJ4SyxjQUFjQSxjQUFjLENBQUMsR0FBR3lELDZEQUFXQSxDQUFDLElBQUksQ0FBQzlDLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRztvQkFDeEZvRCxHQUFHQTtvQkFDSG1GLEdBQUdBO29CQUNIbEYsT0FBT0M7b0JBQ1BrRixRQUFRQTtnQkFDVjtnQkFDQSxJQUFJc0IsaUJBQWlCRixhQUFhLGNBQWNHLE1BQU0sQ0FBQyxDQUFDUixtQkFBbUJ0RyxJQUFJLENBQUNDLFdBQVcsTUFBTSxRQUFRcUcscUJBQXFCLEtBQUssSUFBSSxLQUFLLElBQUlBLGlCQUFpQlMsSUFBSSxFQUFFLGlCQUFpQkQsTUFBTSxDQUFDLENBQUNQLGlCQUFpQnZHLElBQUksQ0FBQ0UsU0FBUyxNQUFNLFFBQVFxRyxtQkFBbUIsS0FBSyxJQUFJLEtBQUssSUFBSUEsZUFBZVEsSUFBSTtnQkFDclMsT0FBTyxXQUFXLEdBQUU5SCwwREFBbUIsQ0FBQ08sbURBQUtBLEVBQUU7b0JBQzdDd0gsVUFBVTtvQkFDVkMsTUFBTTtvQkFDTixjQUFjSjtvQkFDZCxpQkFBaUJSO29CQUNqQmEsV0FBVztvQkFDWEMsY0FBYyxJQUFJLENBQUNDLDJCQUEyQjtvQkFDOUNDLGNBQWMsSUFBSSxDQUFDQywyQkFBMkI7b0JBQzlDQyxhQUFhLElBQUksQ0FBQzlFLDBCQUEwQixDQUFDMkIsR0FBRztvQkFDaERvRCxjQUFjLElBQUksQ0FBQy9FLDBCQUEwQixDQUFDMkIsR0FBRztvQkFDakRxRCxXQUFXLFNBQVNBLFVBQVU5TCxDQUFDO3dCQUM3QixJQUFJLENBQUM7NEJBQUM7NEJBQWE7eUJBQWEsQ0FBQytMLFFBQVEsQ0FBQy9MLEVBQUVMLEdBQUcsR0FBRzs0QkFDaEQ7d0JBQ0Y7d0JBQ0FLLEVBQUVnTSxjQUFjO3dCQUNoQmhNLEVBQUVpTSxlQUFlO3dCQUNqQnBCLE9BQU81QiwyQkFBMkIsQ0FBQ2pKLEVBQUVMLEdBQUcsS0FBSyxlQUFlLElBQUksQ0FBQyxHQUFHOEk7b0JBQ3RFO29CQUNBeUQsU0FBUyxTQUFTQTt3QkFDaEJyQixPQUFPM0UsUUFBUSxDQUFDOzRCQUNkZCxvQkFBb0I7d0JBQ3RCO29CQUNGO29CQUNBK0csUUFBUSxTQUFTQTt3QkFDZnRCLE9BQU8zRSxRQUFRLENBQUM7NEJBQ2RkLG9CQUFvQjt3QkFDdEI7b0JBQ0Y7b0JBQ0FnSCxPQUFPO3dCQUNMQyxRQUFRO29CQUNWO2dCQUNGLEdBQUc1RyxNQUFNNkcsZUFBZSxDQUFDdkIsV0FBV0U7WUFDdEM7UUFDRjtRQUFHO1lBQ0R0TCxLQUFLO1lBQ0xtRCxPQUFPLFNBQVN5SixZQUFZbEgsTUFBTSxFQUFFQyxJQUFJO2dCQUN0QyxJQUFJa0gsZUFBZSxJQUFJLENBQUNwTCxLQUFLLEVBQzNCdUksSUFBSTZDLGFBQWE3QyxDQUFDLEVBQ2xCQyxTQUFTNEMsYUFBYTVDLE1BQU0sRUFDNUJFLFNBQVMwQyxhQUFhMUMsTUFBTSxFQUM1QnBGLGlCQUFpQjhILGFBQWE5SCxjQUFjO2dCQUM5QyxJQUFJRixJQUFJK0MsS0FBS0QsR0FBRyxDQUFDakMsUUFBUUMsUUFBUVo7Z0JBQ2pDLElBQUlELFFBQVE4QyxLQUFLQyxHQUFHLENBQUNELEtBQUtrRixHQUFHLENBQUNuSCxPQUFPRCxVQUFVWCxnQkFBZ0I7Z0JBQy9ELE9BQU8sV0FBVyxHQUFFcEIsMERBQW1CLENBQUMsUUFBUTtvQkFDOUNpSSxXQUFXO29CQUNYQyxjQUFjLElBQUksQ0FBQ0MsMkJBQTJCO29CQUM5Q0MsY0FBYyxJQUFJLENBQUNDLDJCQUEyQjtvQkFDOUNDLGFBQWEsSUFBSSxDQUFDYyxvQkFBb0I7b0JBQ3RDYixjQUFjLElBQUksQ0FBQ2Esb0JBQW9CO29CQUN2Q04sT0FBTzt3QkFDTEMsUUFBUTtvQkFDVjtvQkFDQXZDLFFBQVE7b0JBQ1JELE1BQU1DO29CQUNONkMsYUFBYTtvQkFDYm5JLEdBQUdBO29CQUNIbUYsR0FBR0E7b0JBQ0hsRixPQUFPQTtvQkFDUG1GLFFBQVFBO2dCQUNWO1lBQ0Y7UUFDRjtRQUFHO1lBQ0RqSyxLQUFLO1lBQ0xtRCxPQUFPLFNBQVM4SjtnQkFDZCxJQUFJQyxnQkFBZ0IsSUFBSSxDQUFDekwsS0FBSyxFQUM1QmtELGFBQWF1SSxjQUFjdkksVUFBVSxFQUNyQ0MsV0FBV3NJLGNBQWN0SSxRQUFRLEVBQ2pDb0YsSUFBSWtELGNBQWNsRCxDQUFDLEVBQ25CQyxTQUFTaUQsY0FBY2pELE1BQU0sRUFDN0JsRixpQkFBaUJtSSxjQUFjbkksY0FBYyxFQUM3Q29GLFNBQVMrQyxjQUFjL0MsTUFBTTtnQkFDL0IsSUFBSWdELGVBQWUsSUFBSSxDQUFDaEgsS0FBSyxFQUMzQlQsU0FBU3lILGFBQWF6SCxNQUFNLEVBQzVCQyxPQUFPd0gsYUFBYXhILElBQUk7Z0JBQzFCLElBQUl5SCxTQUFTO2dCQUNiLElBQUlDLFFBQVE7b0JBQ1ZDLGVBQWU7b0JBQ2ZwRCxNQUFNQztnQkFDUjtnQkFDQSxPQUFPLFdBQVcsR0FBRXhHLDBEQUFtQixDQUFDTyxtREFBS0EsRUFBRTtvQkFDN0MwSCxXQUFXO2dCQUNiLEdBQUcsV0FBVyxHQUFFakksMERBQW1CLENBQUNRLGlEQUFJQSxFQUFFNUUsU0FBUztvQkFDakRnTyxZQUFZO29CQUNaQyxnQkFBZ0I7b0JBQ2hCM0ksR0FBRytDLEtBQUtELEdBQUcsQ0FBQ2pDLFFBQVFDLFFBQVF5SDtvQkFDNUJwRCxHQUFHQSxJQUFJQyxTQUFTO2dCQUNsQixHQUFHb0QsUUFBUSxJQUFJLENBQUNwRixhQUFhLENBQUN0RCxjQUFjLFdBQVcsR0FBRWhCLDBEQUFtQixDQUFDUSxpREFBSUEsRUFBRTVFLFNBQVM7b0JBQzFGZ08sWUFBWTtvQkFDWkMsZ0JBQWdCO29CQUNoQjNJLEdBQUcrQyxLQUFLQyxHQUFHLENBQUNuQyxRQUFRQyxRQUFRWixpQkFBaUJxSTtvQkFDN0NwRCxHQUFHQSxJQUFJQyxTQUFTO2dCQUNsQixHQUFHb0QsUUFBUSxJQUFJLENBQUNwRixhQUFhLENBQUNyRDtZQUNoQztRQUNGO1FBQUc7WUFDRDVFLEtBQUs7WUFDTG1ELE9BQU8sU0FBU3NLO2dCQUNkLElBQUlDLGdCQUFnQixJQUFJLENBQUNqTSxLQUFLLEVBQzVCaUQsT0FBT2dKLGNBQWNoSixJQUFJLEVBQ3pCa0gsWUFBWThCLGNBQWM5QixTQUFTLEVBQ25DckIsV0FBV21ELGNBQWNuRCxRQUFRLEVBQ2pDMUYsSUFBSTZJLGNBQWM3SSxDQUFDLEVBQ25CbUYsSUFBSTBELGNBQWMxRCxDQUFDLEVBQ25CbEYsUUFBUTRJLGNBQWM1SSxLQUFLLEVBQzNCbUYsU0FBU3lELGNBQWN6RCxNQUFNLEVBQzdCMEQsaUJBQWlCRCxjQUFjQyxjQUFjO2dCQUMvQyxJQUFJQyxlQUFlLElBQUksQ0FBQ3pILEtBQUssRUFDM0JULFNBQVNrSSxhQUFhbEksTUFBTSxFQUM1QkMsT0FBT2lJLGFBQWFqSSxJQUFJLEVBQ3hCTCxlQUFlc0ksYUFBYXRJLFlBQVksRUFDeENDLGdCQUFnQnFJLGFBQWFySSxhQUFhLEVBQzFDQyxvQkFBb0JvSSxhQUFhcEksaUJBQWlCLEVBQ2xEQyxxQkFBcUJtSSxhQUFhbkksa0JBQWtCO2dCQUN0RCxJQUFJLENBQUNmLFFBQVEsQ0FBQ0EsS0FBSzVFLE1BQU0sSUFBSSxDQUFDdUUseURBQVFBLENBQUNRLE1BQU0sQ0FBQ1IseURBQVFBLENBQUMyRixNQUFNLENBQUMzRix5REFBUUEsQ0FBQ1MsVUFBVSxDQUFDVCx5REFBUUEsQ0FBQzRGLFdBQVduRixTQUFTLEtBQUttRixVQUFVLEdBQUc7b0JBQy9ILE9BQU87Z0JBQ1Q7Z0JBQ0EsSUFBSTRELGFBQWEvSixnREFBSUEsQ0FBQyxrQkFBa0I4SDtnQkFDeEMsSUFBSWtDLGNBQWNuSyxxREFBYyxDQUFDb0ssS0FBSyxDQUFDeEQsY0FBYztnQkFDckQsSUFBSWtDLFFBQVFuSSwwRUFBbUJBLENBQUMsY0FBYztnQkFDOUMsT0FBTyxXQUFXLEdBQUVYLDBEQUFtQixDQUFDTyxtREFBS0EsRUFBRTtvQkFDN0MwSCxXQUFXaUM7b0JBQ1g5QixjQUFjLElBQUksQ0FBQ2lDLGtCQUFrQjtvQkFDckNDLGFBQWEsSUFBSSxDQUFDQyxlQUFlO29CQUNqQ3pCLE9BQU9BO2dCQUNULEdBQUcsSUFBSSxDQUFDM0MsZ0JBQWdCLElBQUlnRSxlQUFlLElBQUksQ0FBQ3pELGNBQWMsSUFBSSxJQUFJLENBQUN1QyxXQUFXLENBQUNsSCxRQUFRQyxPQUFPLElBQUksQ0FBQ21GLG9CQUFvQixDQUFDcEYsUUFBUSxXQUFXLElBQUksQ0FBQ29GLG9CQUFvQixDQUFDbkYsTUFBTSxTQUFTLENBQUNMLGdCQUFnQkMsaUJBQWlCQyxxQkFBcUJDLHNCQUFzQmtJLGNBQWEsS0FBTSxJQUFJLENBQUNWLFVBQVU7WUFDelM7UUFDRjtLQUFFLEVBQUU7UUFBQztZQUNIak4sS0FBSztZQUNMbUQsT0FBTyxTQUFTZ0wsdUJBQXVCMU0sS0FBSztnQkFDMUMsSUFBSW9ELElBQUlwRCxNQUFNb0QsQ0FBQyxFQUNibUYsSUFBSXZJLE1BQU11SSxDQUFDLEVBQ1hsRixRQUFRckQsTUFBTXFELEtBQUssRUFDbkJtRixTQUFTeEksTUFBTXdJLE1BQU0sRUFDckJFLFNBQVMxSSxNQUFNMEksTUFBTTtnQkFDdkIsSUFBSWlFLFFBQVF4RyxLQUFLeUcsS0FBSyxDQUFDckUsSUFBSUMsU0FBUyxLQUFLO2dCQUN6QyxPQUFPLFdBQVcsR0FBRXRHLDBEQUFtQixDQUFDQSx1REFBYyxFQUFFLE1BQU0sV0FBVyxHQUFFQSwwREFBbUIsQ0FBQyxRQUFRO29CQUNyR2tCLEdBQUdBO29CQUNIbUYsR0FBR0E7b0JBQ0hsRixPQUFPQTtvQkFDUG1GLFFBQVFBO29CQUNSQyxNQUFNQztvQkFDTkEsUUFBUTtnQkFDVixJQUFJLFdBQVcsR0FBRXhHLDBEQUFtQixDQUFDLFFBQVE7b0JBQzNDNEssSUFBSTFKLElBQUk7b0JBQ1IySixJQUFJSjtvQkFDSkssSUFBSTVKLElBQUlDLFFBQVE7b0JBQ2hCNEosSUFBSU47b0JBQ0psRSxNQUFNO29CQUNOQyxRQUFRO2dCQUNWLElBQUksV0FBVyxHQUFFeEcsMERBQW1CLENBQUMsUUFBUTtvQkFDM0M0SyxJQUFJMUosSUFBSTtvQkFDUjJKLElBQUlKLFFBQVE7b0JBQ1pLLElBQUk1SixJQUFJQyxRQUFRO29CQUNoQjRKLElBQUlOLFFBQVE7b0JBQ1psRSxNQUFNO29CQUNOQyxRQUFRO2dCQUNWO1lBQ0Y7UUFDRjtRQUFHO1lBQ0RuSyxLQUFLO1lBQ0xtRCxPQUFPLFNBQVN3SixnQkFBZ0JnQyxNQUFNLEVBQUVsTixLQUFLO2dCQUMzQyxJQUFJbU47Z0JBQ0osSUFBSyxXQUFXLEdBQUVqTCwyREFBb0IsQ0FBQ2dMLFNBQVM7b0JBQzlDQyxZQUFZLFdBQVcsR0FBRWpMLHlEQUFrQixDQUFDZ0wsUUFBUWxOO2dCQUN0RCxPQUFPLElBQUl1Qyx3REFBVUEsQ0FBQzJLLFNBQVM7b0JBQzdCQyxZQUFZRCxPQUFPbE47Z0JBQ3JCLE9BQU87b0JBQ0xtTixZQUFZOUksTUFBTXFJLHNCQUFzQixDQUFDMU07Z0JBQzNDO2dCQUNBLE9BQU9tTjtZQUNUO1FBQ0Y7UUFBRztZQUNENU8sS0FBSztZQUNMbUQsT0FBTyxTQUFTMkwseUJBQXlCQyxTQUFTLEVBQUVDLFNBQVM7Z0JBQzNELElBQUl0SyxPQUFPcUssVUFBVXJLLElBQUksRUFDdkJJLFFBQVFpSyxVQUFVakssS0FBSyxFQUN2QkQsSUFBSWtLLFVBQVVsSyxDQUFDLEVBQ2ZFLGlCQUFpQmdLLFVBQVVoSyxjQUFjLEVBQ3pDa0ssV0FBV0YsVUFBVUUsUUFBUSxFQUM3QnRLLGFBQWFvSyxVQUFVcEssVUFBVSxFQUNqQ0MsV0FBV21LLFVBQVVuSyxRQUFRO2dCQUMvQixJQUFJRixTQUFTc0ssVUFBVUUsUUFBUSxJQUFJRCxhQUFhRCxVQUFVRyxZQUFZLEVBQUU7b0JBQ3RFLE9BQU9yTyxjQUFjO3dCQUNuQm9PLFVBQVV4Szt3QkFDVjBLLG9CQUFvQnJLO3dCQUNwQm9LLGNBQWNGO3dCQUNkSSxPQUFPeEs7d0JBQ1B5SyxXQUFXeEs7b0JBQ2IsR0FBR0osUUFBUUEsS0FBSzVFLE1BQU0sR0FBRzBFLFlBQVk7d0JBQ25DRSxNQUFNQTt3QkFDTkksT0FBT0E7d0JBQ1BELEdBQUdBO3dCQUNIRSxnQkFBZ0JBO3dCQUNoQkosWUFBWUE7d0JBQ1pDLFVBQVVBO29CQUNaLEtBQUs7d0JBQ0hLLE9BQU87d0JBQ1BFLGFBQWE7b0JBQ2Y7Z0JBQ0Y7Z0JBQ0EsSUFBSTZKLFVBQVUvSixLQUFLLElBQUtILENBQUFBLFVBQVVrSyxVQUFVTSxTQUFTLElBQUl6SyxNQUFNbUssVUFBVUssS0FBSyxJQUFJdEssbUJBQW1CaUssVUFBVUksa0JBQWtCLEdBQUc7b0JBQ2xJSixVQUFVL0osS0FBSyxDQUFDaEIsS0FBSyxDQUFDO3dCQUFDWTt3QkFBR0EsSUFBSUMsUUFBUUM7cUJBQWU7b0JBQ3JELElBQUlJLGNBQWM2SixVQUFVL0osS0FBSyxDQUFDQyxNQUFNLEdBQUdFLEdBQUcsQ0FBQyxTQUFVQyxLQUFLO3dCQUM1RCxPQUFPMkosVUFBVS9KLEtBQUssQ0FBQ0k7b0JBQ3pCO29CQUNBLE9BQU87d0JBQ0w2SixVQUFVeEs7d0JBQ1YwSyxvQkFBb0JySzt3QkFDcEJvSyxjQUFjRjt3QkFDZEksT0FBT3hLO3dCQUNQeUssV0FBV3hLO3dCQUNYWSxRQUFRc0osVUFBVS9KLEtBQUssQ0FBQzhKLFVBQVVwSyxVQUFVO3dCQUM1Q2dCLE1BQU1xSixVQUFVL0osS0FBSyxDQUFDOEosVUFBVW5LLFFBQVE7d0JBQ3hDTyxhQUFhQTtvQkFDZjtnQkFDRjtnQkFDQSxPQUFPO1lBQ1Q7UUFDRjtRQUFHO1lBQ0RuRixLQUFLO1lBQ0xtRCxPQUFPLFNBQVM0RSxnQkFBZ0J3SCxVQUFVLEVBQUUxSyxDQUFDO2dCQUMzQyxJQUFJRyxNQUFNdUssV0FBV3pQLE1BQU07Z0JBQzNCLElBQUkwUCxRQUFRO2dCQUNaLElBQUlDLE1BQU16SyxNQUFNO2dCQUNoQixNQUFPeUssTUFBTUQsUUFBUSxFQUFHO29CQUN0QixJQUFJRSxTQUFTOUgsS0FBS3lHLEtBQUssQ0FBQyxDQUFDbUIsUUFBUUMsR0FBRSxJQUFLO29CQUN4QyxJQUFJRixVQUFVLENBQUNHLE9BQU8sR0FBRzdLLEdBQUc7d0JBQzFCNEssTUFBTUM7b0JBQ1IsT0FBTzt3QkFDTEYsUUFBUUU7b0JBQ1Y7Z0JBQ0Y7Z0JBQ0EsT0FBTzdLLEtBQUswSyxVQUFVLENBQUNFLElBQUksR0FBR0EsTUFBTUQ7WUFDdEM7UUFDRjtLQUFFO0FBQ0osRUFBRTVMLGdEQUFhQSxFQUFFO0FBQ2pCNUMsZ0JBQWdCOEUsT0FBTyxlQUFlO0FBQ3RDOUUsZ0JBQWdCOEUsT0FBTyxnQkFBZ0I7SUFDckNtRSxRQUFRO0lBQ1JsRixnQkFBZ0I7SUFDaEIwQyxLQUFLO0lBQ0x5QyxNQUFNO0lBQ05DLFFBQVE7SUFDUkssU0FBUztRQUNQbUYsS0FBSztRQUNMQyxPQUFPO1FBQ1BDLFFBQVE7UUFDUkMsTUFBTTtJQUNSO0lBQ0FoSixjQUFjO0lBQ2Q2RyxnQkFBZ0I7QUFDbEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9CcnVzaC5qcz9mMzNkIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgQnJ1c2hcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIENoaWxkcmVuIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBzY2FsZVBvaW50IH0gZnJvbSAndmljdG9yeS12ZW5kb3IvZDMtc2NhbGUnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHJhbmdlIGZyb20gJ2xvZGFzaC9yYW5nZSc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50L1RleHQnO1xuaW1wb3J0IHsgZ2V0VmFsdWVCeURhdGFLZXkgfSBmcm9tICcuLi91dGlsL0NoYXJ0VXRpbHMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVByZWZpeFN0eWxlIH0gZnJvbSAnLi4vdXRpbC9Dc3NQcmVmaXhVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG52YXIgY3JlYXRlU2NhbGUgPSBmdW5jdGlvbiBjcmVhdGVTY2FsZShfcmVmKSB7XG4gIHZhciBkYXRhID0gX3JlZi5kYXRhLFxuICAgIHN0YXJ0SW5kZXggPSBfcmVmLnN0YXJ0SW5kZXgsXG4gICAgZW5kSW5kZXggPSBfcmVmLmVuZEluZGV4LFxuICAgIHggPSBfcmVmLngsXG4gICAgd2lkdGggPSBfcmVmLndpZHRoLFxuICAgIHRyYXZlbGxlcldpZHRoID0gX3JlZi50cmF2ZWxsZXJXaWR0aDtcbiAgaWYgKCFkYXRhIHx8ICFkYXRhLmxlbmd0aCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICB2YXIgbGVuID0gZGF0YS5sZW5ndGg7XG4gIHZhciBzY2FsZSA9IHNjYWxlUG9pbnQoKS5kb21haW4ocmFuZ2UoMCwgbGVuKSkucmFuZ2UoW3gsIHggKyB3aWR0aCAtIHRyYXZlbGxlcldpZHRoXSk7XG4gIHZhciBzY2FsZVZhbHVlcyA9IHNjYWxlLmRvbWFpbigpLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICByZXR1cm4gc2NhbGUoZW50cnkpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1RleHRBY3RpdmU6IGZhbHNlLFxuICAgIGlzU2xpZGVNb3Zpbmc6IGZhbHNlLFxuICAgIGlzVHJhdmVsbGVyTW92aW5nOiBmYWxzZSxcbiAgICBpc1RyYXZlbGxlckZvY3VzZWQ6IGZhbHNlLFxuICAgIHN0YXJ0WDogc2NhbGUoc3RhcnRJbmRleCksXG4gICAgZW5kWDogc2NhbGUoZW5kSW5kZXgpLFxuICAgIHNjYWxlOiBzY2FsZSxcbiAgICBzY2FsZVZhbHVlczogc2NhbGVWYWx1ZXNcbiAgfTtcbn07XG52YXIgaXNUb3VjaCA9IGZ1bmN0aW9uIGlzVG91Y2goZSkge1xuICByZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyAmJiAhIWUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoO1xufTtcbmV4cG9ydCB2YXIgQnJ1c2ggPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIEJydXNoKHByb3BzKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCcnVzaCk7XG4gICAgX3RoaXMgPSBfY2FsbFN1cGVyKHRoaXMsIEJydXNoLCBbcHJvcHNdKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlRHJhZ1wiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKF90aGlzLmxlYXZlVGltZXIpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KF90aGlzLmxlYXZlVGltZXIpO1xuICAgICAgICBfdGhpcy5sZWF2ZVRpbWVyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChfdGhpcy5zdGF0ZS5pc1RyYXZlbGxlck1vdmluZykge1xuICAgICAgICBfdGhpcy5oYW5kbGVUcmF2ZWxsZXJNb3ZlKGUpO1xuICAgICAgfSBlbHNlIGlmIChfdGhpcy5zdGF0ZS5pc1NsaWRlTW92aW5nKSB7XG4gICAgICAgIF90aGlzLmhhbmRsZVNsaWRlRHJhZyhlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlVG91Y2hNb3ZlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZS5jaGFuZ2VkVG91Y2hlcyAhPSBudWxsICYmIGUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBfdGhpcy5oYW5kbGVEcmFnKGUuY2hhbmdlZFRvdWNoZXNbMF0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVEcmFnRW5kXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNUcmF2ZWxsZXJNb3Zpbmc6IGZhbHNlLFxuICAgICAgICBpc1NsaWRlTW92aW5nOiBmYWxzZVxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBlbmRJbmRleCA9IF90aGlzJHByb3BzLmVuZEluZGV4LFxuICAgICAgICAgIG9uRHJhZ0VuZCA9IF90aGlzJHByb3BzLm9uRHJhZ0VuZCxcbiAgICAgICAgICBzdGFydEluZGV4ID0gX3RoaXMkcHJvcHMuc3RhcnRJbmRleDtcbiAgICAgICAgb25EcmFnRW5kID09PSBudWxsIHx8IG9uRHJhZ0VuZCA9PT0gdm9pZCAwIHx8IG9uRHJhZ0VuZCh7XG4gICAgICAgICAgZW5kSW5kZXg6IGVuZEluZGV4LFxuICAgICAgICAgIHN0YXJ0SW5kZXg6IHN0YXJ0SW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIF90aGlzLmRldGFjaERyYWdFbmRMaXN0ZW5lcigpO1xuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVMZWF2ZVdyYXBwZXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzLnN0YXRlLmlzVHJhdmVsbGVyTW92aW5nIHx8IF90aGlzLnN0YXRlLmlzU2xpZGVNb3ZpbmcpIHtcbiAgICAgICAgX3RoaXMubGVhdmVUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KF90aGlzLmhhbmRsZURyYWdFbmQsIF90aGlzLnByb3BzLmxlYXZlVGltZU91dCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZUVudGVyU2xpZGVPclRyYXZlbGxlclwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzVGV4dEFjdGl2ZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZUxlYXZlU2xpZGVPclRyYXZlbGxlclwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzVGV4dEFjdGl2ZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVTbGlkZURyYWdTdGFydFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIGV2ZW50ID0gaXNUb3VjaChlKSA/IGUuY2hhbmdlZFRvdWNoZXNbMF0gOiBlO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc1RyYXZlbGxlck1vdmluZzogZmFsc2UsXG4gICAgICAgIGlzU2xpZGVNb3Zpbmc6IHRydWUsXG4gICAgICAgIHNsaWRlTW92ZVN0YXJ0WDogZXZlbnQucGFnZVhcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuYXR0YWNoRHJhZ0VuZExpc3RlbmVyKCk7XG4gICAgfSk7XG4gICAgX3RoaXMudHJhdmVsbGVyRHJhZ1N0YXJ0SGFuZGxlcnMgPSB7XG4gICAgICBzdGFydFg6IF90aGlzLmhhbmRsZVRyYXZlbGxlckRyYWdTdGFydC5iaW5kKF90aGlzLCAnc3RhcnRYJyksXG4gICAgICBlbmRYOiBfdGhpcy5oYW5kbGVUcmF2ZWxsZXJEcmFnU3RhcnQuYmluZChfdGhpcywgJ2VuZFgnKVxuICAgIH07XG4gICAgX3RoaXMuc3RhdGUgPSB7fTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2luaGVyaXRzKEJydXNoLCBfUHVyZUNvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoQnJ1c2gsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMubGVhdmVUaW1lcikge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5sZWF2ZVRpbWVyKTtcbiAgICAgICAgdGhpcy5sZWF2ZVRpbWVyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGV0YWNoRHJhZ0VuZExpc3RlbmVyKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEluZGV4KF9yZWYyKSB7XG4gICAgICB2YXIgc3RhcnRYID0gX3JlZjIuc3RhcnRYLFxuICAgICAgICBlbmRYID0gX3JlZjIuZW5kWDtcbiAgICAgIHZhciBzY2FsZVZhbHVlcyA9IHRoaXMuc3RhdGUuc2NhbGVWYWx1ZXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgZ2FwID0gX3RoaXMkcHJvcHMyLmdhcCxcbiAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzMi5kYXRhO1xuICAgICAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBtaW4gPSBNYXRoLm1pbihzdGFydFgsIGVuZFgpO1xuICAgICAgdmFyIG1heCA9IE1hdGgubWF4KHN0YXJ0WCwgZW5kWCk7XG4gICAgICB2YXIgbWluSW5kZXggPSBCcnVzaC5nZXRJbmRleEluUmFuZ2Uoc2NhbGVWYWx1ZXMsIG1pbik7XG4gICAgICB2YXIgbWF4SW5kZXggPSBCcnVzaC5nZXRJbmRleEluUmFuZ2Uoc2NhbGVWYWx1ZXMsIG1heCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydEluZGV4OiBtaW5JbmRleCAtIG1pbkluZGV4ICUgZ2FwLFxuICAgICAgICBlbmRJbmRleDogbWF4SW5kZXggPT09IGxhc3RJbmRleCA/IGxhc3RJbmRleCA6IG1heEluZGV4IC0gbWF4SW5kZXggJSBnYXBcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFRleHRPZlRpY2tcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VGV4dE9mVGljayhpbmRleCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczMuZGF0YSxcbiAgICAgICAgdGlja0Zvcm1hdHRlciA9IF90aGlzJHByb3BzMy50aWNrRm9ybWF0dGVyLFxuICAgICAgICBkYXRhS2V5ID0gX3RoaXMkcHJvcHMzLmRhdGFLZXk7XG4gICAgICB2YXIgdGV4dCA9IGdldFZhbHVlQnlEYXRhS2V5KGRhdGFbaW5kZXhdLCBkYXRhS2V5LCBpbmRleCk7XG4gICAgICByZXR1cm4gaXNGdW5jdGlvbih0aWNrRm9ybWF0dGVyKSA/IHRpY2tGb3JtYXR0ZXIodGV4dCwgaW5kZXgpIDogdGV4dDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYXR0YWNoRHJhZ0VuZExpc3RlbmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGF0dGFjaERyYWdFbmRMaXN0ZW5lcigpIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5oYW5kbGVEcmFnRW5kLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuaGFuZGxlRHJhZ0VuZCwgdHJ1ZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5oYW5kbGVEcmFnLCB0cnVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGV0YWNoRHJhZ0VuZExpc3RlbmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGFjaERyYWdFbmRMaXN0ZW5lcigpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5oYW5kbGVEcmFnRW5kLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuaGFuZGxlRHJhZ0VuZCwgdHJ1ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5oYW5kbGVEcmFnLCB0cnVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFuZGxlU2xpZGVEcmFnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVNsaWRlRHJhZyhlKSB7XG4gICAgICB2YXIgX3RoaXMkc3RhdGUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzbGlkZU1vdmVTdGFydFggPSBfdGhpcyRzdGF0ZS5zbGlkZU1vdmVTdGFydFgsXG4gICAgICAgIHN0YXJ0WCA9IF90aGlzJHN0YXRlLnN0YXJ0WCxcbiAgICAgICAgZW5kWCA9IF90aGlzJHN0YXRlLmVuZFg7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM0ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgeCA9IF90aGlzJHByb3BzNC54LFxuICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzNC53aWR0aCxcbiAgICAgICAgdHJhdmVsbGVyV2lkdGggPSBfdGhpcyRwcm9wczQudHJhdmVsbGVyV2lkdGgsXG4gICAgICAgIHN0YXJ0SW5kZXggPSBfdGhpcyRwcm9wczQuc3RhcnRJbmRleCxcbiAgICAgICAgZW5kSW5kZXggPSBfdGhpcyRwcm9wczQuZW5kSW5kZXgsXG4gICAgICAgIG9uQ2hhbmdlID0gX3RoaXMkcHJvcHM0Lm9uQ2hhbmdlO1xuICAgICAgdmFyIGRlbHRhID0gZS5wYWdlWCAtIHNsaWRlTW92ZVN0YXJ0WDtcbiAgICAgIGlmIChkZWx0YSA+IDApIHtcbiAgICAgICAgZGVsdGEgPSBNYXRoLm1pbihkZWx0YSwgeCArIHdpZHRoIC0gdHJhdmVsbGVyV2lkdGggLSBlbmRYLCB4ICsgd2lkdGggLSB0cmF2ZWxsZXJXaWR0aCAtIHN0YXJ0WCk7XG4gICAgICB9IGVsc2UgaWYgKGRlbHRhIDwgMCkge1xuICAgICAgICBkZWx0YSA9IE1hdGgubWF4KGRlbHRhLCB4IC0gc3RhcnRYLCB4IC0gZW5kWCk7XG4gICAgICB9XG4gICAgICB2YXIgbmV3SW5kZXggPSB0aGlzLmdldEluZGV4KHtcbiAgICAgICAgc3RhcnRYOiBzdGFydFggKyBkZWx0YSxcbiAgICAgICAgZW5kWDogZW5kWCArIGRlbHRhXG4gICAgICB9KTtcbiAgICAgIGlmICgobmV3SW5kZXguc3RhcnRJbmRleCAhPT0gc3RhcnRJbmRleCB8fCBuZXdJbmRleC5lbmRJbmRleCAhPT0gZW5kSW5kZXgpICYmIG9uQ2hhbmdlKSB7XG4gICAgICAgIG9uQ2hhbmdlKG5ld0luZGV4KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzdGFydFg6IHN0YXJ0WCArIGRlbHRhLFxuICAgICAgICBlbmRYOiBlbmRYICsgZGVsdGEsXG4gICAgICAgIHNsaWRlTW92ZVN0YXJ0WDogZS5wYWdlWFxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhbmRsZVRyYXZlbGxlckRyYWdTdGFydFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVUcmF2ZWxsZXJEcmFnU3RhcnQoaWQsIGUpIHtcbiAgICAgIHZhciBldmVudCA9IGlzVG91Y2goZSkgPyBlLmNoYW5nZWRUb3VjaGVzWzBdIDogZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc1NsaWRlTW92aW5nOiBmYWxzZSxcbiAgICAgICAgaXNUcmF2ZWxsZXJNb3Zpbmc6IHRydWUsXG4gICAgICAgIG1vdmluZ1RyYXZlbGxlcklkOiBpZCxcbiAgICAgICAgYnJ1c2hNb3ZlU3RhcnRYOiBldmVudC5wYWdlWFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF0dGFjaERyYWdFbmRMaXN0ZW5lcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYW5kbGVUcmF2ZWxsZXJNb3ZlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVRyYXZlbGxlck1vdmUoZSkge1xuICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGJydXNoTW92ZVN0YXJ0WCA9IF90aGlzJHN0YXRlMi5icnVzaE1vdmVTdGFydFgsXG4gICAgICAgIG1vdmluZ1RyYXZlbGxlcklkID0gX3RoaXMkc3RhdGUyLm1vdmluZ1RyYXZlbGxlcklkLFxuICAgICAgICBlbmRYID0gX3RoaXMkc3RhdGUyLmVuZFgsXG4gICAgICAgIHN0YXJ0WCA9IF90aGlzJHN0YXRlMi5zdGFydFg7XG4gICAgICB2YXIgcHJldlZhbHVlID0gdGhpcy5zdGF0ZVttb3ZpbmdUcmF2ZWxsZXJJZF07XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgeCA9IF90aGlzJHByb3BzNS54LFxuICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzNS53aWR0aCxcbiAgICAgICAgdHJhdmVsbGVyV2lkdGggPSBfdGhpcyRwcm9wczUudHJhdmVsbGVyV2lkdGgsXG4gICAgICAgIG9uQ2hhbmdlID0gX3RoaXMkcHJvcHM1Lm9uQ2hhbmdlLFxuICAgICAgICBnYXAgPSBfdGhpcyRwcm9wczUuZ2FwLFxuICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHM1LmRhdGE7XG4gICAgICB2YXIgcGFyYW1zID0ge1xuICAgICAgICBzdGFydFg6IHRoaXMuc3RhdGUuc3RhcnRYLFxuICAgICAgICBlbmRYOiB0aGlzLnN0YXRlLmVuZFhcbiAgICAgIH07XG4gICAgICB2YXIgZGVsdGEgPSBlLnBhZ2VYIC0gYnJ1c2hNb3ZlU3RhcnRYO1xuICAgICAgaWYgKGRlbHRhID4gMCkge1xuICAgICAgICBkZWx0YSA9IE1hdGgubWluKGRlbHRhLCB4ICsgd2lkdGggLSB0cmF2ZWxsZXJXaWR0aCAtIHByZXZWYWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGRlbHRhIDwgMCkge1xuICAgICAgICBkZWx0YSA9IE1hdGgubWF4KGRlbHRhLCB4IC0gcHJldlZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHBhcmFtc1ttb3ZpbmdUcmF2ZWxsZXJJZF0gPSBwcmV2VmFsdWUgKyBkZWx0YTtcbiAgICAgIHZhciBuZXdJbmRleCA9IHRoaXMuZ2V0SW5kZXgocGFyYW1zKTtcbiAgICAgIHZhciBzdGFydEluZGV4ID0gbmV3SW5kZXguc3RhcnRJbmRleCxcbiAgICAgICAgZW5kSW5kZXggPSBuZXdJbmRleC5lbmRJbmRleDtcbiAgICAgIHZhciBpc0Z1bGxHYXAgPSBmdW5jdGlvbiBpc0Z1bGxHYXAoKSB7XG4gICAgICAgIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChtb3ZpbmdUcmF2ZWxsZXJJZCA9PT0gJ3N0YXJ0WCcgJiYgKGVuZFggPiBzdGFydFggPyBzdGFydEluZGV4ICUgZ2FwID09PSAwIDogZW5kSW5kZXggJSBnYXAgPT09IDApIHx8IGVuZFggPCBzdGFydFggJiYgZW5kSW5kZXggPT09IGxhc3RJbmRleCB8fCBtb3ZpbmdUcmF2ZWxsZXJJZCA9PT0gJ2VuZFgnICYmIChlbmRYID4gc3RhcnRYID8gZW5kSW5kZXggJSBnYXAgPT09IDAgOiBzdGFydEluZGV4ICUgZ2FwID09PSAwKSB8fCBlbmRYID4gc3RhcnRYICYmIGVuZEluZGV4ID09PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9O1xuICAgICAgdGhpcy5zZXRTdGF0ZShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KHt9LCBtb3ZpbmdUcmF2ZWxsZXJJZCwgcHJldlZhbHVlICsgZGVsdGEpLCBcImJydXNoTW92ZVN0YXJ0WFwiLCBlLnBhZ2VYKSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICBpZiAoaXNGdWxsR2FwKCkpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0luZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYW5kbGVUcmF2ZWxsZXJNb3ZlS2V5Ym9hcmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVHJhdmVsbGVyTW92ZUtleWJvYXJkKGRpcmVjdGlvbiwgaWQpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgLy8gc2NhbGVWYWx1ZXMgYXJlIGEgbGlzdCBvZiBjb29yZGluYXRlcy4gRm9yIGV4YW1wbGU6IFs2NSwgMjUwLCA0MzUsIDYyMCwgODA1LCA5OTBdLlxuICAgICAgdmFyIF90aGlzJHN0YXRlMyA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNjYWxlVmFsdWVzID0gX3RoaXMkc3RhdGUzLnNjYWxlVmFsdWVzLFxuICAgICAgICBzdGFydFggPSBfdGhpcyRzdGF0ZTMuc3RhcnRYLFxuICAgICAgICBlbmRYID0gX3RoaXMkc3RhdGUzLmVuZFg7XG4gICAgICAvLyBjdXJyZW50U2NhbGVWYWx1ZSByZWZlcnMgdG8gd2hpY2ggY29vcmRpbmF0ZSB0aGUgY3VycmVudCB0cmF2ZWxsZXIgc2hvdWxkIGJlIHBsYWNlZCBhdC5cbiAgICAgIHZhciBjdXJyZW50U2NhbGVWYWx1ZSA9IHRoaXMuc3RhdGVbaWRdO1xuICAgICAgdmFyIGN1cnJlbnRJbmRleCA9IHNjYWxlVmFsdWVzLmluZGV4T2YoY3VycmVudFNjYWxlVmFsdWUpO1xuICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG5ld0luZGV4ID0gY3VycmVudEluZGV4ICsgZGlyZWN0aW9uO1xuICAgICAgaWYgKG5ld0luZGV4ID09PSAtMSB8fCBuZXdJbmRleCA+PSBzY2FsZVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG5ld1NjYWxlVmFsdWUgPSBzY2FsZVZhbHVlc1tuZXdJbmRleF07XG5cbiAgICAgIC8vIFByZXZlbnQgdHJhdmVsbGVycyBmcm9tIGJlaW5nIG9uIHRvcCBvZiBlYWNoIG90aGVyIG9yIG92ZXJsYXBwaW5nXG4gICAgICBpZiAoaWQgPT09ICdzdGFydFgnICYmIG5ld1NjYWxlVmFsdWUgPj0gZW5kWCB8fCBpZCA9PT0gJ2VuZFgnICYmIG5ld1NjYWxlVmFsdWUgPD0gc3RhcnRYKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUoX2RlZmluZVByb3BlcnR5KHt9LCBpZCwgbmV3U2NhbGVWYWx1ZSksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLnByb3BzLm9uQ2hhbmdlKF90aGlzMi5nZXRJbmRleCh7XG4gICAgICAgICAgc3RhcnRYOiBfdGhpczIuc3RhdGUuc3RhcnRYLFxuICAgICAgICAgIGVuZFg6IF90aGlzMi5zdGF0ZS5lbmRYXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJCYWNrZ3JvdW5kXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckJhY2tncm91bmQoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgeCA9IF90aGlzJHByb3BzNi54LFxuICAgICAgICB5ID0gX3RoaXMkcHJvcHM2LnksXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHM2LndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczYuaGVpZ2h0LFxuICAgICAgICBmaWxsID0gX3RoaXMkcHJvcHM2LmZpbGwsXG4gICAgICAgIHN0cm9rZSA9IF90aGlzJHByb3BzNi5zdHJva2U7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgICAgICAgc3Ryb2tlOiBzdHJva2UsXG4gICAgICAgIGZpbGw6IGZpbGwsXG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJQYW5vcmFtYVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJQYW5vcmFtYSgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICB4ID0gX3RoaXMkcHJvcHM3LngsXG4gICAgICAgIHkgPSBfdGhpcyRwcm9wczcueSxcbiAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczcud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzNy5oZWlnaHQsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczcuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczcuY2hpbGRyZW4sXG4gICAgICAgIHBhZGRpbmcgPSBfdGhpcyRwcm9wczcucGFkZGluZztcbiAgICAgIHZhciBjaGFydEVsZW1lbnQgPSBDaGlsZHJlbi5vbmx5KGNoaWxkcmVuKTtcbiAgICAgIGlmICghY2hhcnRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hhcnRFbGVtZW50LCB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIG1hcmdpbjogcGFkZGluZyxcbiAgICAgICAgY29tcGFjdDogdHJ1ZSxcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclRyYXZlbGxlckxheWVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclRyYXZlbGxlckxheWVyKHRyYXZlbGxlclgsIGlkKSB7XG4gICAgICB2YXIgX2RhdGEkc3RhcnRJbmRleCxcbiAgICAgICAgX2RhdGEkZW5kSW5kZXgsXG4gICAgICAgIF90aGlzMyA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM4ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgeSA9IF90aGlzJHByb3BzOC55LFxuICAgICAgICB0cmF2ZWxsZXJXaWR0aCA9IF90aGlzJHByb3BzOC50cmF2ZWxsZXJXaWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHM4LmhlaWdodCxcbiAgICAgICAgdHJhdmVsbGVyID0gX3RoaXMkcHJvcHM4LnRyYXZlbGxlcixcbiAgICAgICAgYXJpYUxhYmVsID0gX3RoaXMkcHJvcHM4LmFyaWFMYWJlbCxcbiAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzOC5kYXRhLFxuICAgICAgICBzdGFydEluZGV4ID0gX3RoaXMkcHJvcHM4LnN0YXJ0SW5kZXgsXG4gICAgICAgIGVuZEluZGV4ID0gX3RoaXMkcHJvcHM4LmVuZEluZGV4O1xuICAgICAgdmFyIHggPSBNYXRoLm1heCh0cmF2ZWxsZXJYLCB0aGlzLnByb3BzLngpO1xuICAgICAgdmFyIHRyYXZlbGxlclByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBmaWx0ZXJQcm9wcyh0aGlzLnByb3BzLCBmYWxzZSkpLCB7fSwge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogdHJhdmVsbGVyV2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9KTtcbiAgICAgIHZhciBhcmlhTGFiZWxCcnVzaCA9IGFyaWFMYWJlbCB8fCBcIk1pbiB2YWx1ZTogXCIuY29uY2F0KChfZGF0YSRzdGFydEluZGV4ID0gZGF0YVtzdGFydEluZGV4XSkgPT09IG51bGwgfHwgX2RhdGEkc3RhcnRJbmRleCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RhdGEkc3RhcnRJbmRleC5uYW1lLCBcIiwgTWF4IHZhbHVlOiBcIikuY29uY2F0KChfZGF0YSRlbmRJbmRleCA9IGRhdGFbZW5kSW5kZXhdKSA9PT0gbnVsbCB8fCBfZGF0YSRlbmRJbmRleCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RhdGEkZW5kSW5kZXgubmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgdGFiSW5kZXg6IDAsXG4gICAgICAgIHJvbGU6IFwic2xpZGVyXCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWxCcnVzaCxcbiAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6IHRyYXZlbGxlclgsXG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1icnVzaC10cmF2ZWxsZXJcIixcbiAgICAgICAgb25Nb3VzZUVudGVyOiB0aGlzLmhhbmRsZUVudGVyU2xpZGVPclRyYXZlbGxlcixcbiAgICAgICAgb25Nb3VzZUxlYXZlOiB0aGlzLmhhbmRsZUxlYXZlU2xpZGVPclRyYXZlbGxlcixcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMudHJhdmVsbGVyRHJhZ1N0YXJ0SGFuZGxlcnNbaWRdLFxuICAgICAgICBvblRvdWNoU3RhcnQ6IHRoaXMudHJhdmVsbGVyRHJhZ1N0YXJ0SGFuZGxlcnNbaWRdLFxuICAgICAgICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bihlKSB7XG4gICAgICAgICAgaWYgKCFbJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0J10uaW5jbHVkZXMoZS5rZXkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIF90aGlzMy5oYW5kbGVUcmF2ZWxsZXJNb3ZlS2V5Ym9hcmQoZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyA/IDEgOiAtMSwgaWQpO1xuICAgICAgICB9LFxuICAgICAgICBvbkZvY3VzOiBmdW5jdGlvbiBvbkZvY3VzKCkge1xuICAgICAgICAgIF90aGlzMy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBpc1RyYXZlbGxlckZvY3VzZWQ6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25CbHVyOiBmdW5jdGlvbiBvbkJsdXIoKSB7XG4gICAgICAgICAgX3RoaXMzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGlzVHJhdmVsbGVyRm9jdXNlZDogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBjdXJzb3I6ICdjb2wtcmVzaXplJ1xuICAgICAgICB9XG4gICAgICB9LCBCcnVzaC5yZW5kZXJUcmF2ZWxsZXIodHJhdmVsbGVyLCB0cmF2ZWxsZXJQcm9wcykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJTbGlkZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJTbGlkZShzdGFydFgsIGVuZFgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczkgPSB0aGlzLnByb3BzLFxuICAgICAgICB5ID0gX3RoaXMkcHJvcHM5LnksXG4gICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzOS5oZWlnaHQsXG4gICAgICAgIHN0cm9rZSA9IF90aGlzJHByb3BzOS5zdHJva2UsXG4gICAgICAgIHRyYXZlbGxlcldpZHRoID0gX3RoaXMkcHJvcHM5LnRyYXZlbGxlcldpZHRoO1xuICAgICAgdmFyIHggPSBNYXRoLm1pbihzdGFydFgsIGVuZFgpICsgdHJhdmVsbGVyV2lkdGg7XG4gICAgICB2YXIgd2lkdGggPSBNYXRoLm1heChNYXRoLmFicyhlbmRYIC0gc3RhcnRYKSAtIHRyYXZlbGxlcldpZHRoLCAwKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtYnJ1c2gtc2xpZGVcIixcbiAgICAgICAgb25Nb3VzZUVudGVyOiB0aGlzLmhhbmRsZUVudGVyU2xpZGVPclRyYXZlbGxlcixcbiAgICAgICAgb25Nb3VzZUxlYXZlOiB0aGlzLmhhbmRsZUxlYXZlU2xpZGVPclRyYXZlbGxlcixcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMuaGFuZGxlU2xpZGVEcmFnU3RhcnQsXG4gICAgICAgIG9uVG91Y2hTdGFydDogdGhpcy5oYW5kbGVTbGlkZURyYWdTdGFydCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBjdXJzb3I6ICdtb3ZlJ1xuICAgICAgICB9LFxuICAgICAgICBzdHJva2U6IFwibm9uZVwiLFxuICAgICAgICBmaWxsOiBzdHJva2UsXG4gICAgICAgIGZpbGxPcGFjaXR5OiAwLjIsXG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJUZXh0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclRleHQoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMCA9IHRoaXMucHJvcHMsXG4gICAgICAgIHN0YXJ0SW5kZXggPSBfdGhpcyRwcm9wczEwLnN0YXJ0SW5kZXgsXG4gICAgICAgIGVuZEluZGV4ID0gX3RoaXMkcHJvcHMxMC5lbmRJbmRleCxcbiAgICAgICAgeSA9IF90aGlzJHByb3BzMTAueSxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHMxMC5oZWlnaHQsXG4gICAgICAgIHRyYXZlbGxlcldpZHRoID0gX3RoaXMkcHJvcHMxMC50cmF2ZWxsZXJXaWR0aCxcbiAgICAgICAgc3Ryb2tlID0gX3RoaXMkcHJvcHMxMC5zdHJva2U7XG4gICAgICB2YXIgX3RoaXMkc3RhdGU0ID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgc3RhcnRYID0gX3RoaXMkc3RhdGU0LnN0YXJ0WCxcbiAgICAgICAgZW5kWCA9IF90aGlzJHN0YXRlNC5lbmRYO1xuICAgICAgdmFyIG9mZnNldCA9IDU7XG4gICAgICB2YXIgYXR0cnMgPSB7XG4gICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgZmlsbDogc3Ryb2tlXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1icnVzaC10ZXh0c1wiXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0LCBfZXh0ZW5kcyh7XG4gICAgICAgIHRleHRBbmNob3I6IFwiZW5kXCIsXG4gICAgICAgIHZlcnRpY2FsQW5jaG9yOiBcIm1pZGRsZVwiLFxuICAgICAgICB4OiBNYXRoLm1pbihzdGFydFgsIGVuZFgpIC0gb2Zmc2V0LFxuICAgICAgICB5OiB5ICsgaGVpZ2h0IC8gMlxuICAgICAgfSwgYXR0cnMpLCB0aGlzLmdldFRleHRPZlRpY2soc3RhcnRJbmRleCkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0LCBfZXh0ZW5kcyh7XG4gICAgICAgIHRleHRBbmNob3I6IFwic3RhcnRcIixcbiAgICAgICAgdmVydGljYWxBbmNob3I6IFwibWlkZGxlXCIsXG4gICAgICAgIHg6IE1hdGgubWF4KHN0YXJ0WCwgZW5kWCkgKyB0cmF2ZWxsZXJXaWR0aCArIG9mZnNldCxcbiAgICAgICAgeTogeSArIGhlaWdodCAvIDJcbiAgICAgIH0sIGF0dHJzKSwgdGhpcy5nZXRUZXh0T2ZUaWNrKGVuZEluZGV4KSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMTEgPSB0aGlzLnByb3BzLFxuICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHMxMS5kYXRhLFxuICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczExLmNsYXNzTmFtZSxcbiAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczExLmNoaWxkcmVuLFxuICAgICAgICB4ID0gX3RoaXMkcHJvcHMxMS54LFxuICAgICAgICB5ID0gX3RoaXMkcHJvcHMxMS55LFxuICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzMTEud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzMTEuaGVpZ2h0LFxuICAgICAgICBhbHdheXNTaG93VGV4dCA9IF90aGlzJHByb3BzMTEuYWx3YXlzU2hvd1RleHQ7XG4gICAgICB2YXIgX3RoaXMkc3RhdGU1ID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgc3RhcnRYID0gX3RoaXMkc3RhdGU1LnN0YXJ0WCxcbiAgICAgICAgZW5kWCA9IF90aGlzJHN0YXRlNS5lbmRYLFxuICAgICAgICBpc1RleHRBY3RpdmUgPSBfdGhpcyRzdGF0ZTUuaXNUZXh0QWN0aXZlLFxuICAgICAgICBpc1NsaWRlTW92aW5nID0gX3RoaXMkc3RhdGU1LmlzU2xpZGVNb3ZpbmcsXG4gICAgICAgIGlzVHJhdmVsbGVyTW92aW5nID0gX3RoaXMkc3RhdGU1LmlzVHJhdmVsbGVyTW92aW5nLFxuICAgICAgICBpc1RyYXZlbGxlckZvY3VzZWQgPSBfdGhpcyRzdGF0ZTUuaXNUcmF2ZWxsZXJGb2N1c2VkO1xuICAgICAgaWYgKCFkYXRhIHx8ICFkYXRhLmxlbmd0aCB8fCAhaXNOdW1iZXIoeCkgfHwgIWlzTnVtYmVyKHkpIHx8ICFpc051bWJlcih3aWR0aCkgfHwgIWlzTnVtYmVyKGhlaWdodCkgfHwgd2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBsYXllckNsYXNzID0gY2xzeCgncmVjaGFydHMtYnJ1c2gnLCBjbGFzc05hbWUpO1xuICAgICAgdmFyIGlzUGFub3JhbWljID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pID09PSAxO1xuICAgICAgdmFyIHN0eWxlID0gZ2VuZXJhdGVQcmVmaXhTdHlsZSgndXNlclNlbGVjdCcsICdub25lJyk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBsYXllckNsYXNzLFxuICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMuaGFuZGxlTGVhdmVXcmFwcGVyLFxuICAgICAgICBvblRvdWNoTW92ZTogdGhpcy5oYW5kbGVUb3VjaE1vdmUsXG4gICAgICAgIHN0eWxlOiBzdHlsZVxuICAgICAgfSwgdGhpcy5yZW5kZXJCYWNrZ3JvdW5kKCksIGlzUGFub3JhbWljICYmIHRoaXMucmVuZGVyUGFub3JhbWEoKSwgdGhpcy5yZW5kZXJTbGlkZShzdGFydFgsIGVuZFgpLCB0aGlzLnJlbmRlclRyYXZlbGxlckxheWVyKHN0YXJ0WCwgJ3N0YXJ0WCcpLCB0aGlzLnJlbmRlclRyYXZlbGxlckxheWVyKGVuZFgsICdlbmRYJyksIChpc1RleHRBY3RpdmUgfHwgaXNTbGlkZU1vdmluZyB8fCBpc1RyYXZlbGxlck1vdmluZyB8fCBpc1RyYXZlbGxlckZvY3VzZWQgfHwgYWx3YXlzU2hvd1RleHQpICYmIHRoaXMucmVuZGVyVGV4dCgpKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJyZW5kZXJEZWZhdWx0VHJhdmVsbGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckRlZmF1bHRUcmF2ZWxsZXIocHJvcHMpIHtcbiAgICAgIHZhciB4ID0gcHJvcHMueCxcbiAgICAgICAgeSA9IHByb3BzLnksXG4gICAgICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IHByb3BzLmhlaWdodCxcbiAgICAgICAgc3Ryb2tlID0gcHJvcHMuc3Ryb2tlO1xuICAgICAgdmFyIGxpbmVZID0gTWF0aC5mbG9vcih5ICsgaGVpZ2h0IC8gMikgLSAxO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICBmaWxsOiBzdHJva2UsXG4gICAgICAgIHN0cm9rZTogXCJub25lXCJcbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwge1xuICAgICAgICB4MTogeCArIDEsXG4gICAgICAgIHkxOiBsaW5lWSxcbiAgICAgICAgeDI6IHggKyB3aWR0aCAtIDEsXG4gICAgICAgIHkyOiBsaW5lWSxcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCIjZmZmXCJcbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwge1xuICAgICAgICB4MTogeCArIDEsXG4gICAgICAgIHkxOiBsaW5lWSArIDIsXG4gICAgICAgIHgyOiB4ICsgd2lkdGggLSAxLFxuICAgICAgICB5MjogbGluZVkgKyAyLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcIiNmZmZcIlxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJUcmF2ZWxsZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyVHJhdmVsbGVyKG9wdGlvbiwgcHJvcHMpIHtcbiAgICAgIHZhciByZWN0YW5nbGU7XG4gICAgICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgICAgIHJlY3RhbmdsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQob3B0aW9uLCBwcm9wcyk7XG4gICAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgICAgICByZWN0YW5nbGUgPSBvcHRpb24ocHJvcHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVjdGFuZ2xlID0gQnJ1c2gucmVuZGVyRGVmYXVsdFRyYXZlbGxlcihwcm9wcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVjdGFuZ2xlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICB2YXIgZGF0YSA9IG5leHRQcm9wcy5kYXRhLFxuICAgICAgICB3aWR0aCA9IG5leHRQcm9wcy53aWR0aCxcbiAgICAgICAgeCA9IG5leHRQcm9wcy54LFxuICAgICAgICB0cmF2ZWxsZXJXaWR0aCA9IG5leHRQcm9wcy50cmF2ZWxsZXJXaWR0aCxcbiAgICAgICAgdXBkYXRlSWQgPSBuZXh0UHJvcHMudXBkYXRlSWQsXG4gICAgICAgIHN0YXJ0SW5kZXggPSBuZXh0UHJvcHMuc3RhcnRJbmRleCxcbiAgICAgICAgZW5kSW5kZXggPSBuZXh0UHJvcHMuZW5kSW5kZXg7XG4gICAgICBpZiAoZGF0YSAhPT0gcHJldlN0YXRlLnByZXZEYXRhIHx8IHVwZGF0ZUlkICE9PSBwcmV2U3RhdGUucHJldlVwZGF0ZUlkKSB7XG4gICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICBwcmV2RGF0YTogZGF0YSxcbiAgICAgICAgICBwcmV2VHJhdmVsbGVyV2lkdGg6IHRyYXZlbGxlcldpZHRoLFxuICAgICAgICAgIHByZXZVcGRhdGVJZDogdXBkYXRlSWQsXG4gICAgICAgICAgcHJldlg6IHgsXG4gICAgICAgICAgcHJldldpZHRoOiB3aWR0aFxuICAgICAgICB9LCBkYXRhICYmIGRhdGEubGVuZ3RoID8gY3JlYXRlU2NhbGUoe1xuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgdHJhdmVsbGVyV2lkdGg6IHRyYXZlbGxlcldpZHRoLFxuICAgICAgICAgIHN0YXJ0SW5kZXg6IHN0YXJ0SW5kZXgsXG4gICAgICAgICAgZW5kSW5kZXg6IGVuZEluZGV4XG4gICAgICAgIH0pIDoge1xuICAgICAgICAgIHNjYWxlOiBudWxsLFxuICAgICAgICAgIHNjYWxlVmFsdWVzOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHByZXZTdGF0ZS5zY2FsZSAmJiAod2lkdGggIT09IHByZXZTdGF0ZS5wcmV2V2lkdGggfHwgeCAhPT0gcHJldlN0YXRlLnByZXZYIHx8IHRyYXZlbGxlcldpZHRoICE9PSBwcmV2U3RhdGUucHJldlRyYXZlbGxlcldpZHRoKSkge1xuICAgICAgICBwcmV2U3RhdGUuc2NhbGUucmFuZ2UoW3gsIHggKyB3aWR0aCAtIHRyYXZlbGxlcldpZHRoXSk7XG4gICAgICAgIHZhciBzY2FsZVZhbHVlcyA9IHByZXZTdGF0ZS5zY2FsZS5kb21haW4oKS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZTdGF0ZS5zY2FsZShlbnRyeSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHByZXZEYXRhOiBkYXRhLFxuICAgICAgICAgIHByZXZUcmF2ZWxsZXJXaWR0aDogdHJhdmVsbGVyV2lkdGgsXG4gICAgICAgICAgcHJldlVwZGF0ZUlkOiB1cGRhdGVJZCxcbiAgICAgICAgICBwcmV2WDogeCxcbiAgICAgICAgICBwcmV2V2lkdGg6IHdpZHRoLFxuICAgICAgICAgIHN0YXJ0WDogcHJldlN0YXRlLnNjYWxlKG5leHRQcm9wcy5zdGFydEluZGV4KSxcbiAgICAgICAgICBlbmRYOiBwcmV2U3RhdGUuc2NhbGUobmV4dFByb3BzLmVuZEluZGV4KSxcbiAgICAgICAgICBzY2FsZVZhbHVlczogc2NhbGVWYWx1ZXNcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbmRleEluUmFuZ2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW5kZXhJblJhbmdlKHZhbHVlUmFuZ2UsIHgpIHtcbiAgICAgIHZhciBsZW4gPSB2YWx1ZVJhbmdlLmxlbmd0aDtcbiAgICAgIHZhciBzdGFydCA9IDA7XG4gICAgICB2YXIgZW5kID0gbGVuIC0gMTtcbiAgICAgIHdoaWxlIChlbmQgLSBzdGFydCA+IDEpIHtcbiAgICAgICAgdmFyIG1pZGRsZSA9IE1hdGguZmxvb3IoKHN0YXJ0ICsgZW5kKSAvIDIpO1xuICAgICAgICBpZiAodmFsdWVSYW5nZVttaWRkbGVdID4geCkge1xuICAgICAgICAgIGVuZCA9IG1pZGRsZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGFydCA9IG1pZGRsZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHggPj0gdmFsdWVSYW5nZVtlbmRdID8gZW5kIDogc3RhcnQ7XG4gICAgfVxuICB9XSk7XG59KFB1cmVDb21wb25lbnQpO1xuX2RlZmluZVByb3BlcnR5KEJydXNoLCBcImRpc3BsYXlOYW1lXCIsICdCcnVzaCcpO1xuX2RlZmluZVByb3BlcnR5KEJydXNoLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGhlaWdodDogNDAsXG4gIHRyYXZlbGxlcldpZHRoOiA1LFxuICBnYXA6IDEsXG4gIGZpbGw6ICcjZmZmJyxcbiAgc3Ryb2tlOiAnIzY2NicsXG4gIHBhZGRpbmc6IHtcbiAgICB0b3A6IDEsXG4gICAgcmlnaHQ6IDEsXG4gICAgYm90dG9tOiAxLFxuICAgIGxlZnQ6IDFcbiAgfSxcbiAgbGVhdmVUaW1lT3V0OiAxMDAwLFxuICBhbHdheXNTaG93VGV4dDogZmFsc2Vcbn0pOyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiQ2hpbGRyZW4iLCJjbHN4Iiwic2NhbGVQb2ludCIsImlzRnVuY3Rpb24iLCJyYW5nZSIsIkxheWVyIiwiVGV4dCIsImdldFZhbHVlQnlEYXRhS2V5IiwiaXNOdW1iZXIiLCJnZW5lcmF0ZVByZWZpeFN0eWxlIiwiZmlsdGVyUHJvcHMiLCJjcmVhdGVTY2FsZSIsIl9yZWYiLCJkYXRhIiwic3RhcnRJbmRleCIsImVuZEluZGV4IiwieCIsIndpZHRoIiwidHJhdmVsbGVyV2lkdGgiLCJsZW4iLCJzY2FsZSIsImRvbWFpbiIsInNjYWxlVmFsdWVzIiwibWFwIiwiZW50cnkiLCJpc1RleHRBY3RpdmUiLCJpc1NsaWRlTW92aW5nIiwiaXNUcmF2ZWxsZXJNb3ZpbmciLCJpc1RyYXZlbGxlckZvY3VzZWQiLCJzdGFydFgiLCJlbmRYIiwiaXNUb3VjaCIsImNoYW5nZWRUb3VjaGVzIiwiQnJ1c2giLCJfUHVyZUNvbXBvbmVudCIsIl90aGlzIiwibGVhdmVUaW1lciIsImNsZWFyVGltZW91dCIsInN0YXRlIiwiaGFuZGxlVHJhdmVsbGVyTW92ZSIsImhhbmRsZVNsaWRlRHJhZyIsImhhbmRsZURyYWciLCJzZXRTdGF0ZSIsIl90aGlzJHByb3BzIiwib25EcmFnRW5kIiwiZGV0YWNoRHJhZ0VuZExpc3RlbmVyIiwid2luZG93Iiwic2V0VGltZW91dCIsImhhbmRsZURyYWdFbmQiLCJsZWF2ZVRpbWVPdXQiLCJldmVudCIsInNsaWRlTW92ZVN0YXJ0WCIsInBhZ2VYIiwiYXR0YWNoRHJhZ0VuZExpc3RlbmVyIiwidHJhdmVsbGVyRHJhZ1N0YXJ0SGFuZGxlcnMiLCJoYW5kbGVUcmF2ZWxsZXJEcmFnU3RhcnQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImdldEluZGV4IiwiX3JlZjIiLCJfdGhpcyRwcm9wczIiLCJnYXAiLCJsYXN0SW5kZXgiLCJtaW4iLCJNYXRoIiwibWF4IiwibWluSW5kZXgiLCJnZXRJbmRleEluUmFuZ2UiLCJtYXhJbmRleCIsImdldFRleHRPZlRpY2siLCJpbmRleCIsIl90aGlzJHByb3BzMyIsInRpY2tGb3JtYXR0ZXIiLCJkYXRhS2V5IiwidGV4dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiX3RoaXMkc3RhdGUiLCJfdGhpcyRwcm9wczQiLCJvbkNoYW5nZSIsImRlbHRhIiwibmV3SW5kZXgiLCJpZCIsIm1vdmluZ1RyYXZlbGxlcklkIiwiYnJ1c2hNb3ZlU3RhcnRYIiwiX3RoaXMkc3RhdGUyIiwicHJldlZhbHVlIiwiX3RoaXMkcHJvcHM1IiwicGFyYW1zIiwiaXNGdWxsR2FwIiwiaGFuZGxlVHJhdmVsbGVyTW92ZUtleWJvYXJkIiwiZGlyZWN0aW9uIiwiX3RoaXMyIiwiX3RoaXMkc3RhdGUzIiwiY3VycmVudFNjYWxlVmFsdWUiLCJjdXJyZW50SW5kZXgiLCJpbmRleE9mIiwibmV3U2NhbGVWYWx1ZSIsInJlbmRlckJhY2tncm91bmQiLCJfdGhpcyRwcm9wczYiLCJ5IiwiaGVpZ2h0IiwiZmlsbCIsInN0cm9rZSIsImNyZWF0ZUVsZW1lbnQiLCJyZW5kZXJQYW5vcmFtYSIsIl90aGlzJHByb3BzNyIsImNoaWxkcmVuIiwicGFkZGluZyIsImNoYXJ0RWxlbWVudCIsIm9ubHkiLCJjbG9uZUVsZW1lbnQiLCJtYXJnaW4iLCJjb21wYWN0IiwicmVuZGVyVHJhdmVsbGVyTGF5ZXIiLCJ0cmF2ZWxsZXJYIiwiX2RhdGEkc3RhcnRJbmRleCIsIl9kYXRhJGVuZEluZGV4IiwiX3RoaXMzIiwiX3RoaXMkcHJvcHM4IiwidHJhdmVsbGVyIiwiYXJpYUxhYmVsIiwidHJhdmVsbGVyUHJvcHMiLCJhcmlhTGFiZWxCcnVzaCIsImNvbmNhdCIsIm5hbWUiLCJ0YWJJbmRleCIsInJvbGUiLCJjbGFzc05hbWUiLCJvbk1vdXNlRW50ZXIiLCJoYW5kbGVFbnRlclNsaWRlT3JUcmF2ZWxsZXIiLCJvbk1vdXNlTGVhdmUiLCJoYW5kbGVMZWF2ZVNsaWRlT3JUcmF2ZWxsZXIiLCJvbk1vdXNlRG93biIsIm9uVG91Y2hTdGFydCIsIm9uS2V5RG93biIsImluY2x1ZGVzIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJvbkZvY3VzIiwib25CbHVyIiwic3R5bGUiLCJjdXJzb3IiLCJyZW5kZXJUcmF2ZWxsZXIiLCJyZW5kZXJTbGlkZSIsIl90aGlzJHByb3BzOSIsImFicyIsImhhbmRsZVNsaWRlRHJhZ1N0YXJ0IiwiZmlsbE9wYWNpdHkiLCJyZW5kZXJUZXh0IiwiX3RoaXMkcHJvcHMxMCIsIl90aGlzJHN0YXRlNCIsIm9mZnNldCIsImF0dHJzIiwicG9pbnRlckV2ZW50cyIsInRleHRBbmNob3IiLCJ2ZXJ0aWNhbEFuY2hvciIsInJlbmRlciIsIl90aGlzJHByb3BzMTEiLCJhbHdheXNTaG93VGV4dCIsIl90aGlzJHN0YXRlNSIsImxheWVyQ2xhc3MiLCJpc1Bhbm9yYW1pYyIsImNvdW50IiwiaGFuZGxlTGVhdmVXcmFwcGVyIiwib25Ub3VjaE1vdmUiLCJoYW5kbGVUb3VjaE1vdmUiLCJyZW5kZXJEZWZhdWx0VHJhdmVsbGVyIiwibGluZVkiLCJmbG9vciIsIkZyYWdtZW50IiwieDEiLCJ5MSIsIngyIiwieTIiLCJvcHRpb24iLCJyZWN0YW5nbGUiLCJpc1ZhbGlkRWxlbWVudCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIm5leHRQcm9wcyIsInByZXZTdGF0ZSIsInVwZGF0ZUlkIiwicHJldkRhdGEiLCJwcmV2VXBkYXRlSWQiLCJwcmV2VHJhdmVsbGVyV2lkdGgiLCJwcmV2WCIsInByZXZXaWR0aCIsInZhbHVlUmFuZ2UiLCJzdGFydCIsImVuZCIsIm1pZGRsZSIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/Brush.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/future/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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QUFPbUksTUFBTSxDQUFDdEIsZ0JBQWdCTixHQUFHLENBQUMsU0FBVTZCLENBQUM7NEJBQ2hELE9BQU8sR0FBR0QsTUFBTSxDQUFDQyxFQUFFYixFQUFFLEVBQUUsS0FBS1ksTUFBTSxDQUFDQyxFQUFFWCxFQUFFLEVBQUUsS0FBS1UsTUFBTSxDQUFDQyxFQUFFWixFQUFFLEVBQUUsS0FBS1csTUFBTSxDQUFDQyxFQUFFVixFQUFFO3dCQUM3RTtvQkFDRixHQUFHeEIsV0FBV1csZ0JBQWdCTixHQUFHLENBQUMsU0FBVThCLFdBQVc7d0JBQ3JELE9BQU8sV0FBVyxHQUFFcEQsMERBQW1CLENBQUMsUUFBUTFGLFNBQVMsQ0FBQyxHQUFHOEksYUFBYTs0QkFDeEVySSxLQUFLLFFBQVFtSSxNQUFNLENBQUNFLFlBQVlkLEVBQUUsRUFBRSxLQUFLWSxNQUFNLENBQUNFLFlBQVlaLEVBQUUsRUFBRSxLQUFLVSxNQUFNLENBQUNFLFlBQVliLEVBQUUsRUFBRSxLQUFLVyxNQUFNLENBQUNFLFlBQVlYLEVBQUU7d0JBQ3hIO29CQUNGO2dCQUNGO2dCQUNBLE9BQU8sV0FBVyxHQUFFekMsMERBQW1CLENBQUNFLG1EQUFLQSxFQUFFO29CQUM3QytDLFdBQVc7Z0JBQ2IsR0FBRzVCO1lBQ0w7UUFDRjtLQUFFO0FBQ0osRUFBRXJCLHdEQUFlLEVBQUU7QUFDbkJOLGdCQUFnQlUsVUFBVSxnQkFBZ0I7SUFDeENrRCxRQUFRO0lBQ1JDLGFBQWE7SUFDYjdDLE9BQU87SUFDUEYsUUFBUTtJQUNSQyxRQUFRO0FBQ1Y7QUFDQWYsZ0JBQWdCVSxVQUFVLGVBQWUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9FcnJvckJhci5qcz8zNzI1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfZXhjbHVkZWQgPSBbXCJvZmZzZXRcIiwgXCJsYXlvdXRcIiwgXCJ3aWR0aFwiLCBcImRhdGFLZXlcIiwgXCJkYXRhXCIsIFwiZGF0YVBvaW50Rm9ybWF0dGVyXCIsIFwieEF4aXNcIiwgXCJ5QXhpc1wiXTtcbmZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7IHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07IGlmIChudWxsICE9IHQpIHsgdmFyIGUsIG4sIGksIHUsIGEgPSBbXSwgZiA9ICEwLCBvID0gITE7IHRyeSB7IGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHsgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuOyBmID0gITE7IH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTsgfSBjYXRjaCAocikgeyBvID0gITAsIG4gPSByOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47IH0gZmluYWxseSB7IGlmIChvKSB0aHJvdyBuOyB9IH0gcmV0dXJuIGE7IH0gfVxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFJlbmRlciBhIGdyb3VwIG9mIGVycm9yIGJhclxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGludmFyaWFudCBmcm9tICd0aW55LWludmFyaWFudCc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJlZmVyLXN0YXRlbGVzcy1mdW5jdGlvbiAtLSByZXF1aXJlcyBzdGF0aWMgZGVmYXVsdFByb3BzXG5leHBvcnQgdmFyIEVycm9yQmFyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIEVycm9yQmFyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFcnJvckJhcik7XG4gICAgcmV0dXJuIF9jYWxsU3VwZXIodGhpcywgRXJyb3JCYXIsIGFyZ3VtZW50cyk7XG4gIH1cbiAgX2luaGVyaXRzKEVycm9yQmFyLCBfUmVhY3QkQ29tcG9uZW50KTtcbiAgcmV0dXJuIF9jcmVhdGVDbGFzcyhFcnJvckJhciwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgIG9mZnNldCA9IF90aGlzJHByb3BzLm9mZnNldCxcbiAgICAgICAgbGF5b3V0ID0gX3RoaXMkcHJvcHMubGF5b3V0LFxuICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzLndpZHRoLFxuICAgICAgICBkYXRhS2V5ID0gX3RoaXMkcHJvcHMuZGF0YUtleSxcbiAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzLmRhdGEsXG4gICAgICAgIGRhdGFQb2ludEZvcm1hdHRlciA9IF90aGlzJHByb3BzLmRhdGFQb2ludEZvcm1hdHRlcixcbiAgICAgICAgeEF4aXMgPSBfdGhpcyRwcm9wcy54QXhpcyxcbiAgICAgICAgeUF4aXMgPSBfdGhpcyRwcm9wcy55QXhpcyxcbiAgICAgICAgb3RoZXJzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzLCBfZXhjbHVkZWQpO1xuICAgICAgdmFyIHN2Z1Byb3BzID0gZmlsdGVyUHJvcHMob3RoZXJzLCBmYWxzZSk7XG4gICAgICAhISh0aGlzLnByb3BzLmRpcmVjdGlvbiA9PT0gJ3gnICYmIHhBeGlzLnR5cGUgIT09ICdudW1iZXInKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Vycm9yQmFyIHJlcXVpcmVzIEF4aXMgdHlwZSBwcm9wZXJ0eSB0byBiZSBcIm51bWJlclwiLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICAgIHZhciBlcnJvckJhcnMgPSBkYXRhLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgdmFyIF9kYXRhUG9pbnRGb3JtYXR0ZXIgPSBkYXRhUG9pbnRGb3JtYXR0ZXIoZW50cnksIGRhdGFLZXkpLFxuICAgICAgICAgIHggPSBfZGF0YVBvaW50Rm9ybWF0dGVyLngsXG4gICAgICAgICAgeSA9IF9kYXRhUG9pbnRGb3JtYXR0ZXIueSxcbiAgICAgICAgICB2YWx1ZSA9IF9kYXRhUG9pbnRGb3JtYXR0ZXIudmFsdWUsXG4gICAgICAgICAgZXJyb3JWYWwgPSBfZGF0YVBvaW50Rm9ybWF0dGVyLmVycm9yVmFsO1xuICAgICAgICBpZiAoIWVycm9yVmFsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxpbmVDb29yZGluYXRlcyA9IFtdO1xuICAgICAgICB2YXIgbG93Qm91bmQsIGhpZ2hCb3VuZDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JWYWwpKSB7XG4gICAgICAgICAgdmFyIF9lcnJvclZhbCA9IF9zbGljZWRUb0FycmF5KGVycm9yVmFsLCAyKTtcbiAgICAgICAgICBsb3dCb3VuZCA9IF9lcnJvclZhbFswXTtcbiAgICAgICAgICBoaWdoQm91bmQgPSBfZXJyb3JWYWxbMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG93Qm91bmQgPSBoaWdoQm91bmQgPSBlcnJvclZhbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgLy8gZXJyb3IgYmFyIGZvciBob3Jpem9udGFsIGNoYXJ0cywgdGhlIHkgaXMgZml4ZWQsIHggaXMgYSByYW5nZSB2YWx1ZVxuICAgICAgICAgIHZhciBzY2FsZSA9IHhBeGlzLnNjYWxlO1xuICAgICAgICAgIHZhciB5TWlkID0geSArIG9mZnNldDtcbiAgICAgICAgICB2YXIgeU1pbiA9IHlNaWQgKyB3aWR0aDtcbiAgICAgICAgICB2YXIgeU1heCA9IHlNaWQgLSB3aWR0aDtcbiAgICAgICAgICB2YXIgeE1pbiA9IHNjYWxlKHZhbHVlIC0gbG93Qm91bmQpO1xuICAgICAgICAgIHZhciB4TWF4ID0gc2NhbGUodmFsdWUgKyBoaWdoQm91bmQpO1xuXG4gICAgICAgICAgLy8gdGhlIHJpZ2h0IGxpbmUgb2YgfC0tfFxuICAgICAgICAgIGxpbmVDb29yZGluYXRlcy5wdXNoKHtcbiAgICAgICAgICAgIHgxOiB4TWF4LFxuICAgICAgICAgICAgeTE6IHlNaW4sXG4gICAgICAgICAgICB4MjogeE1heCxcbiAgICAgICAgICAgIHkyOiB5TWF4XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gdGhlIG1pZGRsZSBsaW5lIG9mIHwtLXxcbiAgICAgICAgICBsaW5lQ29vcmRpbmF0ZXMucHVzaCh7XG4gICAgICAgICAgICB4MTogeE1pbixcbiAgICAgICAgICAgIHkxOiB5TWlkLFxuICAgICAgICAgICAgeDI6IHhNYXgsXG4gICAgICAgICAgICB5MjogeU1pZFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHRoZSBsZWZ0IGxpbmUgb2YgfC0tfFxuICAgICAgICAgIGxpbmVDb29yZGluYXRlcy5wdXNoKHtcbiAgICAgICAgICAgIHgxOiB4TWluLFxuICAgICAgICAgICAgeTE6IHlNaW4sXG4gICAgICAgICAgICB4MjogeE1pbixcbiAgICAgICAgICAgIHkyOiB5TWF4XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAvLyBlcnJvciBiYXIgZm9yIGhvcml6b250YWwgY2hhcnRzLCB0aGUgeCBpcyBmaXhlZCwgeSBpcyBhIHJhbmdlIHZhbHVlXG4gICAgICAgICAgdmFyIF9zY2FsZSA9IHlBeGlzLnNjYWxlO1xuICAgICAgICAgIHZhciB4TWlkID0geCArIG9mZnNldDtcbiAgICAgICAgICB2YXIgX3hNaW4gPSB4TWlkIC0gd2lkdGg7XG4gICAgICAgICAgdmFyIF94TWF4ID0geE1pZCArIHdpZHRoO1xuICAgICAgICAgIHZhciBfeU1pbiA9IF9zY2FsZSh2YWx1ZSAtIGxvd0JvdW5kKTtcbiAgICAgICAgICB2YXIgX3lNYXggPSBfc2NhbGUodmFsdWUgKyBoaWdoQm91bmQpO1xuXG4gICAgICAgICAgLy8gdGhlIHRvcCBsaW5lXG4gICAgICAgICAgbGluZUNvb3JkaW5hdGVzLnB1c2goe1xuICAgICAgICAgICAgeDE6IF94TWluLFxuICAgICAgICAgICAgeTE6IF95TWF4LFxuICAgICAgICAgICAgeDI6IF94TWF4LFxuICAgICAgICAgICAgeTI6IF95TWF4XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gdGhlIG1pZGRsZSBsaW5lXG4gICAgICAgICAgbGluZUNvb3JkaW5hdGVzLnB1c2goe1xuICAgICAgICAgICAgeDE6IHhNaWQsXG4gICAgICAgICAgICB5MTogX3lNaW4sXG4gICAgICAgICAgICB4MjogeE1pZCxcbiAgICAgICAgICAgIHkyOiBfeU1heFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHRoZSBib3R0b20gbGluZVxuICAgICAgICAgIGxpbmVDb29yZGluYXRlcy5wdXNoKHtcbiAgICAgICAgICAgIHgxOiBfeE1pbixcbiAgICAgICAgICAgIHkxOiBfeU1pbixcbiAgICAgICAgICAgIHgyOiBfeE1heCxcbiAgICAgICAgICAgIHkyOiBfeU1pblxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgX2V4dGVuZHMoe1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1lcnJvckJhclwiLFxuICAgICAgICAgIGtleTogXCJiYXItXCIuY29uY2F0KGxpbmVDb29yZGluYXRlcy5tYXAoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChjLngxLCBcIi1cIikuY29uY2F0KGMueDIsIFwiLVwiKS5jb25jYXQoYy55MSwgXCItXCIpLmNvbmNhdChjLnkyKTtcbiAgICAgICAgICB9KSlcbiAgICAgICAgfSwgc3ZnUHJvcHMpLCBsaW5lQ29vcmRpbmF0ZXMubWFwKGZ1bmN0aW9uIChjb29yZGluYXRlcykge1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwgX2V4dGVuZHMoe30sIGNvb3JkaW5hdGVzLCB7XG4gICAgICAgICAgICBrZXk6IFwibGluZS1cIi5jb25jYXQoY29vcmRpbmF0ZXMueDEsIFwiLVwiKS5jb25jYXQoY29vcmRpbmF0ZXMueDIsIFwiLVwiKS5jb25jYXQoY29vcmRpbmF0ZXMueTEsIFwiLVwiKS5jb25jYXQoY29vcmRpbmF0ZXMueTIpXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtZXJyb3JCYXJzXCJcbiAgICAgIH0sIGVycm9yQmFycyk7XG4gICAgfVxuICB9XSk7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5fZGVmaW5lUHJvcGVydHkoRXJyb3JCYXIsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgc3Ryb2tlOiAnYmxhY2snLFxuICBzdHJva2VXaWR0aDogMS41LFxuICB3aWR0aDogNSxcbiAgb2Zmc2V0OiAwLFxuICBsYXlvdXQ6ICdob3Jpem9udGFsJ1xufSk7XG5fZGVmaW5lUHJvcGVydHkoRXJyb3JCYXIsIFwiZGlzcGxheU5hbWVcIiwgJ0Vycm9yQmFyJyk7Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIlR5cGVFcnJvciIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImxlbiIsImFycjIiLCJyIiwibCIsInQiLCJlIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJpc0FycmF5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzZWxmIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJpbnZhcmlhbnQiLCJMYXllciIsImZpbHRlclByb3BzIiwiRXJyb3JCYXIiLCJfUmVhY3QkQ29tcG9uZW50IiwicmVuZGVyIiwiX3RoaXMkcHJvcHMiLCJvZmZzZXQiLCJsYXlvdXQiLCJ3aWR0aCIsImRhdGFLZXkiLCJkYXRhIiwiZGF0YVBvaW50Rm9ybWF0dGVyIiwieEF4aXMiLCJ5QXhpcyIsIm90aGVycyIsInN2Z1Byb3BzIiwiZGlyZWN0aW9uIiwidHlwZSIsInByb2Nlc3MiLCJlcnJvckJhcnMiLCJtYXAiLCJlbnRyeSIsIl9kYXRhUG9pbnRGb3JtYXR0ZXIiLCJ4IiwieSIsImVycm9yVmFsIiwibGluZUNvb3JkaW5hdGVzIiwibG93Qm91bmQiLCJoaWdoQm91bmQiLCJfZXJyb3JWYWwiLCJzY2FsZSIsInlNaWQiLCJ5TWluIiwieU1heCIsInhNaW4iLCJ4TWF4IiwieDEiLCJ5MSIsIngyIiwieTIiLCJfc2NhbGUiLCJ4TWlkIiwiX3hNaW4iLCJfeE1heCIsIl95TWluIiwiX3lNYXgiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiY29uY2F0IiwiYyIsImNvb3JkaW5hdGVzIiwiQ29tcG9uZW50Iiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/ErrorBar.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/future/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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QkFDWixHQUFHcEMsNkRBQVdBLENBQUMsSUFBSSxDQUFDN0MsS0FBSyxFQUFFLFFBQVFnRixRQUFRMUMsbURBQUtBLENBQUMrQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUNyRixLQUFLLEVBQUVnRjtZQUNsRjtRQUNGO0tBQUU7QUFDSixFQUFFOUMsd0RBQWUsRUFBRTtBQUNuQjNDLGdCQUFnQmdGLGVBQWUsZUFBZTtBQUM5Q2hGLGdCQUFnQmdGLGVBQWUsZ0JBQWdCO0lBQzdDZ0IsU0FBUztJQUNUQyxZQUFZO0lBQ1pDLFNBQVM7SUFDVEMsU0FBUztJQUNUN0csR0FBRztJQUNIOEcsTUFBTTtJQUNOQyxhQUFhO0lBQ2JDLFFBQVE7SUFDUkMsYUFBYTtBQUNmO0FBQ0F2RyxnQkFBZ0JnRixlQUFlLGNBQWMsU0FBVXdCLE1BQU0sRUFBRS9GLEtBQUs7SUFDbEUsSUFBSWdGO0lBQ0osSUFBSyxXQUFXLEdBQUU5QywyREFBb0IsQ0FBQzZELFNBQVM7UUFDOUNmLE9BQU8sV0FBVyxHQUFFOUMseURBQWtCLENBQUM2RCxRQUFRL0Y7SUFDakQsT0FBTyxJQUFJbUMsd0RBQVVBLENBQUM0RCxTQUFTO1FBQzdCZixPQUFPZSxPQUFPL0Y7SUFDaEIsT0FBTztRQUNMZ0YsT0FBTyxXQUFXLEdBQUU5QywwREFBbUIsQ0FBQ1Usd0RBQVNBLEVBQUVwRixTQUFTLENBQUMsR0FBR3dDLE9BQU87WUFDckUyRSxXQUFXO1FBQ2I7SUFDRjtJQUNBLE9BQU9LO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9SZWZlcmVuY2VBcmVhLmpzP2Y1MmMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIF9jYWxsU3VwZXIodCwgbywgZSkgeyByZXR1cm4gbyA9IF9nZXRQcm90b3R5cGVPZihvKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpID8gUmVmbGVjdC5jb25zdHJ1Y3QobywgZSB8fCBbXSwgX2dldFByb3RvdHlwZU9mKHQpLmNvbnN0cnVjdG9yKSA6IG8uYXBwbHkodCwgZSkpOyB9XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IGVsc2UgaWYgKGNhbGwgIT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgdHJ5IHsgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyB9IGNhdGNoICh0KSB7fSByZXR1cm4gKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyByZXR1cm4gISF0OyB9KSgpOyB9XG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBSZWZlcmVuY2UgTGluZVxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gJy4uL2NvbXBvbmVudC9MYWJlbCc7XG5pbXBvcnQgeyBjcmVhdGVMYWJlbGVkU2NhbGVzLCByZWN0V2l0aFBvaW50cyB9IGZyb20gJy4uL3V0aWwvQ2FydGVzaWFuVXRpbHMnO1xuaW1wb3J0IHsgaWZPdmVyZmxvd01hdGNoZXMgfSBmcm9tICcuLi91dGlsL0lmT3ZlcmZsb3dNYXRjaGVzJztcbmltcG9ydCB7IGlzTnVtT3JTdHIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi4vdXRpbC9Mb2dVdGlscyc7XG5pbXBvcnQgeyBSZWN0YW5nbGUgfSBmcm9tICcuLi9zaGFwZS9SZWN0YW5nbGUnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xudmFyIGdldFJlY3QgPSBmdW5jdGlvbiBnZXRSZWN0KGhhc1gxLCBoYXNYMiwgaGFzWTEsIGhhc1kyLCBwcm9wcykge1xuICB2YXIgeFZhbHVlMSA9IHByb3BzLngxLFxuICAgIHhWYWx1ZTIgPSBwcm9wcy54MixcbiAgICB5VmFsdWUxID0gcHJvcHMueTEsXG4gICAgeVZhbHVlMiA9IHByb3BzLnkyLFxuICAgIHhBeGlzID0gcHJvcHMueEF4aXMsXG4gICAgeUF4aXMgPSBwcm9wcy55QXhpcztcbiAgaWYgKCF4QXhpcyB8fCAheUF4aXMpIHJldHVybiBudWxsO1xuICB2YXIgc2NhbGVzID0gY3JlYXRlTGFiZWxlZFNjYWxlcyh7XG4gICAgeDogeEF4aXMuc2NhbGUsXG4gICAgeTogeUF4aXMuc2NhbGVcbiAgfSk7XG4gIHZhciBwMSA9IHtcbiAgICB4OiBoYXNYMSA/IHNjYWxlcy54LmFwcGx5KHhWYWx1ZTEsIHtcbiAgICAgIHBvc2l0aW9uOiAnc3RhcnQnXG4gICAgfSkgOiBzY2FsZXMueC5yYW5nZU1pbixcbiAgICB5OiBoYXNZMSA/IHNjYWxlcy55LmFwcGx5KHlWYWx1ZTEsIHtcbiAgICAgIHBvc2l0aW9uOiAnc3RhcnQnXG4gICAgfSkgOiBzY2FsZXMueS5yYW5nZU1pblxuICB9O1xuICB2YXIgcDIgPSB7XG4gICAgeDogaGFzWDIgPyBzY2FsZXMueC5hcHBseSh4VmFsdWUyLCB7XG4gICAgICBwb3NpdGlvbjogJ2VuZCdcbiAgICB9KSA6IHNjYWxlcy54LnJhbmdlTWF4LFxuICAgIHk6IGhhc1kyID8gc2NhbGVzLnkuYXBwbHkoeVZhbHVlMiwge1xuICAgICAgcG9zaXRpb246ICdlbmQnXG4gICAgfSkgOiBzY2FsZXMueS5yYW5nZU1heFxuICB9O1xuICBpZiAoaWZPdmVyZmxvd01hdGNoZXMocHJvcHMsICdkaXNjYXJkJykgJiYgKCFzY2FsZXMuaXNJblJhbmdlKHAxKSB8fCAhc2NhbGVzLmlzSW5SYW5nZShwMikpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHJlY3RXaXRoUG9pbnRzKHAxLCBwMik7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJlZmVyLXN0YXRlbGVzcy1mdW5jdGlvbiAtLSByZXF1aXJlcyBzdGF0aWMgZGVmYXVsdFByb3BzXG5leHBvcnQgdmFyIFJlZmVyZW5jZUFyZWEgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgZnVuY3Rpb24gUmVmZXJlbmNlQXJlYSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVmZXJlbmNlQXJlYSk7XG4gICAgcmV0dXJuIF9jYWxsU3VwZXIodGhpcywgUmVmZXJlbmNlQXJlYSwgYXJndW1lbnRzKTtcbiAgfVxuICBfaW5oZXJpdHMoUmVmZXJlbmNlQXJlYSwgX1JlYWN0JENvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoUmVmZXJlbmNlQXJlYSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgIHgxID0gX3RoaXMkcHJvcHMueDEsXG4gICAgICAgIHgyID0gX3RoaXMkcHJvcHMueDIsXG4gICAgICAgIHkxID0gX3RoaXMkcHJvcHMueTEsXG4gICAgICAgIHkyID0gX3RoaXMkcHJvcHMueTIsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgYWx3YXlzU2hvdyA9IF90aGlzJHByb3BzLmFsd2F5c1Nob3csXG4gICAgICAgIGNsaXBQYXRoSWQgPSBfdGhpcyRwcm9wcy5jbGlwUGF0aElkO1xuICAgICAgd2FybihhbHdheXNTaG93ID09PSB1bmRlZmluZWQsICdUaGUgYWx3YXlzU2hvdyBwcm9wIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgaWZPdmVyZmxvdz1cImV4dGVuZERvbWFpblwiIGluc3RlYWQuJyk7XG4gICAgICB2YXIgaGFzWDEgPSBpc051bU9yU3RyKHgxKTtcbiAgICAgIHZhciBoYXNYMiA9IGlzTnVtT3JTdHIoeDIpO1xuICAgICAgdmFyIGhhc1kxID0gaXNOdW1PclN0cih5MSk7XG4gICAgICB2YXIgaGFzWTIgPSBpc051bU9yU3RyKHkyKTtcbiAgICAgIHZhciBzaGFwZSA9IHRoaXMucHJvcHMuc2hhcGU7XG4gICAgICBpZiAoIWhhc1gxICYmICFoYXNYMiAmJiAhaGFzWTEgJiYgIWhhc1kyICYmICFzaGFwZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciByZWN0ID0gZ2V0UmVjdChoYXNYMSwgaGFzWDIsIGhhc1kxLCBoYXNZMiwgdGhpcy5wcm9wcyk7XG4gICAgICBpZiAoIXJlY3QgJiYgIXNoYXBlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGNsaXBQYXRoID0gaWZPdmVyZmxvd01hdGNoZXModGhpcy5wcm9wcywgJ2hpZGRlbicpID8gXCJ1cmwoI1wiLmNvbmNhdChjbGlwUGF0aElkLCBcIilcIikgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1yZWZlcmVuY2UtYXJlYScsIGNsYXNzTmFtZSlcbiAgICAgIH0sIFJlZmVyZW5jZUFyZWEucmVuZGVyUmVjdChzaGFwZSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgY2xpcFBhdGg6IGNsaXBQYXRoXG4gICAgICB9LCBmaWx0ZXJQcm9wcyh0aGlzLnByb3BzLCB0cnVlKSksIHJlY3QpKSwgTGFiZWwucmVuZGVyQ2FsbEJ5UGFyZW50KHRoaXMucHJvcHMsIHJlY3QpKTtcbiAgICB9XG4gIH1dKTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcbl9kZWZpbmVQcm9wZXJ0eShSZWZlcmVuY2VBcmVhLCBcImRpc3BsYXlOYW1lXCIsICdSZWZlcmVuY2VBcmVhJyk7XG5fZGVmaW5lUHJvcGVydHkoUmVmZXJlbmNlQXJlYSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBpc0Zyb250OiBmYWxzZSxcbiAgaWZPdmVyZmxvdzogJ2Rpc2NhcmQnLFxuICB4QXhpc0lkOiAwLFxuICB5QXhpc0lkOiAwLFxuICByOiAxMCxcbiAgZmlsbDogJyNjY2MnLFxuICBmaWxsT3BhY2l0eTogMC41LFxuICBzdHJva2U6ICdub25lJyxcbiAgc3Ryb2tlV2lkdGg6IDFcbn0pO1xuX2RlZmluZVByb3BlcnR5KFJlZmVyZW5jZUFyZWEsIFwicmVuZGVyUmVjdFwiLCBmdW5jdGlvbiAob3B0aW9uLCBwcm9wcykge1xuICB2YXIgcmVjdDtcbiAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQob3B0aW9uKSkge1xuICAgIHJlY3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgIHJlY3QgPSBvcHRpb24ocHJvcHMpO1xuICB9IGVsc2Uge1xuICAgIHJlY3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWN0YW5nbGUsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLXJlZmVyZW5jZS1hcmVhLXJlY3RcIlxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gcmVjdDtcbn0pOyJdLCJuYW1lcyI6WyJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJpc0Z1bmN0aW9uIiwiY2xzeCIsIkxheWVyIiwiTGFiZWwiLCJjcmVhdGVMYWJlbGVkU2NhbGVzIiwicmVjdFdpdGhQb2ludHMiLCJpZk92ZXJmbG93TWF0Y2hlcyIsImlzTnVtT3JTdHIiLCJ3YXJuIiwiUmVjdGFuZ2xlIiwiZmlsdGVyUHJvcHMiLCJnZXRSZWN0IiwiaGFzWDEiLCJoYXNYMiIsImhhc1kxIiwiaGFzWTIiLCJ4VmFsdWUxIiwieDEiLCJ4VmFsdWUyIiwieDIiLCJ5VmFsdWUxIiwieTEiLCJ5VmFsdWUyIiwieTIiLCJ4QXhpcyIsInlBeGlzIiwic2NhbGVzIiwieCIsInNjYWxlIiwieSIsInAxIiwicG9zaXRpb24iLCJyYW5nZU1pbiIsInAyIiwicmFuZ2VNYXgiLCJpc0luUmFuZ2UiLCJSZWZlcmVuY2VBcmVhIiwiX1JlYWN0JENvbXBvbmVudCIsInJlbmRlciIsIl90aGlzJHByb3BzIiwiY2xhc3NOYW1lIiwiYWx3YXlzU2hvdyIsImNsaXBQYXRoSWQiLCJ1bmRlZmluZWQiLCJzaGFwZSIsInJlY3QiLCJjbGlwUGF0aCIsImNvbmNhdCIsImNyZWF0ZUVsZW1lbnQiLCJyZW5kZXJSZWN0IiwicmVuZGVyQ2FsbEJ5UGFyZW50IiwiQ29tcG9uZW50IiwiaXNGcm9udCIsImlmT3ZlcmZsb3ciLCJ4QXhpc0lkIiwieUF4aXNJZCIsImZpbGwiLCJmaWxsT3BhY2l0eSIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwib3B0aW9uIiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiXSwic291cmNlUm9vdCI6IiJ9\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/future/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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RCxTQUFTO1FBQzdCQyxNQUFNRCxPQUFPdkY7SUFDZixPQUFPO1FBQ0x3RixNQUFNLFdBQVcsR0FBRXRELDBEQUFtQixDQUFDSSw0Q0FBR0EsRUFBRTlFLFNBQVMsQ0FBQyxHQUFHd0MsT0FBTztZQUM5RGlFLElBQUlqRSxNQUFNaUUsRUFBRTtZQUNaQyxJQUFJbEUsTUFBTWtFLEVBQUU7WUFDWkcsV0FBVztRQUNiO0lBQ0Y7SUFDQSxPQUFPbUI7QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2FydGVzaWFuL1JlZmVyZW5jZURvdC5qcz8yOGU3Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgUmVmZXJlbmNlIERvdFxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBEb3QgfSBmcm9tICcuLi9zaGFwZS9Eb3QnO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuLi9jb21wb25lbnQvTGFiZWwnO1xuaW1wb3J0IHsgaXNOdW1PclN0ciB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IGlmT3ZlcmZsb3dNYXRjaGVzIH0gZnJvbSAnLi4vdXRpbC9JZk92ZXJmbG93TWF0Y2hlcyc7XG5pbXBvcnQgeyBjcmVhdGVMYWJlbGVkU2NhbGVzIH0gZnJvbSAnLi4vdXRpbC9DYXJ0ZXNpYW5VdGlscyc7XG5pbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi4vdXRpbC9Mb2dVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG52YXIgZ2V0Q29vcmRpbmF0ZSA9IGZ1bmN0aW9uIGdldENvb3JkaW5hdGUocHJvcHMpIHtcbiAgdmFyIHggPSBwcm9wcy54LFxuICAgIHkgPSBwcm9wcy55LFxuICAgIHhBeGlzID0gcHJvcHMueEF4aXMsXG4gICAgeUF4aXMgPSBwcm9wcy55QXhpcztcbiAgdmFyIHNjYWxlcyA9IGNyZWF0ZUxhYmVsZWRTY2FsZXMoe1xuICAgIHg6IHhBeGlzLnNjYWxlLFxuICAgIHk6IHlBeGlzLnNjYWxlXG4gIH0pO1xuICB2YXIgcmVzdWx0ID0gc2NhbGVzLmFwcGx5KHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSwge1xuICAgIGJhbmRBd2FyZTogdHJ1ZVxuICB9KTtcbiAgaWYgKGlmT3ZlcmZsb3dNYXRjaGVzKHByb3BzLCAnZGlzY2FyZCcpICYmICFzY2FsZXMuaXNJblJhbmdlKHJlc3VsdCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3ByZWZlci1zdGF0ZWxlc3MtZnVuY3Rpb24gLS0gcmVxdWlyZXMgc3RhdGljIGRlZmF1bHRQcm9wc1xuZXhwb3J0IHZhciBSZWZlcmVuY2VEb3QgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgZnVuY3Rpb24gUmVmZXJlbmNlRG90KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWZlcmVuY2VEb3QpO1xuICAgIHJldHVybiBfY2FsbFN1cGVyKHRoaXMsIFJlZmVyZW5jZURvdCwgYXJndW1lbnRzKTtcbiAgfVxuICBfaW5oZXJpdHMoUmVmZXJlbmNlRG90LCBfUmVhY3QkQ29tcG9uZW50KTtcbiAgcmV0dXJuIF9jcmVhdGVDbGFzcyhSZWZlcmVuY2VEb3QsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICB4ID0gX3RoaXMkcHJvcHMueCxcbiAgICAgICAgeSA9IF90aGlzJHByb3BzLnksXG4gICAgICAgIHIgPSBfdGhpcyRwcm9wcy5yLFxuICAgICAgICBhbHdheXNTaG93ID0gX3RoaXMkcHJvcHMuYWx3YXlzU2hvdyxcbiAgICAgICAgY2xpcFBhdGhJZCA9IF90aGlzJHByb3BzLmNsaXBQYXRoSWQ7XG4gICAgICB2YXIgaXNYID0gaXNOdW1PclN0cih4KTtcbiAgICAgIHZhciBpc1kgPSBpc051bU9yU3RyKHkpO1xuICAgICAgd2FybihhbHdheXNTaG93ID09PSB1bmRlZmluZWQsICdUaGUgYWx3YXlzU2hvdyBwcm9wIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgaWZPdmVyZmxvdz1cImV4dGVuZERvbWFpblwiIGluc3RlYWQuJyk7XG4gICAgICBpZiAoIWlzWCB8fCAhaXNZKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGNvb3JkaW5hdGUgPSBnZXRDb29yZGluYXRlKHRoaXMucHJvcHMpO1xuICAgICAgaWYgKCFjb29yZGluYXRlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGN4ID0gY29vcmRpbmF0ZS54LFxuICAgICAgICBjeSA9IGNvb3JkaW5hdGUueTtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICBzaGFwZSA9IF90aGlzJHByb3BzMi5zaGFwZSxcbiAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMyLmNsYXNzTmFtZTtcbiAgICAgIHZhciBjbGlwUGF0aCA9IGlmT3ZlcmZsb3dNYXRjaGVzKHRoaXMucHJvcHMsICdoaWRkZW4nKSA/IFwidXJsKCNcIi5jb25jYXQoY2xpcFBhdGhJZCwgXCIpXCIpIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIGRvdFByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgY2xpcFBhdGg6IGNsaXBQYXRoXG4gICAgICB9LCBmaWx0ZXJQcm9wcyh0aGlzLnByb3BzLCB0cnVlKSksIHt9LCB7XG4gICAgICAgIGN4OiBjeCxcbiAgICAgICAgY3k6IGN5XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgICAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXJlZmVyZW5jZS1kb3QnLCBjbGFzc05hbWUpXG4gICAgICB9LCBSZWZlcmVuY2VEb3QucmVuZGVyRG90KHNoYXBlLCBkb3RQcm9wcyksIExhYmVsLnJlbmRlckNhbGxCeVBhcmVudCh0aGlzLnByb3BzLCB7XG4gICAgICAgIHg6IGN4IC0gcixcbiAgICAgICAgeTogY3kgLSByLFxuICAgICAgICB3aWR0aDogMiAqIHIsXG4gICAgICAgIGhlaWdodDogMiAqIHJcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1dKTtcbn0oUmVhY3QuQ29tcG9uZW50KTtcbl9kZWZpbmVQcm9wZXJ0eShSZWZlcmVuY2VEb3QsIFwiZGlzcGxheU5hbWVcIiwgJ1JlZmVyZW5jZURvdCcpO1xuX2RlZmluZVByb3BlcnR5KFJlZmVyZW5jZURvdCwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBpc0Zyb250OiBmYWxzZSxcbiAgaWZPdmVyZmxvdzogJ2Rpc2NhcmQnLFxuICB4QXhpc0lkOiAwLFxuICB5QXhpc0lkOiAwLFxuICByOiAxMCxcbiAgZmlsbDogJyNmZmYnLFxuICBzdHJva2U6ICcjY2NjJyxcbiAgZmlsbE9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxXG59KTtcbl9kZWZpbmVQcm9wZXJ0eShSZWZlcmVuY2VEb3QsIFwicmVuZGVyRG90XCIsIGZ1bmN0aW9uIChvcHRpb24sIHByb3BzKSB7XG4gIHZhciBkb3Q7XG4gIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KG9wdGlvbikpIHtcbiAgICBkb3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgIGRvdCA9IG9wdGlvbihwcm9wcyk7XG4gIH0gZWxzZSB7XG4gICAgZG90ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRG90LCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgIGN4OiBwcm9wcy5jeCxcbiAgICAgIGN5OiBwcm9wcy5jeSxcbiAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1yZWZlcmVuY2UtZG90LWRvdFwiXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBkb3Q7XG59KTsiXSwibmFtZXMiOlsiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIlJlYWN0IiwiaXNGdW5jdGlvbiIsImNsc3giLCJMYXllciIsIkRvdCIsIkxhYmVsIiwiaXNOdW1PclN0ciIsImlmT3ZlcmZsb3dNYXRjaGVzIiwiY3JlYXRlTGFiZWxlZFNjYWxlcyIsIndhcm4iLCJmaWx0ZXJQcm9wcyIsImdldENvb3JkaW5hdGUiLCJ4IiwieSIsInhBeGlzIiwieUF4aXMiLCJzY2FsZXMiLCJzY2FsZSIsInJlc3VsdCIsImJhbmRBd2FyZSIsImlzSW5SYW5nZSIsIlJlZmVyZW5jZURvdCIsIl9SZWFjdCRDb21wb25lbnQiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImFsd2F5c1Nob3ciLCJjbGlwUGF0aElkIiwiaXNYIiwiaXNZIiwidW5kZWZpbmVkIiwiY29vcmRpbmF0ZSIsImN4IiwiY3kiLCJfdGhpcyRwcm9wczIiLCJzaGFwZSIsImNsYXNzTmFtZSIsImNsaXBQYXRoIiwiY29uY2F0IiwiZG90UHJvcHMiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyRG90IiwicmVuZGVyQ2FsbEJ5UGFyZW50Iiwid2lkdGgiLCJoZWlnaHQiLCJDb21wb25lbnQiLCJpc0Zyb250IiwiaWZPdmVyZmxvdyIsInhBeGlzSWQiLCJ5QXhpc0lkIiwiZmlsbCIsInN0cm9rZSIsImZpbGxPcGFjaXR5Iiwic3Ryb2tlV2lkdGgiLCJvcHRpb24iLCJkb3QiLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCJdLCJzb3VyY2VSb290IjoiIn0=\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/future/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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LElBQUlLLGdCQUFnQixXQUFXLEdBQUUsU0FBVUMsZ0JBQWdCO0lBQ2hFLFNBQVNEO1FBQ1B0SyxnQkFBZ0IsSUFBSSxFQUFFc0s7UUFDdEIsT0FBT2xKLFdBQVcsSUFBSSxFQUFFa0osZUFBZWhIO0lBQ3pDO0lBQ0FmLFVBQVUrSCxlQUFlQztJQUN6QixPQUFPdEosYUFBYXFKLGVBQWU7UUFBQztZQUNsQ3RKLEtBQUs7WUFDTDJCLE9BQU8sU0FBUzZIO2dCQUNkLE9BQU8sV0FBVyxHQUFFNUUsMERBQW1CLENBQUMrQyxtQkFBbUIsSUFBSSxDQUFDckksS0FBSztZQUN2RTtRQUNGO0tBQUU7QUFDSixFQUFFc0Ysd0RBQWUsRUFBRTtBQUNuQnBDLGdCQUFnQjhHLGVBQWUsZUFBZTtBQUM5QzlHLGdCQUFnQjhHLGVBQWUsZ0JBQWdCO0lBQzdDSSxTQUFTO0lBQ1RDLFlBQVk7SUFDWjdCLFNBQVM7SUFDVEMsU0FBUztJQUNUNkIsTUFBTTtJQUNOQyxRQUFRO0lBQ1JDLGFBQWE7SUFDYkMsYUFBYTtJQUNidEQsVUFBVTtBQUNaIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jYXJ0ZXNpYW4vUmVmZXJlbmNlTGluZS5qcz8wNjEyIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIF9jYWxsU3VwZXIodCwgbywgZSkgeyByZXR1cm4gbyA9IF9nZXRQcm90b3R5cGVPZihvKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpID8gUmVmbGVjdC5jb25zdHJ1Y3QobywgZSB8fCBbXSwgX2dldFByb3RvdHlwZU9mKHQpLmNvbnN0cnVjdG9yKSA6IG8uYXBwbHkodCwgZSkpOyB9XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IGVsc2UgaWYgKGNhbGwgIT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgdHJ5IHsgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyB9IGNhdGNoICh0KSB7fSByZXR1cm4gKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyByZXR1cm4gISF0OyB9KSgpOyB9XG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7IHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07IGlmIChudWxsICE9IHQpIHsgdmFyIGUsIG4sIGksIHUsIGEgPSBbXSwgZiA9ICEwLCBvID0gITE7IHRyeSB7IGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHsgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuOyBmID0gITE7IH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTsgfSBjYXRjaCAocikgeyBvID0gITAsIG4gPSByOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47IH0gZmluYWxseSB7IGlmIChvKSB0aHJvdyBuOyB9IH0gcmV0dXJuIGE7IH0gfVxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBSZWZlcmVuY2UgTGluZVxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHNvbWUgZnJvbSAnbG9kYXNoL3NvbWUnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gJy4uL2NvbXBvbmVudC9MYWJlbCc7XG5pbXBvcnQgeyBpZk92ZXJmbG93TWF0Y2hlcyB9IGZyb20gJy4uL3V0aWwvSWZPdmVyZmxvd01hdGNoZXMnO1xuaW1wb3J0IHsgaXNOdW1PclN0ciB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IGNyZWF0ZUxhYmVsZWRTY2FsZXMsIHJlY3RXaXRoQ29vcmRzIH0gZnJvbSAnLi4vdXRpbC9DYXJ0ZXNpYW5VdGlscyc7XG5pbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi4vdXRpbC9Mb2dVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyB1c2VDbGlwUGF0aElkLCB1c2VWaWV3Qm94LCB1c2VYQXhpc09yVGhyb3csIHVzZVlBeGlzT3JUaHJvdyB9IGZyb20gJy4uL2NvbnRleHQvY2hhcnRMYXlvdXRDb250ZXh0JztcblxuLyoqXG4gKiBUaGlzIGV4Y2x1ZGVzIGB2aWV3Qm94YCBwcm9wIGZyb20gc3ZnIGZvciB0d28gcmVhc29uczpcbiAqIDEuIFRoZSBjb21wb25lbnRzIHdhbnRzIHZpZXdCb3ggb2Ygb2JqZWN0IHR5cGUsIGFuZCBzdmcgd2FudHMgc3RyaW5nXG4gKiAgICAtIHNvIHRoZXJlJ3MgYSBjb25mbGljdCwgYW5kIHRoZSBjb21wb25lbnQgd2lsbCB0aHJvdyBpZiBpdCBnZXRzIHN0cmluZ1xuICogMi4gSW50ZXJuYWxseSB0aGUgY29tcG9uZW50IGNhbGxzIGBmaWx0ZXJQcm9wc2Agd2hpY2ggZmlsdGVycyB0aGUgdmlld0JveCBhd2F5IGFueXdheVxuICovXG5cbnZhciByZW5kZXJMaW5lID0gZnVuY3Rpb24gcmVuZGVyTGluZShvcHRpb24sIHByb3BzKSB7XG4gIHZhciBsaW5lO1xuICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgbGluZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQob3B0aW9uLCBwcm9wcyk7XG4gIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihvcHRpb24pKSB7XG4gICAgbGluZSA9IG9wdGlvbihwcm9wcyk7XG4gIH0gZWxzZSB7XG4gICAgbGluZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGluZVwiLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1yZWZlcmVuY2UtbGluZS1saW5lXCJcbiAgICB9KSk7XG4gIH1cbiAgcmV0dXJuIGxpbmU7XG59O1xuLy8gVE9ETzogU2NhbGVIZWxwZXJcbmV4cG9ydCB2YXIgZ2V0RW5kUG9pbnRzID0gZnVuY3Rpb24gZ2V0RW5kUG9pbnRzKHNjYWxlcywgaXNGaXhlZFgsIGlzRml4ZWRZLCBpc1NlZ21lbnQsIHZpZXdCb3gsIHBvc2l0aW9uLCB4QXhpc09yaWVudGF0aW9uLCB5QXhpc09yaWVudGF0aW9uLCBwcm9wcykge1xuICB2YXIgeCA9IHZpZXdCb3gueCxcbiAgICB5ID0gdmlld0JveC55LFxuICAgIHdpZHRoID0gdmlld0JveC53aWR0aCxcbiAgICBoZWlnaHQgPSB2aWV3Qm94LmhlaWdodDtcbiAgaWYgKGlzRml4ZWRZKSB7XG4gICAgdmFyIHlDb29yZCA9IHByb3BzLnk7XG4gICAgdmFyIGNvb3JkID0gc2NhbGVzLnkuYXBwbHkoeUNvb3JkLCB7XG4gICAgICBwb3NpdGlvbjogcG9zaXRpb25cbiAgICB9KTtcbiAgICBpZiAoaWZPdmVyZmxvd01hdGNoZXMocHJvcHMsICdkaXNjYXJkJykgJiYgIXNjYWxlcy55LmlzSW5SYW5nZShjb29yZCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgcG9pbnRzID0gW3tcbiAgICAgIHg6IHggKyB3aWR0aCxcbiAgICAgIHk6IGNvb3JkXG4gICAgfSwge1xuICAgICAgeDogeCxcbiAgICAgIHk6IGNvb3JkXG4gICAgfV07XG4gICAgcmV0dXJuIHlBeGlzT3JpZW50YXRpb24gPT09ICdsZWZ0JyA/IHBvaW50cy5yZXZlcnNlKCkgOiBwb2ludHM7XG4gIH1cbiAgaWYgKGlzRml4ZWRYKSB7XG4gICAgdmFyIHhDb29yZCA9IHByb3BzLng7XG4gICAgdmFyIF9jb29yZCA9IHNjYWxlcy54LmFwcGx5KHhDb29yZCwge1xuICAgICAgcG9zaXRpb246IHBvc2l0aW9uXG4gICAgfSk7XG4gICAgaWYgKGlmT3ZlcmZsb3dNYXRjaGVzKHByb3BzLCAnZGlzY2FyZCcpICYmICFzY2FsZXMueC5pc0luUmFuZ2UoX2Nvb3JkKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBfcG9pbnRzID0gW3tcbiAgICAgIHg6IF9jb29yZCxcbiAgICAgIHk6IHkgKyBoZWlnaHRcbiAgICB9LCB7XG4gICAgICB4OiBfY29vcmQsXG4gICAgICB5OiB5XG4gICAgfV07XG4gICAgcmV0dXJuIHhBeGlzT3JpZW50YXRpb24gPT09ICd0b3AnID8gX3BvaW50cy5yZXZlcnNlKCkgOiBfcG9pbnRzO1xuICB9XG4gIGlmIChpc1NlZ21lbnQpIHtcbiAgICB2YXIgc2VnbWVudCA9IHByb3BzLnNlZ21lbnQ7XG4gICAgdmFyIF9wb2ludHMyID0gc2VnbWVudC5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgIHJldHVybiBzY2FsZXMuYXBwbHkocCwge1xuICAgICAgICBwb3NpdGlvbjogcG9zaXRpb25cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChpZk92ZXJmbG93TWF0Y2hlcyhwcm9wcywgJ2Rpc2NhcmQnKSAmJiBzb21lKF9wb2ludHMyLCBmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuICFzY2FsZXMuaXNJblJhbmdlKHApO1xuICAgIH0pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIF9wb2ludHMyO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmZ1bmN0aW9uIFJlZmVyZW5jZUxpbmVJbXBsKHByb3BzKSB7XG4gIHZhciBmaXhlZFggPSBwcm9wcy54LFxuICAgIGZpeGVkWSA9IHByb3BzLnksXG4gICAgc2VnbWVudCA9IHByb3BzLnNlZ21lbnQsXG4gICAgeEF4aXNJZCA9IHByb3BzLnhBeGlzSWQsXG4gICAgeUF4aXNJZCA9IHByb3BzLnlBeGlzSWQsXG4gICAgc2hhcGUgPSBwcm9wcy5zaGFwZSxcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgYWx3YXlzU2hvdyA9IHByb3BzLmFsd2F5c1Nob3c7XG4gIHZhciBjbGlwUGF0aElkID0gdXNlQ2xpcFBhdGhJZCgpO1xuICB2YXIgeEF4aXMgPSB1c2VYQXhpc09yVGhyb3coeEF4aXNJZCk7XG4gIHZhciB5QXhpcyA9IHVzZVlBeGlzT3JUaHJvdyh5QXhpc0lkKTtcbiAgdmFyIHZpZXdCb3ggPSB1c2VWaWV3Qm94KCk7XG4gIGlmICghY2xpcFBhdGhJZCB8fCAhdmlld0JveCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHdhcm4oYWx3YXlzU2hvdyA9PT0gdW5kZWZpbmVkLCAnVGhlIGFsd2F5c1Nob3cgcHJvcCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGlmT3ZlcmZsb3c9XCJleHRlbmREb21haW5cIiBpbnN0ZWFkLicpO1xuICB2YXIgc2NhbGVzID0gY3JlYXRlTGFiZWxlZFNjYWxlcyh7XG4gICAgeDogeEF4aXMuc2NhbGUsXG4gICAgeTogeUF4aXMuc2NhbGVcbiAgfSk7XG4gIHZhciBpc1ggPSBpc051bU9yU3RyKGZpeGVkWCk7XG4gIHZhciBpc1kgPSBpc051bU9yU3RyKGZpeGVkWSk7XG4gIHZhciBpc1NlZ21lbnQgPSBzZWdtZW50ICYmIHNlZ21lbnQubGVuZ3RoID09PSAyO1xuICB2YXIgZW5kUG9pbnRzID0gZ2V0RW5kUG9pbnRzKHNjYWxlcywgaXNYLCBpc1ksIGlzU2VnbWVudCwgdmlld0JveCwgcHJvcHMucG9zaXRpb24sIHhBeGlzLm9yaWVudGF0aW9uLCB5QXhpcy5vcmllbnRhdGlvbiwgcHJvcHMpO1xuICBpZiAoIWVuZFBvaW50cykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBfZW5kUG9pbnRzID0gX3NsaWNlZFRvQXJyYXkoZW5kUG9pbnRzLCAyKSxcbiAgICBfZW5kUG9pbnRzJCA9IF9lbmRQb2ludHNbMF0sXG4gICAgeDEgPSBfZW5kUG9pbnRzJC54LFxuICAgIHkxID0gX2VuZFBvaW50cyQueSxcbiAgICBfZW5kUG9pbnRzJDIgPSBfZW5kUG9pbnRzWzFdLFxuICAgIHgyID0gX2VuZFBvaW50cyQyLngsXG4gICAgeTIgPSBfZW5kUG9pbnRzJDIueTtcbiAgdmFyIGNsaXBQYXRoID0gaWZPdmVyZmxvd01hdGNoZXMocHJvcHMsICdoaWRkZW4nKSA/IFwidXJsKCNcIi5jb25jYXQoY2xpcFBhdGhJZCwgXCIpXCIpIDogdW5kZWZpbmVkO1xuICB2YXIgbGluZVByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICBjbGlwUGF0aDogY2xpcFBhdGhcbiAgfSwgZmlsdGVyUHJvcHMocHJvcHMsIHRydWUpKSwge30sIHtcbiAgICB4MTogeDEsXG4gICAgeTE6IHkxLFxuICAgIHgyOiB4MixcbiAgICB5MjogeTJcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtcmVmZXJlbmNlLWxpbmUnLCBjbGFzc05hbWUpXG4gIH0sIHJlbmRlckxpbmUoc2hhcGUsIGxpbmVQcm9wcyksIExhYmVsLnJlbmRlckNhbGxCeVBhcmVudChwcm9wcywgcmVjdFdpdGhDb29yZHMoe1xuICAgIHgxOiB4MSxcbiAgICB5MTogeTEsXG4gICAgeDI6IHgyLFxuICAgIHkyOiB5MlxuICB9KSkpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJlZmVyLXN0YXRlbGVzcy1mdW5jdGlvbiAtLSByZXF1aXJlcyBzdGF0aWMgZGVmYXVsdFByb3BzXG5leHBvcnQgdmFyIFJlZmVyZW5jZUxpbmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgZnVuY3Rpb24gUmVmZXJlbmNlTGluZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVmZXJlbmNlTGluZSk7XG4gICAgcmV0dXJuIF9jYWxsU3VwZXIodGhpcywgUmVmZXJlbmNlTGluZSwgYXJndW1lbnRzKTtcbiAgfVxuICBfaW5oZXJpdHMoUmVmZXJlbmNlTGluZSwgX1JlYWN0JENvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoUmVmZXJlbmNlTGluZSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWZlcmVuY2VMaW5lSW1wbCwgdGhpcy5wcm9wcyk7XG4gICAgfVxuICB9XSk7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5fZGVmaW5lUHJvcGVydHkoUmVmZXJlbmNlTGluZSwgXCJkaXNwbGF5TmFtZVwiLCAnUmVmZXJlbmNlTGluZScpO1xuX2RlZmluZVByb3BlcnR5KFJlZmVyZW5jZUxpbmUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgaXNGcm9udDogZmFsc2UsXG4gIGlmT3ZlcmZsb3c6ICdkaXNjYXJkJyxcbiAgeEF4aXNJZDogMCxcbiAgeUF4aXNJZDogMCxcbiAgZmlsbDogJ25vbmUnLFxuICBzdHJva2U6ICcjY2NjJyxcbiAgZmlsbE9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxLFxuICBwb3NpdGlvbjogJ21pZGRsZSdcbn0pOyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImkiLCJsZW5ndGgiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJ0IiwiZSIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJhcHBseSIsInNlbGYiLCJjYWxsIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiYmluZCIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm93bktleXMiLCJyIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwibCIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwiaXNBcnJheSIsIl9leHRlbmRzIiwiYXNzaWduIiwic291cmNlIiwiaGFzT3duUHJvcGVydHkiLCJSZWFjdCIsImlzRnVuY3Rpb24iLCJzb21lIiwiY2xzeCIsIkxheWVyIiwiTGFiZWwiLCJpZk92ZXJmbG93TWF0Y2hlcyIsImlzTnVtT3JTdHIiLCJjcmVhdGVMYWJlbGVkU2NhbGVzIiwicmVjdFdpdGhDb29yZHMiLCJ3YXJuIiwiZmlsdGVyUHJvcHMiLCJ1c2VDbGlwUGF0aElkIiwidXNlVmlld0JveCIsInVzZVhBeGlzT3JUaHJvdyIsInVzZVlBeGlzT3JUaHJvdyIsInJlbmRlckxpbmUiLCJvcHRpb24iLCJsaW5lIiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiZ2V0RW5kUG9pbnRzIiwic2NhbGVzIiwiaXNGaXhlZFgiLCJpc0ZpeGVkWSIsImlzU2VnbWVudCIsInZpZXdCb3giLCJwb3NpdGlvbiIsInhBeGlzT3JpZW50YXRpb24iLCJ5QXhpc09yaWVudGF0aW9uIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsInlDb29yZCIsImNvb3JkIiwiaXNJblJhbmdlIiwicG9pbnRzIiwicmV2ZXJzZSIsInhDb29yZCIsIl9jb29yZCIsIl9wb2ludHMiLCJzZWdtZW50IiwiX3BvaW50czIiLCJtYXAiLCJSZWZlcmVuY2VMaW5lSW1wbCIsImZpeGVkWCIsImZpeGVkWSIsInhBeGlzSWQiLCJ5QXhpc0lkIiwic2hhcGUiLCJhbHdheXNTaG93IiwiY2xpcFBhdGhJZCIsInhBeGlzIiwieUF4aXMiLCJ1bmRlZmluZWQiLCJzY2FsZSIsImlzWCIsImlzWSIsImVuZFBvaW50cyIsIm9yaWVudGF0aW9uIiwiX2VuZFBvaW50cyIsIl9lbmRQb2ludHMkIiwieDEiLCJ5MSIsIl9lbmRQb2ludHMkMiIsIngyIiwieTIiLCJjbGlwUGF0aCIsImNvbmNhdCIsImxpbmVQcm9wcyIsInJlbmRlckNhbGxCeVBhcmVudCIsIlJlZmVyZW5jZUxpbmUiLCJfUmVhY3QkQ29tcG9uZW50IiwicmVuZGVyIiwiQ29tcG9uZW50IiwiaXNGcm9udCIsImlmT3ZlcmZsb3ciLCJmaWxsIiwic3Ryb2tlIiwiZmlsbE9wYWNpdHkiLCJzdHJva2VXaWR0aCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/ReferenceLine.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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LDhFQUE4RTtnQkFDOUUsSUFBSSxJQUFJLENBQUNKLGNBQWMsQ0FBQzVCLE1BQU0sS0FBSyxHQUFHO29CQUNwQztnQkFDRjtnQkFDQSxJQUFJZ0Qsd0JBQXdCLElBQUksQ0FBQ2xCLFNBQVMsQ0FBQ21CLHFCQUFxQixJQUM5REMsSUFBSUYsc0JBQXNCRSxDQUFDLEVBQzNCQyxJQUFJSCxzQkFBc0JHLENBQUMsRUFDM0JDLFNBQVNKLHNCQUFzQkksTUFBTTtnQkFDdkMsSUFBSUMsYUFBYSxJQUFJLENBQUN6QixjQUFjLENBQUMsSUFBSSxDQUFDUyxXQUFXLENBQUMsQ0FBQ2dCLFVBQVU7Z0JBQ2pFLElBQUlDLGdCQUFnQixDQUFDLENBQUNSLFVBQVVTLE1BQUssTUFBTyxRQUFRVCxZQUFZLEtBQUssSUFBSSxLQUFLLElBQUlBLFFBQVFVLE9BQU8sS0FBSztnQkFDdEcsSUFBSUMsZ0JBQWdCLENBQUMsQ0FBQ1YsV0FBV1EsTUFBSyxNQUFPLFFBQVFSLGFBQWEsS0FBSyxJQUFJLEtBQUssSUFBSUEsU0FBU1csT0FBTyxLQUFLO2dCQUN6RyxJQUFJQyxRQUFRVCxJQUFJRyxhQUFhQztnQkFDN0IsSUFBSU0sUUFBUVQsSUFBSSxJQUFJLENBQUNqQixNQUFNLENBQUMyQixHQUFHLEdBQUdULFNBQVMsSUFBSUs7Z0JBQy9DLElBQUksQ0FBQ3JCLG9CQUFvQixDQUFDO29CQUN4QnVCLE9BQU9BO29CQUNQQyxPQUFPQTtnQkFDVDtZQUNGO1FBQ0Y7S0FBRTtBQUNKLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L0FjY2Vzc2liaWxpdHlNYW5hZ2VyLmpzPzk1Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5leHBvcnQgdmFyIEFjY2Vzc2liaWxpdHlNYW5hZ2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQWNjZXNzaWJpbGl0eU1hbmFnZXIoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFjY2Vzc2liaWxpdHlNYW5hZ2VyKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJhY3RpdmVJbmRleFwiLCAwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJjb29yZGluYXRlTGlzdFwiLCBbXSk7XG4gICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwibGF5b3V0XCIsICdob3Jpem9udGFsJyk7XG4gIH1cbiAgcmV0dXJuIF9jcmVhdGVDbGFzcyhBY2Nlc3NpYmlsaXR5TWFuYWdlciwgW3tcbiAgICBrZXk6IFwic2V0RGV0YWlsc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREZXRhaWxzKF9yZWYpIHtcbiAgICAgIHZhciBfcmVmMjtcbiAgICAgIHZhciBfcmVmJGNvb3JkaW5hdGVMaXN0ID0gX3JlZi5jb29yZGluYXRlTGlzdCxcbiAgICAgICAgY29vcmRpbmF0ZUxpc3QgPSBfcmVmJGNvb3JkaW5hdGVMaXN0ID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRjb29yZGluYXRlTGlzdCxcbiAgICAgICAgX3JlZiRjb250YWluZXIgPSBfcmVmLmNvbnRhaW5lcixcbiAgICAgICAgY29udGFpbmVyID0gX3JlZiRjb250YWluZXIgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJGNvbnRhaW5lcixcbiAgICAgICAgX3JlZiRsYXlvdXQgPSBfcmVmLmxheW91dCxcbiAgICAgICAgbGF5b3V0ID0gX3JlZiRsYXlvdXQgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJGxheW91dCxcbiAgICAgICAgX3JlZiRvZmZzZXQgPSBfcmVmLm9mZnNldCxcbiAgICAgICAgb2Zmc2V0ID0gX3JlZiRvZmZzZXQgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJG9mZnNldCxcbiAgICAgICAgX3JlZiRtb3VzZUhhbmRsZXJDYWxsID0gX3JlZi5tb3VzZUhhbmRsZXJDYWxsYmFjayxcbiAgICAgICAgbW91c2VIYW5kbGVyQ2FsbGJhY2sgPSBfcmVmJG1vdXNlSGFuZGxlckNhbGwgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJG1vdXNlSGFuZGxlckNhbGw7XG4gICAgICB0aGlzLmNvb3JkaW5hdGVMaXN0ID0gKF9yZWYyID0gY29vcmRpbmF0ZUxpc3QgIT09IG51bGwgJiYgY29vcmRpbmF0ZUxpc3QgIT09IHZvaWQgMCA/IGNvb3JkaW5hdGVMaXN0IDogdGhpcy5jb29yZGluYXRlTGlzdCkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogW107XG4gICAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lciAhPT0gbnVsbCAmJiBjb250YWluZXIgIT09IHZvaWQgMCA/IGNvbnRhaW5lciA6IHRoaXMuY29udGFpbmVyO1xuICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQgIT09IG51bGwgJiYgbGF5b3V0ICE9PSB2b2lkIDAgPyBsYXlvdXQgOiB0aGlzLmxheW91dDtcbiAgICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0ICE9PSBudWxsICYmIG9mZnNldCAhPT0gdm9pZCAwID8gb2Zmc2V0IDogdGhpcy5vZmZzZXQ7XG4gICAgICB0aGlzLm1vdXNlSGFuZGxlckNhbGxiYWNrID0gbW91c2VIYW5kbGVyQ2FsbGJhY2sgIT09IG51bGwgJiYgbW91c2VIYW5kbGVyQ2FsbGJhY2sgIT09IHZvaWQgMCA/IG1vdXNlSGFuZGxlckNhbGxiYWNrIDogdGhpcy5tb3VzZUhhbmRsZXJDYWxsYmFjaztcblxuICAgICAgLy8gS2VlcCBhY3RpdmVJbmRleCBpbiB0aGUgYm91bmRzIGJldHdlZW4gMCBhbmQgdGhlIGxhc3QgY29vcmRpbmF0ZSBpbmRleFxuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IE1hdGgubWluKE1hdGgubWF4KHRoaXMuYWN0aXZlSW5kZXgsIDApLCB0aGlzLmNvb3JkaW5hdGVMaXN0Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb2N1cygpIHtcbiAgICAgIHRoaXMuc3Bvb2ZNb3VzZSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJrZXlib2FyZEV2ZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGtleWJvYXJkRXZlbnQoZSkge1xuICAgICAgLy8gVGhlIEFjY2Vzc2liaWxpdHlNYW5hZ2VyIHJlbGllcyBvbiB0aGUgVG9vbHRpcCBjb21wb25lbnQuIFdoZW4gdG9vbHRpcHMgc3VkZGVubHkgc3RvcCBleGlzdGluZyxcbiAgICAgIC8vIGl0IGNhbiBjYXVzZSBlcnJvcnMuIFdlIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNoZWNrLiBXZSBkb24ndCB3YW50IGFycm93IGtleXMgdG8gYmUgcHJvY2Vzc2VkXG4gICAgICAvLyBpZiB0aGVyZSBhcmUgbm8gdG9vbHRpcHMsIHNpbmNlIHRoYXQgd2lsbCBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yIG9mIHVzZXJzLlxuICAgICAgaWYgKHRoaXMuY29vcmRpbmF0ZUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoZS5rZXkpIHtcbiAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAge1xuICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0ICE9PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IE1hdGgubWluKHRoaXMuYWN0aXZlSW5kZXggKyAxLCB0aGlzLmNvb3JkaW5hdGVMaXN0Lmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgdGhpcy5zcG9vZk1vdXNlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAge1xuICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0ICE9PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IE1hdGgubWF4KHRoaXMuYWN0aXZlSW5kZXggLSAxLCAwKTtcbiAgICAgICAgICAgIHRoaXMuc3Bvb2ZNb3VzZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0SW5kZXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0SW5kZXgobmV3SW5kZXgpIHtcbiAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBuZXdJbmRleDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3Bvb2ZNb3VzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzcG9vZk1vdXNlKCkge1xuICAgICAgdmFyIF93aW5kb3csIF93aW5kb3cyO1xuICAgICAgaWYgKHRoaXMubGF5b3V0ICE9PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgdG9vbHRpcHMgc3VkZGVubHkgc3RvcCBleGlzdGluZyBhcyBjaGlsZHJlbiBvZiB0aGUgY29tcG9uZW50XG4gICAgICAvLyBUaGF0IHVwZGF0ZSBkb2Vzbid0IG90aGVyd2lzZSBmaXJlIGV2ZW50cywgc28gd2UgaGF2ZSB0byBkb3VibGUgY2hlY2sgaGVyZS5cbiAgICAgIGlmICh0aGlzLmNvb3JkaW5hdGVMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgX3RoaXMkY29udGFpbmVyJGdldEJvID0gdGhpcy5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICAgIHggPSBfdGhpcyRjb250YWluZXIkZ2V0Qm8ueCxcbiAgICAgICAgeSA9IF90aGlzJGNvbnRhaW5lciRnZXRCby55LFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRjb250YWluZXIkZ2V0Qm8uaGVpZ2h0O1xuICAgICAgdmFyIGNvb3JkaW5hdGUgPSB0aGlzLmNvb3JkaW5hdGVMaXN0W3RoaXMuYWN0aXZlSW5kZXhdLmNvb3JkaW5hdGU7XG4gICAgICB2YXIgc2Nyb2xsT2Zmc2V0WCA9ICgoX3dpbmRvdyA9IHdpbmRvdykgPT09IG51bGwgfHwgX3dpbmRvdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3dpbmRvdy5zY3JvbGxYKSB8fCAwO1xuICAgICAgdmFyIHNjcm9sbE9mZnNldFkgPSAoKF93aW5kb3cyID0gd2luZG93KSA9PT0gbnVsbCB8fCBfd2luZG93MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3dpbmRvdzIuc2Nyb2xsWSkgfHwgMDtcbiAgICAgIHZhciBwYWdlWCA9IHggKyBjb29yZGluYXRlICsgc2Nyb2xsT2Zmc2V0WDtcbiAgICAgIHZhciBwYWdlWSA9IHkgKyB0aGlzLm9mZnNldC50b3AgKyBoZWlnaHQgLyAyICsgc2Nyb2xsT2Zmc2V0WTtcbiAgICAgIHRoaXMubW91c2VIYW5kbGVyQ2FsbGJhY2soe1xuICAgICAgICBwYWdlWDogcGFnZVgsXG4gICAgICAgIHBhZ2VZOiBwYWdlWVxuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG59KCk7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiaSIsImxlbmd0aCIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2RlZmluZVByb3BlcnR5Iiwib2JqIiwidmFsdWUiLCJ0IiwiX3RvUHJpbWl0aXZlIiwiciIsImUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJTdHJpbmciLCJOdW1iZXIiLCJBY2Nlc3NpYmlsaXR5TWFuYWdlciIsInNldERldGFpbHMiLCJfcmVmIiwiX3JlZjIiLCJfcmVmJGNvb3JkaW5hdGVMaXN0IiwiY29vcmRpbmF0ZUxpc3QiLCJfcmVmJGNvbnRhaW5lciIsImNvbnRhaW5lciIsIl9yZWYkbGF5b3V0IiwibGF5b3V0IiwiX3JlZiRvZmZzZXQiLCJvZmZzZXQiLCJfcmVmJG1vdXNlSGFuZGxlckNhbGwiLCJtb3VzZUhhbmRsZXJDYWxsYmFjayIsImFjdGl2ZUluZGV4IiwiTWF0aCIsIm1pbiIsIm1heCIsImZvY3VzIiwic3Bvb2ZNb3VzZSIsImtleWJvYXJkRXZlbnQiLCJzZXRJbmRleCIsIm5ld0luZGV4IiwiX3dpbmRvdyIsIl93aW5kb3cyIiwiX3RoaXMkY29udGFpbmVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwieCIsInkiLCJoZWlnaHQiLCJjb29yZGluYXRlIiwic2Nyb2xsT2Zmc2V0WCIsIndpbmRvdyIsInNjcm9sbFgiLCJzY3JvbGxPZmZzZXRZIiwic2Nyb2xsWSIsInBhZ2VYIiwicGFnZVkiLCJ0b3AiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/chart/AccessibilityManager.js\n"); /***/ }), /***/ "(ssr)/./node_modules/recharts/es6/chart/PieChart.js": /*!*****************************************************!*\ !*** ./node_modules/recharts/es6/chart/PieChart.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 */ PieChart: () => (/* binding */ PieChart)\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 _polar_PolarAngleAxis__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../polar/PolarAngleAxis */ \"(ssr)/./node_modules/recharts/es6/polar/PolarAngleAxis.js\");\n/* harmony import */ var _polar_PolarRadiusAxis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../polar/PolarRadiusAxis */ \"(ssr)/./node_modules/recharts/es6/polar/PolarRadiusAxis.js\");\n/* harmony import */ var _util_PolarUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\n/* harmony import */ var _polar_Pie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../polar/Pie */ \"(ssr)/./node_modules/recharts/es6/polar/Pie.js\");\n/**\n * @fileOverview Pie Chart\n */ \n\n\n\n\nvar PieChart = (0,_generateCategoricalChart__WEBPACK_IMPORTED_MODULE_0__.generateCategoricalChart)({\n chartName: \"PieChart\",\n GraphicalChild: _polar_Pie__WEBPACK_IMPORTED_MODULE_1__.Pie,\n validateTooltipEventTypes: [\n \"item\"\n ],\n defaultTooltipEventType: \"item\",\n legendContent: \"children\",\n axisComponents: [\n {\n axisType: \"angleAxis\",\n AxisComp: _polar_PolarAngleAxis__WEBPACK_IMPORTED_MODULE_2__.PolarAngleAxis\n },\n {\n axisType: \"radiusAxis\",\n AxisComp: _polar_PolarRadiusAxis__WEBPACK_IMPORTED_MODULE_3__.PolarRadiusAxis\n }\n ],\n formatAxisMap: _util_PolarUtils__WEBPACK_IMPORTED_MODULE_4__.formatAxisMap,\n defaultProps: {\n layout: \"centric\",\n startAngle: 0,\n endAngle: 360,\n cx: \"50%\",\n cy: \"50%\",\n innerRadius: 0,\n outerRadius: \"80%\"\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L1BpZUNoYXJ0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztDQUVDLEdBQ3FFO0FBQ2I7QUFDRTtBQUNSO0FBQ2hCO0FBQzVCLElBQUlLLFdBQVdMLG1GQUF3QkEsQ0FBQztJQUM3Q00sV0FBVztJQUNYQyxnQkFBZ0JILDJDQUFHQTtJQUNuQkksMkJBQTJCO1FBQUM7S0FBTztJQUNuQ0MseUJBQXlCO0lBQ3pCQyxlQUFlO0lBQ2ZDLGdCQUFnQjtRQUFDO1lBQ2ZDLFVBQVU7WUFDVkMsVUFBVVosaUVBQWNBO1FBQzFCO1FBQUc7WUFDRFcsVUFBVTtZQUNWQyxVQUFVWCxtRUFBZUE7UUFDM0I7S0FBRTtJQUNGQyxlQUFlQSwyREFBYUE7SUFDNUJXLGNBQWM7UUFDWkMsUUFBUTtRQUNSQyxZQUFZO1FBQ1pDLFVBQVU7UUFDVkMsSUFBSTtRQUNKQyxJQUFJO1FBQ0pDLGFBQWE7UUFDYkMsYUFBYTtJQUNmO0FBQ0YsR0FBRyIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2hhcnQvUGllQ2hhcnQuanM/Y2ExZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlT3ZlcnZpZXcgUGllIENoYXJ0XG4gKi9cbmltcG9ydCB7IGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCB9IGZyb20gJy4vZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0JztcbmltcG9ydCB7IFBvbGFyQW5nbGVBeGlzIH0gZnJvbSAnLi4vcG9sYXIvUG9sYXJBbmdsZUF4aXMnO1xuaW1wb3J0IHsgUG9sYXJSYWRpdXNBeGlzIH0gZnJvbSAnLi4vcG9sYXIvUG9sYXJSYWRpdXNBeGlzJztcbmltcG9ydCB7IGZvcm1hdEF4aXNNYXAgfSBmcm9tICcuLi91dGlsL1BvbGFyVXRpbHMnO1xuaW1wb3J0IHsgUGllIH0gZnJvbSAnLi4vcG9sYXIvUGllJztcbmV4cG9ydCB2YXIgUGllQ2hhcnQgPSBnZW5lcmF0ZUNhdGVnb3JpY2FsQ2hhcnQoe1xuICBjaGFydE5hbWU6ICdQaWVDaGFydCcsXG4gIEdyYXBoaWNhbENoaWxkOiBQaWUsXG4gIHZhbGlkYXRlVG9vbHRpcEV2ZW50VHlwZXM6IFsnaXRlbSddLFxuICBkZWZhdWx0VG9vbHRpcEV2ZW50VHlwZTogJ2l0ZW0nLFxuICBsZWdlbmRDb250ZW50OiAnY2hpbGRyZW4nLFxuICBheGlzQ29tcG9uZW50czogW3tcbiAgICBheGlzVHlwZTogJ2FuZ2xlQXhpcycsXG4gICAgQXhpc0NvbXA6IFBvbGFyQW5nbGVBeGlzXG4gIH0sIHtcbiAgICBheGlzVHlwZTogJ3JhZGl1c0F4aXMnLFxuICAgIEF4aXNDb21wOiBQb2xhclJhZGl1c0F4aXNcbiAgfV0sXG4gIGZvcm1hdEF4aXNNYXA6IGZvcm1hdEF4aXNNYXAsXG4gIGRlZmF1bHRQcm9wczoge1xuICAgIGxheW91dDogJ2NlbnRyaWMnLFxuICAgIHN0YXJ0QW5nbGU6IDAsXG4gICAgZW5kQW5nbGU6IDM2MCxcbiAgICBjeDogJzUwJScsXG4gICAgY3k6ICc1MCUnLFxuICAgIGlubmVyUmFkaXVzOiAwLFxuICAgIG91dGVyUmFkaXVzOiAnODAlJ1xuICB9XG59KTsiXSwibmFtZXMiOlsiZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0IiwiUG9sYXJBbmdsZUF4aXMiLCJQb2xhclJhZGl1c0F4aXMiLCJmb3JtYXRBeGlzTWFwIiwiUGllIiwiUGllQ2hhcnQiLCJjaGFydE5hbWUiLCJHcmFwaGljYWxDaGlsZCIsInZhbGlkYXRlVG9vbHRpcEV2ZW50VHlwZXMiLCJkZWZhdWx0VG9vbHRpcEV2ZW50VHlwZSIsImxlZ2VuZENvbnRlbnQiLCJheGlzQ29tcG9uZW50cyIsImF4aXNUeXBlIiwiQXhpc0NvbXAiLCJkZWZhdWx0UHJvcHMiLCJsYXlvdXQiLCJzdGFydEFuZ2xlIiwiZW5kQW5nbGUiLCJjeCIsImN5IiwiaW5uZXJSYWRpdXMiLCJvdXRlclJhZGl1cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/chart/PieChart.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/future/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 \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 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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Z0JBQ25CZ1MsY0FBY25hO2dCQUNkdEMsZ0JBQWdCc0Y7Z0JBQ2hCckYsY0FBY3NGO1lBQ2hCO1FBQ0Y7UUFDQSxPQUFPO0lBQ1Q7SUFDQXBNLGdCQUFnQjhSLHlCQUF5QixtQkFBbUIsU0FBVXFTLE1BQU0sRUFBRXJuQixLQUFLLEVBQUVwQyxHQUFHO1FBQ3RGLElBQUkwcEI7UUFDSixJQUFLLFdBQVcsR0FBRXpqQixxREFBY0EsQ0FBQ3dqQixTQUFTO1lBQ3hDQyxNQUFNLFdBQVcsR0FBRTFqQixtREFBWUEsQ0FBQ3lqQixRQUFRcm5CO1FBQzFDLE9BQU8sSUFBSWdFLHdEQUFVQSxDQUFDcWpCLFNBQVM7WUFDN0JDLE1BQU1ELE9BQU9ybkI7UUFDZixPQUFPO1lBQ0xzbkIsTUFBTSxXQUFXLEdBQUU1akIsMERBQW1CLENBQUNpQiw0Q0FBR0EsRUFBRTNFO1FBQzlDO1FBQ0EsT0FBTyxXQUFXLEdBQUUwRCwwREFBbUIsQ0FBQ2Msb0RBQUtBLEVBQUU7WUFDN0N3VSxXQUFXO1lBQ1hwYixLQUFLQTtRQUNQLEdBQUcwcEI7SUFDTDtJQUNBLElBQUlDLG1CQUFtQixXQUFXLEdBQUV6akIsaURBQVVBLENBQUMsU0FBU3lqQixpQkFBaUJ2bkIsS0FBSyxFQUFFMmxCLEdBQUc7UUFDakYsT0FBTyxXQUFXLEdBQUVqaUIsMERBQW1CLENBQUNzUix5QkFBeUI3WCxTQUFTLENBQUMsR0FBRzZDLE9BQU87WUFDbkYybEIsS0FBS0E7UUFDUDtJQUNGO0lBQ0E0QixpQkFBaUJsVSxXQUFXLEdBQUcyQix3QkFBd0IzQixXQUFXO0lBQ2xFLE9BQU9rVTtBQUNULEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L2dlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydC5qcz9mMjBjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfZXhjbHVkZWQgPSBbXCJpdGVtXCJdLFxuICBfZXhjbHVkZWQyID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJ3aWR0aFwiLCBcImhlaWdodFwiLCBcInN0eWxlXCIsIFwiY29tcGFjdFwiLCBcInRpdGxlXCIsIFwiZGVzY1wiXTtcbmZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7IHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07IGlmIChudWxsICE9IHQpIHsgdmFyIGUsIG4sIGksIHUsIGEgPSBbXSwgZiA9ICEwLCBvID0gITE7IHRyeSB7IGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHsgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuOyBmID0gITE7IH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTsgfSBjYXRjaCAocikgeyBvID0gITAsIG4gPSByOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47IH0gZmluYWxseSB7IGlmIChvKSB0aHJvdyBuOyB9IH0gcmV0dXJuIGE7IH0gfVxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KGFycik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCwgY2xvbmVFbGVtZW50LCBpc1ZhbGlkRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc05pbCBmcm9tICdsb2Rhc2gvaXNOaWwnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHJhbmdlIGZyb20gJ2xvZGFzaC9yYW5nZSc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHNvcnRCeSBmcm9tICdsb2Rhc2gvc29ydEJ5JztcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gvdGhyb3R0bGUnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5cbmltcG9ydCBpbnZhcmlhbnQgZnJvbSAndGlueS1pbnZhcmlhbnQnO1xuaW1wb3J0IHsgU3VyZmFjZSB9IGZyb20gJy4uL2NvbnRhaW5lci9TdXJmYWNlJztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vY29udGFpbmVyL0xheWVyJztcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICcuLi9jb21wb25lbnQvVG9vbHRpcCc7XG5pbXBvcnQgeyBMZWdlbmQgfSBmcm9tICcuLi9jb21wb25lbnQvTGVnZW5kJztcbmltcG9ydCB7IERvdCB9IGZyb20gJy4uL3NoYXBlL0RvdCc7XG5pbXBvcnQgeyBpc0luUmVjdGFuZ2xlIH0gZnJvbSAnLi4vc2hhcGUvUmVjdGFuZ2xlJztcbmltcG9ydCB7IGZpbHRlclByb3BzLCBmaW5kQWxsQnlUeXBlLCBmaW5kQ2hpbGRCeVR5cGUsIGdldERpc3BsYXlOYW1lLCBnZXRSZWFjdEV2ZW50QnlUeXBlLCBpc0NoaWxkcmVuRXF1YWwsIHBhcnNlQ2hpbGRJbmRleCwgcmVuZGVyQnlPcmRlciwgdmFsaWRhdGVXaWR0aEhlaWdodCB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBCcnVzaCB9IGZyb20gJy4uL2NhcnRlc2lhbi9CcnVzaCc7XG5pbXBvcnQgeyBnZXRPZmZzZXQgfSBmcm9tICcuLi91dGlsL0RPTVV0aWxzJztcbmltcG9ydCB7IGZpbmRFbnRyeUluQXJyYXksIGdldEFueUVsZW1lbnRPZk9iamVjdCwgaGFzRHVwbGljYXRlLCBpc051bWJlciwgdW5pcXVlSWQgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBhcHBlbmRPZmZzZXRPZkxlZ2VuZCwgY2FsY3VsYXRlQWN0aXZlVGlja0luZGV4LCBjb21iaW5lRXZlbnRIYW5kbGVycywgZ2V0QmFuZFNpemVPZkF4aXMsIGdldEJhclBvc2l0aW9uLCBnZXRCYXJTaXplTGlzdCwgZ2V0RG9tYWluT2ZEYXRhQnlLZXksIGdldERvbWFpbk9mSXRlbXNXaXRoU2FtZUF4aXMsIGdldERvbWFpbk9mU3RhY2tHcm91cHMsIGdldExlZ2VuZFByb3BzLCBnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtLCBnZXRTdGFja2VkRGF0YU9mSXRlbSwgZ2V0U3RhY2tHcm91cHNCeUF4aXNJZCwgZ2V0VGlja3NPZkF4aXMsIGdldFRvb2x0aXBJdGVtLCBpc0NhdGVnb3JpY2FsQXhpcywgcGFyc2VEb21haW5PZkNhdGVnb3J5QXhpcywgcGFyc2VFcnJvckJhcnNPZkF4aXMsIHBhcnNlU3BlY2lmaWVkRG9tYWluIH0gZnJvbSAnLi4vdXRpbC9DaGFydFV0aWxzJztcbmltcG9ydCB7IGRldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluIH0gZnJvbSAnLi4vdXRpbC9EZXRlY3RSZWZlcmVuY2VFbGVtZW50c0RvbWFpbic7XG5pbXBvcnQgeyBpblJhbmdlT2ZTZWN0b3IsIHBvbGFyVG9DYXJ0ZXNpYW4gfSBmcm9tICcuLi91dGlsL1BvbGFyVXRpbHMnO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsIH0gZnJvbSAnLi4vdXRpbC9TaGFsbG93RXF1YWwnO1xuaW1wb3J0IHsgZXZlbnRDZW50ZXIsIFNZTkNfRVZFTlQgfSBmcm9tICcuLi91dGlsL0V2ZW50cyc7XG5pbXBvcnQgeyBhZGFwdEV2ZW50SGFuZGxlcnMgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlNYW5hZ2VyIH0gZnJvbSAnLi9BY2Nlc3NpYmlsaXR5TWFuYWdlcic7XG5pbXBvcnQgeyBpc0RvbWFpblNwZWNpZmllZEJ5VXNlciB9IGZyb20gJy4uL3V0aWwvaXNEb21haW5TcGVjaWZpZWRCeVVzZXInO1xuaW1wb3J0IHsgZ2V0QWN0aXZlU2hhcGVJbmRleEZvclRvb2x0aXAsIGlzRnVubmVsLCBpc1BpZSwgaXNTY2F0dGVyIH0gZnJvbSAnLi4vdXRpbC9BY3RpdmVTaGFwZVV0aWxzJztcbmltcG9ydCB7IEN1cnNvciB9IGZyb20gJy4uL2NvbXBvbmVudC9DdXJzb3InO1xuaW1wb3J0IHsgQ2hhcnRMYXlvdXRDb250ZXh0UHJvdmlkZXIgfSBmcm9tICcuLi9jb250ZXh0L2NoYXJ0TGF5b3V0Q29udGV4dCc7XG52YXIgT1JJRU5UX01BUCA9IHtcbiAgeEF4aXM6IFsnYm90dG9tJywgJ3RvcCddLFxuICB5QXhpczogWydsZWZ0JywgJ3JpZ2h0J11cbn07XG52YXIgRlVMTF9XSURUSF9BTkRfSEVJR0hUID0ge1xuICB3aWR0aDogJzEwMCUnLFxuICBoZWlnaHQ6ICcxMDAlJ1xufTtcbnZhciBvcmlnaW5Db29yZGluYXRlID0ge1xuICB4OiAwLFxuICB5OiAwXG59O1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGFzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQuXG4gKlxuICogV2h5PyBnZW5lcmF0ZUNhdGVnb3JpY2FsQ2hhcnQgZG9lcyBub3QgcmVuZGVyIGB7Y2hpbGRyZW59YCBkaXJlY3RseTtcbiAqIGluc3RlYWQgaXQgcGFzc2VzIHRoZW0gdGhyb3VnaCBgcmVuZGVyQnlPcmRlcmAgZnVuY3Rpb24gd2hpY2ggcmVhZHMgdGhlaXIgaGFuZGxlcnMuXG4gKlxuICogU28sIHRoaXMgaXMgYSBoYW5kbGVyIHRoYXQgZG9lcyBub3RoaW5nLlxuICogT25jZSB3ZSBnZXQgcmlkIG9mIGByZW5kZXJCeU9yZGVyYCBhbmQgc3dpdGNoIHRvIEpTWCBvbmx5LCB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGlzIGhhbmRsZXIgdG9vLlxuICpcbiAqIEBwYXJhbSB7SlNYfSBlbGVtZW50IGFzIGlzIGluIEpTWFxuICogQHJldHVybnMge0pTWH0gdGhlIHNhbWUgZWxlbWVudFxuICovXG5mdW5jdGlvbiByZW5kZXJBc0lzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG52YXIgY2FsY3VsYXRlVG9vbHRpcFBvcyA9IGZ1bmN0aW9uIGNhbGN1bGF0ZVRvb2x0aXBQb3MocmFuZ2VPYmosIGxheW91dCkge1xuICBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICByZXR1cm4gcmFuZ2VPYmoueDtcbiAgfVxuICBpZiAobGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgcmV0dXJuIHJhbmdlT2JqLnk7XG4gIH1cbiAgaWYgKGxheW91dCA9PT0gJ2NlbnRyaWMnKSB7XG4gICAgcmV0dXJuIHJhbmdlT2JqLmFuZ2xlO1xuICB9XG4gIHJldHVybiByYW5nZU9iai5yYWRpdXM7XG59O1xudmFyIGdldEFjdGl2ZUNvb3JkaW5hdGUgPSBmdW5jdGlvbiBnZXRBY3RpdmVDb29yZGluYXRlKGxheW91dCwgdG9vbHRpcFRpY2tzLCBhY3RpdmVJbmRleCwgcmFuZ2VPYmopIHtcbiAgdmFyIGVudHJ5ID0gdG9vbHRpcFRpY2tzLmZpbmQoZnVuY3Rpb24gKHRpY2spIHtcbiAgICByZXR1cm4gdGljayAmJiB0aWNrLmluZGV4ID09PSBhY3RpdmVJbmRleDtcbiAgfSk7XG4gIGlmIChlbnRyeSkge1xuICAgIGlmIChsYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogZW50cnkuY29vcmRpbmF0ZSxcbiAgICAgICAgeTogcmFuZ2VPYmoueVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogcmFuZ2VPYmoueCxcbiAgICAgICAgeTogZW50cnkuY29vcmRpbmF0ZVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGxheW91dCA9PT0gJ2NlbnRyaWMnKSB7XG4gICAgICB2YXIgX2FuZ2xlID0gZW50cnkuY29vcmRpbmF0ZTtcbiAgICAgIHZhciBfcmFkaXVzID0gcmFuZ2VPYmoucmFkaXVzO1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByYW5nZU9iaiksIHBvbGFyVG9DYXJ0ZXNpYW4ocmFuZ2VPYmouY3gsIHJhbmdlT2JqLmN5LCBfcmFkaXVzLCBfYW5nbGUpKSwge30sIHtcbiAgICAgICAgYW5nbGU6IF9hbmdsZSxcbiAgICAgICAgcmFkaXVzOiBfcmFkaXVzXG4gICAgICB9KTtcbiAgICB9XG4gICAgdmFyIHJhZGl1cyA9IGVudHJ5LmNvb3JkaW5hdGU7XG4gICAgdmFyIGFuZ2xlID0gcmFuZ2VPYmouYW5nbGU7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByYW5nZU9iaiksIHBvbGFyVG9DYXJ0ZXNpYW4ocmFuZ2VPYmouY3gsIHJhbmdlT2JqLmN5LCByYWRpdXMsIGFuZ2xlKSksIHt9LCB7XG4gICAgICBhbmdsZTogYW5nbGUsXG4gICAgICByYWRpdXM6IHJhZGl1c1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBvcmlnaW5Db29yZGluYXRlO1xufTtcbnZhciBnZXREaXNwbGF5ZWREYXRhID0gZnVuY3Rpb24gZ2V0RGlzcGxheWVkRGF0YShkYXRhLCBfcmVmKSB7XG4gIHZhciBncmFwaGljYWxJdGVtcyA9IF9yZWYuZ3JhcGhpY2FsSXRlbXMsXG4gICAgZGF0YVN0YXJ0SW5kZXggPSBfcmVmLmRhdGFTdGFydEluZGV4LFxuICAgIGRhdGFFbmRJbmRleCA9IF9yZWYuZGF0YUVuZEluZGV4O1xuICB2YXIgaXRlbXNEYXRhID0gKGdyYXBoaWNhbEl0ZW1zICE9PSBudWxsICYmIGdyYXBoaWNhbEl0ZW1zICE9PSB2b2lkIDAgPyBncmFwaGljYWxJdGVtcyA6IFtdKS5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgY2hpbGQpIHtcbiAgICB2YXIgaXRlbURhdGEgPSBjaGlsZC5wcm9wcy5kYXRhO1xuICAgIGlmIChpdGVtRGF0YSAmJiBpdGVtRGF0YS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlc3VsdCksIF90b0NvbnN1bWFibGVBcnJheShpdGVtRGF0YSkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCBbXSk7XG4gIGlmIChpdGVtc0RhdGEubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBpdGVtc0RhdGE7XG4gIH1cbiAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggJiYgaXNOdW1iZXIoZGF0YVN0YXJ0SW5kZXgpICYmIGlzTnVtYmVyKGRhdGFFbmRJbmRleCkpIHtcbiAgICByZXR1cm4gZGF0YS5zbGljZShkYXRhU3RhcnRJbmRleCwgZGF0YUVuZEluZGV4ICsgMSk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufTtcbmZ1bmN0aW9uIGdldERlZmF1bHREb21haW5CeUF4aXNUeXBlKGF4aXNUeXBlKSB7XG4gIHJldHVybiBheGlzVHlwZSA9PT0gJ251bWJlcicgPyBbMCwgJ2F1dG8nXSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNvbnRlbnQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0b29sdGlwXG4gKiBAcGFyYW0gIHtPYmplY3R9IHN0YXRlICAgICAgICAgIEN1cnJlbnQgc3RhdGVcbiAqIEBwYXJhbSAge0FycmF5fSAgY2hhcnREYXRhICAgICAgVGhlIGRhdGEgZGVmaW5lZCBpbiBjaGFydFxuICogQHBhcmFtICB7TnVtYmVyfSBhY3RpdmVJbmRleCAgICBBY3RpdmUgaW5kZXggb2YgZGF0YVxuICogQHBhcmFtICB7U3RyaW5nfSBhY3RpdmVMYWJlbCAgICBBY3RpdmUgbGFiZWwgb2YgZGF0YVxuICogQHJldHVybiB7QXJyYXl9ICAgICAgICAgICAgICAgICBUaGUgY29udGVudCBvZiB0b29sdGlwXG4gKi9cbnZhciBnZXRUb29sdGlwQ29udGVudCA9IGZ1bmN0aW9uIGdldFRvb2x0aXBDb250ZW50KHN0YXRlLCBjaGFydERhdGEsIGFjdGl2ZUluZGV4LCBhY3RpdmVMYWJlbCkge1xuICB2YXIgZ3JhcGhpY2FsSXRlbXMgPSBzdGF0ZS5ncmFwaGljYWxJdGVtcyxcbiAgICB0b29sdGlwQXhpcyA9IHN0YXRlLnRvb2x0aXBBeGlzO1xuICB2YXIgZGlzcGxheWVkRGF0YSA9IGdldERpc3BsYXllZERhdGEoY2hhcnREYXRhLCBzdGF0ZSk7XG4gIGlmIChhY3RpdmVJbmRleCA8IDAgfHwgIWdyYXBoaWNhbEl0ZW1zIHx8ICFncmFwaGljYWxJdGVtcy5sZW5ndGggfHwgYWN0aXZlSW5kZXggPj0gZGlzcGxheWVkRGF0YS5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBnZXQgZGF0YSBieSBhY3RpdmVJbmRleCB3aGVuIHRoZSBheGlzIGRvbid0IGFsbG93IGR1cGxpY2F0ZWQgY2F0ZWdvcnlcbiAgcmV0dXJuIGdyYXBoaWNhbEl0ZW1zLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBjaGlsZCkge1xuICAgIHZhciBfY2hpbGQkcHJvcHMkZGF0YTtcbiAgICAvKipcbiAgICAgKiBGaXhlczogaHR0cHM6Ly9naXRodWIuY29tL3JlY2hhcnRzL3JlY2hhcnRzL2lzc3Vlcy8zNjY5XG4gICAgICogRGVmYXVsdGluZyB0byBjaGFydERhdGEgYmVsb3cgdG8gZml4IGFuIGVkZ2UgY2FzZSB3aGVyZSB0aGUgdG9vbHRpcCBkb2VzIG5vdCBpbmNsdWRlIGRhdGEgZnJvbSBhbGwgY2hhcnRzXG4gICAgICogd2hlbiBhIHNlcGFyYXRlIGRhdGFzZXQgaXMgcGFzc2VkIHRvIGNoYXJ0IHByb3AgZGF0YSBhbmQgc3BlY2lmaWVkIG9uIExpbmUvQXJlYS9ldGMgcHJvcCBkYXRhXG4gICAgICovXG4gICAgdmFyIGRhdGEgPSAoX2NoaWxkJHByb3BzJGRhdGEgPSBjaGlsZC5wcm9wcy5kYXRhKSAhPT0gbnVsbCAmJiBfY2hpbGQkcHJvcHMkZGF0YSAhPT0gdm9pZCAwID8gX2NoaWxkJHByb3BzJGRhdGEgOiBjaGFydERhdGE7XG4gICAgaWYgKGRhdGEgJiYgc3RhdGUuZGF0YVN0YXJ0SW5kZXggKyBzdGF0ZS5kYXRhRW5kSW5kZXggIT09IDAgJiZcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcmVjaGFydHMvcmVjaGFydHMvaXNzdWVzLzQ3MTdcbiAgICAvLyBUaGUgZGF0YSBpcyBzbGljZWQgb25seSB3aGVuIHRoZSBhY3RpdmUgaW5kZXggaXMgd2l0aGluIHRoZSBzdGFydC9lbmQgaW5kZXggcmFuZ2UuXG4gICAgc3RhdGUuZGF0YUVuZEluZGV4IC0gc3RhdGUuZGF0YVN0YXJ0SW5kZXggPj0gYWN0aXZlSW5kZXgpIHtcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKHN0YXRlLmRhdGFTdGFydEluZGV4LCBzdGF0ZS5kYXRhRW5kSW5kZXggKyAxKTtcbiAgICB9XG4gICAgdmFyIHBheWxvYWQ7XG4gICAgaWYgKHRvb2x0aXBBeGlzLmRhdGFLZXkgJiYgIXRvb2x0aXBBeGlzLmFsbG93RHVwbGljYXRlZENhdGVnb3J5KSB7XG4gICAgICAvLyBncmFwaGljIGNoaWxkIGhhcyBkYXRhIHByb3BzXG4gICAgICB2YXIgZW50cmllcyA9IGRhdGEgPT09IHVuZGVmaW5lZCA/IGRpc3BsYXllZERhdGEgOiBkYXRhO1xuICAgICAgcGF5bG9hZCA9IGZpbmRFbnRyeUluQXJyYXkoZW50cmllcywgdG9vbHRpcEF4aXMuZGF0YUtleSwgYWN0aXZlTGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXlsb2FkID0gZGF0YSAmJiBkYXRhW2FjdGl2ZUluZGV4XSB8fCBkaXNwbGF5ZWREYXRhW2FjdGl2ZUluZGV4XTtcbiAgICB9XG4gICAgaWYgKCFwYXlsb2FkKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXN1bHQpLCBbZ2V0VG9vbHRpcEl0ZW0oY2hpbGQsIHBheWxvYWQpXSk7XG4gIH0sIFtdKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0b29sdGlwIGRhdGEgYmFzZWQgb24gYSBtb3VzZSBwb3NpdGlvbiAoYXMgYSBwYXJhbWV0ZXIgb3IgaW4gc3RhdGUpXG4gKiBAcGFyYW0gIHtPYmplY3R9IHN0YXRlICAgICBjdXJyZW50IHN0YXRlXG4gKiBAcGFyYW0gIHtBcnJheX0gIGNoYXJ0RGF0YSB0aGUgZGF0YSBkZWZpbmVkIGluIGNoYXJ0XG4gKiBAcGFyYW0gIHtTdHJpbmd9IGxheW91dCAgICAgVGhlIGxheW91dCB0eXBlIG9mIGNoYXJ0XG4gKiBAcGFyYW0gIHtPYmplY3R9IHJhbmdlT2JqICB7IHgsIHkgfSBjb29yZGluYXRlc1xuICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICAgVG9vbHRpcCBkYXRhIGRhdGFcbiAqL1xudmFyIGdldFRvb2x0aXBEYXRhID0gZnVuY3Rpb24gZ2V0VG9vbHRpcERhdGEoc3RhdGUsIGNoYXJ0RGF0YSwgbGF5b3V0LCByYW5nZU9iaikge1xuICB2YXIgcmFuZ2VEYXRhID0gcmFuZ2VPYmogfHwge1xuICAgIHg6IHN0YXRlLmNoYXJ0WCxcbiAgICB5OiBzdGF0ZS5jaGFydFlcbiAgfTtcbiAgdmFyIHBvcyA9IGNhbGN1bGF0ZVRvb2x0aXBQb3MocmFuZ2VEYXRhLCBsYXlvdXQpO1xuICB2YXIgdGlja3MgPSBzdGF0ZS5vcmRlcmVkVG9vbHRpcFRpY2tzLFxuICAgIGF4aXMgPSBzdGF0ZS50b29sdGlwQXhpcyxcbiAgICB0b29sdGlwVGlja3MgPSBzdGF0ZS50b29sdGlwVGlja3M7XG4gIHZhciBhY3RpdmVJbmRleCA9IGNhbGN1bGF0ZUFjdGl2ZVRpY2tJbmRleChwb3MsIHRpY2tzLCB0b29sdGlwVGlja3MsIGF4aXMpO1xuICBpZiAoYWN0aXZlSW5kZXggPj0gMCAmJiB0b29sdGlwVGlja3MpIHtcbiAgICB2YXIgYWN0aXZlTGFiZWwgPSB0b29sdGlwVGlja3NbYWN0aXZlSW5kZXhdICYmIHRvb2x0aXBUaWNrc1thY3RpdmVJbmRleF0udmFsdWU7XG4gICAgdmFyIGFjdGl2ZVBheWxvYWQgPSBnZXRUb29sdGlwQ29udGVudChzdGF0ZSwgY2hhcnREYXRhLCBhY3RpdmVJbmRleCwgYWN0aXZlTGFiZWwpO1xuICAgIHZhciBhY3RpdmVDb29yZGluYXRlID0gZ2V0QWN0aXZlQ29vcmRpbmF0ZShsYXlvdXQsIHRpY2tzLCBhY3RpdmVJbmRleCwgcmFuZ2VEYXRhKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlVG9vbHRpcEluZGV4OiBhY3RpdmVJbmRleCxcbiAgICAgIGFjdGl2ZUxhYmVsOiBhY3RpdmVMYWJlbCxcbiAgICAgIGFjdGl2ZVBheWxvYWQ6IGFjdGl2ZVBheWxvYWQsXG4gICAgICBhY3RpdmVDb29yZGluYXRlOiBhY3RpdmVDb29yZGluYXRlXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBjb25maWd1cmF0aW9uIG9mIGF4aXMgYnkgdGhlIG9wdGlvbnMgb2YgYXhpcyBpbnN0YW5jZVxuICogQHBhcmFtICB7T2JqZWN0fSBwcm9wcyAgICAgICAgIExhdGVzdCBwcm9wc1xuICogQHBhcmFtIHtBcnJheX0gIGF4ZXMgICAgICAgICAgIFRoZSBpbnN0YW5jZSBvZiBheGVzXG4gKiBAcGFyYW0gIHtBcnJheX0gZ3JhcGhpY2FsSXRlbXMgVGhlIGluc3RhbmNlcyBvZiBpdGVtXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGF4aXNUeXBlICAgICAgVGhlIHR5cGUgb2YgYXhpcywgeEF4aXMgLSB4LWF4aXMsIHlBeGlzIC0geS1heGlzXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGF4aXNJZEtleSAgICAgVGhlIHVuaXF1ZSBpZCBvZiBhbiBheGlzXG4gKiBAcGFyYW0gIHtPYmplY3R9IHN0YWNrR3JvdXBzICAgVGhlIGl0ZW1zIGdyb3VwZWQgYnkgYXhpc0lkIGFuZCBzdGFja0lkXG4gKiBAcGFyYW0ge051bWJlcn0gZGF0YVN0YXJ0SW5kZXggVGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBkYXRhIHNlcmllcyB3aGVuIGEgYnJ1c2ggaXMgYXBwbGllZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRhdGFFbmRJbmRleCAgIFRoZSBlbmQgaW5kZXggb2YgdGhlIGRhdGEgc2VyaWVzIHdoZW4gYSBicnVzaCBpcyBhcHBsaWVkXG4gKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgdmFyIGdldEF4aXNNYXBCeUF4ZXMgPSBmdW5jdGlvbiBnZXRBeGlzTWFwQnlBeGVzKHByb3BzLCBfcmVmMikge1xuICB2YXIgYXhlcyA9IF9yZWYyLmF4ZXMsXG4gICAgZ3JhcGhpY2FsSXRlbXMgPSBfcmVmMi5ncmFwaGljYWxJdGVtcyxcbiAgICBheGlzVHlwZSA9IF9yZWYyLmF4aXNUeXBlLFxuICAgIGF4aXNJZEtleSA9IF9yZWYyLmF4aXNJZEtleSxcbiAgICBzdGFja0dyb3VwcyA9IF9yZWYyLnN0YWNrR3JvdXBzLFxuICAgIGRhdGFTdGFydEluZGV4ID0gX3JlZjIuZGF0YVN0YXJ0SW5kZXgsXG4gICAgZGF0YUVuZEluZGV4ID0gX3JlZjIuZGF0YUVuZEluZGV4O1xuICB2YXIgbGF5b3V0ID0gcHJvcHMubGF5b3V0LFxuICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgc3RhY2tPZmZzZXQgPSBwcm9wcy5zdGFja09mZnNldDtcbiAgdmFyIGlzQ2F0ZWdvcmljYWwgPSBpc0NhdGVnb3JpY2FsQXhpcyhsYXlvdXQsIGF4aXNUeXBlKTtcblxuICAvLyBFbGltaW5hdGUgZHVwbGljYXRlZCBheGVzXG4gIHJldHVybiBheGVzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBjaGlsZCkge1xuICAgIHZhciBfY2hpbGRQcm9wcyRkb21haW4yO1xuICAgIHZhciBjaGlsZFByb3BzID0gY2hpbGQudHlwZS5kZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY2hpbGQudHlwZS5kZWZhdWx0UHJvcHMpLCBjaGlsZC5wcm9wcykgOiBjaGlsZC5wcm9wcztcbiAgICB2YXIgdHlwZSA9IGNoaWxkUHJvcHMudHlwZSxcbiAgICAgIGRhdGFLZXkgPSBjaGlsZFByb3BzLmRhdGFLZXksXG4gICAgICBhbGxvd0RhdGFPdmVyZmxvdyA9IGNoaWxkUHJvcHMuYWxsb3dEYXRhT3ZlcmZsb3csXG4gICAgICBhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSA9IGNoaWxkUHJvcHMuYWxsb3dEdXBsaWNhdGVkQ2F0ZWdvcnksXG4gICAgICBzY2FsZSA9IGNoaWxkUHJvcHMuc2NhbGUsXG4gICAgICB0aWNrcyA9IGNoaWxkUHJvcHMudGlja3MsXG4gICAgICBpbmNsdWRlSGlkZGVuID0gY2hpbGRQcm9wcy5pbmNsdWRlSGlkZGVuO1xuICAgIHZhciBheGlzSWQgPSBjaGlsZFByb3BzW2F4aXNJZEtleV07XG4gICAgaWYgKHJlc3VsdFtheGlzSWRdKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICB2YXIgZGlzcGxheWVkRGF0YSA9IGdldERpc3BsYXllZERhdGEocHJvcHMuZGF0YSwge1xuICAgICAgZ3JhcGhpY2FsSXRlbXM6IGdyYXBoaWNhbEl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICB2YXIgX2RlZmF1bHRQcm9wcztcbiAgICAgICAgdmFyIGl0ZW1BeGlzSWQgPSBheGlzSWRLZXkgaW4gaXRlbS5wcm9wcyA/IGl0ZW0ucHJvcHNbYXhpc0lkS2V5XSA6IChfZGVmYXVsdFByb3BzID0gaXRlbS50eXBlLmRlZmF1bHRQcm9wcykgPT09IG51bGwgfHwgX2RlZmF1bHRQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRQcm9wc1theGlzSWRLZXldO1xuICAgICAgICByZXR1cm4gaXRlbUF4aXNJZCA9PT0gYXhpc0lkO1xuICAgICAgfSksXG4gICAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleFxuICAgIH0pO1xuICAgIHZhciBsZW4gPSBkaXNwbGF5ZWREYXRhLmxlbmd0aDtcbiAgICB2YXIgZG9tYWluLCBkdXBsaWNhdGVEb21haW4sIGNhdGVnb3JpY2FsRG9tYWluO1xuXG4gICAgLypcbiAgICAgKiBUaGlzIGlzIGEgaGFjayB0byBzaG9ydC1jaXJjdWl0IHRoZSBkb21haW4gY3JlYXRpb24gaGVyZSB0byBlbmhhbmNlIHBlcmZvcm1hbmNlLlxuICAgICAqIFVzdWFsbHksIHRoZSBkYXRhIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBkb21haW4sIGJ1dCB3aGVuIHRoZSB1c2VyIHNwZWNpZmllc1xuICAgICAqIGEgZG9tYWluIHVwZnJvbnQgKHZpYSBwcm9wcyksIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBkb21haW4gc3RhcnQgYW5kIGVuZCxcbiAgICAgKiB3aGljaCBpcyB2ZXJ5IGV4cGVuc2l2ZSBmb3IgYSBsYXJnZXIgYW1vdW50IG9mIGRhdGEuXG4gICAgICogVGhlIG9ubHkgdGhpbmcgdGhhdCB3b3VsZCBwcm9oaWJpdCBzaG9ydC1jaXJjdWl0aW5nIGlzIHdoZW4gdGhlIHVzZXIgZG9lc24ndCBhbGxvdyBkYXRhIG92ZXJmbG93LFxuICAgICAqIGJlY2F1c2UgdGhlIGF4aXMgaXMgc3VwcG9zZWQgdG8gaWdub3JlIHRoZSBzcGVjaWZpZWQgZG9tYWluIHRoYXQgd2F5LlxuICAgICAqL1xuICAgIGlmIChpc0RvbWFpblNwZWNpZmllZEJ5VXNlcihjaGlsZFByb3BzLmRvbWFpbiwgYWxsb3dEYXRhT3ZlcmZsb3csIHR5cGUpKSB7XG4gICAgICBkb21haW4gPSBwYXJzZVNwZWNpZmllZERvbWFpbihjaGlsZFByb3BzLmRvbWFpbiwgbnVsbCwgYWxsb3dEYXRhT3ZlcmZsb3cpO1xuICAgICAgLyogVGhlIGNoYXJ0IGNhbiBiZSBjYXRlZ29yaWNhbCBhbmQgaGF2ZSB0aGUgZG9tYWluIHNwZWNpZmllZCBpbiBudW1iZXJzXG4gICAgICAgKiB3ZSBzdGlsbCBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgY2F0ZWdvcmljYWwgZG9tYWluXG4gICAgICAgKiBUT0RPOiByZWZhY3RvciB0aGlzIG1vcmVcbiAgICAgICAqL1xuICAgICAgaWYgKGlzQ2F0ZWdvcmljYWwgJiYgKHR5cGUgPT09ICdudW1iZXInIHx8IHNjYWxlICE9PSAnYXV0bycpKSB7XG4gICAgICAgIGNhdGVnb3JpY2FsRG9tYWluID0gZ2V0RG9tYWluT2ZEYXRhQnlLZXkoZGlzcGxheWVkRGF0YSwgZGF0YUtleSwgJ2NhdGVnb3J5Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGRvbWFpbiBpcyBkZWZhdWx0ZWQgd2UgbmVlZCB0aGlzIGZvciBgb3JpZ2luYWxEb21haW5gIGFzIHdlbGxcbiAgICB2YXIgZGVmYXVsdERvbWFpbiA9IGdldERlZmF1bHREb21haW5CeUF4aXNUeXBlKHR5cGUpO1xuXG4gICAgLy8gd2UgZGlkbid0IGNyZWF0ZSB0aGUgZG9tYWluIGZyb20gdXNlcidzIHByb3BzIGFib3ZlLCBzbyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBpdFxuICAgIGlmICghZG9tYWluIHx8IGRvbWFpbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHZhciBfY2hpbGRQcm9wcyRkb21haW47XG4gICAgICB2YXIgY2hpbGREb21haW4gPSAoX2NoaWxkUHJvcHMkZG9tYWluID0gY2hpbGRQcm9wcy5kb21haW4pICE9PSBudWxsICYmIF9jaGlsZFByb3BzJGRvbWFpbiAhPT0gdm9pZCAwID8gX2NoaWxkUHJvcHMkZG9tYWluIDogZGVmYXVsdERvbWFpbjtcbiAgICAgIGlmIChkYXRhS2V5KSB7XG4gICAgICAgIC8vIGhhcyBkYXRhS2V5IGluIDxBeGlzIC8+XG4gICAgICAgIGRvbWFpbiA9IGdldERvbWFpbk9mRGF0YUJ5S2V5KGRpc3BsYXllZERhdGEsIGRhdGFLZXksIHR5cGUpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ2NhdGVnb3J5JyAmJiBpc0NhdGVnb3JpY2FsKSB7XG4gICAgICAgICAgLy8gdGhlIGZpZWxkIHR5cGUgaXMgY2F0ZWdvcnkgZGF0YSBhbmQgdGhpcyBheGlzIGlzIGNhdGVnb3JpY2FsIGF4aXNcbiAgICAgICAgICB2YXIgZHVwbGljYXRlID0gaGFzRHVwbGljYXRlKGRvbWFpbik7XG4gICAgICAgICAgaWYgKGFsbG93RHVwbGljYXRlZENhdGVnb3J5ICYmIGR1cGxpY2F0ZSkge1xuICAgICAgICAgICAgZHVwbGljYXRlRG9tYWluID0gZG9tYWluO1xuICAgICAgICAgICAgLy8gV2hlbiBjYXRlZ29yeSBheGlzIGhhcyBkdXBsaWNhdGVkIHRleHQsIHNlcmlhbCBudW1iZXJzIGFyZSB1c2VkIHRvIGdlbmVyYXRlIHNjYWxlXG4gICAgICAgICAgICBkb21haW4gPSByYW5nZSgwLCBsZW4pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWFsbG93RHVwbGljYXRlZENhdGVnb3J5KSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgZHVwbGljYXRlZCBjYXRlZ29yeVxuICAgICAgICAgICAgZG9tYWluID0gcGFyc2VEb21haW5PZkNhdGVnb3J5QXhpcyhjaGlsZERvbWFpbiwgZG9tYWluLCBjaGlsZCkucmVkdWNlKGZ1bmN0aW9uIChmaW5hbERvbWFpbiwgZW50cnkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZpbmFsRG9tYWluLmluZGV4T2YoZW50cnkpID49IDAgPyBmaW5hbERvbWFpbiA6IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoZmluYWxEb21haW4pLCBbZW50cnldKTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NhdGVnb3J5Jykge1xuICAgICAgICAgIC8vIHRoZSBmaWVsZCB0eXBlIGlzIGNhdGVnb3J5IGRhdGEgYW5kIHRoaXMgYXhpcyBpcyBudW1lcmljYWwgYXhpc1xuICAgICAgICAgIGlmICghYWxsb3dEdXBsaWNhdGVkQ2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIGRvbWFpbiA9IHBhcnNlRG9tYWluT2ZDYXRlZ29yeUF4aXMoY2hpbGREb21haW4sIGRvbWFpbiwgY2hpbGQpLnJlZHVjZShmdW5jdGlvbiAoZmluYWxEb21haW4sIGVudHJ5KSB7XG4gICAgICAgICAgICAgIHJldHVybiBmaW5hbERvbWFpbi5pbmRleE9mKGVudHJ5KSA+PSAwIHx8IGVudHJ5ID09PSAnJyB8fCBpc05pbChlbnRyeSkgPyBmaW5hbERvbWFpbiA6IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoZmluYWxEb21haW4pLCBbZW50cnldKTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZWxpbWluYXRlIHVuZGVmaW5lZCBvciBudWxsIG9yIGVtcHR5IHN0cmluZ1xuICAgICAgICAgICAgZG9tYWluID0gZG9tYWluLmZpbHRlcihmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5ICE9PSAnJyAmJiAhaXNOaWwoZW50cnkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgLy8gdGhlIGZpZWxkIHR5cGUgaXMgbnVtZXJpY2FsXG4gICAgICAgICAgdmFyIGVycm9yQmFyc0RvbWFpbiA9IHBhcnNlRXJyb3JCYXJzT2ZBeGlzKGRpc3BsYXllZERhdGEsIGdyYXBoaWNhbEl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgdmFyIF9kZWZhdWx0UHJvcHMyLCBfZGVmYXVsdFByb3BzMztcbiAgICAgICAgICAgIHZhciBpdGVtQXhpc0lkID0gYXhpc0lkS2V5IGluIGl0ZW0ucHJvcHMgPyBpdGVtLnByb3BzW2F4aXNJZEtleV0gOiAoX2RlZmF1bHRQcm9wczIgPSBpdGVtLnR5cGUuZGVmYXVsdFByb3BzKSA9PT0gbnVsbCB8fCBfZGVmYXVsdFByb3BzMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRQcm9wczJbYXhpc0lkS2V5XTtcbiAgICAgICAgICAgIHZhciBpdGVtSGlkZSA9ICdoaWRlJyBpbiBpdGVtLnByb3BzID8gaXRlbS5wcm9wcy5oaWRlIDogKF9kZWZhdWx0UHJvcHMzID0gaXRlbS50eXBlLmRlZmF1bHRQcm9wcykgPT09IG51bGwgfHwgX2RlZmF1bHRQcm9wczMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0UHJvcHMzLmhpZGU7XG4gICAgICAgICAgICByZXR1cm4gaXRlbUF4aXNJZCA9PT0gYXhpc0lkICYmIChpbmNsdWRlSGlkZGVuIHx8ICFpdGVtSGlkZSk7XG4gICAgICAgICAgfSksIGRhdGFLZXksIGF4aXNUeXBlLCBsYXlvdXQpO1xuICAgICAgICAgIGlmIChlcnJvckJhcnNEb21haW4pIHtcbiAgICAgICAgICAgIGRvbWFpbiA9IGVycm9yQmFyc0RvbWFpbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ2F0ZWdvcmljYWwgJiYgKHR5cGUgPT09ICdudW1iZXInIHx8IHNjYWxlICE9PSAnYXV0bycpKSB7XG4gICAgICAgICAgY2F0ZWdvcmljYWxEb21haW4gPSBnZXREb21haW5PZkRhdGFCeUtleShkaXNwbGF5ZWREYXRhLCBkYXRhS2V5LCAnY2F0ZWdvcnknKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0NhdGVnb3JpY2FsKSB7XG4gICAgICAgIC8vIHRoZSBheGlzIGlzIGEgY2F0ZWdvcmljYWwgYXhpc1xuICAgICAgICBkb21haW4gPSByYW5nZSgwLCBsZW4pO1xuICAgICAgfSBlbHNlIGlmIChzdGFja0dyb3VwcyAmJiBzdGFja0dyb3Vwc1theGlzSWRdICYmIHN0YWNrR3JvdXBzW2F4aXNJZF0uaGFzU3RhY2sgJiYgdHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gd2hlbiBzdGFja09mZnNldCBpcyAnZXhwYW5kJywgdGhlIGRvbWFpbiBtYXkgYmUgY2FsY3VsYXRlZCBhcyBbMCwgMS4wMDAwMDAwMDAwMDJdXG4gICAgICAgIGRvbWFpbiA9IHN0YWNrT2Zmc2V0ID09PSAnZXhwYW5kJyA/IFswLCAxXSA6IGdldERvbWFpbk9mU3RhY2tHcm91cHMoc3RhY2tHcm91cHNbYXhpc0lkXS5zdGFja0dyb3VwcywgZGF0YVN0YXJ0SW5kZXgsIGRhdGFFbmRJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb21haW4gPSBnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzKGRpc3BsYXllZERhdGEsIGdyYXBoaWNhbEl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHZhciBpdGVtQXhpc0lkID0gYXhpc0lkS2V5IGluIGl0ZW0ucHJvcHMgPyBpdGVtLnByb3BzW2F4aXNJZEtleV0gOiBpdGVtLnR5cGUuZGVmYXVsdFByb3BzW2F4aXNJZEtleV07XG4gICAgICAgICAgdmFyIGl0ZW1IaWRlID0gJ2hpZGUnIGluIGl0ZW0ucHJvcHMgPyBpdGVtLnByb3BzLmhpZGUgOiBpdGVtLnR5cGUuZGVmYXVsdFByb3BzLmhpZGU7XG4gICAgICAgICAgcmV0dXJuIGl0ZW1BeGlzSWQgPT09IGF4aXNJZCAmJiAoaW5jbHVkZUhpZGRlbiB8fCAhaXRlbUhpZGUpO1xuICAgICAgICB9KSwgdHlwZSwgbGF5b3V0LCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAvLyBUbyBkZXRlY3Qgd2V0aGVyIHRoZXJlIGlzIGFueSByZWZlcmVuY2UgbGluZXMgd2hvc2UgcHJvcHMgYWx3YXlzU2hvdyBpcyB0cnVlXG4gICAgICAgIGRvbWFpbiA9IGRldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluKGNoaWxkcmVuLCBkb21haW4sIGF4aXNJZCwgYXhpc1R5cGUsIHRpY2tzKTtcbiAgICAgICAgaWYgKGNoaWxkRG9tYWluKSB7XG4gICAgICAgICAgZG9tYWluID0gcGFyc2VTcGVjaWZpZWREb21haW4oY2hpbGREb21haW4sIGRvbWFpbiwgYWxsb3dEYXRhT3ZlcmZsb3cpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjYXRlZ29yeScgJiYgY2hpbGREb21haW4pIHtcbiAgICAgICAgdmFyIGF4aXNEb21haW4gPSBjaGlsZERvbWFpbjtcbiAgICAgICAgdmFyIGlzRG9tYWluVmFsaWQgPSBkb21haW4uZXZlcnkoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgICAgcmV0dXJuIGF4aXNEb21haW4uaW5kZXhPZihlbnRyeSkgPj0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0RvbWFpblZhbGlkKSB7XG4gICAgICAgICAgZG9tYWluID0gYXhpc0RvbWFpbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBheGlzSWQsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY2hpbGRQcm9wcyksIHt9LCB7XG4gICAgICBheGlzVHlwZTogYXhpc1R5cGUsXG4gICAgICBkb21haW46IGRvbWFpbixcbiAgICAgIGNhdGVnb3JpY2FsRG9tYWluOiBjYXRlZ29yaWNhbERvbWFpbixcbiAgICAgIGR1cGxpY2F0ZURvbWFpbjogZHVwbGljYXRlRG9tYWluLFxuICAgICAgb3JpZ2luYWxEb21haW46IChfY2hpbGRQcm9wcyRkb21haW4yID0gY2hpbGRQcm9wcy5kb21haW4pICE9PSBudWxsICYmIF9jaGlsZFByb3BzJGRvbWFpbjIgIT09IHZvaWQgMCA/IF9jaGlsZFByb3BzJGRvbWFpbjIgOiBkZWZhdWx0RG9tYWluLFxuICAgICAgaXNDYXRlZ29yaWNhbDogaXNDYXRlZ29yaWNhbCxcbiAgICAgIGxheW91dDogbGF5b3V0XG4gICAgfSkpKTtcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYXhpcyBieSB0aGUgb3B0aW9ucyBvZiBpdGVtLFxuICogdGhpcyBraW5kIG9mIGF4aXMgZG9lcyBub3QgZGlzcGxheSBpbiBjaGFydFxuICogQHBhcmFtICB7T2JqZWN0fSBwcm9wcyAgICAgICAgIExhdGVzdCBwcm9wc1xuICogQHBhcmFtICB7QXJyYXl9IGdyYXBoaWNhbEl0ZW1zIFRoZSBpbnN0YW5jZXMgb2YgaXRlbVxuICogQHBhcmFtICB7UmVhY3RFbGVtZW50fSBBeGlzICAgIEF4aXMgQ29tcG9uZW50XG4gKiBAcGFyYW0gIHtTdHJpbmd9IGF4aXNUeXBlICAgICAgVGhlIHR5cGUgb2YgYXhpcywgeEF4aXMgLSB4LWF4aXMsIHlBeGlzIC0geS1heGlzXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGF4aXNJZEtleSAgICAgVGhlIHVuaXF1ZSBpZCBvZiBhbiBheGlzXG4gKiBAcGFyYW0gIHtPYmplY3R9IHN0YWNrR3JvdXBzICAgVGhlIGl0ZW1zIGdyb3VwZWQgYnkgYXhpc0lkIGFuZCBzdGFja0lkXG4gKiBAcGFyYW0ge051bWJlcn0gZGF0YVN0YXJ0SW5kZXggVGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBkYXRhIHNlcmllcyB3aGVuIGEgYnJ1c2ggaXMgYXBwbGllZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRhdGFFbmRJbmRleCAgIFRoZSBlbmQgaW5kZXggb2YgdGhlIGRhdGEgc2VyaWVzIHdoZW4gYSBicnVzaCBpcyBhcHBsaWVkXG4gKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvblxuICovXG52YXIgZ2V0QXhpc01hcEJ5SXRlbXMgPSBmdW5jdGlvbiBnZXRBeGlzTWFwQnlJdGVtcyhwcm9wcywgX3JlZjMpIHtcbiAgdmFyIGdyYXBoaWNhbEl0ZW1zID0gX3JlZjMuZ3JhcGhpY2FsSXRlbXMsXG4gICAgQXhpcyA9IF9yZWYzLkF4aXMsXG4gICAgYXhpc1R5cGUgPSBfcmVmMy5heGlzVHlwZSxcbiAgICBheGlzSWRLZXkgPSBfcmVmMy5heGlzSWRLZXksXG4gICAgc3RhY2tHcm91cHMgPSBfcmVmMy5zdGFja0dyb3VwcyxcbiAgICBkYXRhU3RhcnRJbmRleCA9IF9yZWYzLmRhdGFTdGFydEluZGV4LFxuICAgIGRhdGFFbmRJbmRleCA9IF9yZWYzLmRhdGFFbmRJbmRleDtcbiAgdmFyIGxheW91dCA9IHByb3BzLmxheW91dCxcbiAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICB2YXIgZGlzcGxheWVkRGF0YSA9IGdldERpc3BsYXllZERhdGEocHJvcHMuZGF0YSwge1xuICAgIGdyYXBoaWNhbEl0ZW1zOiBncmFwaGljYWxJdGVtcyxcbiAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgfSk7XG4gIHZhciBsZW4gPSBkaXNwbGF5ZWREYXRhLmxlbmd0aDtcbiAgdmFyIGlzQ2F0ZWdvcmljYWwgPSBpc0NhdGVnb3JpY2FsQXhpcyhsYXlvdXQsIGF4aXNUeXBlKTtcbiAgdmFyIGluZGV4ID0gLTE7XG5cbiAgLy8gVGhlIGRlZmF1bHQgdHlwZSBvZiB4LWF4aXMgaXMgY2F0ZWdvcnkgYXhpcyxcbiAgLy8gVGhlIGRlZmF1bHQgY29udGVudHMgb2YgeC1heGlzIGlzIHRoZSBzZXJpYWwgbnVtYmVycyBvZiBkYXRhXG4gIC8vIFRoZSBkZWZhdWx0IHR5cGUgb2YgeS1heGlzIGlzIG51bWJlciBheGlzXG4gIC8vIFRoZSBkZWZhdWx0IGNvbnRlbnRzIG9mIHktYXhpcyBpcyB0aGUgZG9tYWluIG9mIGRhdGFcbiAgcmV0dXJuIGdyYXBoaWNhbEl0ZW1zLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBjaGlsZCkge1xuICAgIHZhciBjaGlsZFByb3BzID0gY2hpbGQudHlwZS5kZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY2hpbGQudHlwZS5kZWZhdWx0UHJvcHMpLCBjaGlsZC5wcm9wcykgOiBjaGlsZC5wcm9wcztcbiAgICB2YXIgYXhpc0lkID0gY2hpbGRQcm9wc1theGlzSWRLZXldO1xuICAgIHZhciBvcmlnaW5hbERvbWFpbiA9IGdldERlZmF1bHREb21haW5CeUF4aXNUeXBlKCdudW1iZXInKTtcbiAgICBpZiAoIXJlc3VsdFtheGlzSWRdKSB7XG4gICAgICBpbmRleCsrO1xuICAgICAgdmFyIGRvbWFpbjtcbiAgICAgIGlmIChpc0NhdGVnb3JpY2FsKSB7XG4gICAgICAgIGRvbWFpbiA9IHJhbmdlKDAsIGxlbik7XG4gICAgICB9IGVsc2UgaWYgKHN0YWNrR3JvdXBzICYmIHN0YWNrR3JvdXBzW2F4aXNJZF0gJiYgc3RhY2tHcm91cHNbYXhpc0lkXS5oYXNTdGFjaykge1xuICAgICAgICBkb21haW4gPSBnZXREb21haW5PZlN0YWNrR3JvdXBzKHN0YWNrR3JvdXBzW2F4aXNJZF0uc3RhY2tHcm91cHMsIGRhdGFTdGFydEluZGV4LCBkYXRhRW5kSW5kZXgpO1xuICAgICAgICBkb21haW4gPSBkZXRlY3RSZWZlcmVuY2VFbGVtZW50c0RvbWFpbihjaGlsZHJlbiwgZG9tYWluLCBheGlzSWQsIGF4aXNUeXBlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvbWFpbiA9IHBhcnNlU3BlY2lmaWVkRG9tYWluKG9yaWdpbmFsRG9tYWluLCBnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzKGRpc3BsYXllZERhdGEsIGdyYXBoaWNhbEl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHZhciBfZGVmYXVsdFByb3BzNCwgX2RlZmF1bHRQcm9wczU7XG4gICAgICAgICAgdmFyIGl0ZW1BeGlzSWQgPSBheGlzSWRLZXkgaW4gaXRlbS5wcm9wcyA/IGl0ZW0ucHJvcHNbYXhpc0lkS2V5XSA6IChfZGVmYXVsdFByb3BzNCA9IGl0ZW0udHlwZS5kZWZhdWx0UHJvcHMpID09PSBudWxsIHx8IF9kZWZhdWx0UHJvcHM0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdFByb3BzNFtheGlzSWRLZXldO1xuICAgICAgICAgIHZhciBpdGVtSGlkZSA9ICdoaWRlJyBpbiBpdGVtLnByb3BzID8gaXRlbS5wcm9wcy5oaWRlIDogKF9kZWZhdWx0UHJvcHM1ID0gaXRlbS50eXBlLmRlZmF1bHRQcm9wcykgPT09IG51bGwgfHwgX2RlZmF1bHRQcm9wczUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0UHJvcHM1LmhpZGU7XG4gICAgICAgICAgcmV0dXJuIGl0ZW1BeGlzSWQgPT09IGF4aXNJZCAmJiAhaXRlbUhpZGU7XG4gICAgICAgIH0pLCAnbnVtYmVyJywgbGF5b3V0KSwgQXhpcy5kZWZhdWx0UHJvcHMuYWxsb3dEYXRhT3ZlcmZsb3cpO1xuICAgICAgICBkb21haW4gPSBkZXRlY3RSZWZlcmVuY2VFbGVtZW50c0RvbWFpbihjaGlsZHJlbiwgZG9tYWluLCBheGlzSWQsIGF4aXNUeXBlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3VsdCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIGF4aXNJZCwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgYXhpc1R5cGU6IGF4aXNUeXBlXG4gICAgICB9LCBBeGlzLmRlZmF1bHRQcm9wcyksIHt9LCB7XG4gICAgICAgIGhpZGU6IHRydWUsXG4gICAgICAgIG9yaWVudGF0aW9uOiBnZXQoT1JJRU5UX01BUCwgXCJcIi5jb25jYXQoYXhpc1R5cGUsIFwiLlwiKS5jb25jYXQoaW5kZXggJSAyKSwgbnVsbCksXG4gICAgICAgIGRvbWFpbjogZG9tYWluLFxuICAgICAgICBvcmlnaW5hbERvbWFpbjogb3JpZ2luYWxEb21haW4sXG4gICAgICAgIGlzQ2F0ZWdvcmljYWw6IGlzQ2F0ZWdvcmljYWwsXG4gICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICAgIC8vIHNwZWNpZnkgc2NhbGUgd2hlbiBubyBBeGlzXG4gICAgICAgIC8vIHNjYWxlOiBpc0NhdGVnb3JpY2FsID8gJ2JhbmQnIDogJ2xpbmVhcicsXG4gICAgICB9KSkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7fSk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgY29uZmlndXJhdGlvbiBvZiBhbGwgeC1heGlzIG9yIHktYXhpc1xuICogQHBhcmFtICB7T2JqZWN0fSBwcm9wcyAgICAgICAgICBMYXRlc3QgcHJvcHNcbiAqIEBwYXJhbSAge1N0cmluZ30gYXhpc1R5cGUgICAgICAgVGhlIHR5cGUgb2YgYXhpc1xuICogQHBhcmFtICB7UmVhY3QuQ29tcG9uZW50VHlwZX0gIFtBeGlzQ29tcF0gICAgICBBeGlzIENvbXBvbmVudFxuICogQHBhcmFtICB7QXJyYXl9ICBncmFwaGljYWxJdGVtcyBUaGUgaW5zdGFuY2VzIG9mIGl0ZW1cbiAqIEBwYXJhbSAge09iamVjdH0gc3RhY2tHcm91cHMgICAgVGhlIGl0ZW1zIGdyb3VwZWQgYnkgYXhpc0lkIGFuZCBzdGFja0lkXG4gKiBAcGFyYW0ge051bWJlcn0gZGF0YVN0YXJ0SW5kZXggIFRoZSBzdGFydCBpbmRleCBvZiB0aGUgZGF0YSBzZXJpZXMgd2hlbiBhIGJydXNoIGlzIGFwcGxpZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXRhRW5kSW5kZXggICAgVGhlIGVuZCBpbmRleCBvZiB0aGUgZGF0YSBzZXJpZXMgd2hlbiBhIGJydXNoIGlzIGFwcGxpZWRcbiAqIEByZXR1cm4ge09iamVjdH0gICAgICAgICAgQ29uZmlndXJhdGlvblxuICovXG52YXIgZ2V0QXhpc01hcCA9IGZ1bmN0aW9uIGdldEF4aXNNYXAocHJvcHMsIF9yZWY0KSB7XG4gIHZhciBfcmVmNCRheGlzVHlwZSA9IF9yZWY0LmF4aXNUeXBlLFxuICAgIGF4aXNUeXBlID0gX3JlZjQkYXhpc1R5cGUgPT09IHZvaWQgMCA/ICd4QXhpcycgOiBfcmVmNCRheGlzVHlwZSxcbiAgICBBeGlzQ29tcCA9IF9yZWY0LkF4aXNDb21wLFxuICAgIGdyYXBoaWNhbEl0ZW1zID0gX3JlZjQuZ3JhcGhpY2FsSXRlbXMsXG4gICAgc3RhY2tHcm91cHMgPSBfcmVmNC5zdGFja0dyb3VwcyxcbiAgICBkYXRhU3RhcnRJbmRleCA9IF9yZWY0LmRhdGFTdGFydEluZGV4LFxuICAgIGRhdGFFbmRJbmRleCA9IF9yZWY0LmRhdGFFbmRJbmRleDtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBheGlzSWRLZXkgPSBcIlwiLmNvbmNhdChheGlzVHlwZSwgXCJJZFwiKTtcbiAgLy8gR2V0IGFsbCB0aGUgaW5zdGFuY2Ugb2YgQXhpc1xuICB2YXIgYXhlcyA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIEF4aXNDb21wKTtcbiAgdmFyIGF4aXNNYXAgPSB7fTtcbiAgaWYgKGF4ZXMgJiYgYXhlcy5sZW5ndGgpIHtcbiAgICBheGlzTWFwID0gZ2V0QXhpc01hcEJ5QXhlcyhwcm9wcywge1xuICAgICAgYXhlczogYXhlcyxcbiAgICAgIGdyYXBoaWNhbEl0ZW1zOiBncmFwaGljYWxJdGVtcyxcbiAgICAgIGF4aXNUeXBlOiBheGlzVHlwZSxcbiAgICAgIGF4aXNJZEtleTogYXhpc0lkS2V5LFxuICAgICAgc3RhY2tHcm91cHM6IHN0YWNrR3JvdXBzLFxuICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChncmFwaGljYWxJdGVtcyAmJiBncmFwaGljYWxJdGVtcy5sZW5ndGgpIHtcbiAgICBheGlzTWFwID0gZ2V0QXhpc01hcEJ5SXRlbXMocHJvcHMsIHtcbiAgICAgIEF4aXM6IEF4aXNDb21wLFxuICAgICAgZ3JhcGhpY2FsSXRlbXM6IGdyYXBoaWNhbEl0ZW1zLFxuICAgICAgYXhpc1R5cGU6IGF4aXNUeXBlLFxuICAgICAgYXhpc0lkS2V5OiBheGlzSWRLZXksXG4gICAgICBzdGFja0dyb3Vwczogc3RhY2tHcm91cHMsXG4gICAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBheGlzTWFwO1xufTtcbnZhciB0b29sdGlwVGlja3NHZW5lcmF0b3IgPSBmdW5jdGlvbiB0b29sdGlwVGlja3NHZW5lcmF0b3IoYXhpc01hcCkge1xuICB2YXIgYXhpcyA9IGdldEFueUVsZW1lbnRPZk9iamVjdChheGlzTWFwKTtcbiAgdmFyIHRvb2x0aXBUaWNrcyA9IGdldFRpY2tzT2ZBeGlzKGF4aXMsIGZhbHNlLCB0cnVlKTtcbiAgcmV0dXJuIHtcbiAgICB0b29sdGlwVGlja3M6IHRvb2x0aXBUaWNrcyxcbiAgICBvcmRlcmVkVG9vbHRpcFRpY2tzOiBzb3J0QnkodG9vbHRpcFRpY2tzLCBmdW5jdGlvbiAobykge1xuICAgICAgcmV0dXJuIG8uY29vcmRpbmF0ZTtcbiAgICB9KSxcbiAgICB0b29sdGlwQXhpczogYXhpcyxcbiAgICB0b29sdGlwQXhpc0JhbmRTaXplOiBnZXRCYW5kU2l6ZU9mQXhpcyhheGlzLCB0b29sdGlwVGlja3MpXG4gIH07XG59O1xuXG4vKipcbiAqIFJldHVybnMgZGVmYXVsdCwgcmVzZXQgc3RhdGUgZm9yIHRoZSBjYXRlZ29yaWNhbCBjaGFydC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyBQcm9wcyBvYmplY3QgdG8gdXNlIHdoZW4gY3JlYXRpbmcgdGhlIGRlZmF1bHQgc3RhdGVcbiAqIEByZXR1cm4ge09iamVjdH0gV2hvbGUgbmV3IHN0YXRlXG4gKi9cbmV4cG9ydCB2YXIgY3JlYXRlRGVmYXVsdFN0YXRlID0gZnVuY3Rpb24gY3JlYXRlRGVmYXVsdFN0YXRlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGRlZmF1bHRTaG93VG9vbHRpcCA9IHByb3BzLmRlZmF1bHRTaG93VG9vbHRpcDtcbiAgdmFyIGJydXNoSXRlbSA9IGZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgQnJ1c2gpO1xuICB2YXIgc3RhcnRJbmRleCA9IDA7XG4gIHZhciBlbmRJbmRleCA9IDA7XG4gIGlmIChwcm9wcy5kYXRhICYmIHByb3BzLmRhdGEubGVuZ3RoICE9PSAwKSB7XG4gICAgZW5kSW5kZXggPSBwcm9wcy5kYXRhLmxlbmd0aCAtIDE7XG4gIH1cbiAgaWYgKGJydXNoSXRlbSAmJiBicnVzaEl0ZW0ucHJvcHMpIHtcbiAgICBpZiAoYnJ1c2hJdGVtLnByb3BzLnN0YXJ0SW5kZXggPj0gMCkge1xuICAgICAgc3RhcnRJbmRleCA9IGJydXNoSXRlbS5wcm9wcy5zdGFydEluZGV4O1xuICAgIH1cbiAgICBpZiAoYnJ1c2hJdGVtLnByb3BzLmVuZEluZGV4ID49IDApIHtcbiAgICAgIGVuZEluZGV4ID0gYnJ1c2hJdGVtLnByb3BzLmVuZEluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGNoYXJ0WDogMCxcbiAgICBjaGFydFk6IDAsXG4gICAgZGF0YVN0YXJ0SW5kZXg6IHN0YXJ0SW5kZXgsXG4gICAgZGF0YUVuZEluZGV4OiBlbmRJbmRleCxcbiAgICBhY3RpdmVUb29sdGlwSW5kZXg6IC0xLFxuICAgIGlzVG9vbHRpcEFjdGl2ZTogQm9vbGVhbihkZWZhdWx0U2hvd1Rvb2x0aXApXG4gIH07XG59O1xudmFyIGhhc0dyYXBoaWNhbEJhckl0ZW0gPSBmdW5jdGlvbiBoYXNHcmFwaGljYWxCYXJJdGVtKGdyYXBoaWNhbEl0ZW1zKSB7XG4gIGlmICghZ3JhcGhpY2FsSXRlbXMgfHwgIWdyYXBoaWNhbEl0ZW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ3JhcGhpY2FsSXRlbXMuc29tZShmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBuYW1lID0gZ2V0RGlzcGxheU5hbWUoaXRlbSAmJiBpdGVtLnR5cGUpO1xuICAgIHJldHVybiBuYW1lICYmIG5hbWUuaW5kZXhPZignQmFyJykgPj0gMDtcbiAgfSk7XG59O1xudmFyIGdldEF4aXNOYW1lQnlMYXlvdXQgPSBmdW5jdGlvbiBnZXRBeGlzTmFtZUJ5TGF5b3V0KGxheW91dCkge1xuICBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbnVtZXJpY0F4aXNOYW1lOiAneUF4aXMnLFxuICAgICAgY2F0ZUF4aXNOYW1lOiAneEF4aXMnXG4gICAgfTtcbiAgfVxuICBpZiAobGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG51bWVyaWNBeGlzTmFtZTogJ3hBeGlzJyxcbiAgICAgIGNhdGVBeGlzTmFtZTogJ3lBeGlzJ1xuICAgIH07XG4gIH1cbiAgaWYgKGxheW91dCA9PT0gJ2NlbnRyaWMnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG51bWVyaWNBeGlzTmFtZTogJ3JhZGl1c0F4aXMnLFxuICAgICAgY2F0ZUF4aXNOYW1lOiAnYW5nbGVBeGlzJ1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBudW1lcmljQXhpc05hbWU6ICdhbmdsZUF4aXMnLFxuICAgIGNhdGVBeGlzTmFtZTogJ3JhZGl1c0F4aXMnXG4gIH07XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIG1haW4gcGFydCBpbiB0aGUgc3ZnIGVsZW1lbnRcbiAqIEBwYXJhbSAge09iamVjdH0gcGFyYW1zLnByb3BzICAgICAgICAgIExhdGVzdCBwcm9wc1xuICogQHBhcmFtICB7QXJyYXl9ICBwYXJhbXMuZ3JhcGhpY2FsSXRlbXMgVGhlIGluc3RhbmNlcyBvZiBpdGVtXG4gKiBAcGFyYW0gIHtPYmplY3R9IHBhcmFtcy54QXhpc01hcCAgICAgICBUaGUgY29uZmlndXJhdGlvbiBvZiB4LWF4aXNcbiAqIEBwYXJhbSAge09iamVjdH0gcGFyYW1zLnlBeGlzTWFwICAgICAgIFRoZSBjb25maWd1cmF0aW9uIG9mIHktYXhpc1xuICogQHBhcmFtICB7T2JqZWN0fSBwcmV2TGVnZW5kQkJveCAgICAgICAgVGhlIGJvdW5kYXJ5IGJveCBvZiBsZWdlbmRcbiAqIEByZXR1cm4ge09iamVjdH0gVGhlIG9mZnNldCBvZiBtYWluIHBhcnQgaW4gdGhlIHN2ZyBlbGVtZW50XG4gKi9cbnZhciBjYWxjdWxhdGVPZmZzZXQgPSBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQoX3JlZjUsIHByZXZMZWdlbmRCQm94KSB7XG4gIHZhciBwcm9wcyA9IF9yZWY1LnByb3BzLFxuICAgIGdyYXBoaWNhbEl0ZW1zID0gX3JlZjUuZ3JhcGhpY2FsSXRlbXMsXG4gICAgX3JlZjUkeEF4aXNNYXAgPSBfcmVmNS54QXhpc01hcCxcbiAgICB4QXhpc01hcCA9IF9yZWY1JHhBeGlzTWFwID09PSB2b2lkIDAgPyB7fSA6IF9yZWY1JHhBeGlzTWFwLFxuICAgIF9yZWY1JHlBeGlzTWFwID0gX3JlZjUueUF4aXNNYXAsXG4gICAgeUF4aXNNYXAgPSBfcmVmNSR5QXhpc01hcCA9PT0gdm9pZCAwID8ge30gOiBfcmVmNSR5QXhpc01hcDtcbiAgdmFyIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBtYXJnaW4gPSBwcm9wcy5tYXJnaW4gfHwge307XG4gIHZhciBicnVzaEl0ZW0gPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIEJydXNoKTtcbiAgdmFyIGxlZ2VuZEl0ZW0gPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIExlZ2VuZCk7XG4gIHZhciBvZmZzZXRIID0gT2JqZWN0LmtleXMoeUF4aXNNYXApLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBpZCkge1xuICAgIHZhciBlbnRyeSA9IHlBeGlzTWFwW2lkXTtcbiAgICB2YXIgb3JpZW50YXRpb24gPSBlbnRyeS5vcmllbnRhdGlvbjtcbiAgICBpZiAoIWVudHJ5Lm1pcnJvciAmJiAhZW50cnkuaGlkZSkge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgb3JpZW50YXRpb24sIHJlc3VsdFtvcmllbnRhdGlvbl0gKyBlbnRyeS53aWR0aCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7XG4gICAgbGVmdDogbWFyZ2luLmxlZnQgfHwgMCxcbiAgICByaWdodDogbWFyZ2luLnJpZ2h0IHx8IDBcbiAgfSk7XG4gIHZhciBvZmZzZXRWID0gT2JqZWN0LmtleXMoeEF4aXNNYXApLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBpZCkge1xuICAgIHZhciBlbnRyeSA9IHhBeGlzTWFwW2lkXTtcbiAgICB2YXIgb3JpZW50YXRpb24gPSBlbnRyeS5vcmllbnRhdGlvbjtcbiAgICBpZiAoIWVudHJ5Lm1pcnJvciAmJiAhZW50cnkuaGlkZSkge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgb3JpZW50YXRpb24sIGdldChyZXN1bHQsIFwiXCIuY29uY2F0KG9yaWVudGF0aW9uKSkgKyBlbnRyeS5oZWlnaHQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwge1xuICAgIHRvcDogbWFyZ2luLnRvcCB8fCAwLFxuICAgIGJvdHRvbTogbWFyZ2luLmJvdHRvbSB8fCAwXG4gIH0pO1xuICB2YXIgb2Zmc2V0ID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvZmZzZXRWKSwgb2Zmc2V0SCk7XG4gIHZhciBicnVzaEJvdHRvbSA9IG9mZnNldC5ib3R0b207XG4gIGlmIChicnVzaEl0ZW0pIHtcbiAgICBvZmZzZXQuYm90dG9tICs9IGJydXNoSXRlbS5wcm9wcy5oZWlnaHQgfHwgQnJ1c2guZGVmYXVsdFByb3BzLmhlaWdodDtcbiAgfVxuICBpZiAobGVnZW5kSXRlbSAmJiBwcmV2TGVnZW5kQkJveCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbWFyZ2luIGlzIG9wdGlvbmFsIGluIHByb3BzIGJ1dCByZXF1aXJlZCBpbiBhcHBlbmRPZmZzZXRPZkxlZ2VuZFxuICAgIG9mZnNldCA9IGFwcGVuZE9mZnNldE9mTGVnZW5kKG9mZnNldCwgZ3JhcGhpY2FsSXRlbXMsIHByb3BzLCBwcmV2TGVnZW5kQkJveCk7XG4gIH1cbiAgdmFyIG9mZnNldFdpZHRoID0gd2lkdGggLSBvZmZzZXQubGVmdCAtIG9mZnNldC5yaWdodDtcbiAgdmFyIG9mZnNldEhlaWdodCA9IGhlaWdodCAtIG9mZnNldC50b3AgLSBvZmZzZXQuYm90dG9tO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICBicnVzaEJvdHRvbTogYnJ1c2hCb3R0b21cbiAgfSwgb2Zmc2V0KSwge30sIHtcbiAgICAvLyBuZXZlciByZXR1cm4gbmVnYXRpdmUgdmFsdWVzIGZvciBoZWlnaHQgYW5kIHdpZHRoXG4gICAgd2lkdGg6IE1hdGgubWF4KG9mZnNldFdpZHRoLCAwKSxcbiAgICBoZWlnaHQ6IE1hdGgubWF4KG9mZnNldEhlaWdodCwgMClcbiAgfSk7XG59O1xuLy8gRGV0ZXJtaW5lIHRoZSBzaXplIG9mIHRoZSBheGlzLCB1c2VkIGZvciBjYWxjdWxhdGlvbiBvZiByZWxhdGl2ZSBiYXIgc2l6ZXNcbnZhciBnZXRDYXJ0ZXNpYW5BeGlzU2l6ZSA9IGZ1bmN0aW9uIGdldENhcnRlc2lhbkF4aXNTaXplKGF4aXNPYmosIGF4aXNOYW1lKSB7XG4gIGlmIChheGlzTmFtZSA9PT0gJ3hBeGlzJykge1xuICAgIHJldHVybiBheGlzT2JqW2F4aXNOYW1lXS53aWR0aDtcbiAgfVxuICBpZiAoYXhpc05hbWUgPT09ICd5QXhpcycpIHtcbiAgICByZXR1cm4gYXhpc09ialtheGlzTmFtZV0uaGVpZ2h0O1xuICB9XG4gIC8vIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEJhciBjaGFydHMgKGkuZS4gY2hhcnRzIHdpdGggY2FydGVzaWFuIGF4ZXMpLCBzbyB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmVcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5leHBvcnQgdmFyIGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCA9IGZ1bmN0aW9uIGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydChfcmVmNikge1xuICB2YXIgY2hhcnROYW1lID0gX3JlZjYuY2hhcnROYW1lLFxuICAgIEdyYXBoaWNhbENoaWxkID0gX3JlZjYuR3JhcGhpY2FsQ2hpbGQsXG4gICAgX3JlZjYkZGVmYXVsdFRvb2x0aXBFID0gX3JlZjYuZGVmYXVsdFRvb2x0aXBFdmVudFR5cGUsXG4gICAgZGVmYXVsdFRvb2x0aXBFdmVudFR5cGUgPSBfcmVmNiRkZWZhdWx0VG9vbHRpcEUgPT09IHZvaWQgMCA/ICdheGlzJyA6IF9yZWY2JGRlZmF1bHRUb29sdGlwRSxcbiAgICBfcmVmNiR2YWxpZGF0ZVRvb2x0aXAgPSBfcmVmNi52YWxpZGF0ZVRvb2x0aXBFdmVudFR5cGVzLFxuICAgIHZhbGlkYXRlVG9vbHRpcEV2ZW50VHlwZXMgPSBfcmVmNiR2YWxpZGF0ZVRvb2x0aXAgPT09IHZvaWQgMCA/IFsnYXhpcyddIDogX3JlZjYkdmFsaWRhdGVUb29sdGlwLFxuICAgIGF4aXNDb21wb25lbnRzID0gX3JlZjYuYXhpc0NvbXBvbmVudHMsXG4gICAgbGVnZW5kQ29udGVudCA9IF9yZWY2LmxlZ2VuZENvbnRlbnQsXG4gICAgZm9ybWF0QXhpc01hcCA9IF9yZWY2LmZvcm1hdEF4aXNNYXAsXG4gICAgZGVmYXVsdFByb3BzID0gX3JlZjYuZGVmYXVsdFByb3BzO1xuICB2YXIgZ2V0Rm9ybWF0SXRlbXMgPSBmdW5jdGlvbiBnZXRGb3JtYXRJdGVtcyhwcm9wcywgY3VycmVudFN0YXRlKSB7XG4gICAgdmFyIGdyYXBoaWNhbEl0ZW1zID0gY3VycmVudFN0YXRlLmdyYXBoaWNhbEl0ZW1zLFxuICAgICAgc3RhY2tHcm91cHMgPSBjdXJyZW50U3RhdGUuc3RhY2tHcm91cHMsXG4gICAgICBvZmZzZXQgPSBjdXJyZW50U3RhdGUub2Zmc2V0LFxuICAgICAgdXBkYXRlSWQgPSBjdXJyZW50U3RhdGUudXBkYXRlSWQsXG4gICAgICBkYXRhU3RhcnRJbmRleCA9IGN1cnJlbnRTdGF0ZS5kYXRhU3RhcnRJbmRleCxcbiAgICAgIGRhdGFFbmRJbmRleCA9IGN1cnJlbnRTdGF0ZS5kYXRhRW5kSW5kZXg7XG4gICAgdmFyIGJhclNpemUgPSBwcm9wcy5iYXJTaXplLFxuICAgICAgbGF5b3V0ID0gcHJvcHMubGF5b3V0LFxuICAgICAgYmFyR2FwID0gcHJvcHMuYmFyR2FwLFxuICAgICAgYmFyQ2F0ZWdvcnlHYXAgPSBwcm9wcy5iYXJDYXRlZ29yeUdhcCxcbiAgICAgIGdsb2JhbE1heEJhclNpemUgPSBwcm9wcy5tYXhCYXJTaXplO1xuICAgIHZhciBfZ2V0QXhpc05hbWVCeUxheW91dCA9IGdldEF4aXNOYW1lQnlMYXlvdXQobGF5b3V0KSxcbiAgICAgIG51bWVyaWNBeGlzTmFtZSA9IF9nZXRBeGlzTmFtZUJ5TGF5b3V0Lm51bWVyaWNBeGlzTmFtZSxcbiAgICAgIGNhdGVBeGlzTmFtZSA9IF9nZXRBeGlzTmFtZUJ5TGF5b3V0LmNhdGVBeGlzTmFtZTtcbiAgICB2YXIgaGFzQmFyID0gaGFzR3JhcGhpY2FsQmFySXRlbShncmFwaGljYWxJdGVtcyk7XG4gICAgdmFyIGZvcm1hdHRlZEl0ZW1zID0gW107XG4gICAgZ3JhcGhpY2FsSXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgIHZhciBkaXNwbGF5ZWREYXRhID0gZ2V0RGlzcGxheWVkRGF0YShwcm9wcy5kYXRhLCB7XG4gICAgICAgIGdyYXBoaWNhbEl0ZW1zOiBbaXRlbV0sXG4gICAgICAgIGRhdGFTdGFydEluZGV4OiBkYXRhU3RhcnRJbmRleCxcbiAgICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgICAgIH0pO1xuICAgICAgdmFyIGl0ZW1Qcm9wcyA9IGl0ZW0udHlwZS5kZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbS50eXBlLmRlZmF1bHRQcm9wcyksIGl0ZW0ucHJvcHMpIDogaXRlbS5wcm9wcztcbiAgICAgIHZhciBkYXRhS2V5ID0gaXRlbVByb3BzLmRhdGFLZXksXG4gICAgICAgIGNoaWxkTWF4QmFyU2l6ZSA9IGl0ZW1Qcm9wcy5tYXhCYXJTaXplO1xuICAgICAgLy8gYXhpc0lkIG9mIHRoZSBudW1lcmljYWwgYXhpc1xuICAgICAgdmFyIG51bWVyaWNBeGlzSWQgPSBpdGVtUHJvcHNbXCJcIi5jb25jYXQobnVtZXJpY0F4aXNOYW1lLCBcIklkXCIpXTtcbiAgICAgIC8vIGF4aXNJZCBvZiB0aGUgY2F0ZWdvcmljYWwgYXhpc1xuICAgICAgdmFyIGNhdGVBeGlzSWQgPSBpdGVtUHJvcHNbXCJcIi5jb25jYXQoY2F0ZUF4aXNOYW1lLCBcIklkXCIpXTtcbiAgICAgIHZhciBheGlzT2JqSW5pdGlhbFZhbHVlID0ge307XG4gICAgICB2YXIgYXhpc09iaiA9IGF4aXNDb21wb25lbnRzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgICAgICB2YXIgX2l0ZW0kdHlwZSRkaXNwbGF5TmFtLCBfaXRlbSR0eXBlO1xuICAgICAgICAvLyBtYXAgb2YgYXhpc0lkIHRvIGF4aXMgZm9yIGEgc3BlY2lmaWMgYXhpcyB0eXBlXG4gICAgICAgIHZhciBheGlzTWFwID0gY3VycmVudFN0YXRlW1wiXCIuY29uY2F0KGVudHJ5LmF4aXNUeXBlLCBcIk1hcFwiKV07XG4gICAgICAgIC8vIGF4aXNJZCBvZiBheGlzIHdlIGFyZSBjdXJyZW50bHkgY29tcHV0aW5nXG4gICAgICAgIHZhciBpZCA9IGl0ZW1Qcm9wc1tcIlwiLmNvbmNhdChlbnRyeS5heGlzVHlwZSwgXCJJZFwiKV07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRlbGwgdGhlIHVzZXIgaW4gZGV2IG1vZGUgdGhhdCB0aGVpciBjb25maWd1cmF0aW9uIGlzIGluY29ycmVjdCBpZiB3ZSBjYW5ub3QgZmluZCBhIG1hdGNoIGJldHdlZW5cbiAgICAgICAgICogYXhpc0lkIG9uIHRoZSBjaGFydCBhbmQgYXhpc0lkIG9uIHRoZSBheGlzLiB6QXhpcyBkb2VzIG5vdCBnZXQgcGFzc2VkIGluIHRoZSBtYXAgZm9yIENvbXBvc2VkQ2hhcnQsXG4gICAgICAgICAqIGxlYXZlIGl0IG91dCBvZiB0aGUgY2hlY2sgZm9yIG5vdy5cbiAgICAgICAgICovXG4gICAgICAgICEoYXhpc01hcCAmJiBheGlzTWFwW2lkXSB8fCBlbnRyeS5heGlzVHlwZSA9PT0gJ3pBeGlzJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIFwiU3BlY2lmeWluZyBhKG4pIFwiLmNvbmNhdChlbnRyeS5heGlzVHlwZSwgXCJJZCByZXF1aXJlcyBhIGNvcnJlc3BvbmRpbmcgXCIpLmNvbmNhdChlbnRyeS5heGlzVHlwZVxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHdlIHNob3VsZCBzdG9wIHJlYWRpbmcgZGF0YSBmcm9tIFJlYWN0RWxlbWVudHNcbiAgICAgICAgLCBcIklkIG9uIHRoZSB0YXJnZXRlZCBncmFwaGljYWwgY29tcG9uZW50IFwiKS5jb25jYXQoKF9pdGVtJHR5cGUkZGlzcGxheU5hbSA9IGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwIHx8IChfaXRlbSR0eXBlID0gaXRlbS50eXBlKSA9PT0gbnVsbCB8fCBfaXRlbSR0eXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaXRlbSR0eXBlLmRpc3BsYXlOYW1lKSAhPT0gbnVsbCAmJiBfaXRlbSR0eXBlJGRpc3BsYXlOYW0gIT09IHZvaWQgMCA/IF9pdGVtJHR5cGUkZGlzcGxheU5hbSA6ICcnKSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXG4gICAgICAgIC8vIHRoZSBheGlzIHdlIGFyZSBjdXJyZW50bHkgZm9ybWF0dGluZ1xuICAgICAgICB2YXIgYXhpcyA9IGF4aXNNYXBbaWRdO1xuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eSh7fSwgZW50cnkuYXhpc1R5cGUsIGF4aXMpLCBcIlwiLmNvbmNhdChlbnRyeS5heGlzVHlwZSwgXCJUaWNrc1wiKSwgZ2V0VGlja3NPZkF4aXMoYXhpcykpKTtcbiAgICAgIH0sIGF4aXNPYmpJbml0aWFsVmFsdWUpO1xuICAgICAgdmFyIGNhdGVBeGlzID0gYXhpc09ialtjYXRlQXhpc05hbWVdO1xuICAgICAgdmFyIGNhdGVUaWNrcyA9IGF4aXNPYmpbXCJcIi5jb25jYXQoY2F0ZUF4aXNOYW1lLCBcIlRpY2tzXCIpXTtcbiAgICAgIHZhciBzdGFja2VkRGF0YSA9IHN0YWNrR3JvdXBzICYmIHN0YWNrR3JvdXBzW251bWVyaWNBeGlzSWRdICYmIHN0YWNrR3JvdXBzW251bWVyaWNBeGlzSWRdLmhhc1N0YWNrICYmIGdldFN0YWNrZWREYXRhT2ZJdGVtKGl0ZW0sIHN0YWNrR3JvdXBzW251bWVyaWNBeGlzSWRdLnN0YWNrR3JvdXBzKTtcbiAgICAgIHZhciBpdGVtSXNCYXIgPSBnZXREaXNwbGF5TmFtZShpdGVtLnR5cGUpLmluZGV4T2YoJ0JhcicpID49IDA7XG4gICAgICB2YXIgYmFuZFNpemUgPSBnZXRCYW5kU2l6ZU9mQXhpcyhjYXRlQXhpcywgY2F0ZVRpY2tzKTtcbiAgICAgIHZhciBiYXJQb3NpdGlvbiA9IFtdO1xuICAgICAgdmFyIHNpemVMaXN0ID0gaGFzQmFyICYmIGdldEJhclNpemVMaXN0KHtcbiAgICAgICAgYmFyU2l6ZTogYmFyU2l6ZSxcbiAgICAgICAgc3RhY2tHcm91cHM6IHN0YWNrR3JvdXBzLFxuICAgICAgICB0b3RhbFNpemU6IGdldENhcnRlc2lhbkF4aXNTaXplKGF4aXNPYmosIGNhdGVBeGlzTmFtZSlcbiAgICAgIH0pO1xuICAgICAgaWYgKGl0ZW1Jc0Jhcikge1xuICAgICAgICB2YXIgX3JlZjcsIF9nZXRCYW5kU2l6ZU9mQXhpcztcbiAgICAgICAgLy8gSWYgaXQgaXMgYmFyLCBjYWxjdWxhdGUgdGhlIHBvc2l0aW9uIG9mIGJhclxuICAgICAgICB2YXIgbWF4QmFyU2l6ZSA9IGlzTmlsKGNoaWxkTWF4QmFyU2l6ZSkgPyBnbG9iYWxNYXhCYXJTaXplIDogY2hpbGRNYXhCYXJTaXplO1xuICAgICAgICB2YXIgYmFyQmFuZFNpemUgPSAoX3JlZjcgPSAoX2dldEJhbmRTaXplT2ZBeGlzID0gZ2V0QmFuZFNpemVPZkF4aXMoY2F0ZUF4aXMsIGNhdGVUaWNrcywgdHJ1ZSkpICE9PSBudWxsICYmIF9nZXRCYW5kU2l6ZU9mQXhpcyAhPT0gdm9pZCAwID8gX2dldEJhbmRTaXplT2ZBeGlzIDogbWF4QmFyU2l6ZSkgIT09IG51bGwgJiYgX3JlZjcgIT09IHZvaWQgMCA/IF9yZWY3IDogMDtcbiAgICAgICAgYmFyUG9zaXRpb24gPSBnZXRCYXJQb3NpdGlvbih7XG4gICAgICAgICAgYmFyR2FwOiBiYXJHYXAsXG4gICAgICAgICAgYmFyQ2F0ZWdvcnlHYXA6IGJhckNhdGVnb3J5R2FwLFxuICAgICAgICAgIGJhbmRTaXplOiBiYXJCYW5kU2l6ZSAhPT0gYmFuZFNpemUgPyBiYXJCYW5kU2l6ZSA6IGJhbmRTaXplLFxuICAgICAgICAgIHNpemVMaXN0OiBzaXplTGlzdFtjYXRlQXhpc0lkXSxcbiAgICAgICAgICBtYXhCYXJTaXplOiBtYXhCYXJTaXplXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoYmFyQmFuZFNpemUgIT09IGJhbmRTaXplKSB7XG4gICAgICAgICAgYmFyUG9zaXRpb24gPSBiYXJQb3NpdGlvbi5tYXAoZnVuY3Rpb24gKHBvcykge1xuICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcG9zKSwge30sIHtcbiAgICAgICAgICAgICAgcG9zaXRpb246IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcG9zLnBvc2l0aW9uKSwge30sIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IHBvcy5wb3NpdGlvbi5vZmZzZXQgLSBiYXJCYW5kU2l6ZSAvIDJcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHdlIHNob3VsZCBzdG9wIHJlYWRpbmcgZGF0YSBmcm9tIFJlYWN0RWxlbWVudHNcbiAgICAgIHZhciBjb21wb3NlZEZuID0gaXRlbSAmJiBpdGVtLnR5cGUgJiYgaXRlbS50eXBlLmdldENvbXBvc2VkRGF0YTtcbiAgICAgIGlmIChjb21wb3NlZEZuKSB7XG4gICAgICAgIGZvcm1hdHRlZEl0ZW1zLnB1c2goe1xuICAgICAgICAgIHByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNvbXBvc2VkRm4oX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBheGlzT2JqKSwge30sIHtcbiAgICAgICAgICAgIGRpc3BsYXllZERhdGE6IGRpc3BsYXllZERhdGEsXG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBkYXRhS2V5OiBkYXRhS2V5LFxuICAgICAgICAgICAgaXRlbTogaXRlbSxcbiAgICAgICAgICAgIGJhbmRTaXplOiBiYW5kU2l6ZSxcbiAgICAgICAgICAgIGJhclBvc2l0aW9uOiBiYXJQb3NpdGlvbixcbiAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICAgICAgc3RhY2tlZERhdGE6IHN0YWNrZWREYXRhLFxuICAgICAgICAgICAgbGF5b3V0OiBsYXlvdXQsXG4gICAgICAgICAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleFxuICAgICAgICAgIH0pKSksIHt9LCBfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgICAgICBrZXk6IGl0ZW0ua2V5IHx8IFwiaXRlbS1cIi5jb25jYXQoaW5kZXgpXG4gICAgICAgICAgfSwgbnVtZXJpY0F4aXNOYW1lLCBheGlzT2JqW251bWVyaWNBeGlzTmFtZV0pLCBjYXRlQXhpc05hbWUsIGF4aXNPYmpbY2F0ZUF4aXNOYW1lXSksIFwiYW5pbWF0aW9uSWRcIiwgdXBkYXRlSWQpKSxcbiAgICAgICAgICBjaGlsZEluZGV4OiBwYXJzZUNoaWxkSW5kZXgoaXRlbSwgcHJvcHMuY2hpbGRyZW4pLFxuICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1hdHRlZEl0ZW1zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgQXhpc01hcHMgYXJlIGV4cGVuc2l2ZSB0byByZW5kZXIgb24gbGFyZ2UgZGF0YSBzZXRzXG4gICAqIHNvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gc3RvcmUgdGhlbSBpbiBzdGF0ZSBhbmQgb25seSB1cGRhdGUgdGhlbSB3aGVuIG5lY2Vzc2FyeVxuICAgKiB0aGV5IGFyZSBkZXBlbmRlbnQgdXBvbiB0aGUgc3RhcnQgYW5kIGVuZCBpbmRleCBvZlxuICAgKiB0aGUgYnJ1c2ggc28gaXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgX2FmdGVyX1xuICAgKiB0aGUgc3RhdGUgaXMgdXBkYXRlZCB3aXRoIGFueSBuZXcgc3RhcnQvZW5kIGluZGljZXNcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzICAgICAgICAgIFRoZSBwcm9wcyBvYmplY3QgdG8gYmUgdXNlZCBmb3IgdXBkYXRpbmcgdGhlIGF4aXNtYXBzXG4gICAqIGRhdGFTdGFydEluZGV4OiBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIGRhdGEgc2VyaWVzIHdoZW4gYSBicnVzaCBpcyBhcHBsaWVkXG4gICAqIGRhdGFFbmRJbmRleDogVGhlIGVuZCBpbmRleCBvZiB0aGUgZGF0YSBzZXJpZXMgd2hlbiBhIGJydXNoIGlzIGFwcGxpZWRcbiAgICogdXBkYXRlSWQ6IFRoZSB1cGRhdGUgaWRcbiAgICogQHBhcmFtIHtPYmplY3R9IHByZXZTdGF0ZSAgICAgIFByZXYgc3RhdGVcbiAgICogQHJldHVybiB7T2JqZWN0fSBzdGF0ZSBOZXcgc3RhdGUgdG8gc2V0XG4gICAqL1xuICB2YXIgdXBkYXRlU3RhdGVPZkF4aXNNYXBzT2Zmc2V0QW5kU3RhY2tHcm91cHMgPSBmdW5jdGlvbiB1cGRhdGVTdGF0ZU9mQXhpc01hcHNPZmZzZXRBbmRTdGFja0dyb3VwcyhfcmVmOCwgcHJldlN0YXRlKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZjgucHJvcHMsXG4gICAgICBkYXRhU3RhcnRJbmRleCA9IF9yZWY4LmRhdGFTdGFydEluZGV4LFxuICAgICAgZGF0YUVuZEluZGV4ID0gX3JlZjguZGF0YUVuZEluZGV4LFxuICAgICAgdXBkYXRlSWQgPSBfcmVmOC51cGRhdGVJZDtcbiAgICBpZiAoIXZhbGlkYXRlV2lkdGhIZWlnaHQoe1xuICAgICAgcHJvcHM6IHByb3BzXG4gICAgfSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGxheW91dCA9IHByb3BzLmxheW91dCxcbiAgICAgIHN0YWNrT2Zmc2V0ID0gcHJvcHMuc3RhY2tPZmZzZXQsXG4gICAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICAgIHJldmVyc2VTdGFja09yZGVyID0gcHJvcHMucmV2ZXJzZVN0YWNrT3JkZXI7XG4gICAgdmFyIF9nZXRBeGlzTmFtZUJ5TGF5b3V0MiA9IGdldEF4aXNOYW1lQnlMYXlvdXQobGF5b3V0KSxcbiAgICAgIG51bWVyaWNBeGlzTmFtZSA9IF9nZXRBeGlzTmFtZUJ5TGF5b3V0Mi5udW1lcmljQXhpc05hbWUsXG4gICAgICBjYXRlQXhpc05hbWUgPSBfZ2V0QXhpc05hbWVCeUxheW91dDIuY2F0ZUF4aXNOYW1lO1xuICAgIHZhciBncmFwaGljYWxJdGVtcyA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIEdyYXBoaWNhbENoaWxkKTtcbiAgICB2YXIgc3RhY2tHcm91cHMgPSBnZXRTdGFja0dyb3Vwc0J5QXhpc0lkKGRhdGEsIGdyYXBoaWNhbEl0ZW1zLCBcIlwiLmNvbmNhdChudW1lcmljQXhpc05hbWUsIFwiSWRcIiksIFwiXCIuY29uY2F0KGNhdGVBeGlzTmFtZSwgXCJJZFwiKSwgc3RhY2tPZmZzZXQsIHJldmVyc2VTdGFja09yZGVyKTtcbiAgICB2YXIgYXhpc09iaiA9IGF4aXNDb21wb25lbnRzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgICAgdmFyIG5hbWUgPSBcIlwiLmNvbmNhdChlbnRyeS5heGlzVHlwZSwgXCJNYXBcIik7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBuYW1lLCBnZXRBeGlzTWFwKHByb3BzLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGVudHJ5KSwge30sIHtcbiAgICAgICAgZ3JhcGhpY2FsSXRlbXM6IGdyYXBoaWNhbEl0ZW1zLFxuICAgICAgICBzdGFja0dyb3VwczogZW50cnkuYXhpc1R5cGUgPT09IG51bWVyaWNBeGlzTmFtZSAmJiBzdGFja0dyb3VwcyxcbiAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleFxuICAgICAgfSkpKSk7XG4gICAgfSwge30pO1xuICAgIHZhciBvZmZzZXQgPSBjYWxjdWxhdGVPZmZzZXQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBheGlzT2JqKSwge30sIHtcbiAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgIGdyYXBoaWNhbEl0ZW1zOiBncmFwaGljYWxJdGVtc1xuICAgIH0pLCBwcmV2U3RhdGUgPT09IG51bGwgfHwgcHJldlN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmV2U3RhdGUubGVnZW5kQkJveCk7XG4gICAgT2JqZWN0LmtleXMoYXhpc09iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBheGlzT2JqW2tleV0gPSBmb3JtYXRBeGlzTWFwKHByb3BzLCBheGlzT2JqW2tleV0sIG9mZnNldCwga2V5LnJlcGxhY2UoJ01hcCcsICcnKSwgY2hhcnROYW1lKTtcbiAgICB9KTtcbiAgICB2YXIgY2F0ZUF4aXNNYXAgPSBheGlzT2JqW1wiXCIuY29uY2F0KGNhdGVBeGlzTmFtZSwgXCJNYXBcIildO1xuICAgIHZhciB0aWNrc09iaiA9IHRvb2x0aXBUaWNrc0dlbmVyYXRvcihjYXRlQXhpc01hcCk7XG4gICAgdmFyIGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zID0gZ2V0Rm9ybWF0SXRlbXMocHJvcHMsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXhpc09iaiksIHt9LCB7XG4gICAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleCxcbiAgICAgIHVwZGF0ZUlkOiB1cGRhdGVJZCxcbiAgICAgIGdyYXBoaWNhbEl0ZW1zOiBncmFwaGljYWxJdGVtcyxcbiAgICAgIHN0YWNrR3JvdXBzOiBzdGFja0dyb3VwcyxcbiAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgfSkpO1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXM6IGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLFxuICAgICAgZ3JhcGhpY2FsSXRlbXM6IGdyYXBoaWNhbEl0ZW1zLFxuICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICBzdGFja0dyb3Vwczogc3RhY2tHcm91cHNcbiAgICB9LCB0aWNrc09iaiksIGF4aXNPYmopO1xuICB9O1xuICB2YXIgQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgICBmdW5jdGlvbiBDYXRlZ29yaWNhbENoYXJ0V3JhcHBlcihfcHJvcHMpIHtcbiAgICAgIHZhciBfcHJvcHMkaWQsIF9wcm9wcyR0aHJvdHRsZURlbGF5O1xuICAgICAgdmFyIF90aGlzO1xuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyKTtcbiAgICAgIF90aGlzID0gX2NhbGxTdXBlcih0aGlzLCBDYXRlZ29yaWNhbENoYXJ0V3JhcHBlciwgW19wcm9wc10pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImV2ZW50RW1pdHRlclN5bWJvbFwiLCBTeW1ib2woJ3JlY2hhcnRzRXZlbnRFbWl0dGVyJykpO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImFjY2Vzc2liaWxpdHlNYW5hZ2VyXCIsIG5ldyBBY2Nlc3NpYmlsaXR5TWFuYWdlcigpKTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVMZWdlbmRCQm94VXBkYXRlXCIsIGZ1bmN0aW9uIChib3gpIHtcbiAgICAgICAgaWYgKGJveCkge1xuICAgICAgICAgIHZhciBfdGhpcyRzdGF0ZSA9IF90aGlzLnN0YXRlLFxuICAgICAgICAgICAgZGF0YVN0YXJ0SW5kZXggPSBfdGhpcyRzdGF0ZS5kYXRhU3RhcnRJbmRleCxcbiAgICAgICAgICAgIGRhdGFFbmRJbmRleCA9IF90aGlzJHN0YXRlLmRhdGFFbmRJbmRleCxcbiAgICAgICAgICAgIHVwZGF0ZUlkID0gX3RoaXMkc3RhdGUudXBkYXRlSWQ7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICBsZWdlbmRCQm94OiBib3hcbiAgICAgICAgICB9LCB1cGRhdGVTdGF0ZU9mQXhpc01hcHNPZmZzZXRBbmRTdGFja0dyb3Vwcyh7XG4gICAgICAgICAgICBwcm9wczogX3RoaXMucHJvcHMsXG4gICAgICAgICAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleCxcbiAgICAgICAgICAgIHVwZGF0ZUlkOiB1cGRhdGVJZFxuICAgICAgICAgIH0sIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX3RoaXMuc3RhdGUpLCB7fSwge1xuICAgICAgICAgICAgbGVnZW5kQkJveDogYm94XG4gICAgICAgICAgfSkpKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZVJlY2VpdmVTeW5jRXZlbnRcIiwgZnVuY3Rpb24gKGNJZCwgZGF0YSwgZW1pdHRlcikge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuc3luY0lkID09PSBjSWQpIHtcbiAgICAgICAgICBpZiAoZW1pdHRlciA9PT0gX3RoaXMuZXZlbnRFbWl0dGVyU3ltYm9sICYmIHR5cGVvZiBfdGhpcy5wcm9wcy5zeW5jTWV0aG9kICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIF90aGlzLmFwcGx5U3luY0V2ZW50KGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVCcnVzaENoYW5nZVwiLCBmdW5jdGlvbiAoX3JlZjkpIHtcbiAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSBfcmVmOS5zdGFydEluZGV4LFxuICAgICAgICAgIGVuZEluZGV4ID0gX3JlZjkuZW5kSW5kZXg7XG4gICAgICAgIC8vIE9ubHkgdHJpZ2dlciBjaGFuZ2VzIGlmIHRoZSBleHRlbnRzIG9mIHRoZSBicnVzaCBoYXZlIGFjdHVhbGx5IGNoYW5nZWRcbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggIT09IF90aGlzLnN0YXRlLmRhdGFTdGFydEluZGV4IHx8IGVuZEluZGV4ICE9PSBfdGhpcy5zdGF0ZS5kYXRhRW5kSW5kZXgpIHtcbiAgICAgICAgICB2YXIgdXBkYXRlSWQgPSBfdGhpcy5zdGF0ZS51cGRhdGVJZDtcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICAgIGRhdGFTdGFydEluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgICBkYXRhRW5kSW5kZXg6IGVuZEluZGV4XG4gICAgICAgICAgICB9LCB1cGRhdGVTdGF0ZU9mQXhpc01hcHNPZmZzZXRBbmRTdGFja0dyb3Vwcyh7XG4gICAgICAgICAgICAgIHByb3BzOiBfdGhpcy5wcm9wcyxcbiAgICAgICAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IHN0YXJ0SW5kZXgsXG4gICAgICAgICAgICAgIGRhdGFFbmRJbmRleDogZW5kSW5kZXgsXG4gICAgICAgICAgICAgIHVwZGF0ZUlkOiB1cGRhdGVJZFxuICAgICAgICAgICAgfSwgX3RoaXMuc3RhdGUpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfdGhpcy50cmlnZ2VyU3luY0V2ZW50KHtcbiAgICAgICAgICAgIGRhdGFTdGFydEluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgZGF0YUVuZEluZGV4OiBlbmRJbmRleFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGhhbmRsZXIgb2YgbW91c2UgZW50ZXJpbmcgY2hhcnRcbiAgICAgICAqIEBwYXJhbSAge09iamVjdH0gZSAgICAgICAgICAgICAgRXZlbnQgb2JqZWN0XG4gICAgICAgKiBAcmV0dXJuIHtOdWxsfSAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAqL1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZU1vdXNlRW50ZXJcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIG1vdXNlID0gX3RoaXMuZ2V0TW91c2VJbmZvKGUpO1xuICAgICAgICBpZiAobW91c2UpIHtcbiAgICAgICAgICB2YXIgX25leHRTdGF0ZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbW91c2UpLCB7fSwge1xuICAgICAgICAgICAgaXNUb29sdGlwQWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoX25leHRTdGF0ZSk7XG4gICAgICAgICAgX3RoaXMudHJpZ2dlclN5bmNFdmVudChfbmV4dFN0YXRlKTtcbiAgICAgICAgICB2YXIgb25Nb3VzZUVudGVyID0gX3RoaXMucHJvcHMub25Nb3VzZUVudGVyO1xuICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uTW91c2VFbnRlcikpIHtcbiAgICAgICAgICAgIG9uTW91c2VFbnRlcihfbmV4dFN0YXRlLCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciBtb3VzZSA9IF90aGlzLmdldE1vdXNlSW5mbyhlKTtcbiAgICAgICAgdmFyIG5leHRTdGF0ZSA9IG1vdXNlID8gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBtb3VzZSksIHt9LCB7XG4gICAgICAgICAgaXNUb29sdGlwQWN0aXZlOiB0cnVlXG4gICAgICAgIH0pIDoge1xuICAgICAgICAgIGlzVG9vbHRpcEFjdGl2ZTogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUobmV4dFN0YXRlKTtcbiAgICAgICAgX3RoaXMudHJpZ2dlclN5bmNFdmVudChuZXh0U3RhdGUpO1xuICAgICAgICB2YXIgb25Nb3VzZU1vdmUgPSBfdGhpcy5wcm9wcy5vbk1vdXNlTW92ZTtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25Nb3VzZU1vdmUpKSB7XG4gICAgICAgICAgb25Nb3VzZU1vdmUobmV4dFN0YXRlLCBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBoYW5kbGVyIG9mIG1vdXNlIGVudGVyaW5nIGEgc2NhdHRlclxuICAgICAgICogQHBhcmFtIHtPYmplY3R9IGVsIFRoZSBhY3RpdmUgc2NhdHRlclxuICAgICAgICogQHJldHVybiB7T2JqZWN0fSBubyByZXR1cm5cbiAgICAgICAqL1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZUl0ZW1Nb3VzZUVudGVyXCIsIGZ1bmN0aW9uIChlbCkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlzVG9vbHRpcEFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGFjdGl2ZUl0ZW06IGVsLFxuICAgICAgICAgICAgYWN0aXZlUGF5bG9hZDogZWwudG9vbHRpcFBheWxvYWQsXG4gICAgICAgICAgICBhY3RpdmVDb29yZGluYXRlOiBlbC50b29sdGlwUG9zaXRpb24gfHwge1xuICAgICAgICAgICAgICB4OiBlbC5jeCxcbiAgICAgICAgICAgICAgeTogZWwuY3lcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgaGFuZGxlciBvZiBtb3VzZSBsZWF2aW5nIGEgc2NhdHRlclxuICAgICAgICogQHJldHVybiB7T2JqZWN0fSBubyByZXR1cm5cbiAgICAgICAqL1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZUl0ZW1Nb3VzZUxlYXZlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmU6IGZhbHNlXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGhhbmRsZXIgb2YgbW91c2UgbW92aW5nIGluIGNoYXJ0XG4gICAgICAgKiBAcGFyYW0gIHtSZWFjdC5Nb3VzZUV2ZW50fSBlICAgICAgICBFdmVudCBvYmplY3RcbiAgICAgICAqIEByZXR1cm4ge3ZvaWR9IG5vIHJldHVyblxuICAgICAgICovXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlTW91c2VNb3ZlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUucGVyc2lzdCgpO1xuICAgICAgICBfdGhpcy50aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlKGUpO1xuICAgICAgfSk7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBoYW5kbGVyIGlmIG1vdXNlIGxlYXZpbmcgY2hhcnRcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBlIEV2ZW50IG9iamVjdFxuICAgICAgICogQHJldHVybiB7TnVsbH0gbm8gcmV0dXJuXG4gICAgICAgKi9cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVNb3VzZUxlYXZlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIF90aGlzLnRocm90dGxlVHJpZ2dlcmVkQWZ0ZXJNb3VzZU1vdmUuY2FuY2VsKCk7XG4gICAgICAgIHZhciBuZXh0U3RhdGUgPSB7XG4gICAgICAgICAgaXNUb29sdGlwQWN0aXZlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZShuZXh0U3RhdGUpO1xuICAgICAgICBfdGhpcy50cmlnZ2VyU3luY0V2ZW50KG5leHRTdGF0ZSk7XG4gICAgICAgIHZhciBvbk1vdXNlTGVhdmUgPSBfdGhpcy5wcm9wcy5vbk1vdXNlTGVhdmU7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uTW91c2VMZWF2ZSkpIHtcbiAgICAgICAgICBvbk1vdXNlTGVhdmUobmV4dFN0YXRlLCBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlT3V0ZXJFdmVudFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgZXZlbnROYW1lID0gZ2V0UmVhY3RFdmVudEJ5VHlwZShlKTtcbiAgICAgICAgdmFyIGV2ZW50ID0gZ2V0KF90aGlzLnByb3BzLCBcIlwiLmNvbmNhdChldmVudE5hbWUpKTtcbiAgICAgICAgaWYgKGV2ZW50TmFtZSAmJiBpc0Z1bmN0aW9uKGV2ZW50KSkge1xuICAgICAgICAgIHZhciBfbW91c2U7XG4gICAgICAgICAgdmFyIG1vdXNlO1xuICAgICAgICAgIGlmICgvLip0b3VjaC4qL2kudGVzdChldmVudE5hbWUpKSB7XG4gICAgICAgICAgICBtb3VzZSA9IF90aGlzLmdldE1vdXNlSW5mbyhlLmNoYW5nZWRUb3VjaGVzWzBdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbW91c2UgPSBfdGhpcy5nZXRNb3VzZUluZm8oZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGV2ZW50KChfbW91c2UgPSBtb3VzZSkgIT09IG51bGwgJiYgX21vdXNlICE9PSB2b2lkIDAgPyBfbW91c2UgOiB7fSwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZUNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciBtb3VzZSA9IF90aGlzLmdldE1vdXNlSW5mbyhlKTtcbiAgICAgICAgaWYgKG1vdXNlKSB7XG4gICAgICAgICAgdmFyIF9uZXh0U3RhdGUyID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBtb3VzZSksIHt9LCB7XG4gICAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZShfbmV4dFN0YXRlMik7XG4gICAgICAgICAgX3RoaXMudHJpZ2dlclN5bmNFdmVudChfbmV4dFN0YXRlMik7XG4gICAgICAgICAgdmFyIG9uQ2xpY2sgPSBfdGhpcy5wcm9wcy5vbkNsaWNrO1xuICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uQ2xpY2spKSB7XG4gICAgICAgICAgICBvbkNsaWNrKF9uZXh0U3RhdGUyLCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZU1vdXNlRG93blwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgb25Nb3VzZURvd24gPSBfdGhpcy5wcm9wcy5vbk1vdXNlRG93bjtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25Nb3VzZURvd24pKSB7XG4gICAgICAgICAgdmFyIF9uZXh0U3RhdGUzID0gX3RoaXMuZ2V0TW91c2VJbmZvKGUpO1xuICAgICAgICAgIG9uTW91c2VEb3duKF9uZXh0U3RhdGUzLCBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlTW91c2VVcFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgb25Nb3VzZVVwID0gX3RoaXMucHJvcHMub25Nb3VzZVVwO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvbk1vdXNlVXApKSB7XG4gICAgICAgICAgdmFyIF9uZXh0U3RhdGU0ID0gX3RoaXMuZ2V0TW91c2VJbmZvKGUpO1xuICAgICAgICAgIG9uTW91c2VVcChfbmV4dFN0YXRlNCwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZVRvdWNoTW92ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZS5jaGFuZ2VkVG91Y2hlcyAhPSBudWxsICYmIGUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIF90aGlzLnRocm90dGxlVHJpZ2dlcmVkQWZ0ZXJNb3VzZU1vdmUoZS5jaGFuZ2VkVG91Y2hlc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZVRvdWNoU3RhcnRcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKGUuY2hhbmdlZFRvdWNoZXMgIT0gbnVsbCAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBfdGhpcy5oYW5kbGVNb3VzZURvd24oZS5jaGFuZ2VkVG91Y2hlc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZVRvdWNoRW5kXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChlLmNoYW5nZWRUb3VjaGVzICE9IG51bGwgJiYgZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgX3RoaXMuaGFuZGxlTW91c2VVcChlLmNoYW5nZWRUb3VjaGVzWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlRG91YmxlQ2xpY2tcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIG9uRG91YmxlQ2xpY2sgPSBfdGhpcy5wcm9wcy5vbkRvdWJsZUNsaWNrO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvbkRvdWJsZUNsaWNrKSkge1xuICAgICAgICAgIHZhciBfbmV4dFN0YXRlNSA9IF90aGlzLmdldE1vdXNlSW5mbyhlKTtcbiAgICAgICAgICBvbkRvdWJsZUNsaWNrKF9uZXh0U3RhdGU1LCBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlQ29udGV4dE1lbnVcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIG9uQ29udGV4dE1lbnUgPSBfdGhpcy5wcm9wcy5vbkNvbnRleHRNZW51O1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvbkNvbnRleHRNZW51KSkge1xuICAgICAgICAgIHZhciBfbmV4dFN0YXRlNiA9IF90aGlzLmdldE1vdXNlSW5mbyhlKTtcbiAgICAgICAgICBvbkNvbnRleHRNZW51KF9uZXh0U3RhdGU2LCBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwidHJpZ2dlclN5bmNFdmVudFwiLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuc3luY0lkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBldmVudENlbnRlci5lbWl0KFNZTkNfRVZFTlQsIF90aGlzLnByb3BzLnN5bmNJZCwgZGF0YSwgX3RoaXMuZXZlbnRFbWl0dGVyU3ltYm9sKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiYXBwbHlTeW5jRXZlbnRcIiwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgbGF5b3V0ID0gX3RoaXMkcHJvcHMubGF5b3V0LFxuICAgICAgICAgIHN5bmNNZXRob2QgPSBfdGhpcyRwcm9wcy5zeW5jTWV0aG9kO1xuICAgICAgICB2YXIgdXBkYXRlSWQgPSBfdGhpcy5zdGF0ZS51cGRhdGVJZDtcbiAgICAgICAgdmFyIGRhdGFTdGFydEluZGV4ID0gZGF0YS5kYXRhU3RhcnRJbmRleCxcbiAgICAgICAgICBkYXRhRW5kSW5kZXggPSBkYXRhLmRhdGFFbmRJbmRleDtcbiAgICAgICAgaWYgKGRhdGEuZGF0YVN0YXJ0SW5kZXggIT09IHVuZGVmaW5lZCB8fCBkYXRhLmRhdGFFbmRJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleFxuICAgICAgICAgIH0sIHVwZGF0ZVN0YXRlT2ZBeGlzTWFwc09mZnNldEFuZFN0YWNrR3JvdXBzKHtcbiAgICAgICAgICAgIHByb3BzOiBfdGhpcy5wcm9wcyxcbiAgICAgICAgICAgIGRhdGFTdGFydEluZGV4OiBkYXRhU3RhcnRJbmRleCxcbiAgICAgICAgICAgIGRhdGFFbmRJbmRleDogZGF0YUVuZEluZGV4LFxuICAgICAgICAgICAgdXBkYXRlSWQ6IHVwZGF0ZUlkXG4gICAgICAgICAgfSwgX3RoaXMuc3RhdGUpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS5hY3RpdmVUb29sdGlwSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciBjaGFydFggPSBkYXRhLmNoYXJ0WCxcbiAgICAgICAgICAgIGNoYXJ0WSA9IGRhdGEuY2hhcnRZO1xuICAgICAgICAgIHZhciBhY3RpdmVUb29sdGlwSW5kZXggPSBkYXRhLmFjdGl2ZVRvb2x0aXBJbmRleDtcbiAgICAgICAgICB2YXIgX3RoaXMkc3RhdGUyID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgICBvZmZzZXQgPSBfdGhpcyRzdGF0ZTIub2Zmc2V0LFxuICAgICAgICAgICAgdG9vbHRpcFRpY2tzID0gX3RoaXMkc3RhdGUyLnRvb2x0aXBUaWNrcztcbiAgICAgICAgICBpZiAoIW9mZnNldCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHN5bmNNZXRob2QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIENhbGwgYSBjYWxsYmFjayBmdW5jdGlvbi4gSWYgdGhlcmUgaXMgYW4gYXBwbGljYXRpb24gc3BlY2lmaWMgYWxnb3JpdGhtXG4gICAgICAgICAgICBhY3RpdmVUb29sdGlwSW5kZXggPSBzeW5jTWV0aG9kKHRvb2x0aXBUaWNrcywgZGF0YSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzeW5jTWV0aG9kID09PSAndmFsdWUnKSB7XG4gICAgICAgICAgICAvLyBTZXQgYWN0aXZlVG9vbHRpcEluZGV4IHRvIHRoZSBpbmRleCB3aXRoIHRoZSBzYW1lIHZhbHVlIGFzIGRhdGEuYWN0aXZlTGFiZWxcbiAgICAgICAgICAgIC8vIEZvciBsb29wIGluc3RlYWQgb2YgZmluZEluZGV4IGJlY2F1c2UgdGhlIGxhdHRlciBpcyB2ZXJ5IHNsb3cgaW4gc29tZSBicm93c2Vyc1xuICAgICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4ID0gLTE7IC8vIGluIGNhc2Ugd2UgY2Fubm90IGZpbmQgdGhlIGVsZW1lbnRcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcFRpY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmICh0b29sdGlwVGlja3NbaV0udmFsdWUgPT09IGRhdGEuYWN0aXZlTGFiZWwpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUb29sdGlwSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciB2aWV3Qm94ID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvZmZzZXQpLCB7fSwge1xuICAgICAgICAgICAgeDogb2Zmc2V0LmxlZnQsXG4gICAgICAgICAgICB5OiBvZmZzZXQudG9wXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gV2hlbiBhIGNhdGVnb3JpY2FsIGNoYXJ0IGlzIGNvbWJpbmVkIHdpdGggYW5vdGhlciBjaGFydCwgdGhlIHZhbHVlIG9mIGNoYXJ0WFxuICAgICAgICAgIC8vIGFuZCBjaGFydFkgbWF5IGJleW9uZCB0aGUgYm91bmRhcmllcy5cbiAgICAgICAgICB2YXIgdmFsaWRhdGVDaGFydFggPSBNYXRoLm1pbihjaGFydFgsIHZpZXdCb3gueCArIHZpZXdCb3gud2lkdGgpO1xuICAgICAgICAgIHZhciB2YWxpZGF0ZUNoYXJ0WSA9IE1hdGgubWluKGNoYXJ0WSwgdmlld0JveC55ICsgdmlld0JveC5oZWlnaHQpO1xuICAgICAgICAgIHZhciBhY3RpdmVMYWJlbCA9IHRvb2x0aXBUaWNrc1thY3RpdmVUb29sdGlwSW5kZXhdICYmIHRvb2x0aXBUaWNrc1thY3RpdmVUb29sdGlwSW5kZXhdLnZhbHVlO1xuICAgICAgICAgIHZhciBhY3RpdmVQYXlsb2FkID0gZ2V0VG9vbHRpcENvbnRlbnQoX3RoaXMuc3RhdGUsIF90aGlzLnByb3BzLmRhdGEsIGFjdGl2ZVRvb2x0aXBJbmRleCk7XG4gICAgICAgICAgdmFyIGFjdGl2ZUNvb3JkaW5hdGUgPSB0b29sdGlwVGlja3NbYWN0aXZlVG9vbHRpcEluZGV4XSA/IHtcbiAgICAgICAgICAgIHg6IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gdG9vbHRpcFRpY2tzW2FjdGl2ZVRvb2x0aXBJbmRleF0uY29vcmRpbmF0ZSA6IHZhbGlkYXRlQ2hhcnRYLFxuICAgICAgICAgICAgeTogbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgPyB2YWxpZGF0ZUNoYXJ0WSA6IHRvb2x0aXBUaWNrc1thY3RpdmVUb29sdGlwSW5kZXhdLmNvb3JkaW5hdGVcbiAgICAgICAgICB9IDogb3JpZ2luQ29vcmRpbmF0ZTtcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZShfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRhdGEpLCB7fSwge1xuICAgICAgICAgICAgYWN0aXZlTGFiZWw6IGFjdGl2ZUxhYmVsLFxuICAgICAgICAgICAgYWN0aXZlQ29vcmRpbmF0ZTogYWN0aXZlQ29vcmRpbmF0ZSxcbiAgICAgICAgICAgIGFjdGl2ZVBheWxvYWQ6IGFjdGl2ZVBheWxvYWQsXG4gICAgICAgICAgICBhY3RpdmVUb29sdGlwSW5kZXg6IGFjdGl2ZVRvb2x0aXBJbmRleFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZShkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwicmVuZGVyQ3Vyc29yXCIsIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBfZWxlbWVudCRwcm9wcyRhY3RpdmU7XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSBfdGhpcy5zdGF0ZSxcbiAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmUgPSBfdGhpcyRzdGF0ZTMuaXNUb29sdGlwQWN0aXZlLFxuICAgICAgICAgIGFjdGl2ZUNvb3JkaW5hdGUgPSBfdGhpcyRzdGF0ZTMuYWN0aXZlQ29vcmRpbmF0ZSxcbiAgICAgICAgICBhY3RpdmVQYXlsb2FkID0gX3RoaXMkc3RhdGUzLmFjdGl2ZVBheWxvYWQsXG4gICAgICAgICAgb2Zmc2V0ID0gX3RoaXMkc3RhdGUzLm9mZnNldCxcbiAgICAgICAgICBhY3RpdmVUb29sdGlwSW5kZXggPSBfdGhpcyRzdGF0ZTMuYWN0aXZlVG9vbHRpcEluZGV4LFxuICAgICAgICAgIHRvb2x0aXBBeGlzQmFuZFNpemUgPSBfdGhpcyRzdGF0ZTMudG9vbHRpcEF4aXNCYW5kU2l6ZTtcbiAgICAgICAgdmFyIHRvb2x0aXBFdmVudFR5cGUgPSBfdGhpcy5nZXRUb29sdGlwRXZlbnRUeXBlKCk7XG4gICAgICAgIC8vIFRoZSBjdXJzb3IgaXMgYSBwYXJ0IG9mIHRoZSBUb29sdGlwLCBhbmQgaXQgc2hvdWxkIGJlIHNob3duIChieSBkZWZhdWx0KSB3aGVuIHRoZSBUb29sdGlwIGlzIGFjdGl2ZS5cbiAgICAgICAgdmFyIGlzQWN0aXZlID0gKF9lbGVtZW50JHByb3BzJGFjdGl2ZSA9IGVsZW1lbnQucHJvcHMuYWN0aXZlKSAhPT0gbnVsbCAmJiBfZWxlbWVudCRwcm9wcyRhY3RpdmUgIT09IHZvaWQgMCA/IF9lbGVtZW50JHByb3BzJGFjdGl2ZSA6IGlzVG9vbHRpcEFjdGl2ZTtcbiAgICAgICAgdmFyIGxheW91dCA9IF90aGlzLnByb3BzLmxheW91dDtcbiAgICAgICAgdmFyIGtleSA9IGVsZW1lbnQua2V5IHx8ICdfcmVjaGFydHMtY3Vyc29yJztcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEN1cnNvciwge1xuICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgIGFjdGl2ZUNvb3JkaW5hdGU6IGFjdGl2ZUNvb3JkaW5hdGUsXG4gICAgICAgICAgYWN0aXZlUGF5bG9hZDogYWN0aXZlUGF5bG9hZCxcbiAgICAgICAgICBhY3RpdmVUb29sdGlwSW5kZXg6IGFjdGl2ZVRvb2x0aXBJbmRleCxcbiAgICAgICAgICBjaGFydE5hbWU6IGNoYXJ0TmFtZSxcbiAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICAgIGlzQWN0aXZlOiBpc0FjdGl2ZSxcbiAgICAgICAgICBsYXlvdXQ6IGxheW91dCxcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICB0b29sdGlwQXhpc0JhbmRTaXplOiB0b29sdGlwQXhpc0JhbmRTaXplLFxuICAgICAgICAgIHRvb2x0aXBFdmVudFR5cGU6IHRvb2x0aXBFdmVudFR5cGVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJyZW5kZXJQb2xhckF4aXNcIiwgZnVuY3Rpb24gKGVsZW1lbnQsIGRpc3BsYXlOYW1lLCBpbmRleCkge1xuICAgICAgICB2YXIgYXhpc1R5cGUgPSBnZXQoZWxlbWVudCwgJ3R5cGUuYXhpc1R5cGUnKTtcbiAgICAgICAgdmFyIGF4aXNNYXAgPSBnZXQoX3RoaXMuc3RhdGUsIFwiXCIuY29uY2F0KGF4aXNUeXBlLCBcIk1hcFwiKSk7XG4gICAgICAgIHZhciBlbGVtZW50RGVmYXVsdFByb3BzID0gZWxlbWVudC50eXBlLmRlZmF1bHRQcm9wcztcbiAgICAgICAgdmFyIGVsZW1lbnRQcm9wcyA9IGVsZW1lbnREZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZWxlbWVudERlZmF1bHRQcm9wcyksIGVsZW1lbnQucHJvcHMpIDogZWxlbWVudC5wcm9wcztcbiAgICAgICAgdmFyIGF4aXNPcHRpb24gPSBheGlzTWFwICYmIGF4aXNNYXBbZWxlbWVudFByb3BzW1wiXCIuY29uY2F0KGF4aXNUeXBlLCBcIklkXCIpXV07XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGVsZW1lbnQsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXhpc09wdGlvbiksIHt9LCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbHN4KGF4aXNUeXBlLCBheGlzT3B0aW9uLmNsYXNzTmFtZSksXG4gICAgICAgICAga2V5OiBlbGVtZW50LmtleSB8fCBcIlwiLmNvbmNhdChkaXNwbGF5TmFtZSwgXCItXCIpLmNvbmNhdChpbmRleCksXG4gICAgICAgICAgdGlja3M6IGdldFRpY2tzT2ZBeGlzKGF4aXNPcHRpb24sIHRydWUpXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInJlbmRlclBvbGFyR3JpZFwiLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgX2VsZW1lbnQkcHJvcHMgPSBlbGVtZW50LnByb3BzLFxuICAgICAgICAgIHJhZGlhbExpbmVzID0gX2VsZW1lbnQkcHJvcHMucmFkaWFsTGluZXMsXG4gICAgICAgICAgcG9sYXJBbmdsZXMgPSBfZWxlbWVudCRwcm9wcy5wb2xhckFuZ2xlcyxcbiAgICAgICAgICBwb2xhclJhZGl1cyA9IF9lbGVtZW50JHByb3BzLnBvbGFyUmFkaXVzO1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGU0ID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgcmFkaXVzQXhpc01hcCA9IF90aGlzJHN0YXRlNC5yYWRpdXNBeGlzTWFwLFxuICAgICAgICAgIGFuZ2xlQXhpc01hcCA9IF90aGlzJHN0YXRlNC5hbmdsZUF4aXNNYXA7XG4gICAgICAgIHZhciByYWRpdXNBeGlzID0gZ2V0QW55RWxlbWVudE9mT2JqZWN0KHJhZGl1c0F4aXNNYXApO1xuICAgICAgICB2YXIgYW5nbGVBeGlzID0gZ2V0QW55RWxlbWVudE9mT2JqZWN0KGFuZ2xlQXhpc01hcCk7XG4gICAgICAgIHZhciBjeCA9IGFuZ2xlQXhpcy5jeCxcbiAgICAgICAgICBjeSA9IGFuZ2xlQXhpcy5jeSxcbiAgICAgICAgICBpbm5lclJhZGl1cyA9IGFuZ2xlQXhpcy5pbm5lclJhZGl1cyxcbiAgICAgICAgICBvdXRlclJhZGl1cyA9IGFuZ2xlQXhpcy5vdXRlclJhZGl1cztcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoZWxlbWVudCwge1xuICAgICAgICAgIHBvbGFyQW5nbGVzOiBBcnJheS5pc0FycmF5KHBvbGFyQW5nbGVzKSA/IHBvbGFyQW5nbGVzIDogZ2V0VGlja3NPZkF4aXMoYW5nbGVBeGlzLCB0cnVlKS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gZW50cnkuY29vcmRpbmF0ZTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBwb2xhclJhZGl1czogQXJyYXkuaXNBcnJheShwb2xhclJhZGl1cykgPyBwb2xhclJhZGl1cyA6IGdldFRpY2tzT2ZBeGlzKHJhZGl1c0F4aXMsIHRydWUpLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeS5jb29yZGluYXRlO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGN4OiBjeCxcbiAgICAgICAgICBjeTogY3ksXG4gICAgICAgICAgaW5uZXJSYWRpdXM6IGlubmVyUmFkaXVzLFxuICAgICAgICAgIG91dGVyUmFkaXVzOiBvdXRlclJhZGl1cyxcbiAgICAgICAgICBrZXk6IGVsZW1lbnQua2V5IHx8ICdwb2xhci1ncmlkJyxcbiAgICAgICAgICByYWRpYWxMaW5lczogcmFkaWFsTGluZXNcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIC8qKlxuICAgICAgICogRHJhdyBsZWdlbmRcbiAgICAgICAqIEByZXR1cm4ge1JlYWN0RWxlbWVudH0gICAgICAgICAgICBUaGUgaW5zdGFuY2Ugb2YgTGVnZW5kXG4gICAgICAgKi9cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJyZW5kZXJMZWdlbmRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgPSBfdGhpcy5zdGF0ZS5mb3JtYXR0ZWRHcmFwaGljYWxJdGVtcztcbiAgICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMyLmNoaWxkcmVuLFxuICAgICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHMyLndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzMi5oZWlnaHQ7XG4gICAgICAgIHZhciBtYXJnaW4gPSBfdGhpcy5wcm9wcy5tYXJnaW4gfHwge307XG4gICAgICAgIHZhciBsZWdlbmRXaWR0aCA9IHdpZHRoIC0gKG1hcmdpbi5sZWZ0IHx8IDApIC0gKG1hcmdpbi5yaWdodCB8fCAwKTtcbiAgICAgICAgdmFyIHByb3BzID0gZ2V0TGVnZW5kUHJvcHMoe1xuICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICAgICAgICBmb3JtYXR0ZWRHcmFwaGljYWxJdGVtczogZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMsXG4gICAgICAgICAgbGVnZW5kV2lkdGg6IGxlZ2VuZFdpZHRoLFxuICAgICAgICAgIGxlZ2VuZENvbnRlbnQ6IGxlZ2VuZENvbnRlbnRcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcHJvcHMpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaXRlbSA9IHByb3BzLml0ZW0sXG4gICAgICAgICAgb3RoZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoaXRlbSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvdGhlclByb3BzKSwge30sIHtcbiAgICAgICAgICBjaGFydFdpZHRoOiB3aWR0aCxcbiAgICAgICAgICBjaGFydEhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgIG1hcmdpbjogbWFyZ2luLFxuICAgICAgICAgIG9uQkJveFVwZGF0ZTogX3RoaXMuaGFuZGxlTGVnZW5kQkJveFVwZGF0ZVxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICAgIC8qKlxuICAgICAgICogRHJhdyBUb29sdGlwXG4gICAgICAgKiBAcmV0dXJuIHtSZWFjdEVsZW1lbnR9ICBUaGUgaW5zdGFuY2Ugb2YgVG9vbHRpcFxuICAgICAgICovXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwicmVuZGVyVG9vbHRpcFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdG9vbHRpcEl0ZW0kcHJvcHMkYWM7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzMy5jaGlsZHJlbixcbiAgICAgICAgICBhY2Nlc3NpYmlsaXR5TGF5ZXIgPSBfdGhpcyRwcm9wczMuYWNjZXNzaWJpbGl0eUxheWVyO1xuICAgICAgICB2YXIgdG9vbHRpcEl0ZW0gPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIFRvb2x0aXApO1xuICAgICAgICBpZiAoIXRvb2x0aXBJdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF90aGlzJHN0YXRlNSA9IF90aGlzLnN0YXRlLFxuICAgICAgICAgIGlzVG9vbHRpcEFjdGl2ZSA9IF90aGlzJHN0YXRlNS5pc1Rvb2x0aXBBY3RpdmUsXG4gICAgICAgICAgYWN0aXZlQ29vcmRpbmF0ZSA9IF90aGlzJHN0YXRlNS5hY3RpdmVDb29yZGluYXRlLFxuICAgICAgICAgIGFjdGl2ZVBheWxvYWQgPSBfdGhpcyRzdGF0ZTUuYWN0aXZlUGF5bG9hZCxcbiAgICAgICAgICBhY3RpdmVMYWJlbCA9IF90aGlzJHN0YXRlNS5hY3RpdmVMYWJlbCxcbiAgICAgICAgICBvZmZzZXQgPSBfdGhpcyRzdGF0ZTUub2Zmc2V0O1xuXG4gICAgICAgIC8vIFRoZSB1c2VyIGNhbiBzZXQgaXNBY3RpdmUgb24gdGhlIFRvb2x0aXAsXG4gICAgICAgIC8vIGFuZCB3ZSByZXNwZWN0IHRoZSB1c2VyIHRvIGVuYWJsZSBjdXN0b21pc2F0aW9uLlxuICAgICAgICAvLyBUaGUgVG9vbHRpcCBpcyBhY3RpdmUgaWYgdGhlIHVzZXIgaGFzIHNldCBpc0FjdGl2ZSwgb3IgaWYgdGhlIHRvb2x0aXAgaXMgYWN0aXZlIGR1ZSB0byBhIG1vdXNlIGV2ZW50LlxuICAgICAgICB2YXIgaXNBY3RpdmUgPSAoX3Rvb2x0aXBJdGVtJHByb3BzJGFjID0gdG9vbHRpcEl0ZW0ucHJvcHMuYWN0aXZlKSAhPT0gbnVsbCAmJiBfdG9vbHRpcEl0ZW0kcHJvcHMkYWMgIT09IHZvaWQgMCA/IF90b29sdGlwSXRlbSRwcm9wcyRhYyA6IGlzVG9vbHRpcEFjdGl2ZTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQodG9vbHRpcEl0ZW0sIHtcbiAgICAgICAgICB2aWV3Qm94OiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9mZnNldCksIHt9LCB7XG4gICAgICAgICAgICB4OiBvZmZzZXQubGVmdCxcbiAgICAgICAgICAgIHk6IG9mZnNldC50b3BcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBhY3RpdmU6IGlzQWN0aXZlLFxuICAgICAgICAgIGxhYmVsOiBhY3RpdmVMYWJlbCxcbiAgICAgICAgICBwYXlsb2FkOiBpc0FjdGl2ZSA/IGFjdGl2ZVBheWxvYWQgOiBbXSxcbiAgICAgICAgICBjb29yZGluYXRlOiBhY3RpdmVDb29yZGluYXRlLFxuICAgICAgICAgIGFjY2Vzc2liaWxpdHlMYXllcjogYWNjZXNzaWJpbGl0eUxheWVyXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwicmVuZGVyQnJ1c2hcIiwgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIG1hcmdpbiA9IF90aGlzJHByb3BzNC5tYXJnaW4sXG4gICAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzNC5kYXRhO1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGU2ID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgb2Zmc2V0ID0gX3RoaXMkc3RhdGU2Lm9mZnNldCxcbiAgICAgICAgICBkYXRhU3RhcnRJbmRleCA9IF90aGlzJHN0YXRlNi5kYXRhU3RhcnRJbmRleCxcbiAgICAgICAgICBkYXRhRW5kSW5kZXggPSBfdGhpcyRzdGF0ZTYuZGF0YUVuZEluZGV4LFxuICAgICAgICAgIHVwZGF0ZUlkID0gX3RoaXMkc3RhdGU2LnVwZGF0ZUlkO1xuXG4gICAgICAgIC8vIFRPRE86IHVwZGF0ZSBicnVzaCB3aGVuIGNoaWxkcmVuIHVwZGF0ZVxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChlbGVtZW50LCB7XG4gICAgICAgICAga2V5OiBlbGVtZW50LmtleSB8fCAnX3JlY2hhcnRzLWJydXNoJyxcbiAgICAgICAgICBvbkNoYW5nZTogY29tYmluZUV2ZW50SGFuZGxlcnMoX3RoaXMuaGFuZGxlQnJ1c2hDaGFuZ2UsIGVsZW1lbnQucHJvcHMub25DaGFuZ2UpLFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgeDogaXNOdW1iZXIoZWxlbWVudC5wcm9wcy54KSA/IGVsZW1lbnQucHJvcHMueCA6IG9mZnNldC5sZWZ0LFxuICAgICAgICAgIHk6IGlzTnVtYmVyKGVsZW1lbnQucHJvcHMueSkgPyBlbGVtZW50LnByb3BzLnkgOiBvZmZzZXQudG9wICsgb2Zmc2V0LmhlaWdodCArIG9mZnNldC5icnVzaEJvdHRvbSAtIChtYXJnaW4uYm90dG9tIHx8IDApLFxuICAgICAgICAgIHdpZHRoOiBpc051bWJlcihlbGVtZW50LnByb3BzLndpZHRoKSA/IGVsZW1lbnQucHJvcHMud2lkdGggOiBvZmZzZXQud2lkdGgsXG4gICAgICAgICAgc3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgZW5kSW5kZXg6IGRhdGFFbmRJbmRleCxcbiAgICAgICAgICB1cGRhdGVJZDogXCJicnVzaC1cIi5jb25jYXQodXBkYXRlSWQpXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwicmVuZGVyUmVmZXJlbmNlRWxlbWVudFwiLCBmdW5jdGlvbiAoZWxlbWVudCwgZGlzcGxheU5hbWUsIGluZGV4KSB7XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfdGhpczIgPSBfdGhpcyxcbiAgICAgICAgICBjbGlwUGF0aElkID0gX3RoaXMyLmNsaXBQYXRoSWQ7XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZTcgPSBfdGhpcy5zdGF0ZSxcbiAgICAgICAgICB4QXhpc01hcCA9IF90aGlzJHN0YXRlNy54QXhpc01hcCxcbiAgICAgICAgICB5QXhpc01hcCA9IF90aGlzJHN0YXRlNy55QXhpc01hcCxcbiAgICAgICAgICBvZmZzZXQgPSBfdGhpcyRzdGF0ZTcub2Zmc2V0O1xuICAgICAgICB2YXIgZWxlbWVudERlZmF1bHRQcm9wcyA9IGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHMgfHwge307XG4gICAgICAgIHZhciBfZWxlbWVudCRwcm9wczIgPSBlbGVtZW50LnByb3BzLFxuICAgICAgICAgIF9lbGVtZW50JHByb3BzMiR4QXhpcyA9IF9lbGVtZW50JHByb3BzMi54QXhpc0lkLFxuICAgICAgICAgIHhBeGlzSWQgPSBfZWxlbWVudCRwcm9wczIkeEF4aXMgPT09IHZvaWQgMCA/IGVsZW1lbnREZWZhdWx0UHJvcHMueEF4aXNJZCA6IF9lbGVtZW50JHByb3BzMiR4QXhpcyxcbiAgICAgICAgICBfZWxlbWVudCRwcm9wczIkeUF4aXMgPSBfZWxlbWVudCRwcm9wczIueUF4aXNJZCxcbiAgICAgICAgICB5QXhpc0lkID0gX2VsZW1lbnQkcHJvcHMyJHlBeGlzID09PSB2b2lkIDAgPyBlbGVtZW50RGVmYXVsdFByb3BzLnlBeGlzSWQgOiBfZWxlbWVudCRwcm9wczIkeUF4aXM7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGVsZW1lbnQsIHtcbiAgICAgICAgICBrZXk6IGVsZW1lbnQua2V5IHx8IFwiXCIuY29uY2F0KGRpc3BsYXlOYW1lLCBcIi1cIikuY29uY2F0KGluZGV4KSxcbiAgICAgICAgICB4QXhpczogeEF4aXNNYXBbeEF4aXNJZF0sXG4gICAgICAgICAgeUF4aXM6IHlBeGlzTWFwW3lBeGlzSWRdLFxuICAgICAgICAgIHZpZXdCb3g6IHtcbiAgICAgICAgICAgIHg6IG9mZnNldC5sZWZ0LFxuICAgICAgICAgICAgeTogb2Zmc2V0LnRvcCxcbiAgICAgICAgICAgIHdpZHRoOiBvZmZzZXQud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IG9mZnNldC5oZWlnaHRcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsaXBQYXRoSWQ6IGNsaXBQYXRoSWRcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJyZW5kZXJBY3RpdmVQb2ludHNcIiwgZnVuY3Rpb24gKF9yZWYxMCkge1xuICAgICAgICB2YXIgaXRlbSA9IF9yZWYxMC5pdGVtLFxuICAgICAgICAgIGFjdGl2ZVBvaW50ID0gX3JlZjEwLmFjdGl2ZVBvaW50LFxuICAgICAgICAgIGJhc2VQb2ludCA9IF9yZWYxMC5iYXNlUG9pbnQsXG4gICAgICAgICAgY2hpbGRJbmRleCA9IF9yZWYxMC5jaGlsZEluZGV4LFxuICAgICAgICAgIGlzUmFuZ2UgPSBfcmVmMTAuaXNSYW5nZTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICAvLyBpdGVtIGlzIG5vdCBhIFJlYWN0IEVsZW1lbnQgc28gd2UgZG9uJ3QgbmVlZCB0byByZXNvbHZlIGRlZmF1bHRQcm9wcy5cbiAgICAgICAgdmFyIGtleSA9IGl0ZW0ucHJvcHMua2V5O1xuICAgICAgICB2YXIgaXRlbUl0ZW1Qcm9wcyA9IGl0ZW0uaXRlbS50eXBlLmRlZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkID8gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpdGVtLml0ZW0udHlwZS5kZWZhdWx0UHJvcHMpLCBpdGVtLml0ZW0ucHJvcHMpIDogaXRlbS5pdGVtLnByb3BzO1xuICAgICAgICB2YXIgYWN0aXZlRG90ID0gaXRlbUl0ZW1Qcm9wcy5hY3RpdmVEb3QsXG4gICAgICAgICAgZGF0YUtleSA9IGl0ZW1JdGVtUHJvcHMuZGF0YUtleTtcbiAgICAgICAgdmFyIGRvdFByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICBpbmRleDogY2hpbGRJbmRleCxcbiAgICAgICAgICBkYXRhS2V5OiBkYXRhS2V5LFxuICAgICAgICAgIGN4OiBhY3RpdmVQb2ludC54LFxuICAgICAgICAgIGN5OiBhY3RpdmVQb2ludC55LFxuICAgICAgICAgIHI6IDQsXG4gICAgICAgICAgZmlsbDogZ2V0TWFpbkNvbG9yT2ZHcmFwaGljSXRlbShpdGVtLml0ZW0pLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgIHN0cm9rZTogJyNmZmYnLFxuICAgICAgICAgIHBheWxvYWQ6IGFjdGl2ZVBvaW50LnBheWxvYWQsXG4gICAgICAgICAgdmFsdWU6IGFjdGl2ZVBvaW50LnZhbHVlXG4gICAgICAgIH0sIGZpbHRlclByb3BzKGFjdGl2ZURvdCwgZmFsc2UpKSwgYWRhcHRFdmVudEhhbmRsZXJzKGFjdGl2ZURvdCkpO1xuICAgICAgICByZXN1bHQucHVzaChDYXRlZ29yaWNhbENoYXJ0V3JhcHBlci5yZW5kZXJBY3RpdmVEb3QoYWN0aXZlRG90LCBkb3RQcm9wcywgXCJcIi5jb25jYXQoa2V5LCBcIi1hY3RpdmVQb2ludC1cIikuY29uY2F0KGNoaWxkSW5kZXgpKSk7XG4gICAgICAgIGlmIChiYXNlUG9pbnQpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChDYXRlZ29yaWNhbENoYXJ0V3JhcHBlci5yZW5kZXJBY3RpdmVEb3QoYWN0aXZlRG90LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRvdFByb3BzKSwge30sIHtcbiAgICAgICAgICAgIGN4OiBiYXNlUG9pbnQueCxcbiAgICAgICAgICAgIGN5OiBiYXNlUG9pbnQueVxuICAgICAgICAgIH0pLCBcIlwiLmNvbmNhdChrZXksIFwiLWJhc2VQb2ludC1cIikuY29uY2F0KGNoaWxkSW5kZXgpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNSYW5nZSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJyZW5kZXJHcmFwaGljQ2hpbGRcIiwgZnVuY3Rpb24gKGVsZW1lbnQsIGRpc3BsYXlOYW1lLCBpbmRleCkge1xuICAgICAgICB2YXIgaXRlbSA9IF90aGlzLmZpbHRlckZvcm1hdEl0ZW0oZWxlbWVudCwgZGlzcGxheU5hbWUsIGluZGV4KTtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvb2x0aXBFdmVudFR5cGUgPSBfdGhpcy5nZXRUb29sdGlwRXZlbnRUeXBlKCk7XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZTggPSBfdGhpcy5zdGF0ZSxcbiAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmUgPSBfdGhpcyRzdGF0ZTguaXNUb29sdGlwQWN0aXZlLFxuICAgICAgICAgIHRvb2x0aXBBeGlzID0gX3RoaXMkc3RhdGU4LnRvb2x0aXBBeGlzLFxuICAgICAgICAgIGFjdGl2ZVRvb2x0aXBJbmRleCA9IF90aGlzJHN0YXRlOC5hY3RpdmVUb29sdGlwSW5kZXgsXG4gICAgICAgICAgYWN0aXZlTGFiZWwgPSBfdGhpcyRzdGF0ZTguYWN0aXZlTGFiZWw7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IF90aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgICB2YXIgdG9vbHRpcEl0ZW0gPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIFRvb2x0aXApO1xuICAgICAgICAvLyBpdGVtIGlzIG5vdCBhIFJlYWN0IEVsZW1lbnQgc28gd2UgZG9uJ3QgbmVlZCB0byByZXNvbHZlIGRlZmF1bHRQcm9wc1xuICAgICAgICB2YXIgX2l0ZW0kcHJvcHMgPSBpdGVtLnByb3BzLFxuICAgICAgICAgIHBvaW50cyA9IF9pdGVtJHByb3BzLnBvaW50cyxcbiAgICAgICAgICBpc1JhbmdlID0gX2l0ZW0kcHJvcHMuaXNSYW5nZSxcbiAgICAgICAgICBiYXNlTGluZSA9IF9pdGVtJHByb3BzLmJhc2VMaW5lO1xuICAgICAgICB2YXIgaXRlbUl0ZW1Qcm9wcyA9IGl0ZW0uaXRlbS50eXBlLmRlZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkID8gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpdGVtLml0ZW0udHlwZS5kZWZhdWx0UHJvcHMpLCBpdGVtLml0ZW0ucHJvcHMpIDogaXRlbS5pdGVtLnByb3BzO1xuICAgICAgICB2YXIgYWN0aXZlRG90ID0gaXRlbUl0ZW1Qcm9wcy5hY3RpdmVEb3QsXG4gICAgICAgICAgaGlkZSA9IGl0ZW1JdGVtUHJvcHMuaGlkZSxcbiAgICAgICAgICBhY3RpdmVCYXIgPSBpdGVtSXRlbVByb3BzLmFjdGl2ZUJhcixcbiAgICAgICAgICBhY3RpdmVTaGFwZSA9IGl0ZW1JdGVtUHJvcHMuYWN0aXZlU2hhcGU7XG4gICAgICAgIHZhciBoYXNBY3RpdmUgPSBCb29sZWFuKCFoaWRlICYmIGlzVG9vbHRpcEFjdGl2ZSAmJiB0b29sdGlwSXRlbSAmJiAoYWN0aXZlRG90IHx8IGFjdGl2ZUJhciB8fCBhY3RpdmVTaGFwZSkpO1xuICAgICAgICB2YXIgaXRlbUV2ZW50cyA9IHt9O1xuICAgICAgICBpZiAodG9vbHRpcEV2ZW50VHlwZSAhPT0gJ2F4aXMnICYmIHRvb2x0aXBJdGVtICYmIHRvb2x0aXBJdGVtLnByb3BzLnRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICAgICAgICBpdGVtRXZlbnRzID0ge1xuICAgICAgICAgICAgb25DbGljazogY29tYmluZUV2ZW50SGFuZGxlcnMoX3RoaXMuaGFuZGxlSXRlbU1vdXNlRW50ZXIsIGVsZW1lbnQucHJvcHMub25DbGljaylcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKHRvb2x0aXBFdmVudFR5cGUgIT09ICdheGlzJykge1xuICAgICAgICAgIGl0ZW1FdmVudHMgPSB7XG4gICAgICAgICAgICBvbk1vdXNlTGVhdmU6IGNvbWJpbmVFdmVudEhhbmRsZXJzKF90aGlzLmhhbmRsZUl0ZW1Nb3VzZUxlYXZlLCBlbGVtZW50LnByb3BzLm9uTW91c2VMZWF2ZSksXG4gICAgICAgICAgICBvbk1vdXNlRW50ZXI6IGNvbWJpbmVFdmVudEhhbmRsZXJzKF90aGlzLmhhbmRsZUl0ZW1Nb3VzZUVudGVyLCBlbGVtZW50LnByb3BzLm9uTW91c2VFbnRlcilcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBncmFwaGljYWxJdGVtID0gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChlbGVtZW50LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW0ucHJvcHMpLCBpdGVtRXZlbnRzKSk7XG4gICAgICAgIGZ1bmN0aW9uIGZpbmRXaXRoUGF5bG9hZChlbnRyeSkge1xuICAgICAgICAgIC8vIFRPRE8gbmVlZHMgdG8gdmVyaWZ5IGRhdGFLZXkgaXMgRnVuY3Rpb25cbiAgICAgICAgICByZXR1cm4gdHlwZW9mIHRvb2x0aXBBeGlzLmRhdGFLZXkgPT09ICdmdW5jdGlvbicgPyB0b29sdGlwQXhpcy5kYXRhS2V5KGVudHJ5LnBheWxvYWQpIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzQWN0aXZlKSB7XG4gICAgICAgICAgaWYgKGFjdGl2ZVRvb2x0aXBJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICB2YXIgYWN0aXZlUG9pbnQsIGJhc2VQb2ludDtcbiAgICAgICAgICAgIGlmICh0b29sdGlwQXhpcy5kYXRhS2V5ICYmICF0b29sdGlwQXhpcy5hbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSkge1xuICAgICAgICAgICAgICAvLyBudW1iZXIgdHJhbnNmb3JtIHRvIHN0cmluZ1xuICAgICAgICAgICAgICB2YXIgc3BlY2lmaWVkS2V5ID0gdHlwZW9mIHRvb2x0aXBBeGlzLmRhdGFLZXkgPT09ICdmdW5jdGlvbicgPyBmaW5kV2l0aFBheWxvYWQgOiAncGF5bG9hZC4nLmNvbmNhdCh0b29sdGlwQXhpcy5kYXRhS2V5LnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICBhY3RpdmVQb2ludCA9IGZpbmRFbnRyeUluQXJyYXkocG9pbnRzLCBzcGVjaWZpZWRLZXksIGFjdGl2ZUxhYmVsKTtcbiAgICAgICAgICAgICAgYmFzZVBvaW50ID0gaXNSYW5nZSAmJiBiYXNlTGluZSAmJiBmaW5kRW50cnlJbkFycmF5KGJhc2VMaW5lLCBzcGVjaWZpZWRLZXksIGFjdGl2ZUxhYmVsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFjdGl2ZVBvaW50ID0gcG9pbnRzID09PSBudWxsIHx8IHBvaW50cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcG9pbnRzW2FjdGl2ZVRvb2x0aXBJbmRleF07XG4gICAgICAgICAgICAgIGJhc2VQb2ludCA9IGlzUmFuZ2UgJiYgYmFzZUxpbmUgJiYgYmFzZUxpbmVbYWN0aXZlVG9vbHRpcEluZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhY3RpdmVTaGFwZSB8fCBhY3RpdmVCYXIpIHtcbiAgICAgICAgICAgICAgdmFyIGFjdGl2ZUluZGV4ID0gZWxlbWVudC5wcm9wcy5hY3RpdmVJbmRleCAhPT0gdW5kZWZpbmVkID8gZWxlbWVudC5wcm9wcy5hY3RpdmVJbmRleCA6IGFjdGl2ZVRvb2x0aXBJbmRleDtcbiAgICAgICAgICAgICAgcmV0dXJuIFsvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGVsZW1lbnQsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpdGVtLnByb3BzKSwgaXRlbUV2ZW50cyksIHt9LCB7XG4gICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGFjdGl2ZUluZGV4XG4gICAgICAgICAgICAgIH0pKSwgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzTmlsKGFjdGl2ZVBvaW50KSkge1xuICAgICAgICAgICAgICByZXR1cm4gW2dyYXBoaWNhbEl0ZW1dLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoX3RoaXMucmVuZGVyQWN0aXZlUG9pbnRzKHtcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICAgICAgICAgIGFjdGl2ZVBvaW50OiBhY3RpdmVQb2ludCxcbiAgICAgICAgICAgICAgICBiYXNlUG9pbnQ6IGJhc2VQb2ludCxcbiAgICAgICAgICAgICAgICBjaGlsZEluZGV4OiBhY3RpdmVUb29sdGlwSW5kZXgsXG4gICAgICAgICAgICAgICAgaXNSYW5nZTogaXNSYW5nZVxuICAgICAgICAgICAgICB9KSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMkZ2V0SXRlbUJ5WFk7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdlIGhpdCB0aGlzIGJsb2NrIGlmIGNvbnN1bWVyIHVzZXMgYSBUb29sdGlwIHdpdGhvdXQgWEF4aXMgYW5kL29yIFlBeGlzLlxuICAgICAgICAgICAgICogSW4gd2hpY2ggY2FzZSwgdGhpcy5zdGF0ZS5hY3RpdmVUb29sdGlwSW5kZXggbmV2ZXIgZ2V0cyBzZXRcbiAgICAgICAgICAgICAqIGJlY2F1c2UgdGhlIG1vdXNlIGV2ZW50cyB0aGF0IHRyaWdnZXIgdGhhdCB2YWx1ZSBnZXR0aW5nIHNldCBuZXZlciBnZXQgdHJpZ2dlZCB3aXRob3V0IHRoZSBheGlzIGNvbXBvbmVudHMuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQW4gZXhhbXBsZSB1c2FnZSBjYXNlIGlzIGEgRnVubmVsQ2hhcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIF9yZWYxMSA9IChfdGhpcyRnZXRJdGVtQnlYWSA9IF90aGlzLmdldEl0ZW1CeVhZKF90aGlzLnN0YXRlLmFjdGl2ZUNvb3JkaW5hdGUpKSAhPT0gbnVsbCAmJiBfdGhpcyRnZXRJdGVtQnlYWSAhPT0gdm9pZCAwID8gX3RoaXMkZ2V0SXRlbUJ5WFkgOiB7XG4gICAgICAgICAgICAgICAgZ3JhcGhpY2FsSXRlbTogZ3JhcGhpY2FsSXRlbVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBfcmVmMTEkZ3JhcGhpY2FsSXRlbSA9IF9yZWYxMS5ncmFwaGljYWxJdGVtLFxuICAgICAgICAgICAgICBfcmVmMTEkZ3JhcGhpY2FsSXRlbSQgPSBfcmVmMTEkZ3JhcGhpY2FsSXRlbS5pdGVtLFxuICAgICAgICAgICAgICB4eUl0ZW0gPSBfcmVmMTEkZ3JhcGhpY2FsSXRlbSQgPT09IHZvaWQgMCA/IGVsZW1lbnQgOiBfcmVmMTEkZ3JhcGhpY2FsSXRlbSQsXG4gICAgICAgICAgICAgIGNoaWxkSW5kZXggPSBfcmVmMTEkZ3JhcGhpY2FsSXRlbS5jaGlsZEluZGV4O1xuICAgICAgICAgICAgdmFyIGVsZW1lbnRQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpdGVtLnByb3BzKSwgaXRlbUV2ZW50cyksIHt9LCB7XG4gICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiBjaGlsZEluZGV4XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBbLyojX19QVVJFX18qL2Nsb25lRWxlbWVudCh4eUl0ZW0sIGVsZW1lbnRQcm9wcyksIG51bGwsIG51bGxdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSYW5nZSkge1xuICAgICAgICAgIHJldHVybiBbZ3JhcGhpY2FsSXRlbSwgbnVsbCwgbnVsbF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtncmFwaGljYWxJdGVtLCBudWxsXTtcbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInJlbmRlckN1c3RvbWl6ZWRcIiwgZnVuY3Rpb24gKGVsZW1lbnQsIGRpc3BsYXlOYW1lLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChlbGVtZW50LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIGtleTogXCJyZWNoYXJ0cy1jdXN0b21pemVkLVwiLmNvbmNhdChpbmRleClcbiAgICAgICAgfSwgX3RoaXMucHJvcHMpLCBfdGhpcy5zdGF0ZSkpO1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwicmVuZGVyTWFwXCIsIHtcbiAgICAgICAgQ2FydGVzaWFuR3JpZDoge1xuICAgICAgICAgIGhhbmRsZXI6IHJlbmRlckFzSXMsXG4gICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBSZWZlcmVuY2VBcmVhOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyUmVmZXJlbmNlRWxlbWVudFxuICAgICAgICB9LFxuICAgICAgICBSZWZlcmVuY2VMaW5lOiB7XG4gICAgICAgICAgaGFuZGxlcjogcmVuZGVyQXNJc1xuICAgICAgICB9LFxuICAgICAgICBSZWZlcmVuY2VEb3Q6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJSZWZlcmVuY2VFbGVtZW50XG4gICAgICAgIH0sXG4gICAgICAgIFhBeGlzOiB7XG4gICAgICAgICAgaGFuZGxlcjogcmVuZGVyQXNJc1xuICAgICAgICB9LFxuICAgICAgICBZQXhpczoge1xuICAgICAgICAgIGhhbmRsZXI6IHJlbmRlckFzSXNcbiAgICAgICAgfSxcbiAgICAgICAgQnJ1c2g6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJCcnVzaCxcbiAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIEJhcjoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckdyYXBoaWNDaGlsZFxuICAgICAgICB9LFxuICAgICAgICBMaW5lOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyR3JhcGhpY0NoaWxkXG4gICAgICAgIH0sXG4gICAgICAgIEFyZWE6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJHcmFwaGljQ2hpbGRcbiAgICAgICAgfSxcbiAgICAgICAgUmFkYXI6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJHcmFwaGljQ2hpbGRcbiAgICAgICAgfSxcbiAgICAgICAgUmFkaWFsQmFyOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyR3JhcGhpY0NoaWxkXG4gICAgICAgIH0sXG4gICAgICAgIFNjYXR0ZXI6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJHcmFwaGljQ2hpbGRcbiAgICAgICAgfSxcbiAgICAgICAgUGllOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyR3JhcGhpY0NoaWxkXG4gICAgICAgIH0sXG4gICAgICAgIEZ1bm5lbDoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckdyYXBoaWNDaGlsZFxuICAgICAgICB9LFxuICAgICAgICBUb29sdGlwOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyQ3Vyc29yLFxuICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgUG9sYXJHcmlkOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyUG9sYXJHcmlkLFxuICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgUG9sYXJBbmdsZUF4aXM6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJQb2xhckF4aXNcbiAgICAgICAgfSxcbiAgICAgICAgUG9sYXJSYWRpdXNBeGlzOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyUG9sYXJBeGlzXG4gICAgICAgIH0sXG4gICAgICAgIEN1c3RvbWl6ZWQ6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJDdXN0b21pemVkXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX3RoaXMuY2xpcFBhdGhJZCA9IFwiXCIuY29uY2F0KChfcHJvcHMkaWQgPSBfcHJvcHMuaWQpICE9PSBudWxsICYmIF9wcm9wcyRpZCAhPT0gdm9pZCAwID8gX3Byb3BzJGlkIDogdW5pcXVlSWQoJ3JlY2hhcnRzJyksIFwiLWNsaXBcIik7XG5cbiAgICAgIC8vIHRyaWdnZXIgNjBmcHNcbiAgICAgIF90aGlzLnRocm90dGxlVHJpZ2dlcmVkQWZ0ZXJNb3VzZU1vdmUgPSB0aHJvdHRsZShfdGhpcy50cmlnZ2VyZWRBZnRlck1vdXNlTW92ZSwgKF9wcm9wcyR0aHJvdHRsZURlbGF5ID0gX3Byb3BzLnRocm90dGxlRGVsYXkpICE9PSBudWxsICYmIF9wcm9wcyR0aHJvdHRsZURlbGF5ICE9PSB2b2lkIDAgPyBfcHJvcHMkdGhyb3R0bGVEZWxheSA6IDEwMDAgLyA2MCk7XG4gICAgICBfdGhpcy5zdGF0ZSA9IHt9O1xuICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBfaW5oZXJpdHMoQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIsIF9Db21wb25lbnQpO1xuICAgIHJldHVybiBfY3JlYXRlQ2xhc3MoQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIsIFt7XG4gICAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJG1hcmdpbiRsZSwgX3RoaXMkcHJvcHMkbWFyZ2luJHRvO1xuICAgICAgICB0aGlzLmFkZExpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuYWNjZXNzaWJpbGl0eU1hbmFnZXIuc2V0RGV0YWlscyh7XG4gICAgICAgICAgY29udGFpbmVyOiB0aGlzLmNvbnRhaW5lcixcbiAgICAgICAgICBvZmZzZXQ6IHtcbiAgICAgICAgICAgIGxlZnQ6IChfdGhpcyRwcm9wcyRtYXJnaW4kbGUgPSB0aGlzLnByb3BzLm1hcmdpbi5sZWZ0KSAhPT0gbnVsbCAmJiBfdGhpcyRwcm9wcyRtYXJnaW4kbGUgIT09IHZvaWQgMCA/IF90aGlzJHByb3BzJG1hcmdpbiRsZSA6IDAsXG4gICAgICAgICAgICB0b3A6IChfdGhpcyRwcm9wcyRtYXJnaW4kdG8gPSB0aGlzLnByb3BzLm1hcmdpbi50b3ApICE9PSBudWxsICYmIF90aGlzJHByb3BzJG1hcmdpbiR0byAhPT0gdm9pZCAwID8gX3RoaXMkcHJvcHMkbWFyZ2luJHRvIDogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29vcmRpbmF0ZUxpc3Q6IHRoaXMuc3RhdGUudG9vbHRpcFRpY2tzLFxuICAgICAgICAgIG1vdXNlSGFuZGxlckNhbGxiYWNrOiB0aGlzLnRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlLFxuICAgICAgICAgIGxheW91dDogdGhpcy5wcm9wcy5sYXlvdXRcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGlzcGxheURlZmF1bHRUb29sdGlwKCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImRpc3BsYXlEZWZhdWx0VG9vbHRpcFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGRpc3BsYXlEZWZhdWx0VG9vbHRpcCgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzNSA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczUuY2hpbGRyZW4sXG4gICAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzNS5kYXRhLFxuICAgICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzNS5oZWlnaHQsXG4gICAgICAgICAgbGF5b3V0ID0gX3RoaXMkcHJvcHM1LmxheW91dDtcbiAgICAgICAgdmFyIHRvb2x0aXBFbGVtID0gZmluZENoaWxkQnlUeXBlKGNoaWxkcmVuLCBUb29sdGlwKTtcbiAgICAgICAgLy8gSWYgdGhlIGNoYXJ0IGRvZXNuJ3QgaW5jbHVkZSBhIDxUb29sdGlwIC8+IGVsZW1lbnQsIHRoZXJlJ3Mgbm8gdG9vbHRpcCB0byBkaXNwbGF5XG4gICAgICAgIGlmICghdG9vbHRpcEVsZW0pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlZmF1bHRJbmRleCA9IHRvb2x0aXBFbGVtLnByb3BzLmRlZmF1bHRJbmRleDtcblxuICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgcnVudGltZSBlcnJvcnNcbiAgICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0SW5kZXggIT09ICdudW1iZXInIHx8IGRlZmF1bHRJbmRleCA8IDAgfHwgZGVmYXVsdEluZGV4ID4gdGhpcy5zdGF0ZS50b29sdGlwVGlja3MubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYWN0aXZlTGFiZWwgPSB0aGlzLnN0YXRlLnRvb2x0aXBUaWNrc1tkZWZhdWx0SW5kZXhdICYmIHRoaXMuc3RhdGUudG9vbHRpcFRpY2tzW2RlZmF1bHRJbmRleF0udmFsdWU7XG4gICAgICAgIHZhciBhY3RpdmVQYXlsb2FkID0gZ2V0VG9vbHRpcENvbnRlbnQodGhpcy5zdGF0ZSwgZGF0YSwgZGVmYXVsdEluZGV4LCBhY3RpdmVMYWJlbCk7XG4gICAgICAgIHZhciBpbmRlcGVuZGVudEF4aXNDb29yZCA9IHRoaXMuc3RhdGUudG9vbHRpcFRpY2tzW2RlZmF1bHRJbmRleF0uY29vcmRpbmF0ZTtcbiAgICAgICAgdmFyIGRlcGVuZGVudEF4aXNDb29yZCA9ICh0aGlzLnN0YXRlLm9mZnNldC50b3AgKyBoZWlnaHQpIC8gMjtcbiAgICAgICAgdmFyIGlzSG9yaXpvbnRhbCA9IGxheW91dCA9PT0gJ2hvcml6b250YWwnO1xuICAgICAgICB2YXIgYWN0aXZlQ29vcmRpbmF0ZSA9IGlzSG9yaXpvbnRhbCA/IHtcbiAgICAgICAgICB4OiBpbmRlcGVuZGVudEF4aXNDb29yZCxcbiAgICAgICAgICB5OiBkZXBlbmRlbnRBeGlzQ29vcmRcbiAgICAgICAgfSA6IHtcbiAgICAgICAgICB5OiBpbmRlcGVuZGVudEF4aXNDb29yZCxcbiAgICAgICAgICB4OiBkZXBlbmRlbnRBeGlzQ29vcmRcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBVbmxpa2Ugb3RoZXIgY2hhcnQgdHlwZXMsIHNjYXR0ZXIgcGxvdCdzIHRvb2x0aXAgcG9zaXRpb25zIHJlbHkgb24gYm90aCBYIGFuZCBZIGNvb3JkaW5hdGVzLiBPbmx5IHRoZSBzY2F0dGVyIHBsb3RcbiAgICAgICAgLy8gZWxlbWVudCBrbm93cyBpdHMgb3duIFkgY29vcmRpbmF0ZXMuXG4gICAgICAgIC8vIElmIHRoZXJlJ3MgYSBzY2F0dGVyIHBsb3QsIHdlJ2xsIHdhbnQgdG8gZ3JhYiB0aGF0IGVsZW1lbnQgZm9yIGFuIGludGVycm9nYXRpb24uXG4gICAgICAgIHZhciBzY2F0dGVyUGxvdEVsZW1lbnQgPSB0aGlzLnN0YXRlLmZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLmZpbmQoZnVuY3Rpb24gKF9yZWYxMikge1xuICAgICAgICAgIHZhciBpdGVtID0gX3JlZjEyLml0ZW07XG4gICAgICAgICAgcmV0dXJuIGl0ZW0udHlwZS5uYW1lID09PSAnU2NhdHRlcic7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2NhdHRlclBsb3RFbGVtZW50KSB7XG4gICAgICAgICAgYWN0aXZlQ29vcmRpbmF0ZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYWN0aXZlQ29vcmRpbmF0ZSksIHNjYXR0ZXJQbG90RWxlbWVudC5wcm9wcy5wb2ludHNbZGVmYXVsdEluZGV4XS50b29sdGlwUG9zaXRpb24pO1xuICAgICAgICAgIGFjdGl2ZVBheWxvYWQgPSBzY2F0dGVyUGxvdEVsZW1lbnQucHJvcHMucG9pbnRzW2RlZmF1bHRJbmRleF0udG9vbHRpcFBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5leHRTdGF0ZSA9IHtcbiAgICAgICAgICBhY3RpdmVUb29sdGlwSW5kZXg6IGRlZmF1bHRJbmRleCxcbiAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmU6IHRydWUsXG4gICAgICAgICAgYWN0aXZlTGFiZWw6IGFjdGl2ZUxhYmVsLFxuICAgICAgICAgIGFjdGl2ZVBheWxvYWQ6IGFjdGl2ZVBheWxvYWQsXG4gICAgICAgICAgYWN0aXZlQ29vcmRpbmF0ZTogYWN0aXZlQ29vcmRpbmF0ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNldFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgIHRoaXMucmVuZGVyQ3Vyc29yKHRvb2x0aXBFbGVtKTtcblxuICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnlvbmUgd2hvIGtleWJvYXJkLW9ubHkgdXNlcnMgd2hvIHRhYiB0byB0aGUgY2hhcnQgd2lsbCBzdGFydCB0aGVpclxuICAgICAgICAvLyBjdXJzb3JzIGF0IGRlZmF1bHRJbmRleFxuICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLnNldEluZGV4KGRlZmF1bHRJbmRleCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldFNuYXBzaG90QmVmb3JlVXBkYXRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLmFjY2Vzc2liaWxpdHlMYXllcikge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnRvb2x0aXBUaWNrcyAhPT0gcHJldlN0YXRlLnRvb2x0aXBUaWNrcykge1xuICAgICAgICAgIHRoaXMuYWNjZXNzaWJpbGl0eU1hbmFnZXIuc2V0RGV0YWlscyh7XG4gICAgICAgICAgICBjb29yZGluYXRlTGlzdDogdGhpcy5zdGF0ZS50b29sdGlwVGlja3NcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5sYXlvdXQgIT09IHByZXZQcm9wcy5sYXlvdXQpIHtcbiAgICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLnNldERldGFpbHMoe1xuICAgICAgICAgICAgbGF5b3V0OiB0aGlzLnByb3BzLmxheW91dFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm1hcmdpbiAhPT0gcHJldlByb3BzLm1hcmdpbikge1xuICAgICAgICAgIHZhciBfdGhpcyRwcm9wcyRtYXJnaW4kbGUyLCBfdGhpcyRwcm9wcyRtYXJnaW4kdG8yO1xuICAgICAgICAgIHRoaXMuYWNjZXNzaWJpbGl0eU1hbmFnZXIuc2V0RGV0YWlscyh7XG4gICAgICAgICAgICBvZmZzZXQ6IHtcbiAgICAgICAgICAgICAgbGVmdDogKF90aGlzJHByb3BzJG1hcmdpbiRsZTIgPSB0aGlzLnByb3BzLm1hcmdpbi5sZWZ0KSAhPT0gbnVsbCAmJiBfdGhpcyRwcm9wcyRtYXJnaW4kbGUyICE9PSB2b2lkIDAgPyBfdGhpcyRwcm9wcyRtYXJnaW4kbGUyIDogMCxcbiAgICAgICAgICAgICAgdG9wOiAoX3RoaXMkcHJvcHMkbWFyZ2luJHRvMiA9IHRoaXMucHJvcHMubWFyZ2luLnRvcCkgIT09IG51bGwgJiYgX3RoaXMkcHJvcHMkbWFyZ2luJHRvMiAhPT0gdm9pZCAwID8gX3RoaXMkcHJvcHMkbWFyZ2luJHRvMiA6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNvbWV0aGluZyBoYXMgdG8gYmUgcmV0dXJuZWQgZm9yIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgVG9vbHRpcCB1cGRhdGVkLiBJZiBzbywgcmUtY2hlY2sgZGVmYXVsdCB0b29sdGlwIHBvc2l0aW9uXG4gICAgICAgIGlmICghaXNDaGlsZHJlbkVxdWFsKFtmaW5kQ2hpbGRCeVR5cGUocHJldlByb3BzLmNoaWxkcmVuLCBUb29sdGlwKV0sIFtmaW5kQ2hpbGRCeVR5cGUodGhpcy5wcm9wcy5jaGlsZHJlbiwgVG9vbHRpcCldKSkge1xuICAgICAgICAgIHRoaXMuZGlzcGxheURlZmF1bHRUb29sdGlwKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnRocm90dGxlVHJpZ2dlcmVkQWZ0ZXJNb3VzZU1vdmUuY2FuY2VsKCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldFRvb2x0aXBFdmVudFR5cGVcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUb29sdGlwRXZlbnRUeXBlKCkge1xuICAgICAgICB2YXIgdG9vbHRpcEl0ZW0gPSBmaW5kQ2hpbGRCeVR5cGUodGhpcy5wcm9wcy5jaGlsZHJlbiwgVG9vbHRpcCk7XG4gICAgICAgIGlmICh0b29sdGlwSXRlbSAmJiB0eXBlb2YgdG9vbHRpcEl0ZW0ucHJvcHMuc2hhcmVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICB2YXIgZXZlbnRUeXBlID0gdG9vbHRpcEl0ZW0ucHJvcHMuc2hhcmVkID8gJ2F4aXMnIDogJ2l0ZW0nO1xuICAgICAgICAgIHJldHVybiB2YWxpZGF0ZVRvb2x0aXBFdmVudFR5cGVzLmluZGV4T2YoZXZlbnRUeXBlKSA+PSAwID8gZXZlbnRUeXBlIDogZGVmYXVsdFRvb2x0aXBFdmVudFR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUb29sdGlwRXZlbnRUeXBlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIEdldCB0aGUgaW5mb3JtYXRpb24gb2YgbW91c2UgaW4gY2hhcnQsIHJldHVybiBudWxsIHdoZW4gdGhlIG1vdXNlIGlzIG5vdCBpbiB0aGUgY2hhcnRcbiAgICAgICAqIEBwYXJhbSAge01vdXNlUG9pbnRlcn0gZXZlbnQgICAgVGhlIGV2ZW50IG9iamVjdFxuICAgICAgICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICBNb3VzZSBkYXRhXG4gICAgICAgKi9cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZ2V0TW91c2VJbmZvXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TW91c2VJbmZvKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXIpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuY29udGFpbmVyO1xuICAgICAgICB2YXIgYm91bmRpbmdSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdmFyIGNvbnRhaW5lck9mZnNldCA9IGdldE9mZnNldChib3VuZGluZ1JlY3QpO1xuICAgICAgICB2YXIgZSA9IHtcbiAgICAgICAgICBjaGFydFg6IE1hdGgucm91bmQoZXZlbnQucGFnZVggLSBjb250YWluZXJPZmZzZXQubGVmdCksXG4gICAgICAgICAgY2hhcnRZOiBNYXRoLnJvdW5kKGV2ZW50LnBhZ2VZIC0gY29udGFpbmVyT2Zmc2V0LnRvcClcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNjYWxlID0gYm91bmRpbmdSZWN0LndpZHRoIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxO1xuICAgICAgICB2YXIgcmFuZ2VPYmogPSB0aGlzLmluUmFuZ2UoZS5jaGFydFgsIGUuY2hhcnRZLCBzY2FsZSk7XG4gICAgICAgIGlmICghcmFuZ2VPYmopIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX3RoaXMkc3RhdGU5ID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgICB4QXhpc01hcCA9IF90aGlzJHN0YXRlOS54QXhpc01hcCxcbiAgICAgICAgICB5QXhpc01hcCA9IF90aGlzJHN0YXRlOS55QXhpc01hcDtcbiAgICAgICAgdmFyIHRvb2x0aXBFdmVudFR5cGUgPSB0aGlzLmdldFRvb2x0aXBFdmVudFR5cGUoKTtcbiAgICAgICAgdmFyIHRvb2xUaXBEYXRhID0gZ2V0VG9vbHRpcERhdGEodGhpcy5zdGF0ZSwgdGhpcy5wcm9wcy5kYXRhLCB0aGlzLnByb3BzLmxheW91dCwgcmFuZ2VPYmopO1xuICAgICAgICBpZiAodG9vbHRpcEV2ZW50VHlwZSAhPT0gJ2F4aXMnICYmIHhBeGlzTWFwICYmIHlBeGlzTWFwKSB7XG4gICAgICAgICAgdmFyIHhTY2FsZSA9IGdldEFueUVsZW1lbnRPZk9iamVjdCh4QXhpc01hcCkuc2NhbGU7XG4gICAgICAgICAgdmFyIHlTY2FsZSA9IGdldEFueUVsZW1lbnRPZk9iamVjdCh5QXhpc01hcCkuc2NhbGU7XG4gICAgICAgICAgdmFyIHhWYWx1ZSA9IHhTY2FsZSAmJiB4U2NhbGUuaW52ZXJ0ID8geFNjYWxlLmludmVydChlLmNoYXJ0WCkgOiBudWxsO1xuICAgICAgICAgIHZhciB5VmFsdWUgPSB5U2NhbGUgJiYgeVNjYWxlLmludmVydCA/IHlTY2FsZS5pbnZlcnQoZS5jaGFydFkpIDogbnVsbDtcbiAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlKSwge30sIHtcbiAgICAgICAgICAgIHhWYWx1ZTogeFZhbHVlLFxuICAgICAgICAgICAgeVZhbHVlOiB5VmFsdWVcbiAgICAgICAgICB9LCB0b29sVGlwRGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRvb2xUaXBEYXRhKSB7XG4gICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZSksIHRvb2xUaXBEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiaW5SYW5nZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGluUmFuZ2UoeCwgeSkge1xuICAgICAgICB2YXIgc2NhbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDE7XG4gICAgICAgIHZhciBsYXlvdXQgPSB0aGlzLnByb3BzLmxheW91dDtcbiAgICAgICAgdmFyIHNjYWxlZFggPSB4IC8gc2NhbGUsXG4gICAgICAgICAgc2NhbGVkWSA9IHkgLyBzY2FsZTtcbiAgICAgICAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnIHx8IGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLnN0YXRlLm9mZnNldDtcbiAgICAgICAgICB2YXIgaXNJblJhbmdlID0gc2NhbGVkWCA+PSBvZmZzZXQubGVmdCAmJiBzY2FsZWRYIDw9IG9mZnNldC5sZWZ0ICsgb2Zmc2V0LndpZHRoICYmIHNjYWxlZFkgPj0gb2Zmc2V0LnRvcCAmJiBzY2FsZWRZIDw9IG9mZnNldC50b3AgKyBvZmZzZXQuaGVpZ2h0O1xuICAgICAgICAgIHJldHVybiBpc0luUmFuZ2UgPyB7XG4gICAgICAgICAgICB4OiBzY2FsZWRYLFxuICAgICAgICAgICAgeTogc2NhbGVkWVxuICAgICAgICAgIH0gOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZTEwID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgICBhbmdsZUF4aXNNYXAgPSBfdGhpcyRzdGF0ZTEwLmFuZ2xlQXhpc01hcCxcbiAgICAgICAgICByYWRpdXNBeGlzTWFwID0gX3RoaXMkc3RhdGUxMC5yYWRpdXNBeGlzTWFwO1xuICAgICAgICBpZiAoYW5nbGVBeGlzTWFwICYmIHJhZGl1c0F4aXNNYXApIHtcbiAgICAgICAgICB2YXIgYW5nbGVBeGlzID0gZ2V0QW55RWxlbWVudE9mT2JqZWN0KGFuZ2xlQXhpc01hcCk7XG4gICAgICAgICAgcmV0dXJuIGluUmFuZ2VPZlNlY3Rvcih7XG4gICAgICAgICAgICB4OiBzY2FsZWRYLFxuICAgICAgICAgICAgeTogc2NhbGVkWVxuICAgICAgICAgIH0sIGFuZ2xlQXhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInBhcnNlRXZlbnRzT2ZXcmFwcGVyXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2VFdmVudHNPZldyYXBwZXIoKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICAgIHZhciB0b29sdGlwRXZlbnRUeXBlID0gdGhpcy5nZXRUb29sdGlwRXZlbnRUeXBlKCk7XG4gICAgICAgIHZhciB0b29sdGlwSXRlbSA9IGZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgVG9vbHRpcCk7XG4gICAgICAgIHZhciB0b29sdGlwRXZlbnRzID0ge307XG4gICAgICAgIGlmICh0b29sdGlwSXRlbSAmJiB0b29sdGlwRXZlbnRUeXBlID09PSAnYXhpcycpIHtcbiAgICAgICAgICBpZiAodG9vbHRpcEl0ZW0ucHJvcHMudHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdG9vbHRpcEV2ZW50cyA9IHtcbiAgICAgICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGlja1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9vbHRpcEV2ZW50cyA9IHtcbiAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiB0aGlzLmhhbmRsZU1vdXNlRW50ZXIsXG4gICAgICAgICAgICAgIG9uRG91YmxlQ2xpY2s6IHRoaXMuaGFuZGxlRG91YmxlQ2xpY2ssXG4gICAgICAgICAgICAgIG9uTW91c2VNb3ZlOiB0aGlzLmhhbmRsZU1vdXNlTW92ZSxcbiAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlOiB0aGlzLmhhbmRsZU1vdXNlTGVhdmUsXG4gICAgICAgICAgICAgIG9uVG91Y2hNb3ZlOiB0aGlzLmhhbmRsZVRvdWNoTW92ZSxcbiAgICAgICAgICAgICAgb25Ub3VjaFN0YXJ0OiB0aGlzLmhhbmRsZVRvdWNoU3RhcnQsXG4gICAgICAgICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMuaGFuZGxlVG91Y2hFbmQsXG4gICAgICAgICAgICAgIG9uQ29udGV4dE1lbnU6IHRoaXMuaGFuZGxlQ29udGV4dE1lbnVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhZGFwdEV2ZW50SGFuZGxlcnMgZXhwZWN0cyBET00gRXZlbnQgYnV0IGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCB3b3JrcyB3aXRoIFJlYWN0IFVJRXZlbnRzXG4gICAgICAgIHZhciBvdXRlckV2ZW50cyA9IGFkYXB0RXZlbnRIYW5kbGVycyh0aGlzLnByb3BzLCB0aGlzLmhhbmRsZU91dGVyRXZlbnQpO1xuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvdXRlckV2ZW50cyksIHRvb2x0aXBFdmVudHMpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJhZGRMaXN0ZW5lclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGFkZExpc3RlbmVyKCkge1xuICAgICAgICBldmVudENlbnRlci5vbihTWU5DX0VWRU5ULCB0aGlzLmhhbmRsZVJlY2VpdmVTeW5jRXZlbnQpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJyZW1vdmVMaXN0ZW5lclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKCkge1xuICAgICAgICBldmVudENlbnRlci5yZW1vdmVMaXN0ZW5lcihTWU5DX0VWRU5ULCB0aGlzLmhhbmRsZVJlY2VpdmVTeW5jRXZlbnQpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJmaWx0ZXJGb3JtYXRJdGVtXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZmlsdGVyRm9ybWF0SXRlbShpdGVtLCBkaXNwbGF5TmFtZSwgY2hpbGRJbmRleCkge1xuICAgICAgICB2YXIgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgPSB0aGlzLnN0YXRlLmZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zO1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICB2YXIgZW50cnkgPSBmb3JtYXR0ZWRHcmFwaGljYWxJdGVtc1tpXTtcbiAgICAgICAgICBpZiAoZW50cnkuaXRlbSA9PT0gaXRlbSB8fCBlbnRyeS5wcm9wcy5rZXkgPT09IGl0ZW0ua2V5IHx8IGRpc3BsYXlOYW1lID09PSBnZXREaXNwbGF5TmFtZShlbnRyeS5pdGVtLnR5cGUpICYmIGNoaWxkSW5kZXggPT09IGVudHJ5LmNoaWxkSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInJlbmRlckNsaXBQYXRoXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2xpcFBhdGgoKSB7XG4gICAgICAgIHZhciBjbGlwUGF0aElkID0gdGhpcy5jbGlwUGF0aElkO1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGUkb2Zmc2V0ID0gdGhpcy5zdGF0ZS5vZmZzZXQsXG4gICAgICAgICAgbGVmdCA9IF90aGlzJHN0YXRlJG9mZnNldC5sZWZ0LFxuICAgICAgICAgIHRvcCA9IF90aGlzJHN0YXRlJG9mZnNldC50b3AsXG4gICAgICAgICAgaGVpZ2h0ID0gX3RoaXMkc3RhdGUkb2Zmc2V0LmhlaWdodCxcbiAgICAgICAgICB3aWR0aCA9IF90aGlzJHN0YXRlJG9mZnNldC53aWR0aDtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVmc1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNsaXBQYXRoXCIsIHtcbiAgICAgICAgICBpZDogY2xpcFBhdGhJZFxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgeTogdG9wLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgIHdpZHRoOiB3aWR0aFxuICAgICAgICB9KSkpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRYU2NhbGVzXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0WFNjYWxlcygpIHtcbiAgICAgICAgdmFyIHhBeGlzTWFwID0gdGhpcy5zdGF0ZS54QXhpc01hcDtcbiAgICAgICAgcmV0dXJuIHhBeGlzTWFwID8gT2JqZWN0LmVudHJpZXMoeEF4aXNNYXApLnJlZHVjZShmdW5jdGlvbiAocmVzLCBfcmVmMTMpIHtcbiAgICAgICAgICB2YXIgX3JlZjE0ID0gX3NsaWNlZFRvQXJyYXkoX3JlZjEzLCAyKSxcbiAgICAgICAgICAgIGF4aXNJZCA9IF9yZWYxNFswXSxcbiAgICAgICAgICAgIGF4aXNQcm9wcyA9IF9yZWYxNFsxXTtcbiAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXMpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBheGlzSWQsIGF4aXNQcm9wcy5zY2FsZSkpO1xuICAgICAgICB9LCB7fSkgOiBudWxsO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRZU2NhbGVzXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0WVNjYWxlcygpIHtcbiAgICAgICAgdmFyIHlBeGlzTWFwID0gdGhpcy5zdGF0ZS55QXhpc01hcDtcbiAgICAgICAgcmV0dXJuIHlBeGlzTWFwID8gT2JqZWN0LmVudHJpZXMoeUF4aXNNYXApLnJlZHVjZShmdW5jdGlvbiAocmVzLCBfcmVmMTUpIHtcbiAgICAgICAgICB2YXIgX3JlZjE2ID0gX3NsaWNlZFRvQXJyYXkoX3JlZjE1LCAyKSxcbiAgICAgICAgICAgIGF4aXNJZCA9IF9yZWYxNlswXSxcbiAgICAgICAgICAgIGF4aXNQcm9wcyA9IF9yZWYxNlsxXTtcbiAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXMpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBheGlzSWQsIGF4aXNQcm9wcy5zY2FsZSkpO1xuICAgICAgICB9LCB7fSkgOiBudWxsO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRYU2NhbGVCeUF4aXNJZFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFhTY2FsZUJ5QXhpc0lkKGF4aXNJZCkge1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGUkeEF4aXNNYXA7XG4gICAgICAgIHJldHVybiAoX3RoaXMkc3RhdGUkeEF4aXNNYXAgPSB0aGlzLnN0YXRlLnhBeGlzTWFwKSA9PT0gbnVsbCB8fCBfdGhpcyRzdGF0ZSR4QXhpc01hcCA9PT0gdm9pZCAwIHx8IChfdGhpcyRzdGF0ZSR4QXhpc01hcCA9IF90aGlzJHN0YXRlJHhBeGlzTWFwW2F4aXNJZF0pID09PSBudWxsIHx8IF90aGlzJHN0YXRlJHhBeGlzTWFwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRzdGF0ZSR4QXhpc01hcC5zY2FsZTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZ2V0WVNjYWxlQnlBeGlzSWRcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRZU2NhbGVCeUF4aXNJZChheGlzSWQpIHtcbiAgICAgICAgdmFyIF90aGlzJHN0YXRlJHlBeGlzTWFwO1xuICAgICAgICByZXR1cm4gKF90aGlzJHN0YXRlJHlBeGlzTWFwID0gdGhpcy5zdGF0ZS55QXhpc01hcCkgPT09IG51bGwgfHwgX3RoaXMkc3RhdGUkeUF4aXNNYXAgPT09IHZvaWQgMCB8fCAoX3RoaXMkc3RhdGUkeUF4aXNNYXAgPSBfdGhpcyRzdGF0ZSR5QXhpc01hcFtheGlzSWRdKSA9PT0gbnVsbCB8fCBfdGhpcyRzdGF0ZSR5QXhpc01hcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkc3RhdGUkeUF4aXNNYXAuc2NhbGU7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldEl0ZW1CeVhZXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SXRlbUJ5WFkoY2hhcnRYWSkge1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGUxMSA9IHRoaXMuc3RhdGUsXG4gICAgICAgICAgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgPSBfdGhpcyRzdGF0ZTExLmZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLFxuICAgICAgICAgIGFjdGl2ZUl0ZW0gPSBfdGhpcyRzdGF0ZTExLmFjdGl2ZUl0ZW07XG4gICAgICAgIGlmIChmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyAmJiBmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBncmFwaGljYWxJdGVtID0gZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXNbaV07XG4gICAgICAgICAgICAvLyBncmFwaGljYWxJdGVtIGlzIG5vdCBhIFJlYWN0IEVsZW1lbnQgc28gd2UgZG9uJ3QgbmVlZCB0byByZXNvbHZlIGRlZmF1bHRQcm9wc1xuICAgICAgICAgICAgdmFyIHByb3BzID0gZ3JhcGhpY2FsSXRlbS5wcm9wcyxcbiAgICAgICAgICAgICAgaXRlbSA9IGdyYXBoaWNhbEl0ZW0uaXRlbTtcbiAgICAgICAgICAgIHZhciBpdGVtUHJvcHMgPSBpdGVtLnR5cGUuZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW0udHlwZS5kZWZhdWx0UHJvcHMpLCBpdGVtLnByb3BzKSA6IGl0ZW0ucHJvcHM7XG4gICAgICAgICAgICB2YXIgaXRlbURpc3BsYXlOYW1lID0gZ2V0RGlzcGxheU5hbWUoaXRlbS50eXBlKTtcbiAgICAgICAgICAgIGlmIChpdGVtRGlzcGxheU5hbWUgPT09ICdCYXInKSB7XG4gICAgICAgICAgICAgIHZhciBhY3RpdmVCYXJJdGVtID0gKHByb3BzLmRhdGEgfHwgW10pLmZpbmQoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzSW5SZWN0YW5nbGUoY2hhcnRYWSwgZW50cnkpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKGFjdGl2ZUJhckl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgZ3JhcGhpY2FsSXRlbTogZ3JhcGhpY2FsSXRlbSxcbiAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IGFjdGl2ZUJhckl0ZW1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW1EaXNwbGF5TmFtZSA9PT0gJ1JhZGlhbEJhcicpIHtcbiAgICAgICAgICAgICAgdmFyIF9hY3RpdmVCYXJJdGVtID0gKHByb3BzLmRhdGEgfHwgW10pLmZpbmQoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluUmFuZ2VPZlNlY3RvcihjaGFydFhZLCBlbnRyeSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoX2FjdGl2ZUJhckl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgZ3JhcGhpY2FsSXRlbTogZ3JhcGhpY2FsSXRlbSxcbiAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IF9hY3RpdmVCYXJJdGVtXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0Z1bm5lbChncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSB8fCBpc1BpZShncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSB8fCBpc1NjYXR0ZXIoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkpIHtcbiAgICAgICAgICAgICAgdmFyIGFjdGl2ZUluZGV4ID0gZ2V0QWN0aXZlU2hhcGVJbmRleEZvclRvb2x0aXAoe1xuICAgICAgICAgICAgICAgIGdyYXBoaWNhbEl0ZW06IGdyYXBoaWNhbEl0ZW0sXG4gICAgICAgICAgICAgICAgYWN0aXZlVG9vbHRpcEl0ZW06IGFjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgaXRlbURhdGE6IGl0ZW1Qcm9wcy5kYXRhXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB2YXIgY2hpbGRJbmRleCA9IGl0ZW1Qcm9wcy5hY3RpdmVJbmRleCA9PT0gdW5kZWZpbmVkID8gYWN0aXZlSW5kZXggOiBpdGVtUHJvcHMuYWN0aXZlSW5kZXg7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZ3JhcGhpY2FsSXRlbTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBncmFwaGljYWxJdGVtKSwge30sIHtcbiAgICAgICAgICAgICAgICAgIGNoaWxkSW5kZXg6IGNoaWxkSW5kZXhcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBpc1NjYXR0ZXIoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkgPyBpdGVtUHJvcHMuZGF0YVthY3RpdmVJbmRleF0gOiBncmFwaGljYWxJdGVtLnByb3BzLmRhdGFbYWN0aXZlSW5kZXhdXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJyZW5kZXJcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuICAgICAgICBpZiAoIXZhbGlkYXRlV2lkdGhIZWlnaHQodGhpcykpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNi5jaGlsZHJlbixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczYuY2xhc3NOYW1lLFxuICAgICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHM2LndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzNi5oZWlnaHQsXG4gICAgICAgICAgc3R5bGUgPSBfdGhpcyRwcm9wczYuc3R5bGUsXG4gICAgICAgICAgY29tcGFjdCA9IF90aGlzJHByb3BzNi5jb21wYWN0LFxuICAgICAgICAgIHRpdGxlID0gX3RoaXMkcHJvcHM2LnRpdGxlLFxuICAgICAgICAgIGRlc2MgPSBfdGhpcyRwcm9wczYuZGVzYyxcbiAgICAgICAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM2LCBfZXhjbHVkZWQyKTtcbiAgICAgICAgdmFyIGF0dHJzID0gZmlsdGVyUHJvcHMob3RoZXJzLCBmYWxzZSk7XG5cbiAgICAgICAgLy8gVGhlIFwiY29tcGFjdFwiIG1vZGUgaXMgbWFpbmx5IHVzZWQgYXMgdGhlIHBhbm9yYW1hIHdpdGhpbiBCcnVzaFxuICAgICAgICBpZiAoY29tcGFjdCkge1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDaGFydExheW91dENvbnRleHRQcm92aWRlciwge1xuICAgICAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5wcm9wcy53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5wcm9wcy5oZWlnaHQsXG4gICAgICAgICAgICBjbGlwUGF0aElkOiB0aGlzLmNsaXBQYXRoSWRcbiAgICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTdXJmYWNlLCBfZXh0ZW5kcyh7fSwgYXR0cnMsIHtcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgZGVzYzogZGVzY1xuICAgICAgICAgIH0pLCB0aGlzLnJlbmRlckNsaXBQYXRoKCksIHJlbmRlckJ5T3JkZXIoY2hpbGRyZW4sIHRoaXMucmVuZGVyTWFwKSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmFjY2Vzc2liaWxpdHlMYXllcikge1xuICAgICAgICAgIHZhciBfdGhpcyRwcm9wcyR0YWJJbmRleCwgX3RoaXMkcHJvcHMkcm9sZTtcbiAgICAgICAgICAvLyBTZXQgdGFiSW5kZXggdG8gMCBieSBkZWZhdWx0IChjYW4gYmUgb3ZlcndyaXR0ZW4pXG4gICAgICAgICAgYXR0cnMudGFiSW5kZXggPSAoX3RoaXMkcHJvcHMkdGFiSW5kZXggPSB0aGlzLnByb3BzLnRhYkluZGV4KSAhPT0gbnVsbCAmJiBfdGhpcyRwcm9wcyR0YWJJbmRleCAhPT0gdm9pZCAwID8gX3RoaXMkcHJvcHMkdGFiSW5kZXggOiAwO1xuICAgICAgICAgIC8vIFNldCByb2xlIHRvIGltZyBieSBkZWZhdWx0IChjYW4gYmUgb3ZlcndyaXR0ZW4pXG4gICAgICAgICAgYXR0cnMucm9sZSA9IChfdGhpcyRwcm9wcyRyb2xlID0gdGhpcy5wcm9wcy5yb2xlKSAhPT0gbnVsbCAmJiBfdGhpcyRwcm9wcyRyb2xlICE9PSB2b2lkIDAgPyBfdGhpcyRwcm9wcyRyb2xlIDogJ2FwcGxpY2F0aW9uJztcbiAgICAgICAgICBhdHRycy5vbktleURvd24gPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgX3RoaXMzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLmtleWJvYXJkRXZlbnQoZSk7XG4gICAgICAgICAgICAvLyAnb25LZXlEb3duJyBpcyBub3QgY3VycmVudGx5IGEgc3VwcG9ydGVkIHByb3AgdGhhdCBjYW4gYmUgcGFzc2VkIHRocm91Z2hcbiAgICAgICAgICAgIC8vIGlmIGl0J3MgYWRkZWQsIHRoaXMgc2hvdWxkIGJlIGFkZGVkOiB0aGlzLnByb3BzLm9uS2V5RG93bihlKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGF0dHJzLm9uRm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpczMuYWNjZXNzaWJpbGl0eU1hbmFnZXIuZm9jdXMoKTtcbiAgICAgICAgICAgIC8vICdvbkZvY3VzJyBpcyBub3QgY3VycmVudGx5IGEgc3VwcG9ydGVkIHByb3AgdGhhdCBjYW4gYmUgcGFzc2VkIHRocm91Z2hcbiAgICAgICAgICAgIC8vIGlmIGl0J3MgYWRkZWQsIHRoZSBmb2N1cyBldmVudCBzaG91bGQgYmUgZm9yd2FyZGVkIHRvIHRoZSBwcm9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZXZlbnRzID0gdGhpcy5wYXJzZUV2ZW50c09mV3JhcHBlcigpO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hhcnRMYXlvdXRDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgICB3aWR0aDogdGhpcy5wcm9wcy53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHRoaXMucHJvcHMuaGVpZ2h0LFxuICAgICAgICAgIGNsaXBQYXRoSWQ6IHRoaXMuY2xpcFBhdGhJZFxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy13cmFwcGVyJywgY2xhc3NOYW1lKSxcbiAgICAgICAgICBzdHlsZTogX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgIGN1cnNvcjogJ2RlZmF1bHQnLFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgICB9LCBzdHlsZSlcbiAgICAgICAgfSwgZXZlbnRzLCB7XG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYobm9kZSkge1xuICAgICAgICAgICAgX3RoaXMzLmNvbnRhaW5lciA9IG5vZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3VyZmFjZSwgX2V4dGVuZHMoe30sIGF0dHJzLCB7XG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgICBkZXNjOiBkZXNjLFxuICAgICAgICAgIHN0eWxlOiBGVUxMX1dJRFRIX0FORF9IRUlHSFRcbiAgICAgICAgfSksIHRoaXMucmVuZGVyQ2xpcFBhdGgoKSwgcmVuZGVyQnlPcmRlcihjaGlsZHJlbiwgdGhpcy5yZW5kZXJNYXApKSwgdGhpcy5yZW5kZXJMZWdlbmQoKSwgdGhpcy5yZW5kZXJUb29sdGlwKCkpKTtcbiAgICAgIH1cbiAgICB9XSk7XG4gIH0oQ29tcG9uZW50KTtcbiAgX2RlZmluZVByb3BlcnR5KENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLCBcImRpc3BsYXlOYW1lXCIsIGNoYXJ0TmFtZSk7XG4gIC8vIHRvZG8gam9pbiBzcGVjaWZpYyBjaGFydCBwcm9wVHlwZXNcbiAgX2RlZmluZVByb3BlcnR5KENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLCBcImRlZmF1bHRQcm9wc1wiLCBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYXlvdXQ6ICdob3Jpem9udGFsJyxcbiAgICBzdGFja09mZnNldDogJ25vbmUnLFxuICAgIGJhckNhdGVnb3J5R2FwOiAnMTAlJyxcbiAgICBiYXJHYXA6IDQsXG4gICAgbWFyZ2luOiB7XG4gICAgICB0b3A6IDUsXG4gICAgICByaWdodDogNSxcbiAgICAgIGJvdHRvbTogNSxcbiAgICAgIGxlZnQ6IDVcbiAgICB9LFxuICAgIHJldmVyc2VTdGFja09yZGVyOiBmYWxzZSxcbiAgICBzeW5jTWV0aG9kOiAnaW5kZXgnXG4gIH0sIGRlZmF1bHRQcm9wcykpO1xuICBfZGVmaW5lUHJvcGVydHkoQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIsIFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsIGZ1bmN0aW9uIChuZXh0UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgIHZhciBkYXRhS2V5ID0gbmV4dFByb3BzLmRhdGFLZXksXG4gICAgICBkYXRhID0gbmV4dFByb3BzLmRhdGEsXG4gICAgICBjaGlsZHJlbiA9IG5leHRQcm9wcy5jaGlsZHJlbixcbiAgICAgIHdpZHRoID0gbmV4dFByb3BzLndpZHRoLFxuICAgICAgaGVpZ2h0ID0gbmV4dFByb3BzLmhlaWdodCxcbiAgICAgIGxheW91dCA9IG5leHRQcm9wcy5sYXlvdXQsXG4gICAgICBzdGFja09mZnNldCA9IG5leHRQcm9wcy5zdGFja09mZnNldCxcbiAgICAgIG1hcmdpbiA9IG5leHRQcm9wcy5tYXJnaW47XG4gICAgdmFyIGRhdGFTdGFydEluZGV4ID0gcHJldlN0YXRlLmRhdGFTdGFydEluZGV4LFxuICAgICAgZGF0YUVuZEluZGV4ID0gcHJldlN0YXRlLmRhdGFFbmRJbmRleDtcbiAgICBpZiAocHJldlN0YXRlLnVwZGF0ZUlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBkZWZhdWx0U3RhdGUgPSBjcmVhdGVEZWZhdWx0U3RhdGUobmV4dFByb3BzKTtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZGVmYXVsdFN0YXRlKSwge30sIHtcbiAgICAgICAgdXBkYXRlSWQ6IDBcbiAgICAgIH0sIHVwZGF0ZVN0YXRlT2ZBeGlzTWFwc09mZnNldEFuZFN0YWNrR3JvdXBzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHByb3BzOiBuZXh0UHJvcHNcbiAgICAgIH0sIGRlZmF1bHRTdGF0ZSksIHt9LCB7XG4gICAgICAgIHVwZGF0ZUlkOiAwXG4gICAgICB9KSwgcHJldlN0YXRlKSksIHt9LCB7XG4gICAgICAgIHByZXZEYXRhS2V5OiBkYXRhS2V5LFxuICAgICAgICBwcmV2RGF0YTogZGF0YSxcbiAgICAgICAgcHJldldpZHRoOiB3aWR0aCxcbiAgICAgICAgcHJldkhlaWdodDogaGVpZ2h0LFxuICAgICAgICBwcmV2TGF5b3V0OiBsYXlvdXQsXG4gICAgICAgIHByZXZTdGFja09mZnNldDogc3RhY2tPZmZzZXQsXG4gICAgICAgIHByZXZNYXJnaW46IG1hcmdpbixcbiAgICAgICAgcHJldkNoaWxkcmVuOiBjaGlsZHJlblxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChkYXRhS2V5ICE9PSBwcmV2U3RhdGUucHJldkRhdGFLZXkgfHwgZGF0YSAhPT0gcHJldlN0YXRlLnByZXZEYXRhIHx8IHdpZHRoICE9PSBwcmV2U3RhdGUucHJldldpZHRoIHx8IGhlaWdodCAhPT0gcHJldlN0YXRlLnByZXZIZWlnaHQgfHwgbGF5b3V0ICE9PSBwcmV2U3RhdGUucHJldkxheW91dCB8fCBzdGFja09mZnNldCAhPT0gcHJldlN0YXRlLnByZXZTdGFja09mZnNldCB8fCAhc2hhbGxvd0VxdWFsKG1hcmdpbiwgcHJldlN0YXRlLnByZXZNYXJnaW4pKSB7XG4gICAgICB2YXIgX2RlZmF1bHRTdGF0ZSA9IGNyZWF0ZURlZmF1bHRTdGF0ZShuZXh0UHJvcHMpO1xuXG4gICAgICAvLyBGaXhlcyBodHRwczovL2dpdGh1Yi5jb20vcmVjaGFydHMvcmVjaGFydHMvaXNzdWVzLzIxNDNcbiAgICAgIHZhciBrZWVwRnJvbVByZXZTdGF0ZSA9IHtcbiAgICAgICAgLy8gKGNoYXJ0WCwgY2hhcnRZKSBhcmUgKDAsMCkgaW4gZGVmYXVsdCBzdGF0ZSwgYnV0IHdlIHdhbnQgdG8ga2VlcCB0aGUgbGFzdCBtb3VzZSBwb3NpdGlvbiB0byBhdm9pZFxuICAgICAgICAvLyBhbnkgZmxpY2tlcmluZ1xuICAgICAgICBjaGFydFg6IHByZXZTdGF0ZS5jaGFydFgsXG4gICAgICAgIGNoYXJ0WTogcHJldlN0YXRlLmNoYXJ0WSxcbiAgICAgICAgLy8gVGhlIHRvb2x0aXAgc2hvdWxkIHN0YXkgYWN0aXZlIHdoZW4gaXQgd2FzIGFjdGl2ZSBpbiB0aGUgcHJldmlvdXMgcmVuZGVyLiBJZiB0aGlzIGlzIG5vdFxuICAgICAgICAvLyB0aGUgY2FzZSwgdGhlIHRvb2x0aXAgZGlzYXBwZWFycyBhbmQgaW1tZWRpYXRlbHkgcmUtYXBwZWFycywgY2F1c2luZyBhIGZsaWNrZXJpbmcgZWZmZWN0XG4gICAgICAgIGlzVG9vbHRpcEFjdGl2ZTogcHJldlN0YXRlLmlzVG9vbHRpcEFjdGl2ZVxuICAgICAgfTtcbiAgICAgIHZhciB1cGRhdGVzVG9TdGF0ZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZ2V0VG9vbHRpcERhdGEocHJldlN0YXRlLCBkYXRhLCBsYXlvdXQpKSwge30sIHtcbiAgICAgICAgdXBkYXRlSWQ6IHByZXZTdGF0ZS51cGRhdGVJZCArIDFcbiAgICAgIH0pO1xuICAgICAgdmFyIG5ld1N0YXRlID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF9kZWZhdWx0U3RhdGUpLCBrZWVwRnJvbVByZXZTdGF0ZSksIHVwZGF0ZXNUb1N0YXRlKTtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbmV3U3RhdGUpLCB1cGRhdGVTdGF0ZU9mQXhpc01hcHNPZmZzZXRBbmRTdGFja0dyb3Vwcyhfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgcHJvcHM6IG5leHRQcm9wc1xuICAgICAgfSwgbmV3U3RhdGUpLCBwcmV2U3RhdGUpKSwge30sIHtcbiAgICAgICAgcHJldkRhdGFLZXk6IGRhdGFLZXksXG4gICAgICAgIHByZXZEYXRhOiBkYXRhLFxuICAgICAgICBwcmV2V2lkdGg6IHdpZHRoLFxuICAgICAgICBwcmV2SGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIHByZXZMYXlvdXQ6IGxheW91dCxcbiAgICAgICAgcHJldlN0YWNrT2Zmc2V0OiBzdGFja09mZnNldCxcbiAgICAgICAgcHJldk1hcmdpbjogbWFyZ2luLFxuICAgICAgICBwcmV2Q2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFpc0NoaWxkcmVuRXF1YWwoY2hpbGRyZW4sIHByZXZTdGF0ZS5wcmV2Q2hpbGRyZW4pKSB7XG4gICAgICB2YXIgX2JydXNoJHByb3BzJHN0YXJ0SW5kLCBfYnJ1c2gkcHJvcHMsIF9icnVzaCRwcm9wcyRlbmRJbmRleCwgX2JydXNoJHByb3BzMjtcbiAgICAgIC8vIHNwZWNpZmljYWxseSBjaGVjayBmb3IgQnJ1c2ggLSBpZiBpdCBleGlzdHMgYW5kIHRoZSBzdGFydCBhbmQgZW5kIGluZGV4ZXMgYXJlIGRpZmZlcmVudCwgcmUtcmVuZGVyIHdpdGggdGhlIG5ldyBvbmVzXG4gICAgICB2YXIgYnJ1c2ggPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIEJydXNoKTtcbiAgICAgIHZhciBzdGFydEluZGV4ID0gYnJ1c2ggPyAoX2JydXNoJHByb3BzJHN0YXJ0SW5kID0gKF9icnVzaCRwcm9wcyA9IGJydXNoLnByb3BzKSA9PT0gbnVsbCB8fCBfYnJ1c2gkcHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9icnVzaCRwcm9wcy5zdGFydEluZGV4KSAhPT0gbnVsbCAmJiBfYnJ1c2gkcHJvcHMkc3RhcnRJbmQgIT09IHZvaWQgMCA/IF9icnVzaCRwcm9wcyRzdGFydEluZCA6IGRhdGFTdGFydEluZGV4IDogZGF0YVN0YXJ0SW5kZXg7XG4gICAgICB2YXIgZW5kSW5kZXggPSBicnVzaCA/IChfYnJ1c2gkcHJvcHMkZW5kSW5kZXggPSAoX2JydXNoJHByb3BzMiA9IGJydXNoLnByb3BzKSA9PT0gbnVsbCB8fCBfYnJ1c2gkcHJvcHMyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYnJ1c2gkcHJvcHMyLmVuZEluZGV4KSAhPT0gbnVsbCAmJiBfYnJ1c2gkcHJvcHMkZW5kSW5kZXggIT09IHZvaWQgMCA/IF9icnVzaCRwcm9wcyRlbmRJbmRleCA6IGRhdGFFbmRJbmRleCA6IGRhdGFFbmRJbmRleDtcbiAgICAgIHZhciBoYXNEaWZmZXJlbnRTdGFydE9yRW5kSW5kZXggPSBzdGFydEluZGV4ICE9PSBkYXRhU3RhcnRJbmRleCB8fCBlbmRJbmRleCAhPT0gZGF0YUVuZEluZGV4O1xuXG4gICAgICAvLyB1cGRhdGUgY29uZmlndXJhdGlvbiBpbiBjaGlsZHJlblxuICAgICAgdmFyIGhhc0dsb2JhbERhdGEgPSAhaXNOaWwoZGF0YSk7XG4gICAgICB2YXIgbmV3VXBkYXRlSWQgPSBoYXNHbG9iYWxEYXRhICYmICFoYXNEaWZmZXJlbnRTdGFydE9yRW5kSW5kZXggPyBwcmV2U3RhdGUudXBkYXRlSWQgOiBwcmV2U3RhdGUudXBkYXRlSWQgKyAxO1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHVwZGF0ZUlkOiBuZXdVcGRhdGVJZFxuICAgICAgfSwgdXBkYXRlU3RhdGVPZkF4aXNNYXBzT2Zmc2V0QW5kU3RhY2tHcm91cHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgcHJvcHM6IG5leHRQcm9wc1xuICAgICAgfSwgcHJldlN0YXRlKSwge30sIHtcbiAgICAgICAgdXBkYXRlSWQ6IG5ld1VwZGF0ZUlkLFxuICAgICAgICBkYXRhU3RhcnRJbmRleDogc3RhcnRJbmRleCxcbiAgICAgICAgZGF0YUVuZEluZGV4OiBlbmRJbmRleFxuICAgICAgfSksIHByZXZTdGF0ZSkpLCB7fSwge1xuICAgICAgICBwcmV2Q2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgICBkYXRhU3RhcnRJbmRleDogc3RhcnRJbmRleCxcbiAgICAgICAgZGF0YUVuZEluZGV4OiBlbmRJbmRleFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KTtcbiAgX2RlZmluZVByb3BlcnR5KENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLCBcInJlbmRlckFjdGl2ZURvdFwiLCBmdW5jdGlvbiAob3B0aW9uLCBwcm9wcywga2V5KSB7XG4gICAgdmFyIGRvdDtcbiAgICBpZiAoIC8qI19fUFVSRV9fKi9pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgICBkb3QgPSAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihvcHRpb24pKSB7XG4gICAgICBkb3QgPSBvcHRpb24ocHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChEb3QsIHByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtYWN0aXZlLWRvdFwiLFxuICAgICAga2V5OiBrZXlcbiAgICB9LCBkb3QpO1xuICB9KTtcbiAgdmFyIENhdGVnb3JpY2FsQ2hhcnQgPSAvKiNfX1BVUkVfXyovZm9yd2FyZFJlZihmdW5jdGlvbiBDYXRlZ29yaWNhbENoYXJ0KHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgcmVmOiByZWZcbiAgICB9KSk7XG4gIH0pO1xuICBDYXRlZ29yaWNhbENoYXJ0LmRpc3BsYXlOYW1lID0gQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIuZGlzcGxheU5hbWU7XG4gIHJldHVybiBDYXRlZ29yaWNhbENoYXJ0O1xufTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIlR5cGVFcnJvciIsInIiLCJsIiwidCIsImUiLCJuIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJfc2V0UHJvdG90eXBlT2YiLCJwIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJsZW4iLCJhcnIyIiwib3duS2V5cyIsImtleXMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNsb25lRWxlbWVudCIsImlzVmFsaWRFbGVtZW50IiwiZm9yd2FyZFJlZiIsImlzTmlsIiwiaXNGdW5jdGlvbiIsInJhbmdlIiwiZ2V0Iiwic29ydEJ5IiwidGhyb3R0bGUiLCJjbHN4IiwiaW52YXJpYW50IiwiU3VyZmFjZSIsIkxheWVyIiwiVG9vbHRpcCIsIkxlZ2VuZCIsIkRvdCIsImlzSW5SZWN0YW5nbGUiLCJmaWx0ZXJQcm9wcyIsImZpbmRBbGxCeVR5cGUiLCJmaW5kQ2hpbGRCeVR5cGUiLCJnZXREaXNwbGF5TmFtZSIsImdldFJlYWN0RXZlbnRCeVR5cGUiLCJpc0NoaWxkcmVuRXF1YWwiLCJwYXJzZUNoaWxkSW5kZXgiLCJyZW5kZXJCeU9yZGVyIiwidmFsaWRhdGVXaWR0aEhlaWdodCIsIkJydXNoIiwiZ2V0T2Zmc2V0IiwiZmluZEVudHJ5SW5BcnJheSIsImdldEFueUVsZW1lbnRPZk9iamVjdCIsImhhc0R1cGxpY2F0ZSIsImlzTnVtYmVyIiwidW5pcXVlSWQiLCJhcHBlbmRPZmZzZXRPZkxlZ2VuZCIsImNhbGN1bGF0ZUFjdGl2ZVRpY2tJbmRleCIsImNvbWJpbmVFdmVudEhhbmRsZXJzIiwiZ2V0QmFuZFNpemVPZkF4aXMiLCJnZXRCYXJQb3NpdGlvbiIsImdldEJhclNpemVMaXN0IiwiZ2V0RG9tYWluT2ZEYXRhQnlLZXkiLCJnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzIiwiZ2V0RG9tYWluT2ZTdGFja0dyb3VwcyIsImdldExlZ2VuZFByb3BzIiwiZ2V0TWFpbkNvbG9yT2ZHcmFwaGljSXRlbSIsImdldFN0YWNrZWREYXRhT2ZJdGVtIiwiZ2V0U3RhY2tHcm91cHNCeUF4aXNJZCIsImdldFRpY2tzT2ZBeGlzIiwiZ2V0VG9vbHRpcEl0ZW0iLCJpc0NhdGVnb3JpY2FsQXhpcyIsInBhcnNlRG9tYWluT2ZDYXRlZ29yeUF4aXMiLCJwYXJzZUVycm9yQmFyc09mQXhpcyIsInBhcnNlU3BlY2lmaWVkRG9tYWluIiwiZGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4iLCJpblJhbmdlT2ZTZWN0b3IiLCJwb2xhclRvQ2FydGVzaWFuIiwic2hhbGxvd0VxdWFsIiwiZXZlbnRDZW50ZXIiLCJTWU5DX0VWRU5UIiwiYWRhcHRFdmVudEhhbmRsZXJzIiwiQWNjZXNzaWJpbGl0eU1hbmFnZXIiLCJpc0RvbWFpblNwZWNpZmllZEJ5VXNlciIsImdldEFjdGl2ZVNoYXBlSW5kZXhGb3JUb29sdGlwIiwiaXNGdW5uZWwiLCJpc1BpZSIsImlzU2NhdHRlciIsIkN1cnNvciIsIkNoYXJ0TGF5b3V0Q29udGV4dFByb3ZpZGVyIiwiT1JJRU5UX01BUCIsInhBeGlzIiwieUF4aXMiLCJGVUxMX1dJRFRIX0FORF9IRUlHSFQiLCJ3aWR0aCIsImhlaWdodCIsIm9yaWdpbkNvb3JkaW5hdGUiLCJ4IiwieSIsInJlbmRlckFzSXMiLCJlbGVtZW50IiwiY2FsY3VsYXRlVG9vbHRpcFBvcyIsInJhbmdlT2JqIiwibGF5b3V0IiwiYW5nbGUiLCJyYWRpdXMiLCJnZXRBY3RpdmVDb29yZGluYXRlIiwidG9vbHRpcFRpY2tzIiwiYWN0aXZlSW5kZXgiLCJlbnRyeSIsImZpbmQiLCJ0aWNrIiwiaW5kZXgiLCJjb29yZGluYXRlIiwiX2FuZ2xlIiwiX3JhZGl1cyIsImN4IiwiY3kiLCJnZXREaXNwbGF5ZWREYXRhIiwiZGF0YSIsIl9yZWYiLCJncmFwaGljYWxJdGVtcyIsImRhdGFTdGFydEluZGV4IiwiZGF0YUVuZEluZGV4IiwiaXRlbXNEYXRhIiwicmVkdWNlIiwicmVzdWx0IiwiY2hpbGQiLCJpdGVtRGF0YSIsImNvbmNhdCIsImdldERlZmF1bHREb21haW5CeUF4aXNUeXBlIiwiYXhpc1R5cGUiLCJ1bmRlZmluZWQiLCJnZXRUb29sdGlwQ29udGVudCIsInN0YXRlIiwiY2hhcnREYXRhIiwiYWN0aXZlTGFiZWwiLCJ0b29sdGlwQXhpcyIsImRpc3BsYXllZERhdGEiLCJfY2hpbGQkcHJvcHMkZGF0YSIsInBheWxvYWQiLCJkYXRhS2V5IiwiYWxsb3dEdXBsaWNhdGVkQ2F0ZWdvcnkiLCJlbnRyaWVzIiwiZ2V0VG9vbHRpcERhdGEiLCJyYW5nZURhdGEiLCJjaGFydFgiLCJjaGFydFkiLCJwb3MiLCJ0aWNrcyIsIm9yZGVyZWRUb29sdGlwVGlja3MiLCJheGlzIiwiYWN0aXZlUGF5bG9hZCIsImFjdGl2ZUNvb3JkaW5hdGUiLCJhY3RpdmVUb29sdGlwSW5kZXgiLCJnZXRBeGlzTWFwQnlBeGVzIiwiX3JlZjIiLCJheGVzIiwiYXhpc0lkS2V5Iiwic3RhY2tHcm91cHMiLCJjaGlsZHJlbiIsInN0YWNrT2Zmc2V0IiwiaXNDYXRlZ29yaWNhbCIsIl9jaGlsZFByb3BzJGRvbWFpbjIiLCJjaGlsZFByb3BzIiwidHlwZSIsImRlZmF1bHRQcm9wcyIsImFsbG93RGF0YU92ZXJmbG93Iiwic2NhbGUiLCJpbmNsdWRlSGlkZGVuIiwiYXhpc0lkIiwiaXRlbSIsIl9kZWZhdWx0UHJvcHMiLCJpdGVtQXhpc0lkIiwiZG9tYWluIiwiZHVwbGljYXRlRG9tYWluIiwiY2F0ZWdvcmljYWxEb21haW4iLCJkZWZhdWx0RG9tYWluIiwiX2NoaWxkUHJvcHMkZG9tYWluIiwiY2hpbGREb21haW4iLCJkdXBsaWNhdGUiLCJmaW5hbERvbWFpbiIsImVycm9yQmFyc0RvbWFpbiIsIl9kZWZhdWx0UHJvcHMyIiwiX2RlZmF1bHRQcm9wczMiLCJpdGVtSGlkZSIsImhpZGUiLCJoYXNTdGFjayIsImF4aXNEb21haW4iLCJpc0RvbWFpblZhbGlkIiwiZXZlcnkiLCJvcmlnaW5hbERvbWFpbiIsImdldEF4aXNNYXBCeUl0ZW1zIiwiX3JlZjMiLCJBeGlzIiwiX2RlZmF1bHRQcm9wczQiLCJfZGVmYXVsdFByb3BzNSIsIm9yaWVudGF0aW9uIiwiZ2V0QXhpc01hcCIsIl9yZWY0IiwiX3JlZjQkYXhpc1R5cGUiLCJBeGlzQ29tcCIsImF4aXNNYXAiLCJ0b29sdGlwVGlja3NHZW5lcmF0b3IiLCJ0b29sdGlwQXhpc0JhbmRTaXplIiwiY3JlYXRlRGVmYXVsdFN0YXRlIiwiZGVmYXVsdFNob3dUb29sdGlwIiwiYnJ1c2hJdGVtIiwic3RhcnRJbmRleCIsImVuZEluZGV4IiwiaXNUb29sdGlwQWN0aXZlIiwiaGFzR3JhcGhpY2FsQmFySXRlbSIsInNvbWUiLCJnZXRBeGlzTmFtZUJ5TGF5b3V0IiwibnVtZXJpY0F4aXNOYW1lIiwiY2F0ZUF4aXNOYW1lIiwiY2FsY3VsYXRlT2Zmc2V0IiwiX3JlZjUiLCJwcmV2TGVnZW5kQkJveCIsIl9yZWY1JHhBeGlzTWFwIiwieEF4aXNNYXAiLCJfcmVmNSR5QXhpc01hcCIsInlBeGlzTWFwIiwibWFyZ2luIiwibGVnZW5kSXRlbSIsIm9mZnNldEgiLCJpZCIsIm1pcnJvciIsImxlZnQiLCJyaWdodCIsIm9mZnNldFYiLCJ0b3AiLCJib3R0b20iLCJvZmZzZXQiLCJicnVzaEJvdHRvbSIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0IiwiTWF0aCIsIm1heCIsImdldENhcnRlc2lhbkF4aXNTaXplIiwiYXhpc09iaiIsImF4aXNOYW1lIiwiZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0IiwiX3JlZjYiLCJjaGFydE5hbWUiLCJHcmFwaGljYWxDaGlsZCIsIl9yZWY2JGRlZmF1bHRUb29sdGlwRSIsImRlZmF1bHRUb29sdGlwRXZlbnRUeXBlIiwiX3JlZjYkdmFsaWRhdGVUb29sdGlwIiwidmFsaWRhdGVUb29sdGlwRXZlbnRUeXBlcyIsImF4aXNDb21wb25lbnRzIiwibGVnZW5kQ29udGVudCIsImZvcm1hdEF4aXNNYXAiLCJnZXRGb3JtYXRJdGVtcyIsImN1cnJlbnRTdGF0ZSIsInVwZGF0ZUlkIiwiYmFyU2l6ZSIsImJhckdhcCIsImJhckNhdGVnb3J5R2FwIiwiZ2xvYmFsTWF4QmFyU2l6ZSIsIm1heEJhclNpemUiLCJfZ2V0QXhpc05hbWVCeUxheW91dCIsImhhc0JhciIsImZvcm1hdHRlZEl0ZW1zIiwiaXRlbVByb3BzIiwiY2hpbGRNYXhCYXJTaXplIiwibnVtZXJpY0F4aXNJZCIsImNhdGVBeGlzSWQiLCJheGlzT2JqSW5pdGlhbFZhbHVlIiwiX2l0ZW0kdHlwZSRkaXNwbGF5TmFtIiwiX2l0ZW0kdHlwZSIsInByb2Nlc3MiLCJkaXNwbGF5TmFtZSIsImNhdGVBeGlzIiwiY2F0ZVRpY2tzIiwic3RhY2tlZERhdGEiLCJpdGVtSXNCYXIiLCJiYW5kU2l6ZSIsImJhclBvc2l0aW9uIiwic2l6ZUxpc3QiLCJ0b3RhbFNpemUiLCJfcmVmNyIsIl9nZXRCYW5kU2l6ZU9mQXhpcyIsImJhckJhbmRTaXplIiwibWFwIiwicG9zaXRpb24iLCJjb21wb3NlZEZuIiwiZ2V0Q29tcG9zZWREYXRhIiwiY2hpbGRJbmRleCIsInVwZGF0ZVN0YXRlT2ZBeGlzTWFwc09mZnNldEFuZFN0YWNrR3JvdXBzIiwiX3JlZjgiLCJwcmV2U3RhdGUiLCJyZXZlcnNlU3RhY2tPcmRlciIsIl9nZXRBeGlzTmFtZUJ5TGF5b3V0MiIsImxlZ2VuZEJCb3giLCJyZXBsYWNlIiwiY2F0ZUF4aXNNYXAiLCJ0aWNrc09iaiIsImZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zIiwiQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIiLCJfQ29tcG9uZW50IiwiX3Byb3BzIiwiX3Byb3BzJGlkIiwiX3Byb3BzJHRocm90dGxlRGVsYXkiLCJfdGhpcyIsImJveCIsIl90aGlzJHN0YXRlIiwic2V0U3RhdGUiLCJjSWQiLCJlbWl0dGVyIiwic3luY0lkIiwiZXZlbnRFbWl0dGVyU3ltYm9sIiwic3luY01ldGhvZCIsImFwcGx5U3luY0V2ZW50IiwiX3JlZjkiLCJ0cmlnZ2VyU3luY0V2ZW50IiwibW91c2UiLCJnZXRNb3VzZUluZm8iLCJfbmV4dFN0YXRlIiwib25Nb3VzZUVudGVyIiwibmV4dFN0YXRlIiwib25Nb3VzZU1vdmUiLCJlbCIsImFjdGl2ZUl0ZW0iLCJ0b29sdGlwUGF5bG9hZCIsInRvb2x0aXBQb3NpdGlvbiIsInBlcnNpc3QiLCJ0aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlIiwiY2FuY2VsIiwib25Nb3VzZUxlYXZlIiwiZXZlbnROYW1lIiwiZXZlbnQiLCJfbW91c2UiLCJjaGFuZ2VkVG91Y2hlcyIsIl9uZXh0U3RhdGUyIiwib25DbGljayIsIm9uTW91c2VEb3duIiwiX25leHRTdGF0ZTMiLCJvbk1vdXNlVXAiLCJfbmV4dFN0YXRlNCIsImhhbmRsZU1vdXNlRG93biIsImhhbmRsZU1vdXNlVXAiLCJvbkRvdWJsZUNsaWNrIiwiX25leHRTdGF0ZTUiLCJvbkNvbnRleHRNZW51IiwiX25leHRTdGF0ZTYiLCJlbWl0IiwiX3RoaXMkcHJvcHMiLCJfdGhpcyRzdGF0ZTIiLCJ2aWV3Qm94IiwidmFsaWRhdGVDaGFydFgiLCJtaW4iLCJ2YWxpZGF0ZUNoYXJ0WSIsIl9lbGVtZW50JHByb3BzJGFjdGl2ZSIsIl90aGlzJHN0YXRlMyIsInRvb2x0aXBFdmVudFR5cGUiLCJnZXRUb29sdGlwRXZlbnRUeXBlIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJjcmVhdGVFbGVtZW50IiwiZWxlbWVudERlZmF1bHRQcm9wcyIsImVsZW1lbnRQcm9wcyIsImF4aXNPcHRpb24iLCJjbGFzc05hbWUiLCJfZWxlbWVudCRwcm9wcyIsInJhZGlhbExpbmVzIiwicG9sYXJBbmdsZXMiLCJwb2xhclJhZGl1cyIsIl90aGlzJHN0YXRlNCIsInJhZGl1c0F4aXNNYXAiLCJhbmdsZUF4aXNNYXAiLCJyYWRpdXNBeGlzIiwiYW5nbGVBeGlzIiwiaW5uZXJSYWRpdXMiLCJvdXRlclJhZGl1cyIsIl90aGlzJHByb3BzMiIsImxlZ2VuZFdpZHRoIiwib3RoZXJQcm9wcyIsImNoYXJ0V2lkdGgiLCJjaGFydEhlaWdodCIsIm9uQkJveFVwZGF0ZSIsImhhbmRsZUxlZ2VuZEJCb3hVcGRhdGUiLCJfdG9vbHRpcEl0ZW0kcHJvcHMkYWMiLCJfdGhpcyRwcm9wczMiLCJhY2Nlc3NpYmlsaXR5TGF5ZXIiLCJ0b29sdGlwSXRlbSIsIl90aGlzJHN0YXRlNSIsImxhYmVsIiwiX3RoaXMkcHJvcHM0IiwiX3RoaXMkc3RhdGU2Iiwib25DaGFuZ2UiLCJoYW5kbGVCcnVzaENoYW5nZSIsIl90aGlzMiIsImNsaXBQYXRoSWQiLCJfdGhpcyRzdGF0ZTciLCJfZWxlbWVudCRwcm9wczIiLCJfZWxlbWVudCRwcm9wczIkeEF4aXMiLCJ4QXhpc0lkIiwiX2VsZW1lbnQkcHJvcHMyJHlBeGlzIiwieUF4aXNJZCIsIl9yZWYxMCIsImFjdGl2ZVBvaW50IiwiYmFzZVBvaW50IiwiaXNSYW5nZSIsIml0ZW1JdGVtUHJvcHMiLCJhY3RpdmVEb3QiLCJkb3RQcm9wcyIsImZpbGwiLCJzdHJva2VXaWR0aCIsInN0cm9rZSIsInJlbmRlckFjdGl2ZURvdCIsImZpbHRlckZvcm1hdEl0ZW0iLCJfdGhpcyRzdGF0ZTgiLCJfaXRlbSRwcm9wcyIsInBvaW50cyIsImJhc2VMaW5lIiwiYWN0aXZlQmFyIiwiYWN0aXZlU2hhcGUiLCJoYXNBY3RpdmUiLCJpdGVtRXZlbnRzIiwidHJpZ2dlciIsImhhbmRsZUl0ZW1Nb3VzZUVudGVyIiwiaGFuZGxlSXRlbU1vdXNlTGVhdmUiLCJncmFwaGljYWxJdGVtIiwiZmluZFdpdGhQYXlsb2FkIiwic3BlY2lmaWVkS2V5IiwicmVuZGVyQWN0aXZlUG9pbnRzIiwiX3RoaXMkZ2V0SXRlbUJ5WFkiLCJfcmVmMTEiLCJnZXRJdGVtQnlYWSIsIl9yZWYxMSRncmFwaGljYWxJdGVtIiwiX3JlZjExJGdyYXBoaWNhbEl0ZW0kIiwieHlJdGVtIiwiQ2FydGVzaWFuR3JpZCIsImhhbmRsZXIiLCJvbmNlIiwiUmVmZXJlbmNlQXJlYSIsInJlbmRlclJlZmVyZW5jZUVsZW1lbnQiLCJSZWZlcmVuY2VMaW5lIiwiUmVmZXJlbmNlRG90IiwiWEF4aXMiLCJZQXhpcyIsInJlbmRlckJydXNoIiwiQmFyIiwicmVuZGVyR3JhcGhpY0NoaWxkIiwiTGluZSIsIkFyZWEiLCJSYWRhciIsIlJhZGlhbEJhciIsIlNjYXR0ZXIiLCJQaWUiLCJGdW5uZWwiLCJyZW5kZXJDdXJzb3IiLCJQb2xhckdyaWQiLCJyZW5kZXJQb2xhckdyaWQiLCJQb2xhckFuZ2xlQXhpcyIsInJlbmRlclBvbGFyQXhpcyIsIlBvbGFyUmFkaXVzQXhpcyIsIkN1c3RvbWl6ZWQiLCJyZW5kZXJDdXN0b21pemVkIiwidHJpZ2dlcmVkQWZ0ZXJNb3VzZU1vdmUiLCJ0aHJvdHRsZURlbGF5IiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwcm9wcyRtYXJnaW4kbGUiLCJfdGhpcyRwcm9wcyRtYXJnaW4kdG8iLCJhZGRMaXN0ZW5lciIsImFjY2Vzc2liaWxpdHlNYW5hZ2VyIiwic2V0RGV0YWlscyIsImNvbnRhaW5lciIsImNvb3JkaW5hdGVMaXN0IiwibW91c2VIYW5kbGVyQ2FsbGJhY2siLCJkaXNwbGF5RGVmYXVsdFRvb2x0aXAiLCJfdGhpcyRwcm9wczUiLCJ0b29sdGlwRWxlbSIsImRlZmF1bHRJbmRleCIsImluZGVwZW5kZW50QXhpc0Nvb3JkIiwiZGVwZW5kZW50QXhpc0Nvb3JkIiwiaXNIb3Jpem9udGFsIiwic2NhdHRlclBsb3RFbGVtZW50IiwiX3JlZjEyIiwic2V0SW5kZXgiLCJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSIsInByZXZQcm9wcyIsIl90aGlzJHByb3BzJG1hcmdpbiRsZTIiLCJfdGhpcyRwcm9wcyRtYXJnaW4kdG8yIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVMaXN0ZW5lciIsInNoYXJlZCIsImV2ZW50VHlwZSIsImJvdW5kaW5nUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNvbnRhaW5lck9mZnNldCIsInJvdW5kIiwicGFnZVgiLCJwYWdlWSIsImluUmFuZ2UiLCJfdGhpcyRzdGF0ZTkiLCJ0b29sVGlwRGF0YSIsInhTY2FsZSIsInlTY2FsZSIsInhWYWx1ZSIsImludmVydCIsInlWYWx1ZSIsInNjYWxlZFgiLCJzY2FsZWRZIiwiaXNJblJhbmdlIiwiX3RoaXMkc3RhdGUxMCIsInBhcnNlRXZlbnRzT2ZXcmFwcGVyIiwidG9vbHRpcEV2ZW50cyIsImhhbmRsZUNsaWNrIiwiaGFuZGxlTW91c2VFbnRlciIsImhhbmRsZURvdWJsZUNsaWNrIiwiaGFuZGxlTW91c2VNb3ZlIiwiaGFuZGxlTW91c2VMZWF2ZSIsIm9uVG91Y2hNb3ZlIiwiaGFuZGxlVG91Y2hNb3ZlIiwib25Ub3VjaFN0YXJ0IiwiaGFuZGxlVG91Y2hTdGFydCIsIm9uVG91Y2hFbmQiLCJoYW5kbGVUb3VjaEVuZCIsImhhbmRsZUNvbnRleHRNZW51Iiwib3V0ZXJFdmVudHMiLCJoYW5kbGVPdXRlckV2ZW50Iiwib24iLCJoYW5kbGVSZWNlaXZlU3luY0V2ZW50IiwicmVuZGVyQ2xpcFBhdGgiLCJfdGhpcyRzdGF0ZSRvZmZzZXQiLCJnZXRYU2NhbGVzIiwicmVzIiwiX3JlZjEzIiwiX3JlZjE0IiwiYXhpc1Byb3BzIiwiZ2V0WVNjYWxlcyIsIl9yZWYxNSIsIl9yZWYxNiIsImdldFhTY2FsZUJ5QXhpc0lkIiwiX3RoaXMkc3RhdGUkeEF4aXNNYXAiLCJnZXRZU2NhbGVCeUF4aXNJZCIsIl90aGlzJHN0YXRlJHlBeGlzTWFwIiwiY2hhcnRYWSIsIl90aGlzJHN0YXRlMTEiLCJpdGVtRGlzcGxheU5hbWUiLCJhY3RpdmVCYXJJdGVtIiwiX2FjdGl2ZUJhckl0ZW0iLCJhY3RpdmVUb29sdGlwSXRlbSIsInJlbmRlciIsIl90aGlzMyIsIl90aGlzJHByb3BzNiIsInN0eWxlIiwiY29tcGFjdCIsInRpdGxlIiwiZGVzYyIsIm90aGVycyIsImF0dHJzIiwicmVuZGVyTWFwIiwiX3RoaXMkcHJvcHMkdGFiSW5kZXgiLCJfdGhpcyRwcm9wcyRyb2xlIiwidGFiSW5kZXgiLCJyb2xlIiwib25LZXlEb3duIiwia2V5Ym9hcmRFdmVudCIsIm9uRm9jdXMiLCJmb2N1cyIsImV2ZW50cyIsImN1cnNvciIsInJlZiIsIm5vZGUiLCJyZW5kZXJMZWdlbmQiLCJyZW5kZXJUb29sdGlwIiwibmV4dFByb3BzIiwiZGVmYXVsdFN0YXRlIiwicHJldkRhdGFLZXkiLCJwcmV2RGF0YSIsInByZXZXaWR0aCIsInByZXZIZWlnaHQiLCJwcmV2TGF5b3V0IiwicHJldlN0YWNrT2Zmc2V0IiwicHJldk1hcmdpbiIsInByZXZDaGlsZHJlbiIsIl9kZWZhdWx0U3RhdGUiLCJrZWVwRnJvbVByZXZTdGF0ZSIsInVwZGF0ZXNUb1N0YXRlIiwibmV3U3RhdGUiLCJfYnJ1c2gkcHJvcHMkc3RhcnRJbmQiLCJfYnJ1c2gkcHJvcHMiLCJfYnJ1c2gkcHJvcHMkZW5kSW5kZXgiLCJfYnJ1c2gkcHJvcHMyIiwiYnJ1c2giLCJoYXNEaWZmZXJlbnRTdGFydE9yRW5kSW5kZXgiLCJoYXNHbG9iYWxEYXRhIiwibmV3VXBkYXRlSWQiLCJvcHRpb24iLCJkb3QiLCJDYXRlZ29yaWNhbENoYXJ0Il0sInNvdXJjZVJvb3QiOiIifQ==\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9DZWxsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Q0FFQyxHQUVNLElBQUlBLE9BQU8sU0FBU0EsS0FBS0MsTUFBTTtJQUNwQyxPQUFPO0FBQ1QsRUFBRTtBQUNGRCxLQUFLRSxXQUFXLEdBQUciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9DZWxsLmpzPzQ0ZjUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IENyb3NzXG4gKi9cblxuZXhwb3J0IHZhciBDZWxsID0gZnVuY3Rpb24gQ2VsbChfcHJvcHMpIHtcbiAgcmV0dXJuIG51bGw7XG59O1xuQ2VsbC5kaXNwbGF5TmFtZSA9ICdDZWxsJzsiXSwibmFtZXMiOlsiQ2VsbCIsIl9wcm9wcyIsImRpc3BsYXlOYW1lIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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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QzdCQyxLQUFLRixzQkFBc0JFLEVBQUUsRUFDN0JDLFNBQVNILHNCQUFzQkcsTUFBTSxFQUNyQ0MsYUFBYUosc0JBQXNCSSxVQUFVLEVBQzdDQyxXQUFXTCxzQkFBc0JLLFFBQVE7UUFDM0NQLFlBQVk7WUFDVkcsSUFBSUE7WUFDSkMsSUFBSUE7WUFDSkUsWUFBWUE7WUFDWkMsVUFBVUE7WUFDVkMsYUFBYUg7WUFDYkksYUFBYUo7UUFDZjtRQUNBSixhQUFhdEIsaURBQU1BO0lBQ3JCLE9BQU87UUFDTHFCLFlBQVk7WUFDVlUsUUFBUTlCLDZFQUFlQSxDQUFDYyxRQUFRTCxrQkFBa0JFO1FBQ3BEO1FBQ0FVLGFBQWEzQiwrQ0FBS0E7SUFDcEI7SUFDQSxJQUFJcUMsY0FBYzlELGNBQWNBLGNBQWNBLGNBQWNBLGNBQWM7UUFDeEUrRCxRQUFRO1FBQ1JDLGVBQWU7SUFDakIsR0FBR3RCLFNBQVNTLFlBQVluQiw2REFBV0EsQ0FBQ2Usb0JBQW9CLFNBQVMsQ0FBQyxHQUFHO1FBQ25Fa0IsU0FBU3hCO1FBQ1R5QixjQUFjdkI7UUFDZHdCLFdBQVczQyxnREFBSUEsQ0FBQywyQkFBMkJ1QixtQkFBbUJvQixTQUFTO0lBQ3pFO0lBQ0EsT0FBTyxXQUFXLEdBQUU1QyxxREFBY0EsQ0FBQ3dCLHNCQUFzQixXQUFXLEdBQUUxQixtREFBWUEsQ0FBQzBCLG9CQUFvQmUsZUFBZSxXQUFXLEdBQUV4QyxvREFBYUEsQ0FBQzhCLFlBQVlVO0FBQy9KIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvQ3Vyc29yLmpzPzY4YmMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmltcG9ydCB7IGNsb25lRWxlbWVudCwgY3JlYXRlRWxlbWVudCwgaXNWYWxpZEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IEN1cnZlIH0gZnJvbSAnLi4vc2hhcGUvQ3VydmUnO1xuaW1wb3J0IHsgQ3Jvc3MgfSBmcm9tICcuLi9zaGFwZS9Dcm9zcyc7XG5pbXBvcnQgeyBnZXRDdXJzb3JSZWN0YW5nbGUgfSBmcm9tICcuLi91dGlsL2N1cnNvci9nZXRDdXJzb3JSZWN0YW5nbGUnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlIH0gZnJvbSAnLi4vc2hhcGUvUmVjdGFuZ2xlJztcbmltcG9ydCB7IGdldFJhZGlhbEN1cnNvclBvaW50cyB9IGZyb20gJy4uL3V0aWwvY3Vyc29yL2dldFJhZGlhbEN1cnNvclBvaW50cyc7XG5pbXBvcnQgeyBTZWN0b3IgfSBmcm9tICcuLi9zaGFwZS9TZWN0b3InO1xuaW1wb3J0IHsgZ2V0Q3Vyc29yUG9pbnRzIH0gZnJvbSAnLi4vdXRpbC9jdXJzb3IvZ2V0Q3Vyc29yUG9pbnRzJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbi8qXG4gKiBDdXJzb3IgaXMgdGhlIGJhY2tncm91bmQsIG9yIGEgaGlnaGxpZ2h0LFxuICogdGhhdCBzaG93cyB3aGVuIHVzZXIgbW91c2VzIG92ZXIgb3IgYWN0aXZhdGVzXG4gKiBhbiBhcmVhLlxuICpcbiAqIEl0IHVzdWFsbHkgc2hvd3MgdG9nZXRoZXIgd2l0aCBhIHRvb2x0aXBcbiAqIHRvIGVtcGhhc2lzZSB3aGljaCBwYXJ0IG9mIHRoZSBjaGFydCBkb2VzIHRoZSB0b29sdGlwIHJlZmVyIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ3Vyc29yKHByb3BzKSB7XG4gIHZhciBfZWxlbWVudCRwcm9wcyRjdXJzb3IsIF9kZWZhdWx0UHJvcHM7XG4gIHZhciBlbGVtZW50ID0gcHJvcHMuZWxlbWVudCxcbiAgICB0b29sdGlwRXZlbnRUeXBlID0gcHJvcHMudG9vbHRpcEV2ZW50VHlwZSxcbiAgICBpc0FjdGl2ZSA9IHByb3BzLmlzQWN0aXZlLFxuICAgIGFjdGl2ZUNvb3JkaW5hdGUgPSBwcm9wcy5hY3RpdmVDb29yZGluYXRlLFxuICAgIGFjdGl2ZVBheWxvYWQgPSBwcm9wcy5hY3RpdmVQYXlsb2FkLFxuICAgIG9mZnNldCA9IHByb3BzLm9mZnNldCxcbiAgICBhY3RpdmVUb29sdGlwSW5kZXggPSBwcm9wcy5hY3RpdmVUb29sdGlwSW5kZXgsXG4gICAgdG9vbHRpcEF4aXNCYW5kU2l6ZSA9IHByb3BzLnRvb2x0aXBBeGlzQmFuZFNpemUsXG4gICAgbGF5b3V0ID0gcHJvcHMubGF5b3V0LFxuICAgIGNoYXJ0TmFtZSA9IHByb3BzLmNoYXJ0TmFtZTtcbiAgdmFyIGVsZW1lbnRQcm9wc0N1cnNvciA9IChfZWxlbWVudCRwcm9wcyRjdXJzb3IgPSBlbGVtZW50LnByb3BzLmN1cnNvcikgIT09IG51bGwgJiYgX2VsZW1lbnQkcHJvcHMkY3Vyc29yICE9PSB2b2lkIDAgPyBfZWxlbWVudCRwcm9wcyRjdXJzb3IgOiAoX2RlZmF1bHRQcm9wcyA9IGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHMpID09PSBudWxsIHx8IF9kZWZhdWx0UHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0UHJvcHMuY3Vyc29yO1xuICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnRQcm9wc0N1cnNvciB8fCAhaXNBY3RpdmUgfHwgIWFjdGl2ZUNvb3JkaW5hdGUgfHwgY2hhcnROYW1lICE9PSAnU2NhdHRlckNoYXJ0JyAmJiB0b29sdGlwRXZlbnRUeXBlICE9PSAnYXhpcycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgcmVzdFByb3BzO1xuICB2YXIgY3Vyc29yQ29tcCA9IEN1cnZlO1xuICBpZiAoY2hhcnROYW1lID09PSAnU2NhdHRlckNoYXJ0Jykge1xuICAgIHJlc3RQcm9wcyA9IGFjdGl2ZUNvb3JkaW5hdGU7XG4gICAgY3Vyc29yQ29tcCA9IENyb3NzO1xuICB9IGVsc2UgaWYgKGNoYXJ0TmFtZSA9PT0gJ0JhckNoYXJ0Jykge1xuICAgIHJlc3RQcm9wcyA9IGdldEN1cnNvclJlY3RhbmdsZShsYXlvdXQsIGFjdGl2ZUNvb3JkaW5hdGUsIG9mZnNldCwgdG9vbHRpcEF4aXNCYW5kU2l6ZSk7XG4gICAgY3Vyc29yQ29tcCA9IFJlY3RhbmdsZTtcbiAgfSBlbHNlIGlmIChsYXlvdXQgPT09ICdyYWRpYWwnKSB7XG4gICAgdmFyIF9nZXRSYWRpYWxDdXJzb3JQb2ludCA9IGdldFJhZGlhbEN1cnNvclBvaW50cyhhY3RpdmVDb29yZGluYXRlKSxcbiAgICAgIGN4ID0gX2dldFJhZGlhbEN1cnNvclBvaW50LmN4LFxuICAgICAgY3kgPSBfZ2V0UmFkaWFsQ3Vyc29yUG9pbnQuY3ksXG4gICAgICByYWRpdXMgPSBfZ2V0UmFkaWFsQ3Vyc29yUG9pbnQucmFkaXVzLFxuICAgICAgc3RhcnRBbmdsZSA9IF9nZXRSYWRpYWxDdXJzb3JQb2ludC5zdGFydEFuZ2xlLFxuICAgICAgZW5kQW5nbGUgPSBfZ2V0UmFkaWFsQ3Vyc29yUG9pbnQuZW5kQW5nbGU7XG4gICAgcmVzdFByb3BzID0ge1xuICAgICAgY3g6IGN4LFxuICAgICAgY3k6IGN5LFxuICAgICAgc3RhcnRBbmdsZTogc3RhcnRBbmdsZSxcbiAgICAgIGVuZEFuZ2xlOiBlbmRBbmdsZSxcbiAgICAgIGlubmVyUmFkaXVzOiByYWRpdXMsXG4gICAgICBvdXRlclJhZGl1czogcmFkaXVzXG4gICAgfTtcbiAgICBjdXJzb3JDb21wID0gU2VjdG9yO1xuICB9IGVsc2Uge1xuICAgIHJlc3RQcm9wcyA9IHtcbiAgICAgIHBvaW50czogZ2V0Q3Vyc29yUG9pbnRzKGxheW91dCwgYWN0aXZlQ29vcmRpbmF0ZSwgb2Zmc2V0KVxuICAgIH07XG4gICAgY3Vyc29yQ29tcCA9IEN1cnZlO1xuICB9XG4gIHZhciBjdXJzb3JQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgIHN0cm9rZTogJyNjY2MnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJ1xuICB9LCBvZmZzZXQpLCByZXN0UHJvcHMpLCBmaWx0ZXJQcm9wcyhlbGVtZW50UHJvcHNDdXJzb3IsIGZhbHNlKSksIHt9LCB7XG4gICAgcGF5bG9hZDogYWN0aXZlUGF5bG9hZCxcbiAgICBwYXlsb2FkSW5kZXg6IGFjdGl2ZVRvb2x0aXBJbmRleCxcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXRvb2x0aXAtY3Vyc29yJywgZWxlbWVudFByb3BzQ3Vyc29yLmNsYXNzTmFtZSlcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQoZWxlbWVudFByb3BzQ3Vyc29yKSA/IC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoZWxlbWVudFByb3BzQ3Vyc29yLCBjdXJzb3JQcm9wcykgOiAvKiNfX1BVUkVfXyovY3JlYXRlRWxlbWVudChjdXJzb3JDb21wLCBjdXJzb3JQcm9wcyk7XG59Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJjbG9uZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaXNWYWxpZEVsZW1lbnQiLCJjbHN4IiwiQ3VydmUiLCJDcm9zcyIsImdldEN1cnNvclJlY3RhbmdsZSIsIlJlY3RhbmdsZSIsImdldFJhZGlhbEN1cnNvclBvaW50cyIsIlNlY3RvciIsImdldEN1cnNvclBvaW50cyIsImZpbHRlclByb3BzIiwiQ3Vyc29yIiwicHJvcHMiLCJfZWxlbWVudCRwcm9wcyRjdXJzb3IiLCJfZGVmYXVsdFByb3BzIiwiZWxlbWVudCIsInRvb2x0aXBFdmVudFR5cGUiLCJpc0FjdGl2ZSIsImFjdGl2ZUNvb3JkaW5hdGUiLCJhY3RpdmVQYXlsb2FkIiwib2Zmc2V0IiwiYWN0aXZlVG9vbHRpcEluZGV4IiwidG9vbHRpcEF4aXNCYW5kU2l6ZSIsImxheW91dCIsImNoYXJ0TmFtZSIsImVsZW1lbnRQcm9wc0N1cnNvciIsImN1cnNvciIsInR5cGUiLCJkZWZhdWx0UHJvcHMiLCJyZXN0UHJvcHMiLCJjdXJzb3JDb21wIiwiX2dldFJhZGlhbEN1cnNvclBvaW50IiwiY3giLCJjeSIsInJhZGl1cyIsInN0YXJ0QW5nbGUiLCJlbmRBbmdsZSIsImlubmVyUmFkaXVzIiwib3V0ZXJSYWRpdXMiLCJwb2ludHMiLCJjdXJzb3JQcm9wcyIsInN0cm9rZSIsInBvaW50ZXJFdmVudHMiLCJwYXlsb2FkIiwicGF5bG9hZEluZGV4IiwiY2xhc3NOYW1lIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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: ' // 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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QixDQUFDLFFBQVE7d0JBQ3BFOEIsV0FBVzt3QkFDWCtCLE9BQU87NEJBQ0w1QyxPQUFPQTt3QkFDVDtvQkFDRixHQUFHMEMsaUJBQWlCQSxlQUFlQyxZQUFZRixPQUFPekgsS0FBSzJIO2dCQUM3RDtZQUNGO1FBQ0Y7UUFBRztZQUNEdkgsS0FBSztZQUNMbUQsT0FBTyxTQUFTc0U7Z0JBQ2QsSUFBSUMsZUFBZSxJQUFJLENBQUNqRyxLQUFLLEVBQzNCMkQsVUFBVXNDLGFBQWF0QyxPQUFPLEVBQzlCb0IsU0FBU2tCLGFBQWFsQixNQUFNLEVBQzVCbUIsUUFBUUQsYUFBYUMsS0FBSztnQkFDNUIsSUFBSSxDQUFDdkMsV0FBVyxDQUFDQSxRQUFRdEYsTUFBTSxFQUFFO29CQUMvQixPQUFPO2dCQUNUO2dCQUNBLElBQUk4SCxhQUFhO29CQUNmQyxTQUFTO29CQUNUQyxRQUFRO29CQUNSQyxXQUFXdkIsV0FBVyxlQUFlbUIsUUFBUTtnQkFDL0M7Z0JBQ0EsT0FBTyxXQUFXLEdBQUVoRSwwREFBbUIsQ0FBQyxNQUFNO29CQUM1QzhCLFdBQVc7b0JBQ1grQixPQUFPSTtnQkFDVCxHQUFHLElBQUksQ0FBQ3hCLFdBQVc7WUFDckI7UUFDRjtLQUFFO0FBQ0osRUFBRXhDLGdEQUFhQSxFQUFFO0FBQ2pCNUMsZ0JBQWdCb0Qsc0JBQXNCLGVBQWU7QUFDckRwRCxnQkFBZ0JvRCxzQkFBc0IsZ0JBQWdCO0lBQ3BEbUMsVUFBVTtJQUNWQyxRQUFRO0lBQ1JtQixPQUFPO0lBQ1BSLGVBQWU7SUFDZjNDLGVBQWU7QUFDakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9EZWZhdWx0TGVnZW5kQ29udGVudC5qcz9kYWI1Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgRGVmYXVsdCBMZWdlbmQgQ29udGVudFxuICovXG5pbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJy4uL3V0aWwvTG9nVXRpbHMnO1xuaW1wb3J0IHsgU3VyZmFjZSB9IGZyb20gJy4uL2NvbnRhaW5lci9TdXJmYWNlJztcbmltcG9ydCB7IFN5bWJvbHMgfSBmcm9tICcuLi9zaGFwZS9TeW1ib2xzJztcbmltcG9ydCB7IGFkYXB0RXZlbnRzT2ZDaGlsZCB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xudmFyIFNJWkUgPSAzMjtcbmV4cG9ydCB2YXIgRGVmYXVsdExlZ2VuZENvbnRlbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIERlZmF1bHRMZWdlbmRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEZWZhdWx0TGVnZW5kQ29udGVudCk7XG4gICAgcmV0dXJuIF9jYWxsU3VwZXIodGhpcywgRGVmYXVsdExlZ2VuZENvbnRlbnQsIGFyZ3VtZW50cyk7XG4gIH1cbiAgX2luaGVyaXRzKERlZmF1bHRMZWdlbmRDb250ZW50LCBfUHVyZUNvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoRGVmYXVsdExlZ2VuZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlckljb25cIixcbiAgICB2YWx1ZTpcbiAgICAvKipcbiAgICAgKiBSZW5kZXIgdGhlIHBhdGggb2YgaWNvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIERhdGEgb2YgZWFjaCBsZWdlbmQgaXRlbVxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gUGF0aCBlbGVtZW50XG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVuZGVySWNvbihkYXRhKSB7XG4gICAgICB2YXIgaW5hY3RpdmVDb2xvciA9IHRoaXMucHJvcHMuaW5hY3RpdmVDb2xvcjtcbiAgICAgIHZhciBoYWxmU2l6ZSA9IFNJWkUgLyAyO1xuICAgICAgdmFyIHNpeHRoU2l6ZSA9IFNJWkUgLyA2O1xuICAgICAgdmFyIHRoaXJkU2l6ZSA9IFNJWkUgLyAzO1xuICAgICAgdmFyIGNvbG9yID0gZGF0YS5pbmFjdGl2ZSA/IGluYWN0aXZlQ29sb3IgOiBkYXRhLmNvbG9yO1xuICAgICAgaWYgKGRhdGEudHlwZSA9PT0gJ3BsYWlubGluZScpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGluZVwiLCB7XG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgICAgc3Ryb2tlOiBjb2xvcixcbiAgICAgICAgICBzdHJva2VEYXNoYXJyYXk6IGRhdGEucGF5bG9hZC5zdHJva2VEYXNoYXJyYXksXG4gICAgICAgICAgeDE6IDAsXG4gICAgICAgICAgeTE6IGhhbGZTaXplLFxuICAgICAgICAgIHgyOiBTSVpFLFxuICAgICAgICAgIHkyOiBoYWxmU2l6ZSxcbiAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtbGVnZW5kLWljb25cIlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdsaW5lJykge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICAgICAgICBzdHJva2VXaWR0aDogNCxcbiAgICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgICBzdHJva2U6IGNvbG9yLFxuICAgICAgICAgIGQ6IFwiTTAsXCIuY29uY2F0KGhhbGZTaXplLCBcImhcIikuY29uY2F0KHRoaXJkU2l6ZSwgXCJcXG4gICAgICAgICAgICBBXCIpLmNvbmNhdChzaXh0aFNpemUsIFwiLFwiKS5jb25jYXQoc2l4dGhTaXplLCBcIiwwLDEsMSxcIikuY29uY2F0KDIgKiB0aGlyZFNpemUsIFwiLFwiKS5jb25jYXQoaGFsZlNpemUsIFwiXFxuICAgICAgICAgICAgSFwiKS5jb25jYXQoU0laRSwgXCJNXCIpLmNvbmNhdCgyICogdGhpcmRTaXplLCBcIixcIikuY29uY2F0KGhhbGZTaXplLCBcIlxcbiAgICAgICAgICAgIEFcIikuY29uY2F0KHNpeHRoU2l6ZSwgXCIsXCIpLmNvbmNhdChzaXh0aFNpemUsIFwiLDAsMSwxLFwiKS5jb25jYXQodGhpcmRTaXplLCBcIixcIikuY29uY2F0KGhhbGZTaXplKSxcbiAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtbGVnZW5kLWljb25cIlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdyZWN0Jykge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICAgICAgICBzdHJva2U6IFwibm9uZVwiLFxuICAgICAgICAgIGZpbGw6IGNvbG9yLFxuICAgICAgICAgIGQ6IFwiTTAsXCIuY29uY2F0KFNJWkUgLyA4LCBcImhcIikuY29uY2F0KFNJWkUsIFwidlwiKS5jb25jYXQoU0laRSAqIDMgLyA0LCBcImhcIikuY29uY2F0KC1TSVpFLCBcInpcIiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWxlZ2VuZC1pY29uXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChkYXRhLmxlZ2VuZEljb24pKSB7XG4gICAgICAgIHZhciBpY29uUHJvcHMgPSBfb2JqZWN0U3ByZWFkKHt9LCBkYXRhKTtcbiAgICAgICAgZGVsZXRlIGljb25Qcm9wcy5sZWdlbmRJY29uO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChkYXRhLmxlZ2VuZEljb24sIGljb25Qcm9wcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3ltYm9scywge1xuICAgICAgICBmaWxsOiBjb2xvcixcbiAgICAgICAgY3g6IGhhbGZTaXplLFxuICAgICAgICBjeTogaGFsZlNpemUsXG4gICAgICAgIHNpemU6IFNJWkUsXG4gICAgICAgIHNpemVUeXBlOiBcImRpYW1ldGVyXCIsXG4gICAgICAgIHR5cGU6IGRhdGEudHlwZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRHJhdyBpdGVtcyBvZiBsZWdlbmRcbiAgICAgKiBAcmV0dXJuIHtSZWFjdEVsZW1lbnR9IEl0ZW1zXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySXRlbXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVySXRlbXMoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgcGF5bG9hZCA9IF90aGlzJHByb3BzLnBheWxvYWQsXG4gICAgICAgIGljb25TaXplID0gX3RoaXMkcHJvcHMuaWNvblNpemUsXG4gICAgICAgIGxheW91dCA9IF90aGlzJHByb3BzLmxheW91dCxcbiAgICAgICAgZm9ybWF0dGVyID0gX3RoaXMkcHJvcHMuZm9ybWF0dGVyLFxuICAgICAgICBpbmFjdGl2ZUNvbG9yID0gX3RoaXMkcHJvcHMuaW5hY3RpdmVDb2xvcjtcbiAgICAgIHZhciB2aWV3Qm94ID0ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICB3aWR0aDogU0laRSxcbiAgICAgICAgaGVpZ2h0OiBTSVpFXG4gICAgICB9O1xuICAgICAgdmFyIGl0ZW1TdHlsZSA9IHtcbiAgICAgICAgZGlzcGxheTogbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgPyAnaW5saW5lLWJsb2NrJyA6ICdibG9jaycsXG4gICAgICAgIG1hcmdpblJpZ2h0OiAxMFxuICAgICAgfTtcbiAgICAgIHZhciBzdmdTdHlsZSA9IHtcbiAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAgICAgICBtYXJnaW5SaWdodDogNFxuICAgICAgfTtcbiAgICAgIHJldHVybiBwYXlsb2FkLm1hcChmdW5jdGlvbiAoZW50cnksIGkpIHtcbiAgICAgICAgdmFyIGZpbmFsRm9ybWF0dGVyID0gZW50cnkuZm9ybWF0dGVyIHx8IGZvcm1hdHRlcjtcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9IGNsc3goX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgICAgJ3JlY2hhcnRzLWxlZ2VuZC1pdGVtJzogdHJ1ZVxuICAgICAgICB9LCBcImxlZ2VuZC1pdGVtLVwiLmNvbmNhdChpKSwgdHJ1ZSksIFwiaW5hY3RpdmVcIiwgZW50cnkuaW5hY3RpdmUpKTtcbiAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09ICdub25lJykge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG8gbm90IHJlbmRlciBlbnRyeS52YWx1ZSBhcyBmdW5jdGlvbnMuIEFsd2F5cyByZXF1aXJlIHN0YXRpYyBzdHJpbmcgcHJvcGVydGllcy5cbiAgICAgICAgdmFyIGVudHJ5VmFsdWUgPSAhaXNGdW5jdGlvbihlbnRyeS52YWx1ZSkgPyBlbnRyeS52YWx1ZSA6IG51bGw7XG4gICAgICAgIHdhcm4oIWlzRnVuY3Rpb24oZW50cnkudmFsdWUpLCBcIlRoZSBuYW1lIHByb3BlcnR5IGlzIGFsc28gcmVxdWlyZWQgd2hlbiB1c2luZyBhIGZ1bmN0aW9uIGZvciB0aGUgZGF0YUtleSBvZiBhIGNoYXJ0J3MgY2FydGVzaWFuIGNvbXBvbmVudHMuIEV4OiA8QmFyIG5hbWU9XFxcIk5hbWUgb2YgbXkgRGF0YVxcXCIvPlwiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbWF4LWxlblxuICAgICAgICApO1xuICAgICAgICB2YXIgY29sb3IgPSBlbnRyeS5pbmFjdGl2ZSA/IGluYWN0aXZlQ29sb3IgOiBlbnRyeS5jb2xvcjtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgICAgIHN0eWxlOiBpdGVtU3R5bGVcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAgICAgLFxuICAgICAgICAgIGtleTogXCJsZWdlbmQtaXRlbS1cIi5jb25jYXQoaSlcbiAgICAgICAgfSwgYWRhcHRFdmVudHNPZkNoaWxkKF90aGlzLnByb3BzLCBlbnRyeSwgaSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTdXJmYWNlLCB7XG4gICAgICAgICAgd2lkdGg6IGljb25TaXplLFxuICAgICAgICAgIGhlaWdodDogaWNvblNpemUsXG4gICAgICAgICAgdmlld0JveDogdmlld0JveCxcbiAgICAgICAgICBzdHlsZTogc3ZnU3R5bGVcbiAgICAgICAgfSwgX3RoaXMucmVuZGVySWNvbihlbnRyeSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1sZWdlbmQtaXRlbS10ZXh0XCIsXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGNvbG9yOiBjb2xvclxuICAgICAgICAgIH1cbiAgICAgICAgfSwgZmluYWxGb3JtYXR0ZXIgPyBmaW5hbEZvcm1hdHRlcihlbnRyeVZhbHVlLCBlbnRyeSwgaSkgOiBlbnRyeVZhbHVlKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICBwYXlsb2FkID0gX3RoaXMkcHJvcHMyLnBheWxvYWQsXG4gICAgICAgIGxheW91dCA9IF90aGlzJHByb3BzMi5sYXlvdXQsXG4gICAgICAgIGFsaWduID0gX3RoaXMkcHJvcHMyLmFsaWduO1xuICAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBmaW5hbFN0eWxlID0ge1xuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBtYXJnaW46IDAsXG4gICAgICAgIHRleHRBbGlnbjogbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgPyBhbGlnbiA6ICdsZWZ0J1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWRlZmF1bHQtbGVnZW5kXCIsXG4gICAgICAgIHN0eWxlOiBmaW5hbFN0eWxlXG4gICAgICB9LCB0aGlzLnJlbmRlckl0ZW1zKCkpO1xuICAgIH1cbiAgfV0pO1xufShQdXJlQ29tcG9uZW50KTtcbl9kZWZpbmVQcm9wZXJ0eShEZWZhdWx0TGVnZW5kQ29udGVudCwgXCJkaXNwbGF5TmFtZVwiLCAnTGVnZW5kJyk7XG5fZGVmaW5lUHJvcGVydHkoRGVmYXVsdExlZ2VuZENvbnRlbnQsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgaWNvblNpemU6IDE0LFxuICBsYXlvdXQ6ICdob3Jpem9udGFsJyxcbiAgYWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgaW5hY3RpdmVDb2xvcjogJyNjY2MnXG59KTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsImlzRnVuY3Rpb24iLCJjbHN4Iiwid2FybiIsIlN1cmZhY2UiLCJTeW1ib2xzIiwiYWRhcHRFdmVudHNPZkNoaWxkIiwiU0laRSIsIkRlZmF1bHRMZWdlbmRDb250ZW50IiwiX1B1cmVDb21wb25lbnQiLCJyZW5kZXJJY29uIiwiZGF0YSIsImluYWN0aXZlQ29sb3IiLCJoYWxmU2l6ZSIsInNpeHRoU2l6ZSIsInRoaXJkU2l6ZSIsImNvbG9yIiwiaW5hY3RpdmUiLCJ0eXBlIiwiY3JlYXRlRWxlbWVudCIsInN0cm9rZVdpZHRoIiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZURhc2hhcnJheSIsInBheWxvYWQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImNsYXNzTmFtZSIsImQiLCJjb25jYXQiLCJpc1ZhbGlkRWxlbWVudCIsImxlZ2VuZEljb24iLCJpY29uUHJvcHMiLCJjbG9uZUVsZW1lbnQiLCJjeCIsImN5Iiwic2l6ZSIsInNpemVUeXBlIiwicmVuZGVySXRlbXMiLCJfdGhpcyIsIl90aGlzJHByb3BzIiwiaWNvblNpemUiLCJsYXlvdXQiLCJmb3JtYXR0ZXIiLCJ2aWV3Qm94IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsIml0ZW1TdHlsZSIsImRpc3BsYXkiLCJtYXJnaW5SaWdodCIsInN2Z1N0eWxlIiwidmVydGljYWxBbGlnbiIsIm1hcCIsImVudHJ5IiwiZmluYWxGb3JtYXR0ZXIiLCJlbnRyeVZhbHVlIiwic3R5bGUiLCJyZW5kZXIiLCJfdGhpcyRwcm9wczIiLCJhbGlnbiIsImZpbmFsU3R5bGUiLCJwYWRkaW5nIiwibWFyZ2luIiwidGV4dEFsaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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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QmxDLHFCQUFxQjtRQUNqRG1DLE1BQU07UUFDTixhQUFhO0lBQ2YsSUFBSSxDQUFDO0lBQ0wsT0FBTyxXQUFXLEdBQUU1RCwwREFBbUIsQ0FBQyxPQUFPL0QsU0FBUztRQUN0RDRHLFdBQVdXO1FBQ1hULE9BQU9FO0lBQ1QsR0FBR1UsMEJBQTBCLFdBQVcsR0FBRTNELDBEQUFtQixDQUFDLEtBQUs7UUFDakU2QyxXQUFXWTtRQUNYVixPQUFPTTtJQUNULEdBQUcsV0FBVyxHQUFFckQsMkRBQW9CLENBQUN1RCxjQUFjQSxhQUFhLEdBQUdULE1BQU0sQ0FBQ1MsY0FBYzdCO0FBQzFGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9EZWZhdWx0VG9vbHRpcENvbnRlbnQuanM/NjYzMiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBEZWZhdWx0IFRvb2x0aXAgQ29udGVudFxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc29ydEJ5IGZyb20gJ2xvZGFzaC9zb3J0QnknO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGlzTnVtT3JTdHIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5mdW5jdGlvbiBkZWZhdWx0Rm9ybWF0dGVyKHZhbHVlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBpc051bU9yU3RyKHZhbHVlWzBdKSAmJiBpc051bU9yU3RyKHZhbHVlWzFdKSA/IHZhbHVlLmpvaW4oJyB+ICcpIDogdmFsdWU7XG59XG5leHBvcnQgdmFyIERlZmF1bHRUb29sdGlwQ29udGVudCA9IGZ1bmN0aW9uIERlZmF1bHRUb29sdGlwQ29udGVudChwcm9wcykge1xuICB2YXIgX3Byb3BzJHNlcGFyYXRvciA9IHByb3BzLnNlcGFyYXRvcixcbiAgICBzZXBhcmF0b3IgPSBfcHJvcHMkc2VwYXJhdG9yID09PSB2b2lkIDAgPyAnIDogJyA6IF9wcm9wcyRzZXBhcmF0b3IsXG4gICAgX3Byb3BzJGNvbnRlbnRTdHlsZSA9IHByb3BzLmNvbnRlbnRTdHlsZSxcbiAgICBjb250ZW50U3R5bGUgPSBfcHJvcHMkY29udGVudFN0eWxlID09PSB2b2lkIDAgPyB7fSA6IF9wcm9wcyRjb250ZW50U3R5bGUsXG4gICAgX3Byb3BzJGl0ZW1TdHlsZSA9IHByb3BzLml0ZW1TdHlsZSxcbiAgICBpdGVtU3R5bGUgPSBfcHJvcHMkaXRlbVN0eWxlID09PSB2b2lkIDAgPyB7fSA6IF9wcm9wcyRpdGVtU3R5bGUsXG4gICAgX3Byb3BzJGxhYmVsU3R5bGUgPSBwcm9wcy5sYWJlbFN0eWxlLFxuICAgIGxhYmVsU3R5bGUgPSBfcHJvcHMkbGFiZWxTdHlsZSA9PT0gdm9pZCAwID8ge30gOiBfcHJvcHMkbGFiZWxTdHlsZSxcbiAgICBwYXlsb2FkID0gcHJvcHMucGF5bG9hZCxcbiAgICBmb3JtYXR0ZXIgPSBwcm9wcy5mb3JtYXR0ZXIsXG4gICAgaXRlbVNvcnRlciA9IHByb3BzLml0ZW1Tb3J0ZXIsXG4gICAgd3JhcHBlckNsYXNzTmFtZSA9IHByb3BzLndyYXBwZXJDbGFzc05hbWUsXG4gICAgbGFiZWxDbGFzc05hbWUgPSBwcm9wcy5sYWJlbENsYXNzTmFtZSxcbiAgICBsYWJlbCA9IHByb3BzLmxhYmVsLFxuICAgIGxhYmVsRm9ybWF0dGVyID0gcHJvcHMubGFiZWxGb3JtYXR0ZXIsXG4gICAgX3Byb3BzJGFjY2Vzc2liaWxpdHlMID0gcHJvcHMuYWNjZXNzaWJpbGl0eUxheWVyLFxuICAgIGFjY2Vzc2liaWxpdHlMYXllciA9IF9wcm9wcyRhY2Nlc3NpYmlsaXR5TCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcHJvcHMkYWNjZXNzaWJpbGl0eUw7XG4gIHZhciByZW5kZXJDb250ZW50ID0gZnVuY3Rpb24gcmVuZGVyQ29udGVudCgpIHtcbiAgICBpZiAocGF5bG9hZCAmJiBwYXlsb2FkLmxlbmd0aCkge1xuICAgICAgdmFyIGxpc3RTdHlsZSA9IHtcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgbWFyZ2luOiAwXG4gICAgICB9O1xuICAgICAgdmFyIGl0ZW1zID0gKGl0ZW1Tb3J0ZXIgPyBzb3J0QnkocGF5bG9hZCwgaXRlbVNvcnRlcikgOiBwYXlsb2FkKS5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSAnbm9uZScpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZmluYWxJdGVtU3R5bGUgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICAgIHBhZGRpbmdUb3A6IDQsXG4gICAgICAgICAgcGFkZGluZ0JvdHRvbTogNCxcbiAgICAgICAgICBjb2xvcjogZW50cnkuY29sb3IgfHwgJyMwMDAnXG4gICAgICAgIH0sIGl0ZW1TdHlsZSk7XG4gICAgICAgIHZhciBmaW5hbEZvcm1hdHRlciA9IGVudHJ5LmZvcm1hdHRlciB8fCBmb3JtYXR0ZXIgfHwgZGVmYXVsdEZvcm1hdHRlcjtcbiAgICAgICAgdmFyIHZhbHVlID0gZW50cnkudmFsdWUsXG4gICAgICAgICAgbmFtZSA9IGVudHJ5Lm5hbWU7XG4gICAgICAgIHZhciBmaW5hbFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHZhciBmaW5hbE5hbWUgPSBuYW1lO1xuICAgICAgICBpZiAoZmluYWxGb3JtYXR0ZXIgJiYgZmluYWxWYWx1ZSAhPSBudWxsICYmIGZpbmFsTmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZCA9IGZpbmFsRm9ybWF0dGVyKHZhbHVlLCBuYW1lLCBlbnRyeSwgaSwgcGF5bG9hZCk7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybWF0dGVkKSkge1xuICAgICAgICAgICAgdmFyIF9mb3JtYXR0ZWQgPSBfc2xpY2VkVG9BcnJheShmb3JtYXR0ZWQsIDIpO1xuICAgICAgICAgICAgZmluYWxWYWx1ZSA9IF9mb3JtYXR0ZWRbMF07XG4gICAgICAgICAgICBmaW5hbE5hbWUgPSBfZm9ybWF0dGVkWzFdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaW5hbFZhbHVlID0gZm9ybWF0dGVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy10b29sdGlwLWl0ZW1cIixcbiAgICAgICAgICAgIGtleTogXCJ0b29sdGlwLWl0ZW0tXCIuY29uY2F0KGkpLFxuICAgICAgICAgICAgc3R5bGU6IGZpbmFsSXRlbVN0eWxlXG4gICAgICAgICAgfSwgaXNOdW1PclN0cihmaW5hbE5hbWUpID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy10b29sdGlwLWl0ZW0tbmFtZVwiXG4gICAgICAgICAgfSwgZmluYWxOYW1lKSA6IG51bGwsIGlzTnVtT3JTdHIoZmluYWxOYW1lKSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtdG9vbHRpcC1pdGVtLXNlcGFyYXRvclwiXG4gICAgICAgICAgfSwgc2VwYXJhdG9yKSA6IG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtdG9vbHRpcC1pdGVtLXZhbHVlXCJcbiAgICAgICAgICB9LCBmaW5hbFZhbHVlKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy10b29sdGlwLWl0ZW0tdW5pdFwiXG4gICAgICAgICAgfSwgZW50cnkudW5pdCB8fCAnJykpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLXRvb2x0aXAtaXRlbS1saXN0XCIsXG4gICAgICAgIHN0eWxlOiBsaXN0U3R5bGVcbiAgICAgIH0sIGl0ZW1zKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG4gIHZhciBmaW5hbFN0eWxlID0gX29iamVjdFNwcmVhZCh7XG4gICAgbWFyZ2luOiAwLFxuICAgIHBhZGRpbmc6IDEwLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjY2NjJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICB9LCBjb250ZW50U3R5bGUpO1xuICB2YXIgZmluYWxMYWJlbFN0eWxlID0gX29iamVjdFNwcmVhZCh7XG4gICAgbWFyZ2luOiAwXG4gIH0sIGxhYmVsU3R5bGUpO1xuICB2YXIgaGFzTGFiZWwgPSAhaXNOaWwobGFiZWwpO1xuICB2YXIgZmluYWxMYWJlbCA9IGhhc0xhYmVsID8gbGFiZWwgOiAnJztcbiAgdmFyIHdyYXBwZXJDTiA9IGNsc3goJ3JlY2hhcnRzLWRlZmF1bHQtdG9vbHRpcCcsIHdyYXBwZXJDbGFzc05hbWUpO1xuICB2YXIgbGFiZWxDTiA9IGNsc3goJ3JlY2hhcnRzLXRvb2x0aXAtbGFiZWwnLCBsYWJlbENsYXNzTmFtZSk7XG4gIGlmIChoYXNMYWJlbCAmJiBsYWJlbEZvcm1hdHRlciAmJiBwYXlsb2FkICE9PSB1bmRlZmluZWQgJiYgcGF5bG9hZCAhPT0gbnVsbCkge1xuICAgIGZpbmFsTGFiZWwgPSBsYWJlbEZvcm1hdHRlcihsYWJlbCwgcGF5bG9hZCk7XG4gIH1cbiAgdmFyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzID0gYWNjZXNzaWJpbGl0eUxheWVyID8ge1xuICAgIHJvbGU6ICdzdGF0dXMnLFxuICAgICdhcmlhLWxpdmUnOiAnYXNzZXJ0aXZlJ1xuICB9IDoge307XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiB3cmFwcGVyQ04sXG4gICAgc3R5bGU6IGZpbmFsU3R5bGVcbiAgfSwgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBcIiwge1xuICAgIGNsYXNzTmFtZTogbGFiZWxDTixcbiAgICBzdHlsZTogZmluYWxMYWJlbFN0eWxlXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChmaW5hbExhYmVsKSA/IGZpbmFsTGFiZWwgOiBcIlwiLmNvbmNhdChmaW5hbExhYmVsKSksIHJlbmRlckNvbnRlbnQoKSk7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiciIsImwiLCJ0IiwiZSIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiaXNBcnJheSIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIlJlYWN0Iiwic29ydEJ5IiwiaXNOaWwiLCJjbHN4IiwiaXNOdW1PclN0ciIsImRlZmF1bHRGb3JtYXR0ZXIiLCJqb2luIiwiRGVmYXVsdFRvb2x0aXBDb250ZW50IiwicHJvcHMiLCJfcHJvcHMkc2VwYXJhdG9yIiwic2VwYXJhdG9yIiwiX3Byb3BzJGNvbnRlbnRTdHlsZSIsImNvbnRlbnRTdHlsZSIsIl9wcm9wcyRpdGVtU3R5bGUiLCJpdGVtU3R5bGUiLCJfcHJvcHMkbGFiZWxTdHlsZSIsImxhYmVsU3R5bGUiLCJwYXlsb2FkIiwiZm9ybWF0dGVyIiwiaXRlbVNvcnRlciIsIndyYXBwZXJDbGFzc05hbWUiLCJsYWJlbENsYXNzTmFtZSIsImxhYmVsIiwibGFiZWxGb3JtYXR0ZXIiLCJfcHJvcHMkYWNjZXNzaWJpbGl0eUwiLCJhY2Nlc3NpYmlsaXR5TGF5ZXIiLCJyZW5kZXJDb250ZW50IiwibGlzdFN0eWxlIiwicGFkZGluZyIsIm1hcmdpbiIsIml0ZW1zIiwibWFwIiwiZW50cnkiLCJ0eXBlIiwiZmluYWxJdGVtU3R5bGUiLCJkaXNwbGF5IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJjb2xvciIsImZpbmFsRm9ybWF0dGVyIiwiZmluYWxWYWx1ZSIsImZpbmFsTmFtZSIsImZvcm1hdHRlZCIsIl9mb3JtYXR0ZWQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiY29uY2F0Iiwic3R5bGUiLCJ1bml0IiwiZmluYWxTdHlsZSIsImJhY2tncm91bmRDb2xvciIsImJvcmRlciIsIndoaXRlU3BhY2UiLCJmaW5hbExhYmVsU3R5bGUiLCJoYXNMYWJlbCIsImZpbmFsTGFiZWwiLCJ3cmFwcGVyQ04iLCJsYWJlbENOIiwidW5kZWZpbmVkIiwiYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXMiLCJyb2xlIiwiaXNWYWxpZEVsZW1lbnQiXSwic291cmNlUm9vdCI6IiJ9\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/future/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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QUFxQixTQUFTQSxtQkFBbUJDLFdBQVcsRUFBRXJFLE9BQU87SUFDdkUsSUFBSXNFLGtCQUFrQjNILFVBQVV6QixNQUFNLEdBQUcsS0FBS3lCLFNBQVMsQ0FBQyxFQUFFLEtBQUs0SCxZQUFZNUgsU0FBUyxDQUFDLEVBQUUsR0FBRztJQUMxRixJQUFJLENBQUMwSCxlQUFlLENBQUNBLFlBQVlsRixRQUFRLElBQUltRixtQkFBbUIsQ0FBQ0QsWUFBWW5GLEtBQUssRUFBRTtRQUNsRixPQUFPO0lBQ1Q7SUFDQSxJQUFJQyxXQUFXa0YsWUFBWWxGLFFBQVE7SUFDbkMsSUFBSTZDLGdCQUFnQjZCLGFBQWFRO0lBQ2pDLElBQUlHLG1CQUFtQmxHLCtEQUFhQSxDQUFDYSxVQUFVK0QsT0FBT3VCLEdBQUcsQ0FBQyxTQUFVQyxLQUFLLEVBQUVDLEtBQUs7UUFDOUUsT0FBTyxXQUFXLEdBQUU3RyxtREFBWUEsQ0FBQzRHLE9BQU87WUFDdEMxRSxTQUFTQSxXQUFXZ0M7WUFDcEIsb0RBQW9EO1lBQ3BEdEcsS0FBSyxTQUFTcUYsTUFBTSxDQUFDNEQ7UUFDdkI7SUFDRjtJQUNBLElBQUksQ0FBQ0wsaUJBQWlCO1FBQ3BCLE9BQU9FO0lBQ1Q7SUFDQSxJQUFJSSxnQkFBZ0JWLFdBQVdHLFlBQVluRixLQUFLLEVBQUVjLFdBQVdnQztJQUM3RCxPQUFPO1FBQUM0QztLQUFjLENBQUM3RCxNQUFNLENBQUNsSCxtQkFBbUIySztBQUNuRDtBQUNBdEIsTUFBTVcsWUFBWSxHQUFHQTtBQUNyQlgsTUFBTWtCLGtCQUFrQixHQUFHQSIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY29tcG9uZW50L0xhYmVsLmpzPzk0MWUiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxudmFyIF9leGNsdWRlZCA9IFtcIm9mZnNldFwiXTtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KGFycik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuaW1wb3J0IFJlYWN0LCB7IGNsb25lRWxlbWVudCwgaXNWYWxpZEVsZW1lbnQsIGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi9UZXh0JztcbmltcG9ydCB7IGZpbmRBbGxCeVR5cGUsIGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmltcG9ydCB7IGlzTnVtT3JTdHIsIGlzTnVtYmVyLCBpc1BlcmNlbnQsIGdldFBlcmNlbnRWYWx1ZSwgdW5pcXVlSWQsIG1hdGhTaWduIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgcG9sYXJUb0NhcnRlc2lhbiB9IGZyb20gJy4uL3V0aWwvUG9sYXJVdGlscyc7XG52YXIgZ2V0TGFiZWwgPSBmdW5jdGlvbiBnZXRMYWJlbChwcm9wcykge1xuICB2YXIgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICBmb3JtYXR0ZXIgPSBwcm9wcy5mb3JtYXR0ZXI7XG4gIHZhciBsYWJlbCA9IGlzTmlsKHByb3BzLmNoaWxkcmVuKSA/IHZhbHVlIDogcHJvcHMuY2hpbGRyZW47XG4gIGlmIChpc0Z1bmN0aW9uKGZvcm1hdHRlcikpIHtcbiAgICByZXR1cm4gZm9ybWF0dGVyKGxhYmVsKTtcbiAgfVxuICByZXR1cm4gbGFiZWw7XG59O1xudmFyIGdldERlbHRhQW5nbGUgPSBmdW5jdGlvbiBnZXREZWx0YUFuZ2xlKHN0YXJ0QW5nbGUsIGVuZEFuZ2xlKSB7XG4gIHZhciBzaWduID0gbWF0aFNpZ24oZW5kQW5nbGUgLSBzdGFydEFuZ2xlKTtcbiAgdmFyIGRlbHRhQW5nbGUgPSBNYXRoLm1pbihNYXRoLmFicyhlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpLCAzNjApO1xuICByZXR1cm4gc2lnbiAqIGRlbHRhQW5nbGU7XG59O1xudmFyIHJlbmRlclJhZGlhbExhYmVsID0gZnVuY3Rpb24gcmVuZGVyUmFkaWFsTGFiZWwobGFiZWxQcm9wcywgbGFiZWwsIGF0dHJzKSB7XG4gIHZhciBwb3NpdGlvbiA9IGxhYmVsUHJvcHMucG9zaXRpb24sXG4gICAgdmlld0JveCA9IGxhYmVsUHJvcHMudmlld0JveCxcbiAgICBvZmZzZXQgPSBsYWJlbFByb3BzLm9mZnNldCxcbiAgICBjbGFzc05hbWUgPSBsYWJlbFByb3BzLmNsYXNzTmFtZTtcbiAgdmFyIF9yZWYgPSB2aWV3Qm94LFxuICAgIGN4ID0gX3JlZi5jeCxcbiAgICBjeSA9IF9yZWYuY3ksXG4gICAgaW5uZXJSYWRpdXMgPSBfcmVmLmlubmVyUmFkaXVzLFxuICAgIG91dGVyUmFkaXVzID0gX3JlZi5vdXRlclJhZGl1cyxcbiAgICBzdGFydEFuZ2xlID0gX3JlZi5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gX3JlZi5lbmRBbmdsZSxcbiAgICBjbG9ja1dpc2UgPSBfcmVmLmNsb2NrV2lzZTtcbiAgdmFyIHJhZGl1cyA9IChpbm5lclJhZGl1cyArIG91dGVyUmFkaXVzKSAvIDI7XG4gIHZhciBkZWx0YUFuZ2xlID0gZ2V0RGVsdGFBbmdsZShzdGFydEFuZ2xlLCBlbmRBbmdsZSk7XG4gIHZhciBzaWduID0gZGVsdGFBbmdsZSA+PSAwID8gMSA6IC0xO1xuICB2YXIgbGFiZWxBbmdsZSwgZGlyZWN0aW9uO1xuICBpZiAocG9zaXRpb24gPT09ICdpbnNpZGVTdGFydCcpIHtcbiAgICBsYWJlbEFuZ2xlID0gc3RhcnRBbmdsZSArIHNpZ24gKiBvZmZzZXQ7XG4gICAgZGlyZWN0aW9uID0gY2xvY2tXaXNlO1xuICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlRW5kJykge1xuICAgIGxhYmVsQW5nbGUgPSBlbmRBbmdsZSAtIHNpZ24gKiBvZmZzZXQ7XG4gICAgZGlyZWN0aW9uID0gIWNsb2NrV2lzZTtcbiAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICBsYWJlbEFuZ2xlID0gZW5kQW5nbGUgKyBzaWduICogb2Zmc2V0O1xuICAgIGRpcmVjdGlvbiA9IGNsb2NrV2lzZTtcbiAgfVxuICBkaXJlY3Rpb24gPSBkZWx0YUFuZ2xlIDw9IDAgPyBkaXJlY3Rpb24gOiAhZGlyZWN0aW9uO1xuICB2YXIgc3RhcnRQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByYWRpdXMsIGxhYmVsQW5nbGUpO1xuICB2YXIgZW5kUG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgcmFkaXVzLCBsYWJlbEFuZ2xlICsgKGRpcmVjdGlvbiA/IDEgOiAtMSkgKiAzNTkpO1xuICB2YXIgcGF0aCA9IFwiTVwiLmNvbmNhdChzdGFydFBvaW50LngsIFwiLFwiKS5jb25jYXQoc3RhcnRQb2ludC55LCBcIlxcbiAgICBBXCIpLmNvbmNhdChyYWRpdXMsIFwiLFwiKS5jb25jYXQocmFkaXVzLCBcIiwwLDEsXCIpLmNvbmNhdChkaXJlY3Rpb24gPyAwIDogMSwgXCIsXFxuICAgIFwiKS5jb25jYXQoZW5kUG9pbnQueCwgXCIsXCIpLmNvbmNhdChlbmRQb2ludC55KTtcbiAgdmFyIGlkID0gaXNOaWwobGFiZWxQcm9wcy5pZCkgPyB1bmlxdWVJZCgncmVjaGFydHMtcmFkaWFsLWxpbmUtJykgOiBsYWJlbFByb3BzLmlkO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0XCIsIF9leHRlbmRzKHt9LCBhdHRycywge1xuICAgIGRvbWluYW50QmFzZWxpbmU6IFwiY2VudHJhbFwiLFxuICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtcmFkaWFsLWJhci1sYWJlbCcsIGNsYXNzTmFtZSlcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVmc1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICAgIGlkOiBpZCxcbiAgICBkOiBwYXRoXG4gIH0pKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0UGF0aFwiLCB7XG4gICAgeGxpbmtIcmVmOiBcIiNcIi5jb25jYXQoaWQpXG4gIH0sIGxhYmVsKSk7XG59O1xudmFyIGdldEF0dHJzT2ZQb2xhckxhYmVsID0gZnVuY3Rpb24gZ2V0QXR0cnNPZlBvbGFyTGFiZWwocHJvcHMpIHtcbiAgdmFyIHZpZXdCb3ggPSBwcm9wcy52aWV3Qm94LFxuICAgIG9mZnNldCA9IHByb3BzLm9mZnNldCxcbiAgICBwb3NpdGlvbiA9IHByb3BzLnBvc2l0aW9uO1xuICB2YXIgX3JlZjIgPSB2aWV3Qm94LFxuICAgIGN4ID0gX3JlZjIuY3gsXG4gICAgY3kgPSBfcmVmMi5jeSxcbiAgICBpbm5lclJhZGl1cyA9IF9yZWYyLmlubmVyUmFkaXVzLFxuICAgIG91dGVyUmFkaXVzID0gX3JlZjIub3V0ZXJSYWRpdXMsXG4gICAgc3RhcnRBbmdsZSA9IF9yZWYyLnN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGUgPSBfcmVmMi5lbmRBbmdsZTtcbiAgdmFyIG1pZEFuZ2xlID0gKHN0YXJ0QW5nbGUgKyBlbmRBbmdsZSkgLyAyO1xuICBpZiAocG9zaXRpb24gPT09ICdvdXRzaWRlJykge1xuICAgIHZhciBfcG9sYXJUb0NhcnRlc2lhbiA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCBvdXRlclJhZGl1cyArIG9mZnNldCwgbWlkQW5nbGUpLFxuICAgICAgX3ggPSBfcG9sYXJUb0NhcnRlc2lhbi54LFxuICAgICAgX3kgPSBfcG9sYXJUb0NhcnRlc2lhbi55O1xuICAgIHJldHVybiB7XG4gICAgICB4OiBfeCxcbiAgICAgIHk6IF95LFxuICAgICAgdGV4dEFuY2hvcjogX3ggPj0gY3ggPyAnc3RhcnQnIDogJ2VuZCcsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogJ21pZGRsZSdcbiAgICB9O1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2NlbnRlcicpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogY3gsXG4gICAgICB5OiBjeSxcbiAgICAgIHRleHRBbmNob3I6ICdtaWRkbGUnLFxuICAgICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gICAgfTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdjZW50ZXJUb3AnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGN4LFxuICAgICAgeTogY3ksXG4gICAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiAnc3RhcnQnXG4gICAgfTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdjZW50ZXJCb3R0b20nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGN4LFxuICAgICAgeTogY3ksXG4gICAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiAnZW5kJ1xuICAgIH07XG4gIH1cbiAgdmFyIHIgPSAoaW5uZXJSYWRpdXMgKyBvdXRlclJhZGl1cykgLyAyO1xuICB2YXIgX3BvbGFyVG9DYXJ0ZXNpYW4yID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHIsIG1pZEFuZ2xlKSxcbiAgICB4ID0gX3BvbGFyVG9DYXJ0ZXNpYW4yLngsXG4gICAgeSA9IF9wb2xhclRvQ2FydGVzaWFuMi55O1xuICByZXR1cm4ge1xuICAgIHg6IHgsXG4gICAgeTogeSxcbiAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICB2ZXJ0aWNhbEFuY2hvcjogJ21pZGRsZSdcbiAgfTtcbn07XG52YXIgZ2V0QXR0cnNPZkNhcnRlc2lhbkxhYmVsID0gZnVuY3Rpb24gZ2V0QXR0cnNPZkNhcnRlc2lhbkxhYmVsKHByb3BzKSB7XG4gIHZhciB2aWV3Qm94ID0gcHJvcHMudmlld0JveCxcbiAgICBwYXJlbnRWaWV3Qm94ID0gcHJvcHMucGFyZW50Vmlld0JveCxcbiAgICBvZmZzZXQgPSBwcm9wcy5vZmZzZXQsXG4gICAgcG9zaXRpb24gPSBwcm9wcy5wb3NpdGlvbjtcbiAgdmFyIF9yZWYzID0gdmlld0JveCxcbiAgICB4ID0gX3JlZjMueCxcbiAgICB5ID0gX3JlZjMueSxcbiAgICB3aWR0aCA9IF9yZWYzLndpZHRoLFxuICAgIGhlaWdodCA9IF9yZWYzLmhlaWdodDtcblxuICAvLyBEZWZpbmUgdmVydGljYWwgb2Zmc2V0cyBhbmQgcG9zaXRpb24gaW52ZXJ0cyBiYXNlZCBvbiB0aGUgdmFsdWUgYmVpbmcgcG9zaXRpdmUgb3IgbmVnYXRpdmVcbiAgdmFyIHZlcnRpY2FsU2lnbiA9IGhlaWdodCA+PSAwID8gMSA6IC0xO1xuICB2YXIgdmVydGljYWxPZmZzZXQgPSB2ZXJ0aWNhbFNpZ24gKiBvZmZzZXQ7XG4gIHZhciB2ZXJ0aWNhbEVuZCA9IHZlcnRpY2FsU2lnbiA+IDAgPyAnZW5kJyA6ICdzdGFydCc7XG4gIHZhciB2ZXJ0aWNhbFN0YXJ0ID0gdmVydGljYWxTaWduID4gMCA/ICdzdGFydCcgOiAnZW5kJztcblxuICAvLyBEZWZpbmUgaG9yaXpvbnRhbCBvZmZzZXRzIGFuZCBwb3NpdGlvbiBpbnZlcnRzIGJhc2VkIG9uIHRoZSB2YWx1ZSBiZWluZyBwb3NpdGl2ZSBvciBuZWdhdGl2ZVxuICB2YXIgaG9yaXpvbnRhbFNpZ24gPSB3aWR0aCA+PSAwID8gMSA6IC0xO1xuICB2YXIgaG9yaXpvbnRhbE9mZnNldCA9IGhvcml6b250YWxTaWduICogb2Zmc2V0O1xuICB2YXIgaG9yaXpvbnRhbEVuZCA9IGhvcml6b250YWxTaWduID4gMCA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgdmFyIGhvcml6b250YWxTdGFydCA9IGhvcml6b250YWxTaWduID4gMCA/ICdzdGFydCcgOiAnZW5kJztcbiAgaWYgKHBvc2l0aW9uID09PSAndG9wJykge1xuICAgIHZhciBhdHRycyA9IHtcbiAgICAgIHg6IHggKyB3aWR0aCAvIDIsXG4gICAgICB5OiB5IC0gdmVydGljYWxTaWduICogb2Zmc2V0LFxuICAgICAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogdmVydGljYWxFbmRcbiAgICB9O1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF0dHJzKSwgcGFyZW50Vmlld0JveCA/IHtcbiAgICAgIGhlaWdodDogTWF0aC5tYXgoeSAtIHBhcmVudFZpZXdCb3gueSwgMCksXG4gICAgICB3aWR0aDogd2lkdGhcbiAgICB9IDoge30pO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICB2YXIgX2F0dHJzID0ge1xuICAgICAgeDogeCArIHdpZHRoIC8gMixcbiAgICAgIHk6IHkgKyBoZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6ICdtaWRkbGUnLFxuICAgICAgdmVydGljYWxBbmNob3I6IHZlcnRpY2FsU3RhcnRcbiAgICB9O1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF9hdHRycyksIHBhcmVudFZpZXdCb3ggPyB7XG4gICAgICBoZWlnaHQ6IE1hdGgubWF4KHBhcmVudFZpZXdCb3gueSArIHBhcmVudFZpZXdCb3guaGVpZ2h0IC0gKHkgKyBoZWlnaHQpLCAwKSxcbiAgICAgIHdpZHRoOiB3aWR0aFxuICAgIH0gOiB7fSk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnbGVmdCcpIHtcbiAgICB2YXIgX2F0dHJzMiA9IHtcbiAgICAgIHg6IHggLSBob3Jpem9udGFsT2Zmc2V0LFxuICAgICAgeTogeSArIGhlaWdodCAvIDIsXG4gICAgICB0ZXh0QW5jaG9yOiBob3Jpem9udGFsRW5kLFxuICAgICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gICAgfTtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfYXR0cnMyKSwgcGFyZW50Vmlld0JveCA/IHtcbiAgICAgIHdpZHRoOiBNYXRoLm1heChfYXR0cnMyLnggLSBwYXJlbnRWaWV3Qm94LngsIDApLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9IDoge30pO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgIHZhciBfYXR0cnMzID0ge1xuICAgICAgeDogeCArIHdpZHRoICsgaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyBoZWlnaHQgLyAyLFxuICAgICAgdGV4dEFuY2hvcjogaG9yaXpvbnRhbFN0YXJ0LFxuICAgICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gICAgfTtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfYXR0cnMzKSwgcGFyZW50Vmlld0JveCA/IHtcbiAgICAgIHdpZHRoOiBNYXRoLm1heChwYXJlbnRWaWV3Qm94LnggKyBwYXJlbnRWaWV3Qm94LndpZHRoIC0gX2F0dHJzMy54LCAwKSxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSA6IHt9KTtcbiAgfVxuICB2YXIgc2l6ZUF0dHJzID0gcGFyZW50Vmlld0JveCA/IHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfSA6IHt9O1xuICBpZiAocG9zaXRpb24gPT09ICdpbnNpZGVMZWZ0Jykge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgIHg6IHggKyBob3Jpem9udGFsT2Zmc2V0LFxuICAgICAgeTogeSArIGhlaWdodCAvIDIsXG4gICAgICB0ZXh0QW5jaG9yOiBob3Jpem9udGFsU3RhcnQsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogJ21pZGRsZSdcbiAgICB9LCBzaXplQXR0cnMpO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2luc2lkZVJpZ2h0Jykge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgIHg6IHggKyB3aWR0aCAtIGhvcml6b250YWxPZmZzZXQsXG4gICAgICB5OiB5ICsgaGVpZ2h0IC8gMixcbiAgICAgIHRleHRBbmNob3I6IGhvcml6b250YWxFbmQsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogJ21pZGRsZSdcbiAgICB9LCBzaXplQXR0cnMpO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2luc2lkZVRvcCcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgd2lkdGggLyAyLFxuICAgICAgeTogeSArIHZlcnRpY2FsT2Zmc2V0LFxuICAgICAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogdmVydGljYWxTdGFydFxuICAgIH0sIHNpemVBdHRycyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlQm90dG9tJykge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgIHg6IHggKyB3aWR0aCAvIDIsXG4gICAgICB5OiB5ICsgaGVpZ2h0IC0gdmVydGljYWxPZmZzZXQsXG4gICAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiB2ZXJ0aWNhbEVuZFxuICAgIH0sIHNpemVBdHRycyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlVG9wTGVmdCcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyB2ZXJ0aWNhbE9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6IGhvcml6b250YWxTdGFydCxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiB2ZXJ0aWNhbFN0YXJ0XG4gICAgfSwgc2l6ZUF0dHJzKTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdpbnNpZGVUb3BSaWdodCcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgd2lkdGggLSBob3Jpem9udGFsT2Zmc2V0LFxuICAgICAgeTogeSArIHZlcnRpY2FsT2Zmc2V0LFxuICAgICAgdGV4dEFuY2hvcjogaG9yaXpvbnRhbEVuZCxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiB2ZXJ0aWNhbFN0YXJ0XG4gICAgfSwgc2l6ZUF0dHJzKTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdpbnNpZGVCb3R0b21MZWZ0Jykge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgIHg6IHggKyBob3Jpem9udGFsT2Zmc2V0LFxuICAgICAgeTogeSArIGhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0LFxuICAgICAgdGV4dEFuY2hvcjogaG9yaXpvbnRhbFN0YXJ0LFxuICAgICAgdmVydGljYWxBbmNob3I6IHZlcnRpY2FsRW5kXG4gICAgfSwgc2l6ZUF0dHJzKTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdpbnNpZGVCb3R0b21SaWdodCcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgd2lkdGggLSBob3Jpem9udGFsT2Zmc2V0LFxuICAgICAgeTogeSArIGhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0LFxuICAgICAgdGV4dEFuY2hvcjogaG9yaXpvbnRhbEVuZCxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiB2ZXJ0aWNhbEVuZFxuICAgIH0sIHNpemVBdHRycyk7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHBvc2l0aW9uKSAmJiAoaXNOdW1iZXIocG9zaXRpb24ueCkgfHwgaXNQZXJjZW50KHBvc2l0aW9uLngpKSAmJiAoaXNOdW1iZXIocG9zaXRpb24ueSkgfHwgaXNQZXJjZW50KHBvc2l0aW9uLnkpKSkge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgIHg6IHggKyBnZXRQZXJjZW50VmFsdWUocG9zaXRpb24ueCwgd2lkdGgpLFxuICAgICAgeTogeSArIGdldFBlcmNlbnRWYWx1ZShwb3NpdGlvbi55LCBoZWlnaHQpLFxuICAgICAgdGV4dEFuY2hvcjogJ2VuZCcsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogJ2VuZCdcbiAgICB9LCBzaXplQXR0cnMpO1xuICB9XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICB4OiB4ICsgd2lkdGggLyAyLFxuICAgIHk6IHkgKyBoZWlnaHQgLyAyLFxuICAgIHRleHRBbmNob3I6ICdtaWRkbGUnLFxuICAgIHZlcnRpY2FsQW5jaG9yOiAnbWlkZGxlJ1xuICB9LCBzaXplQXR0cnMpO1xufTtcbnZhciBpc1BvbGFyID0gZnVuY3Rpb24gaXNQb2xhcih2aWV3Qm94KSB7XG4gIHJldHVybiAnY3gnIGluIHZpZXdCb3ggJiYgaXNOdW1iZXIodmlld0JveC5jeCk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIExhYmVsKF9yZWY0KSB7XG4gIHZhciBfcmVmNCRvZmZzZXQgPSBfcmVmNC5vZmZzZXQsXG4gICAgb2Zmc2V0ID0gX3JlZjQkb2Zmc2V0ID09PSB2b2lkIDAgPyA1IDogX3JlZjQkb2Zmc2V0LFxuICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmNCwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZCh7XG4gICAgb2Zmc2V0OiBvZmZzZXRcbiAgfSwgcmVzdFByb3BzKTtcbiAgdmFyIHZpZXdCb3ggPSBwcm9wcy52aWV3Qm94LFxuICAgIHBvc2l0aW9uID0gcHJvcHMucG9zaXRpb24sXG4gICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGNvbnRlbnQgPSBwcm9wcy5jb250ZW50LFxuICAgIF9wcm9wcyRjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgY2xhc3NOYW1lID0gX3Byb3BzJGNsYXNzTmFtZSA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkY2xhc3NOYW1lLFxuICAgIHRleHRCcmVha0FsbCA9IHByb3BzLnRleHRCcmVha0FsbDtcbiAgaWYgKCF2aWV3Qm94IHx8IGlzTmlsKHZhbHVlKSAmJiBpc05pbChjaGlsZHJlbikgJiYgISAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQoY29udGVudCkgJiYgIWlzRnVuY3Rpb24oY29udGVudCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIC8qI19fUFVSRV9fKi9pc1ZhbGlkRWxlbWVudChjb250ZW50KSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNvbnRlbnQsIHByb3BzKTtcbiAgfVxuICB2YXIgbGFiZWw7XG4gIGlmIChpc0Z1bmN0aW9uKGNvbnRlbnQpKSB7XG4gICAgbGFiZWwgPSAvKiNfX1BVUkVfXyovY3JlYXRlRWxlbWVudChjb250ZW50LCBwcm9wcyk7XG4gICAgaWYgKCAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQobGFiZWwpKSB7XG4gICAgICByZXR1cm4gbGFiZWw7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxhYmVsID0gZ2V0TGFiZWwocHJvcHMpO1xuICB9XG4gIHZhciBpc1BvbGFyTGFiZWwgPSBpc1BvbGFyKHZpZXdCb3gpO1xuICB2YXIgYXR0cnMgPSBmaWx0ZXJQcm9wcyhwcm9wcywgdHJ1ZSk7XG4gIGlmIChpc1BvbGFyTGFiZWwgJiYgKHBvc2l0aW9uID09PSAnaW5zaWRlU3RhcnQnIHx8IHBvc2l0aW9uID09PSAnaW5zaWRlRW5kJyB8fCBwb3NpdGlvbiA9PT0gJ2VuZCcpKSB7XG4gICAgcmV0dXJuIHJlbmRlclJhZGlhbExhYmVsKHByb3BzLCBsYWJlbCwgYXR0cnMpO1xuICB9XG4gIHZhciBwb3NpdGlvbkF0dHJzID0gaXNQb2xhckxhYmVsID8gZ2V0QXR0cnNPZlBvbGFyTGFiZWwocHJvcHMpIDogZ2V0QXR0cnNPZkNhcnRlc2lhbkxhYmVsKHByb3BzKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRleHQsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLWxhYmVsJywgY2xhc3NOYW1lKVxuICB9LCBhdHRycywgcG9zaXRpb25BdHRycywge1xuICAgIGJyZWFrQWxsOiB0ZXh0QnJlYWtBbGxcbiAgfSksIGxhYmVsKTtcbn1cbkxhYmVsLmRpc3BsYXlOYW1lID0gJ0xhYmVsJztcbnZhciBwYXJzZVZpZXdCb3ggPSBmdW5jdGlvbiBwYXJzZVZpZXdCb3gocHJvcHMpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgY3kgPSBwcm9wcy5jeSxcbiAgICBhbmdsZSA9IHByb3BzLmFuZ2xlLFxuICAgIHN0YXJ0QW5nbGUgPSBwcm9wcy5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gcHJvcHMuZW5kQW5nbGUsXG4gICAgciA9IHByb3BzLnIsXG4gICAgcmFkaXVzID0gcHJvcHMucmFkaXVzLFxuICAgIGlubmVyUmFkaXVzID0gcHJvcHMuaW5uZXJSYWRpdXMsXG4gICAgb3V0ZXJSYWRpdXMgPSBwcm9wcy5vdXRlclJhZGl1cyxcbiAgICB4ID0gcHJvcHMueCxcbiAgICB5ID0gcHJvcHMueSxcbiAgICB0b3AgPSBwcm9wcy50b3AsXG4gICAgbGVmdCA9IHByb3BzLmxlZnQsXG4gICAgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgY2xvY2tXaXNlID0gcHJvcHMuY2xvY2tXaXNlLFxuICAgIGxhYmVsVmlld0JveCA9IHByb3BzLmxhYmVsVmlld0JveDtcbiAgaWYgKGxhYmVsVmlld0JveCkge1xuICAgIHJldHVybiBsYWJlbFZpZXdCb3g7XG4gIH1cbiAgaWYgKGlzTnVtYmVyKHdpZHRoKSAmJiBpc051bWJlcihoZWlnaHQpKSB7XG4gICAgaWYgKGlzTnVtYmVyKHgpICYmIGlzTnVtYmVyKHkpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoaXNOdW1iZXIodG9wKSAmJiBpc051bWJlcihsZWZ0KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogdG9wLFxuICAgICAgICB5OiBsZWZ0LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBpZiAoaXNOdW1iZXIoeCkgJiYgaXNOdW1iZXIoeSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogeCxcbiAgICAgIHk6IHksXG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gIH1cbiAgaWYgKGlzTnVtYmVyKGN4KSAmJiBpc051bWJlcihjeSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3g6IGN4LFxuICAgICAgY3k6IGN5LFxuICAgICAgc3RhcnRBbmdsZTogc3RhcnRBbmdsZSB8fCBhbmdsZSB8fCAwLFxuICAgICAgZW5kQW5nbGU6IGVuZEFuZ2xlIHx8IGFuZ2xlIHx8IDAsXG4gICAgICBpbm5lclJhZGl1czogaW5uZXJSYWRpdXMgfHwgMCxcbiAgICAgIG91dGVyUmFkaXVzOiBvdXRlclJhZGl1cyB8fCByYWRpdXMgfHwgciB8fCAwLFxuICAgICAgY2xvY2tXaXNlOiBjbG9ja1dpc2VcbiAgICB9O1xuICB9XG4gIGlmIChwcm9wcy52aWV3Qm94KSB7XG4gICAgcmV0dXJuIHByb3BzLnZpZXdCb3g7XG4gIH1cbiAgcmV0dXJuIHt9O1xufTtcbnZhciBwYXJzZUxhYmVsID0gZnVuY3Rpb24gcGFyc2VMYWJlbChsYWJlbCwgdmlld0JveCkge1xuICBpZiAoIWxhYmVsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGxhYmVsID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExhYmVsLCB7XG4gICAgICBrZXk6IFwibGFiZWwtaW1wbGljaXRcIixcbiAgICAgIHZpZXdCb3g6IHZpZXdCb3hcbiAgICB9KTtcbiAgfVxuICBpZiAoaXNOdW1PclN0cihsYWJlbCkpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGFiZWwsIHtcbiAgICAgIGtleTogXCJsYWJlbC1pbXBsaWNpdFwiLFxuICAgICAgdmlld0JveDogdmlld0JveCxcbiAgICAgIHZhbHVlOiBsYWJlbFxuICAgIH0pO1xuICB9XG4gIGlmICggLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KGxhYmVsKSkge1xuICAgIGlmIChsYWJlbC50eXBlID09PSBMYWJlbCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQobGFiZWwsIHtcbiAgICAgICAga2V5OiAnbGFiZWwtaW1wbGljaXQnLFxuICAgICAgICB2aWV3Qm94OiB2aWV3Qm94XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExhYmVsLCB7XG4gICAgICBrZXk6IFwibGFiZWwtaW1wbGljaXRcIixcbiAgICAgIGNvbnRlbnQ6IGxhYmVsLFxuICAgICAgdmlld0JveDogdmlld0JveFxuICAgIH0pO1xuICB9XG4gIGlmIChpc0Z1bmN0aW9uKGxhYmVsKSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbCwge1xuICAgICAga2V5OiBcImxhYmVsLWltcGxpY2l0XCIsXG4gICAgICBjb250ZW50OiBsYWJlbCxcbiAgICAgIHZpZXdCb3g6IHZpZXdCb3hcbiAgICB9KTtcbiAgfVxuICBpZiAoaXNPYmplY3QobGFiZWwpKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExhYmVsLCBfZXh0ZW5kcyh7XG4gICAgICB2aWV3Qm94OiB2aWV3Qm94XG4gICAgfSwgbGFiZWwsIHtcbiAgICAgIGtleTogXCJsYWJlbC1pbXBsaWNpdFwiXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbnZhciByZW5kZXJDYWxsQnlQYXJlbnQgPSBmdW5jdGlvbiByZW5kZXJDYWxsQnlQYXJlbnQocGFyZW50UHJvcHMsIHZpZXdCb3gpIHtcbiAgdmFyIGNoZWNrUHJvcHNMYWJlbCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogdHJ1ZTtcbiAgaWYgKCFwYXJlbnRQcm9wcyB8fCAhcGFyZW50UHJvcHMuY2hpbGRyZW4gJiYgY2hlY2tQcm9wc0xhYmVsICYmICFwYXJlbnRQcm9wcy5sYWJlbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBjaGlsZHJlbiA9IHBhcmVudFByb3BzLmNoaWxkcmVuO1xuICB2YXIgcGFyZW50Vmlld0JveCA9IHBhcnNlVmlld0JveChwYXJlbnRQcm9wcyk7XG4gIHZhciBleHBsaWNpdENoaWxkcmVuID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgTGFiZWwpLm1hcChmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgIHZpZXdCb3g6IHZpZXdCb3ggfHwgcGFyZW50Vmlld0JveCxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgIGtleTogXCJsYWJlbC1cIi5jb25jYXQoaW5kZXgpXG4gICAgfSk7XG4gIH0pO1xuICBpZiAoIWNoZWNrUHJvcHNMYWJlbCkge1xuICAgIHJldHVybiBleHBsaWNpdENoaWxkcmVuO1xuICB9XG4gIHZhciBpbXBsaWNpdExhYmVsID0gcGFyc2VMYWJlbChwYXJlbnRQcm9wcy5sYWJlbCwgdmlld0JveCB8fCBwYXJlbnRWaWV3Qm94KTtcbiAgcmV0dXJuIFtpbXBsaWNpdExhYmVsXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGV4cGxpY2l0Q2hpbGRyZW4pKTtcbn07XG5MYWJlbC5wYXJzZVZpZXdCb3ggPSBwYXJzZVZpZXdCb3g7XG5MYWJlbC5yZW5kZXJDYWxsQnlQYXJlbnQgPSByZW5kZXJDYWxsQnlQYXJlbnQ7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leGNsdWRlZCIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJPYmplY3QiLCJ0b1N0cmluZyIsImNhbGwiLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiaXRlciIsImlzQXJyYXkiLCJsZW4iLCJsZW5ndGgiLCJpIiwiYXJyMiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsInNvdXJjZSIsImV4Y2x1ZGVkIiwidGFyZ2V0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJrZXkiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiaGFzT3duUHJvcGVydHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsIlJlYWN0IiwiY2xvbmVFbGVtZW50IiwiaXNWYWxpZEVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaXNOaWwiLCJpc0Z1bmN0aW9uIiwiaXNPYmplY3QiLCJjbHN4IiwiVGV4dCIsImZpbmRBbGxCeVR5cGUiLCJmaWx0ZXJQcm9wcyIsImlzTnVtT3JTdHIiLCJpc051bWJlciIsImlzUGVyY2VudCIsImdldFBlcmNlbnRWYWx1ZSIsInVuaXF1ZUlkIiwibWF0aFNpZ24iLCJwb2xhclRvQ2FydGVzaWFuIiwiZ2V0TGFiZWwiLCJwcm9wcyIsImZvcm1hdHRlciIsImxhYmVsIiwiY2hpbGRyZW4iLCJnZXREZWx0YUFuZ2xlIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwic2lnbiIsImRlbHRhQW5nbGUiLCJNYXRoIiwibWluIiwiYWJzIiwicmVuZGVyUmFkaWFsTGFiZWwiLCJsYWJlbFByb3BzIiwiYXR0cnMiLCJwb3NpdGlvbiIsInZpZXdCb3giLCJvZmZzZXQiLCJjbGFzc05hbWUiLCJfcmVmIiwiY3giLCJjeSIsImlubmVyUmFkaXVzIiwib3V0ZXJSYWRpdXMiLCJjbG9ja1dpc2UiLCJyYWRpdXMiLCJsYWJlbEFuZ2xlIiwiZGlyZWN0aW9uIiwic3RhcnRQb2ludCIsImVuZFBvaW50IiwicGF0aCIsImNvbmNhdCIsIngiLCJ5IiwiaWQiLCJkb21pbmFudEJhc2VsaW5lIiwiZCIsInhsaW5rSHJlZiIsImdldEF0dHJzT2ZQb2xhckxhYmVsIiwiX3JlZjIiLCJtaWRBbmdsZSIsIl9wb2xhclRvQ2FydGVzaWFuIiwiX3giLCJfeSIsInRleHRBbmNob3IiLCJ2ZXJ0aWNhbEFuY2hvciIsIl9wb2xhclRvQ2FydGVzaWFuMiIsImdldEF0dHJzT2ZDYXJ0ZXNpYW5MYWJlbCIsInBhcmVudFZpZXdCb3giLCJfcmVmMyIsIndpZHRoIiwiaGVpZ2h0IiwidmVydGljYWxTaWduIiwidmVydGljYWxPZmZzZXQiLCJ2ZXJ0aWNhbEVuZCIsInZlcnRpY2FsU3RhcnQiLCJob3Jpem9udGFsU2lnbiIsImhvcml6b250YWxPZmZzZXQiLCJob3Jpem9udGFsRW5kIiwiaG9yaXpvbnRhbFN0YXJ0IiwibWF4IiwiX2F0dHJzIiwiX2F0dHJzMiIsIl9hdHRyczMiLCJzaXplQXR0cnMiLCJpc1BvbGFyIiwiTGFiZWwiLCJfcmVmNCIsIl9yZWY0JG9mZnNldCIsInJlc3RQcm9wcyIsImNvbnRlbnQiLCJfcHJvcHMkY2xhc3NOYW1lIiwidGV4dEJyZWFrQWxsIiwiaXNQb2xhckxhYmVsIiwicG9zaXRpb25BdHRycyIsImJyZWFrQWxsIiwiZGlzcGxheU5hbWUiLCJwYXJzZVZpZXdCb3giLCJhbmdsZSIsInRvcCIsImxlZnQiLCJsYWJlbFZpZXdCb3giLCJwYXJzZUxhYmVsIiwidHlwZSIsInJlbmRlckNhbGxCeVBhcmVudCIsInBhcmVudFByb3BzIiwiY2hlY2tQcm9wc0xhYmVsIiwidW5kZWZpbmVkIiwiZXhwbGljaXRDaGlsZHJlbiIsIm1hcCIsImNoaWxkIiwiaW5kZXgiLCJpbXBsaWNpdExhYmVsIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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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X21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9MYWJlbExpc3QuanM/MGZkNyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG52YXIgX2V4Y2x1ZGVkID0gW1widmFsdWVBY2Nlc3NvclwiXSxcbiAgX2V4Y2x1ZGVkMiA9IFtcImRhdGFcIiwgXCJkYXRhS2V5XCIsIFwiY2xvY2tXaXNlXCIsIFwiaWRcIiwgXCJ0ZXh0QnJlYWtBbGxcIl07XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGl0ZXJbU3ltYm9sLml0ZXJhdG9yXSAhPSBudWxsIHx8IGl0ZXJbXCJAQGl0ZXJhdG9yXCJdICE9IG51bGwpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpOyB9XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShhcnIpOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuL0xhYmVsJztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vY29udGFpbmVyL0xheWVyJztcbmltcG9ydCB7IGZpbmRBbGxCeVR5cGUsIGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmltcG9ydCB7IGdldFZhbHVlQnlEYXRhS2V5IH0gZnJvbSAnLi4vdXRpbC9DaGFydFV0aWxzJztcbnZhciBkZWZhdWx0QWNjZXNzb3IgPSBmdW5jdGlvbiBkZWZhdWx0QWNjZXNzb3IoZW50cnkpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZW50cnkudmFsdWUpID8gbGFzdChlbnRyeS52YWx1ZSkgOiBlbnRyeS52YWx1ZTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTGFiZWxMaXN0KF9yZWYpIHtcbiAgdmFyIF9yZWYkdmFsdWVBY2Nlc3NvciA9IF9yZWYudmFsdWVBY2Nlc3NvcixcbiAgICB2YWx1ZUFjY2Vzc29yID0gX3JlZiR2YWx1ZUFjY2Vzc29yID09PSB2b2lkIDAgPyBkZWZhdWx0QWNjZXNzb3IgOiBfcmVmJHZhbHVlQWNjZXNzb3IsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciBkYXRhID0gcmVzdFByb3BzLmRhdGEsXG4gICAgZGF0YUtleSA9IHJlc3RQcm9wcy5kYXRhS2V5LFxuICAgIGNsb2NrV2lzZSA9IHJlc3RQcm9wcy5jbG9ja1dpc2UsXG4gICAgaWQgPSByZXN0UHJvcHMuaWQsXG4gICAgdGV4dEJyZWFrQWxsID0gcmVzdFByb3BzLnRleHRCcmVha0FsbCxcbiAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocmVzdFByb3BzLCBfZXhjbHVkZWQyKTtcbiAgaWYgKCFkYXRhIHx8ICFkYXRhLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1sYWJlbC1saXN0XCJcbiAgfSwgZGF0YS5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xuICAgIHZhciB2YWx1ZSA9IGlzTmlsKGRhdGFLZXkpID8gdmFsdWVBY2Nlc3NvcihlbnRyeSwgaW5kZXgpIDogZ2V0VmFsdWVCeURhdGFLZXkoZW50cnkgJiYgZW50cnkucGF5bG9hZCwgZGF0YUtleSk7XG4gICAgdmFyIGlkUHJvcHMgPSBpc05pbChpZCkgPyB7fSA6IHtcbiAgICAgIGlkOiBcIlwiLmNvbmNhdChpZCwgXCItXCIpLmNvbmNhdChpbmRleClcbiAgICB9O1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbCwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKGVudHJ5LCB0cnVlKSwgb3RoZXJzLCBpZFByb3BzLCB7XG4gICAgICBwYXJlbnRWaWV3Qm94OiBlbnRyeS5wYXJlbnRWaWV3Qm94LFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgdGV4dEJyZWFrQWxsOiB0ZXh0QnJlYWtBbGwsXG4gICAgICB2aWV3Qm94OiBMYWJlbC5wYXJzZVZpZXdCb3goaXNOaWwoY2xvY2tXaXNlKSA/IGVudHJ5IDogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgIGNsb2NrV2lzZTogY2xvY2tXaXNlXG4gICAgICB9KSksXG4gICAgICBrZXk6IFwibGFiZWwtXCIuY29uY2F0KGluZGV4KSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgLFxuICAgICAgaW5kZXg6IGluZGV4XG4gICAgfSkpO1xuICB9KSk7XG59XG5MYWJlbExpc3QuZGlzcGxheU5hbWUgPSAnTGFiZWxMaXN0JztcbmZ1bmN0aW9uIHBhcnNlTGFiZWxMaXN0KGxhYmVsLCBkYXRhKSB7XG4gIGlmICghbGFiZWwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAobGFiZWwgPT09IHRydWUpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGFiZWxMaXN0LCB7XG4gICAgICBrZXk6IFwibGFiZWxMaXN0LWltcGxpY2l0XCIsXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSk7XG4gIH1cbiAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQobGFiZWwpIHx8IGlzRnVuY3Rpb24obGFiZWwpKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExhYmVsTGlzdCwge1xuICAgICAga2V5OiBcImxhYmVsTGlzdC1pbXBsaWNpdFwiLFxuICAgICAgZGF0YTogZGF0YSxcbiAgICAgIGNvbnRlbnQ6IGxhYmVsXG4gICAgfSk7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KGxhYmVsKSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbExpc3QsIF9leHRlbmRzKHtcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9LCBsYWJlbCwge1xuICAgICAga2V5OiBcImxhYmVsTGlzdC1pbXBsaWNpdFwiXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gcmVuZGVyQ2FsbEJ5UGFyZW50KHBhcmVudFByb3BzLCBkYXRhKSB7XG4gIHZhciBjaGVja1Byb3BzTGFiZWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHRydWU7XG4gIGlmICghcGFyZW50UHJvcHMgfHwgIXBhcmVudFByb3BzLmNoaWxkcmVuICYmIGNoZWNrUHJvcHNMYWJlbCAmJiAhcGFyZW50UHJvcHMubGFiZWwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgY2hpbGRyZW4gPSBwYXJlbnRQcm9wcy5jaGlsZHJlbjtcbiAgdmFyIGV4cGxpY2l0Q2hpbGRyZW4gPSBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCBMYWJlbExpc3QpLm1hcChmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICBrZXk6IFwibGFiZWxMaXN0LVwiLmNvbmNhdChpbmRleClcbiAgICB9KTtcbiAgfSk7XG4gIGlmICghY2hlY2tQcm9wc0xhYmVsKSB7XG4gICAgcmV0dXJuIGV4cGxpY2l0Q2hpbGRyZW47XG4gIH1cbiAgdmFyIGltcGxpY2l0TGFiZWxMaXN0ID0gcGFyc2VMYWJlbExpc3QocGFyZW50UHJvcHMubGFiZWwsIGRhdGEpO1xuICByZXR1cm4gW2ltcGxpY2l0TGFiZWxMaXN0XS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGV4cGxpY2l0Q2hpbGRyZW4pKTtcbn1cbkxhYmVsTGlzdC5yZW5kZXJDYWxsQnlQYXJlbnQgPSByZW5kZXJDYWxsQnlQYXJlbnQ7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJpc0FycmF5IiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJhcmd1bWVudHMiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJSZWFjdCIsImNsb25lRWxlbWVudCIsImlzTmlsIiwiaXNPYmplY3QiLCJpc0Z1bmN0aW9uIiwibGFzdCIsIkxhYmVsIiwiTGF5ZXIiLCJmaW5kQWxsQnlUeXBlIiwiZmlsdGVyUHJvcHMiLCJnZXRWYWx1ZUJ5RGF0YUtleSIsImRlZmF1bHRBY2Nlc3NvciIsImVudHJ5IiwiTGFiZWxMaXN0IiwiX3JlZiIsIl9yZWYkdmFsdWVBY2Nlc3NvciIsInZhbHVlQWNjZXNzb3IiLCJyZXN0UHJvcHMiLCJkYXRhIiwiZGF0YUtleSIsImNsb2NrV2lzZSIsImlkIiwidGV4dEJyZWFrQWxsIiwib3RoZXJzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIm1hcCIsImluZGV4IiwicGF5bG9hZCIsImlkUHJvcHMiLCJjb25jYXQiLCJwYXJlbnRWaWV3Qm94Iiwidmlld0JveCIsInBhcnNlVmlld0JveCIsImRpc3BsYXlOYW1lIiwicGFyc2VMYWJlbExpc3QiLCJsYWJlbCIsImlzVmFsaWRFbGVtZW50IiwiY29udGVudCIsInJlbmRlckNhbGxCeVBhcmVudCIsInBhcmVudFByb3BzIiwiY2hlY2tQcm9wc0xhYmVsIiwidW5kZWZpbmVkIiwiY2hpbGRyZW4iLCJleHBsaWNpdENoaWxkcmVuIiwiY2hpbGQiLCJpbXBsaWNpdExhYmVsTGlzdCJdLCJzb3VyY2VSb290IjoiIn0=\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/future/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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VUFBVTtJQUNWNUIsUUFBUTtJQUNSQyxPQUFPO0lBQ1BDLGVBQWU7QUFDakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9MZWdlbmQuanM/N2YyZiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG52YXIgX2V4Y2x1ZGVkID0gW1wicmVmXCJdO1xuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IExlZ2VuZFxuICovXG5pbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IERlZmF1bHRMZWdlbmRDb250ZW50IH0gZnJvbSAnLi9EZWZhdWx0TGVnZW5kQ29udGVudCc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IGdldFVuaXFQYXlsb2FkIH0gZnJvbSAnLi4vdXRpbC9wYXlsb2FkL2dldFVuaXFQYXlsb2FkJztcbmZ1bmN0aW9uIGRlZmF1bHRVbmlxQnkoZW50cnkpIHtcbiAgcmV0dXJuIGVudHJ5LnZhbHVlO1xufVxuZnVuY3Rpb24gcmVuZGVyQ29udGVudChjb250ZW50LCBwcm9wcykge1xuICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjb250ZW50KSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNvbnRlbnQsIHByb3BzKTtcbiAgfVxuICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoY29udGVudCwgcHJvcHMpO1xuICB9XG4gIHZhciByZWYgPSBwcm9wcy5yZWYsXG4gICAgb3RoZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KERlZmF1bHRMZWdlbmRDb250ZW50LCBvdGhlclByb3BzKTtcbn1cbnZhciBFUFMgPSAxO1xuZXhwb3J0IHZhciBMZWdlbmQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIExlZ2VuZCgpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExlZ2VuZCk7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9jYWxsU3VwZXIodGhpcywgTGVnZW5kLCBbXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJsYXN0Qm91bmRpbmdCb3hcIiwge1xuICAgICAgd2lkdGg6IC0xLFxuICAgICAgaGVpZ2h0OiAtMVxuICAgIH0pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfaW5oZXJpdHMoTGVnZW5kLCBfUHVyZUNvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoTGVnZW5kLCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMudXBkYXRlQkJveCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgdGhpcy51cGRhdGVCQm94KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEJCb3hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QkJveCgpIHtcbiAgICAgIGlmICh0aGlzLndyYXBwZXJOb2RlICYmIHRoaXMud3JhcHBlck5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgICAgIHZhciBib3ggPSB0aGlzLndyYXBwZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBib3guaGVpZ2h0ID0gdGhpcy53cmFwcGVyTm9kZS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGJveC53aWR0aCA9IHRoaXMud3JhcHBlck5vZGUub2Zmc2V0V2lkdGg7XG4gICAgICAgIHJldHVybiBib3g7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQkJveFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVCQm94KCkge1xuICAgICAgdmFyIG9uQkJveFVwZGF0ZSA9IHRoaXMucHJvcHMub25CQm94VXBkYXRlO1xuICAgICAgdmFyIGJveCA9IHRoaXMuZ2V0QkJveCgpO1xuICAgICAgaWYgKGJveCkge1xuICAgICAgICBpZiAoTWF0aC5hYnMoYm94LndpZHRoIC0gdGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGgpID4gRVBTIHx8IE1hdGguYWJzKGJveC5oZWlnaHQgLSB0aGlzLmxhc3RCb3VuZGluZ0JveC5oZWlnaHQpID4gRVBTKSB7XG4gICAgICAgICAgdGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGggPSBib3gud2lkdGg7XG4gICAgICAgICAgdGhpcy5sYXN0Qm91bmRpbmdCb3guaGVpZ2h0ID0gYm94LmhlaWdodDtcbiAgICAgICAgICBpZiAob25CQm94VXBkYXRlKSB7XG4gICAgICAgICAgICBvbkJCb3hVcGRhdGUoYm94KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGggIT09IC0xIHx8IHRoaXMubGFzdEJvdW5kaW5nQm94LmhlaWdodCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGggPSAtMTtcbiAgICAgICAgdGhpcy5sYXN0Qm91bmRpbmdCb3guaGVpZ2h0ID0gLTE7XG4gICAgICAgIGlmIChvbkJCb3hVcGRhdGUpIHtcbiAgICAgICAgICBvbkJCb3hVcGRhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0QkJveFNuYXBzaG90XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEJCb3hTbmFwc2hvdCgpIHtcbiAgICAgIGlmICh0aGlzLmxhc3RCb3VuZGluZ0JveC53aWR0aCA+PSAwICYmIHRoaXMubGFzdEJvdW5kaW5nQm94LmhlaWdodCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLmxhc3RCb3VuZGluZ0JveCk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgaGVpZ2h0OiAwXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXREZWZhdWx0UG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVmYXVsdFBvc2l0aW9uKHN0eWxlKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wcy5sYXlvdXQsXG4gICAgICAgIGFsaWduID0gX3RoaXMkcHJvcHMuYWxpZ24sXG4gICAgICAgIHZlcnRpY2FsQWxpZ24gPSBfdGhpcyRwcm9wcy52ZXJ0aWNhbEFsaWduLFxuICAgICAgICBtYXJnaW4gPSBfdGhpcyRwcm9wcy5tYXJnaW4sXG4gICAgICAgIGNoYXJ0V2lkdGggPSBfdGhpcyRwcm9wcy5jaGFydFdpZHRoLFxuICAgICAgICBjaGFydEhlaWdodCA9IF90aGlzJHByb3BzLmNoYXJ0SGVpZ2h0O1xuICAgICAgdmFyIGhQb3MsIHZQb3M7XG4gICAgICBpZiAoIXN0eWxlIHx8IChzdHlsZS5sZWZ0ID09PSB1bmRlZmluZWQgfHwgc3R5bGUubGVmdCA9PT0gbnVsbCkgJiYgKHN0eWxlLnJpZ2h0ID09PSB1bmRlZmluZWQgfHwgc3R5bGUucmlnaHQgPT09IG51bGwpKSB7XG4gICAgICAgIGlmIChhbGlnbiA9PT0gJ2NlbnRlcicgJiYgbGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgdmFyIGJveCA9IHRoaXMuZ2V0QkJveFNuYXBzaG90KCk7XG4gICAgICAgICAgaFBvcyA9IHtcbiAgICAgICAgICAgIGxlZnQ6ICgoY2hhcnRXaWR0aCB8fCAwKSAtIGJveC53aWR0aCkgLyAyXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoUG9zID0gYWxpZ24gPT09ICdyaWdodCcgPyB7XG4gICAgICAgICAgICByaWdodDogbWFyZ2luICYmIG1hcmdpbi5yaWdodCB8fCAwXG4gICAgICAgICAgfSA6IHtcbiAgICAgICAgICAgIGxlZnQ6IG1hcmdpbiAmJiBtYXJnaW4ubGVmdCB8fCAwXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFzdHlsZSB8fCAoc3R5bGUudG9wID09PSB1bmRlZmluZWQgfHwgc3R5bGUudG9wID09PSBudWxsKSAmJiAoc3R5bGUuYm90dG9tID09PSB1bmRlZmluZWQgfHwgc3R5bGUuYm90dG9tID09PSBudWxsKSkge1xuICAgICAgICBpZiAodmVydGljYWxBbGlnbiA9PT0gJ21pZGRsZScpIHtcbiAgICAgICAgICB2YXIgX2JveCA9IHRoaXMuZ2V0QkJveFNuYXBzaG90KCk7XG4gICAgICAgICAgdlBvcyA9IHtcbiAgICAgICAgICAgIHRvcDogKChjaGFydEhlaWdodCB8fCAwKSAtIF9ib3guaGVpZ2h0KSAvIDJcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZQb3MgPSB2ZXJ0aWNhbEFsaWduID09PSAnYm90dG9tJyA/IHtcbiAgICAgICAgICAgIGJvdHRvbTogbWFyZ2luICYmIG1hcmdpbi5ib3R0b20gfHwgMFxuICAgICAgICAgIH0gOiB7XG4gICAgICAgICAgICB0b3A6IG1hcmdpbiAmJiBtYXJnaW4udG9wIHx8IDBcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBoUG9zKSwgdlBvcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICBjb250ZW50ID0gX3RoaXMkcHJvcHMyLmNvbnRlbnQsXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHMyLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczIuaGVpZ2h0LFxuICAgICAgICB3cmFwcGVyU3R5bGUgPSBfdGhpcyRwcm9wczIud3JhcHBlclN0eWxlLFxuICAgICAgICBwYXlsb2FkVW5pcUJ5ID0gX3RoaXMkcHJvcHMyLnBheWxvYWRVbmlxQnksXG4gICAgICAgIHBheWxvYWQgPSBfdGhpcyRwcm9wczIucGF5bG9hZDtcbiAgICAgIHZhciBvdXRlclN0eWxlID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIHdpZHRoOiB3aWR0aCB8fCAnYXV0bycsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0IHx8ICdhdXRvJ1xuICAgICAgfSwgdGhpcy5nZXREZWZhdWx0UG9zaXRpb24od3JhcHBlclN0eWxlKSksIHdyYXBwZXJTdHlsZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtbGVnZW5kLXdyYXBwZXJcIixcbiAgICAgICAgc3R5bGU6IG91dGVyU3R5bGUsXG4gICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKG5vZGUpIHtcbiAgICAgICAgICBfdGhpczIud3JhcHBlck5vZGUgPSBub2RlO1xuICAgICAgICB9XG4gICAgICB9LCByZW5kZXJDb250ZW50KGNvbnRlbnQsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy5wcm9wcyksIHt9LCB7XG4gICAgICAgIHBheWxvYWQ6IGdldFVuaXFQYXlsb2FkKHBheWxvYWQsIHBheWxvYWRVbmlxQnksIGRlZmF1bHRVbmlxQnkpXG4gICAgICB9KSkpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldFdpdGhIZWlnaHRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0V2l0aEhlaWdodChpdGVtLCBjaGFydFdpZHRoKSB7XG4gICAgICB2YXIgX3RoaXMkZGVmYXVsdFByb3BzJGl0ID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLmRlZmF1bHRQcm9wcyksIGl0ZW0ucHJvcHMpLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRkZWZhdWx0UHJvcHMkaXQubGF5b3V0O1xuICAgICAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJyAmJiBpc051bWJlcihpdGVtLnByb3BzLmhlaWdodCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoZWlnaHQ6IGl0ZW0ucHJvcHMuaGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB3aWR0aDogaXRlbS5wcm9wcy53aWR0aCB8fCBjaGFydFdpZHRoXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1dKTtcbn0oUHVyZUNvbXBvbmVudCk7XG5fZGVmaW5lUHJvcGVydHkoTGVnZW5kLCBcImRpc3BsYXlOYW1lXCIsICdMZWdlbmQnKTtcbl9kZWZpbmVQcm9wZXJ0eShMZWdlbmQsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgaWNvblNpemU6IDE0LFxuICBsYXlvdXQ6ICdob3Jpem9udGFsJyxcbiAgYWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnYm90dG9tJ1xufSk7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leGNsdWRlZCIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiaSIsImRlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzZWxmIiwiY2FsbCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsInNvdXJjZSIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiaGFzT3duUHJvcGVydHkiLCJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJEZWZhdWx0TGVnZW5kQ29udGVudCIsImlzTnVtYmVyIiwiZ2V0VW5pcVBheWxvYWQiLCJkZWZhdWx0VW5pcUJ5IiwiZW50cnkiLCJyZW5kZXJDb250ZW50IiwiY29udGVudCIsImlzVmFsaWRFbGVtZW50IiwiY2xvbmVFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInJlZiIsIm90aGVyUHJvcHMiLCJFUFMiLCJMZWdlbmQiLCJfUHVyZUNvbXBvbmVudCIsIl90aGlzIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJ3aWR0aCIsImhlaWdodCIsImNvbXBvbmVudERpZE1vdW50IiwidXBkYXRlQkJveCIsImNvbXBvbmVudERpZFVwZGF0ZSIsImdldEJCb3giLCJ3cmFwcGVyTm9kZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImJveCIsIm9mZnNldEhlaWdodCIsIm9mZnNldFdpZHRoIiwib25CQm94VXBkYXRlIiwiTWF0aCIsImFicyIsImxhc3RCb3VuZGluZ0JveCIsImdldEJCb3hTbmFwc2hvdCIsImdldERlZmF1bHRQb3NpdGlvbiIsInN0eWxlIiwiX3RoaXMkcHJvcHMiLCJsYXlvdXQiLCJhbGlnbiIsInZlcnRpY2FsQWxpZ24iLCJtYXJnaW4iLCJjaGFydFdpZHRoIiwiY2hhcnRIZWlnaHQiLCJoUG9zIiwidlBvcyIsImxlZnQiLCJ1bmRlZmluZWQiLCJyaWdodCIsInRvcCIsImJvdHRvbSIsIl9ib3giLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wczIiLCJ3cmFwcGVyU3R5bGUiLCJwYXlsb2FkVW5pcUJ5IiwicGF5bG9hZCIsIm91dGVyU3R5bGUiLCJwb3NpdGlvbiIsImNsYXNzTmFtZSIsIm5vZGUiLCJnZXRXaXRoSGVpZ2h0IiwiaXRlbSIsIl90aGlzJGRlZmF1bHRQcm9wcyRpdCIsImRlZmF1bHRQcm9wcyIsImljb25TaXplIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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, 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 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)(function(newWidth, newHeight) {\n setSizes(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 }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.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 function() {\n observer.disconnect();\n };\n }, [\n setContainerSize,\n debounce\n ]);\n var chartContent = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(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, 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 }, [\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9SZXNwb25zaXZlQ29udGFpbmVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdD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QztRQUNsRixPQUFPeEUscURBQWMsQ0FBQzBFLEdBQUcsQ0FBQy9DLFVBQVUsU0FBVWdELEtBQUs7WUFDakQsSUFBSyxXQUFXLEdBQUUzRSwyREFBb0IsQ0FBQzJFLFFBQVE7Z0JBQzdDLE9BQU8sV0FBVyxHQUFFekUsbURBQVlBLENBQUN5RSxPQUFPekgsY0FBYztvQkFDcERpRSxPQUFPaUQ7b0JBQ1BoRCxRQUFRaUQ7Z0JBQ1YsR0FBR0MsV0FBVztvQkFDWnBDLE9BQU9oRixjQUFjO3dCQUNuQmtFLFFBQVE7d0JBQ1JELE9BQU87d0JBQ1BPLFdBQVcyQzt3QkFDWFEsVUFBVVQ7b0JBQ1osR0FBR08sTUFBTUcsS0FBSyxDQUFDNUMsS0FBSztnQkFDdEIsSUFBSSxDQUFDO1lBQ1A7WUFDQSxPQUFPeUM7UUFDVDtJQUNGLEdBQUc7UUFBQzNEO1FBQVFXO1FBQVVQO1FBQVFNO1FBQVdEO1FBQVdEO1FBQVVvQjtRQUFPekI7S0FBTTtJQUMzRSxPQUFPLFdBQVcsR0FBRW5CLDBEQUFtQixDQUFDLE9BQU87UUFDN0M4QixJQUFJQSxLQUFLLEdBQUdrRCxNQUFNLENBQUNsRCxNQUFNbUQ7UUFDekJsRCxXQUFXaEMsZ0RBQUlBLENBQUMsaUNBQWlDZ0M7UUFDakRHLE9BQU9oRixjQUFjQSxjQUFjLENBQUMsR0FBR2dGLFFBQVEsQ0FBQyxHQUFHO1lBQ2pEZixPQUFPQTtZQUNQQyxRQUFRQTtZQUNSSSxVQUFVQTtZQUNWQyxXQUFXQTtZQUNYQyxXQUFXQTtRQUNiO1FBQ0FYLEtBQUtvQjtJQUNQLEdBQUdnQztBQUNMLEdBQUciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9SZXNwb25zaXZlQ29udGFpbmVyLmpzPzBhZmMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFdyYXBwZXIgY29tcG9uZW50IHRvIG1ha2UgY2hhcnRzIGFkYXB0IHRvIHRoZSBzaXplIG9mIHBhcmVudCAqIERPTVxuICovXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmLCBjbG9uZUVsZW1lbnQsIHVzZVN0YXRlLCB1c2VJbXBlcmF0aXZlSGFuZGxlLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoL3Rocm90dGxlJztcbmltcG9ydCB7IGlzUGVyY2VudCB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IHdhcm4gfSBmcm9tICcuLi91dGlsL0xvZ1V0aWxzJztcbmltcG9ydCB7IGdldERpc3BsYXlOYW1lIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmV4cG9ydCB2YXIgUmVzcG9uc2l2ZUNvbnRhaW5lciA9IC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKGZ1bmN0aW9uIChfcmVmLCByZWYpIHtcbiAgdmFyIGFzcGVjdCA9IF9yZWYuYXNwZWN0LFxuICAgIF9yZWYkaW5pdGlhbERpbWVuc2lvbiA9IF9yZWYuaW5pdGlhbERpbWVuc2lvbixcbiAgICBpbml0aWFsRGltZW5zaW9uID0gX3JlZiRpbml0aWFsRGltZW5zaW9uID09PSB2b2lkIDAgPyB7XG4gICAgICB3aWR0aDogLTEsXG4gICAgICBoZWlnaHQ6IC0xXG4gICAgfSA6IF9yZWYkaW5pdGlhbERpbWVuc2lvbixcbiAgICBfcmVmJHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICB3aWR0aCA9IF9yZWYkd2lkdGggPT09IHZvaWQgMCA/ICcxMDAlJyA6IF9yZWYkd2lkdGgsXG4gICAgX3JlZiRoZWlnaHQgPSBfcmVmLmhlaWdodCxcbiAgICBoZWlnaHQgPSBfcmVmJGhlaWdodCA9PT0gdm9pZCAwID8gJzEwMCUnIDogX3JlZiRoZWlnaHQsXG4gICAgX3JlZiRtaW5XaWR0aCA9IF9yZWYubWluV2lkdGgsXG4gICAgbWluV2lkdGggPSBfcmVmJG1pbldpZHRoID09PSB2b2lkIDAgPyAwIDogX3JlZiRtaW5XaWR0aCxcbiAgICBtaW5IZWlnaHQgPSBfcmVmLm1pbkhlaWdodCxcbiAgICBtYXhIZWlnaHQgPSBfcmVmLm1heEhlaWdodCxcbiAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgX3JlZiRkZWJvdW5jZSA9IF9yZWYuZGVib3VuY2UsXG4gICAgZGVib3VuY2UgPSBfcmVmJGRlYm91bmNlID09PSB2b2lkIDAgPyAwIDogX3JlZiRkZWJvdW5jZSxcbiAgICBpZCA9IF9yZWYuaWQsXG4gICAgY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgb25SZXNpemUgPSBfcmVmLm9uUmVzaXplLFxuICAgIF9yZWYkc3R5bGUgPSBfcmVmLnN0eWxlLFxuICAgIHN0eWxlID0gX3JlZiRzdHlsZSA9PT0gdm9pZCAwID8ge30gOiBfcmVmJHN0eWxlO1xuICB2YXIgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgb25SZXNpemVSZWYgPSB1c2VSZWYoKTtcbiAgb25SZXNpemVSZWYuY3VycmVudCA9IG9uUmVzaXplO1xuICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udGFpbmVyUmVmLmN1cnJlbnQsICdjdXJyZW50Jywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybignVGhlIHVzYWdlIG9mIHJlZi5jdXJyZW50LmN1cnJlbnQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBubyBsb25nZXIgYmUgc3VwcG9ydGVkLicpO1xuICAgICAgICByZXR1cm4gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICB9LFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0pO1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoe1xuICAgICAgY29udGFpbmVyV2lkdGg6IGluaXRpYWxEaW1lbnNpb24ud2lkdGgsXG4gICAgICBjb250YWluZXJIZWlnaHQ6IGluaXRpYWxEaW1lbnNpb24uaGVpZ2h0XG4gICAgfSksXG4gICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgc2l6ZXMgPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldFNpemVzID0gX3VzZVN0YXRlMlsxXTtcbiAgdmFyIHNldENvbnRhaW5lclNpemUgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAobmV3V2lkdGgsIG5ld0hlaWdodCkge1xuICAgIHNldFNpemVzKGZ1bmN0aW9uIChwcmV2U3RhdGUpIHtcbiAgICAgIHZhciByb3VuZGVkV2lkdGggPSBNYXRoLnJvdW5kKG5ld1dpZHRoKTtcbiAgICAgIHZhciByb3VuZGVkSGVpZ2h0ID0gTWF0aC5yb3VuZChuZXdIZWlnaHQpO1xuICAgICAgaWYgKHByZXZTdGF0ZS5jb250YWluZXJXaWR0aCA9PT0gcm91bmRlZFdpZHRoICYmIHByZXZTdGF0ZS5jb250YWluZXJIZWlnaHQgPT09IHJvdW5kZWRIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHByZXZTdGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRhaW5lcldpZHRoOiByb3VuZGVkV2lkdGgsXG4gICAgICAgIGNvbnRhaW5lckhlaWdodDogcm91bmRlZEhlaWdodFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSwgW10pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKGVudHJpZXMpIHtcbiAgICAgIHZhciBfb25SZXNpemVSZWYkY3VycmVudDtcbiAgICAgIHZhciBfZW50cmllcyQwJGNvbnRlbnRSZWMgPSBlbnRyaWVzWzBdLmNvbnRlbnRSZWN0LFxuICAgICAgICBjb250YWluZXJXaWR0aCA9IF9lbnRyaWVzJDAkY29udGVudFJlYy53aWR0aCxcbiAgICAgICAgY29udGFpbmVySGVpZ2h0ID0gX2VudHJpZXMkMCRjb250ZW50UmVjLmhlaWdodDtcbiAgICAgIHNldENvbnRhaW5lclNpemUoY29udGFpbmVyV2lkdGgsIGNvbnRhaW5lckhlaWdodCk7XG4gICAgICAoX29uUmVzaXplUmVmJGN1cnJlbnQgPSBvblJlc2l6ZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfb25SZXNpemVSZWYkY3VycmVudCA9PT0gdm9pZCAwIHx8IF9vblJlc2l6ZVJlZiRjdXJyZW50LmNhbGwob25SZXNpemVSZWYsIGNvbnRhaW5lcldpZHRoLCBjb250YWluZXJIZWlnaHQpO1xuICAgIH07XG4gICAgaWYgKGRlYm91bmNlID4gMCkge1xuICAgICAgY2FsbGJhY2sgPSB0aHJvdHRsZShjYWxsYmFjaywgZGVib3VuY2UsIHtcbiAgICAgICAgdHJhaWxpbmc6IHRydWUsXG4gICAgICAgIGxlYWRpbmc6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gICAgdmFyIG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGNhbGxiYWNrKTtcbiAgICB2YXIgX2NvbnRhaW5lclJlZiRjdXJyZW50ID0gY29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBjb250YWluZXJXaWR0aCA9IF9jb250YWluZXJSZWYkY3VycmVudC53aWR0aCxcbiAgICAgIGNvbnRhaW5lckhlaWdodCA9IF9jb250YWluZXJSZWYkY3VycmVudC5oZWlnaHQ7XG4gICAgc2V0Q29udGFpbmVyU2l6ZShjb250YWluZXJXaWR0aCwgY29udGFpbmVySGVpZ2h0KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lclJlZi5jdXJyZW50KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH07XG4gIH0sIFtzZXRDb250YWluZXJTaXplLCBkZWJvdW5jZV0pO1xuICB2YXIgY2hhcnRDb250ZW50ID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvbnRhaW5lcldpZHRoID0gc2l6ZXMuY29udGFpbmVyV2lkdGgsXG4gICAgICBjb250YWluZXJIZWlnaHQgPSBzaXplcy5jb250YWluZXJIZWlnaHQ7XG4gICAgaWYgKGNvbnRhaW5lcldpZHRoIDwgMCB8fCBjb250YWluZXJIZWlnaHQgPCAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgd2Fybihpc1BlcmNlbnQod2lkdGgpIHx8IGlzUGVyY2VudChoZWlnaHQpLCBcIlRoZSB3aWR0aCglcykgYW5kIGhlaWdodCglcykgYXJlIGJvdGggZml4ZWQgbnVtYmVycyxcXG4gICAgICAgbWF5YmUgeW91IGRvbid0IG5lZWQgdG8gdXNlIGEgUmVzcG9uc2l2ZUNvbnRhaW5lci5cIiwgd2lkdGgsIGhlaWdodCk7XG4gICAgd2FybighYXNwZWN0IHx8IGFzcGVjdCA+IDAsICdUaGUgYXNwZWN0KCVzKSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLicsIGFzcGVjdCk7XG4gICAgdmFyIGNhbGN1bGF0ZWRXaWR0aCA9IGlzUGVyY2VudCh3aWR0aCkgPyBjb250YWluZXJXaWR0aCA6IHdpZHRoO1xuICAgIHZhciBjYWxjdWxhdGVkSGVpZ2h0ID0gaXNQZXJjZW50KGhlaWdodCkgPyBjb250YWluZXJIZWlnaHQgOiBoZWlnaHQ7XG4gICAgaWYgKGFzcGVjdCAmJiBhc3BlY3QgPiAwKSB7XG4gICAgICAvLyBQcmVzZXJ2ZSB0aGUgZGVzaXJlZCBhc3BlY3QgcmF0aW9cbiAgICAgIGlmIChjYWxjdWxhdGVkV2lkdGgpIHtcbiAgICAgICAgLy8gV2lsbCBkZWZhdWx0IHRvIHVzaW5nIHdpZHRoIGZvciBhc3BlY3QgcmF0aW9cbiAgICAgICAgY2FsY3VsYXRlZEhlaWdodCA9IGNhbGN1bGF0ZWRXaWR0aCAvIGFzcGVjdDtcbiAgICAgIH0gZWxzZSBpZiAoY2FsY3VsYXRlZEhlaWdodCkge1xuICAgICAgICAvLyBCdXQgd2Ugc2hvdWxkIGFsc28gdGFrZSBoZWlnaHQgaW50byBjb25zaWRlcmF0aW9uXG4gICAgICAgIGNhbGN1bGF0ZWRXaWR0aCA9IGNhbGN1bGF0ZWRIZWlnaHQgKiBhc3BlY3Q7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIG1heEhlaWdodCBpcyBzZXQsIG92ZXJ3cml0ZSBpZiBjYWxjdWxhdGVkSGVpZ2h0IGlzIGdyZWF0ZXIgdGhhbiBtYXhIZWlnaHRcbiAgICAgIGlmIChtYXhIZWlnaHQgJiYgY2FsY3VsYXRlZEhlaWdodCA+IG1heEhlaWdodCkge1xuICAgICAgICBjYWxjdWxhdGVkSGVpZ2h0ID0gbWF4SGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgICB3YXJuKGNhbGN1bGF0ZWRXaWR0aCA+IDAgfHwgY2FsY3VsYXRlZEhlaWdodCA+IDAsIFwiVGhlIHdpZHRoKCVzKSBhbmQgaGVpZ2h0KCVzKSBvZiBjaGFydCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAsXFxuICAgICAgIHBsZWFzZSBjaGVjayB0aGUgc3R5bGUgb2YgY29udGFpbmVyLCBvciB0aGUgcHJvcHMgd2lkdGgoJXMpIGFuZCBoZWlnaHQoJXMpLFxcbiAgICAgICBvciBhZGQgYSBtaW5XaWR0aCglcykgb3IgbWluSGVpZ2h0KCVzKSBvciB1c2UgYXNwZWN0KCVzKSB0byBjb250cm9sIHRoZVxcbiAgICAgICBoZWlnaHQgYW5kIHdpZHRoLlwiLCBjYWxjdWxhdGVkV2lkdGgsIGNhbGN1bGF0ZWRIZWlnaHQsIHdpZHRoLCBoZWlnaHQsIG1pbldpZHRoLCBtaW5IZWlnaHQsIGFzcGVjdCk7XG4gICAgdmFyIGlzQ2hhcnRzID0gIUFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGdldERpc3BsYXlOYW1lKGNoaWxkcmVuLnR5cGUpLmVuZHNXaXRoKCdDaGFydCcpO1xuICAgIHJldHVybiBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNoaWxkLCBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB3aWR0aDogY2FsY3VsYXRlZFdpZHRoLFxuICAgICAgICAgIGhlaWdodDogY2FsY3VsYXRlZEhlaWdodFxuICAgICAgICB9LCBpc0NoYXJ0cyA/IHtcbiAgICAgICAgICBzdHlsZTogX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IGNhbGN1bGF0ZWRIZWlnaHQsXG4gICAgICAgICAgICBtYXhXaWR0aDogY2FsY3VsYXRlZFdpZHRoXG4gICAgICAgICAgfSwgY2hpbGQucHJvcHMuc3R5bGUpXG4gICAgICAgIH0gOiB7fSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH0pO1xuICB9LCBbYXNwZWN0LCBjaGlsZHJlbiwgaGVpZ2h0LCBtYXhIZWlnaHQsIG1pbkhlaWdodCwgbWluV2lkdGgsIHNpemVzLCB3aWR0aF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGlkOiBpZCA/IFwiXCIuY29uY2F0KGlkKSA6IHVuZGVmaW5lZCxcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXJlc3BvbnNpdmUtY29udGFpbmVyJywgY2xhc3NOYW1lKSxcbiAgICBzdHlsZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzdHlsZSksIHt9LCB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIG1pbldpZHRoOiBtaW5XaWR0aCxcbiAgICAgIG1pbkhlaWdodDogbWluSGVpZ2h0LFxuICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHRcbiAgICB9KSxcbiAgICByZWY6IGNvbnRhaW5lclJlZlxuICB9LCBjaGFydENvbnRlbnQpO1xufSk7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwibCIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwiaXNBcnJheSIsImNsc3giLCJSZWFjdCIsImZvcndhcmRSZWYiLCJjbG9uZUVsZW1lbnQiLCJ1c2VTdGF0ZSIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlQ2FsbGJhY2siLCJ0aHJvdHRsZSIsImlzUGVyY2VudCIsIndhcm4iLCJnZXREaXNwbGF5TmFtZSIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJfcmVmIiwicmVmIiwiYXNwZWN0IiwiX3JlZiRpbml0aWFsRGltZW5zaW9uIiwiaW5pdGlhbERpbWVuc2lvbiIsIndpZHRoIiwiaGVpZ2h0IiwiX3JlZiR3aWR0aCIsIl9yZWYkaGVpZ2h0IiwiX3JlZiRtaW5XaWR0aCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwiY2hpbGRyZW4iLCJfcmVmJGRlYm91bmNlIiwiZGVib3VuY2UiLCJpZCIsImNsYXNzTmFtZSIsIm9uUmVzaXplIiwiX3JlZiRzdHlsZSIsInN0eWxlIiwiY29udGFpbmVyUmVmIiwib25SZXNpemVSZWYiLCJjdXJyZW50IiwiZ2V0IiwiY29uc29sZSIsIl91c2VTdGF0ZSIsImNvbnRhaW5lcldpZHRoIiwiY29udGFpbmVySGVpZ2h0IiwiX3VzZVN0YXRlMiIsInNpemVzIiwic2V0U2l6ZXMiLCJzZXRDb250YWluZXJTaXplIiwibmV3V2lkdGgiLCJuZXdIZWlnaHQiLCJwcmV2U3RhdGUiLCJyb3VuZGVkV2lkdGgiLCJNYXRoIiwicm91bmQiLCJyb3VuZGVkSGVpZ2h0IiwiY2FsbGJhY2siLCJlbnRyaWVzIiwiX29uUmVzaXplUmVmJGN1cnJlbnQiLCJfZW50cmllcyQwJGNvbnRlbnRSZWMiLCJjb250ZW50UmVjdCIsInRyYWlsaW5nIiwibGVhZGluZyIsIm9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJfY29udGFpbmVyUmVmJGN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJvYnNlcnZlIiwiZGlzY29ubmVjdCIsImNoYXJ0Q29udGVudCIsImNhbGN1bGF0ZWRXaWR0aCIsImNhbGN1bGF0ZWRIZWlnaHQiLCJpc0NoYXJ0cyIsInR5cGUiLCJlbmRzV2l0aCIsIkNoaWxkcmVuIiwibWFwIiwiY2hpbGQiLCJpc1ZhbGlkRWxlbWVudCIsIm1heFdpZHRoIiwicHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0IiwidW5kZWZpbmVkIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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)(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 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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QUFXcEcsSUFBSSxDQUFDLFNBQVNtRyxNQUFNLENBQUMsQ0FBQzVGLHlEQUFRQSxDQUFDaUIsU0FBU0EsUUFBUUssWUFBWSxLQUFLQSxXQUFXO0lBQ3pGO0lBQ0EsSUFBSWtFLE9BQU87UUFDVEssV0FBV3BHLElBQUksQ0FBQyxVQUFVbUcsTUFBTSxDQUFDSixPQUFPLE1BQU1JLE1BQU0sQ0FBQ3hCLEdBQUcsTUFBTXdCLE1BQU0sQ0FBQ3JCLEdBQUc7SUFDMUU7SUFDQSxJQUFJc0IsV0FBV2pKLE1BQU0sRUFBRTtRQUNyQjhJLFVBQVVJLFNBQVMsR0FBR0QsV0FBV0UsSUFBSSxDQUFDO0lBQ3hDO0lBQ0EsT0FBTyxXQUFXLEdBQUVuRywwREFBbUIsQ0FBQyxRQUFRdkQsU0FBUyxDQUFDLEdBQUc4RCw2REFBV0EsQ0FBQ3VGLFdBQVcsT0FBTztRQUN6RnRCLEdBQUdBO1FBQ0hHLEdBQUdBO1FBQ0hrQixXQUFXMUYsZ0RBQUlBLENBQUMsaUJBQWlCMEY7UUFDakNWLFlBQVlBO1FBQ1pJLE1BQU1BLEtBQUtjLFFBQVEsQ0FBQyxTQUFTakMsZUFBZW1CO0lBQzlDLElBQUlFLGFBQWF0RSxHQUFHLENBQUMsU0FBVW1GLElBQUksRUFBRTFELEtBQUs7UUFDeEMsSUFBSTVCLFFBQVFzRixLQUFLdEYsS0FBSyxDQUFDbUYsSUFBSSxDQUFDckYsV0FBVyxLQUFLO1FBQzVDLE9BQ0UsV0FBVyxHQUNYLDRDQUE0QztRQUM1QyxvREFBb0Q7UUFDcERkLDBEQUFtQixDQUFDLFNBQVM7WUFDM0J3RSxHQUFHQTtZQUNIbUIsSUFBSS9DLFVBQVUsSUFBSW1ELFVBQVVqQjtZQUM1QjVILEtBQUssR0FBRzhJLE1BQU0sQ0FBQ2hGLE9BQU8sS0FBS2dGLE1BQU0sQ0FBQ3BEO1FBQ3BDLEdBQUc1QjtJQUVQO0FBQ0YsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY29tcG9uZW50L1RleHQuanM/N2M2MSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wieFwiLCBcInlcIiwgXCJsaW5lSGVpZ2h0XCIsIFwiY2FwSGVpZ2h0XCIsIFwic2NhbGVUb0ZpdFwiLCBcInRleHRBbmNob3JcIiwgXCJ2ZXJ0aWNhbEFuY2hvclwiLCBcImZpbGxcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJkeFwiLCBcImR5XCIsIFwiYW5nbGVcIiwgXCJjbGFzc05hbWVcIiwgXCJicmVha0FsbFwiXTtcbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTnVtT3JTdHIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuLi91dGlsL0dsb2JhbCc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBnZXRTdHJpbmdTaXplIH0gZnJvbSAnLi4vdXRpbC9ET01VdGlscyc7XG5pbXBvcnQgeyByZWR1Y2VDU1NDYWxjIH0gZnJvbSAnLi4vdXRpbC9SZWR1Y2VDU1NDYWxjJztcbnZhciBCUkVBS0lOR19TUEFDRVMgPSAvWyBcXGZcXG5cXHJcXHRcXHZcXHUyMDI4XFx1MjAyOV0rLztcbnZhciBjYWxjdWxhdGVXb3JkV2lkdGhzID0gZnVuY3Rpb24gY2FsY3VsYXRlV29yZFdpZHRocyhfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgYnJlYWtBbGwgPSBfcmVmLmJyZWFrQWxsLFxuICAgIHN0eWxlID0gX3JlZi5zdHlsZTtcbiAgdHJ5IHtcbiAgICB2YXIgd29yZHMgPSBbXTtcbiAgICBpZiAoIWlzTmlsKGNoaWxkcmVuKSkge1xuICAgICAgaWYgKGJyZWFrQWxsKSB7XG4gICAgICAgIHdvcmRzID0gY2hpbGRyZW4udG9TdHJpbmcoKS5zcGxpdCgnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3b3JkcyA9IGNoaWxkcmVuLnRvU3RyaW5nKCkuc3BsaXQoQlJFQUtJTkdfU1BBQ0VTKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHdvcmRzV2l0aENvbXB1dGVkV2lkdGggPSB3b3Jkcy5tYXAoZnVuY3Rpb24gKHdvcmQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdvcmQ6IHdvcmQsXG4gICAgICAgIHdpZHRoOiBnZXRTdHJpbmdTaXplKHdvcmQsIHN0eWxlKS53aWR0aFxuICAgICAgfTtcbiAgICB9KTtcbiAgICB2YXIgc3BhY2VXaWR0aCA9IGJyZWFrQWxsID8gMCA6IGdldFN0cmluZ1NpemUoXCJcXHhBMFwiLCBzdHlsZSkud2lkdGg7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdvcmRzV2l0aENvbXB1dGVkV2lkdGg6IHdvcmRzV2l0aENvbXB1dGVkV2lkdGgsXG4gICAgICBzcGFjZVdpZHRoOiBzcGFjZVdpZHRoXG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xudmFyIGNhbGN1bGF0ZVdvcmRzQnlMaW5lcyA9IGZ1bmN0aW9uIGNhbGN1bGF0ZVdvcmRzQnlMaW5lcyhfcmVmMiwgaW5pdGlhbFdvcmRzV2l0aENvbXB1dGVkV2l0aCwgc3BhY2VXaWR0aCwgbGluZVdpZHRoLCBzY2FsZVRvRml0KSB7XG4gIHZhciBtYXhMaW5lcyA9IF9yZWYyLm1heExpbmVzLFxuICAgIGNoaWxkcmVuID0gX3JlZjIuY2hpbGRyZW4sXG4gICAgc3R5bGUgPSBfcmVmMi5zdHlsZSxcbiAgICBicmVha0FsbCA9IF9yZWYyLmJyZWFrQWxsO1xuICB2YXIgc2hvdWxkTGltaXRMaW5lcyA9IGlzTnVtYmVyKG1heExpbmVzKTtcbiAgdmFyIHRleHQgPSBjaGlsZHJlbjtcbiAgdmFyIGNhbGN1bGF0ZSA9IGZ1bmN0aW9uIGNhbGN1bGF0ZSgpIHtcbiAgICB2YXIgd29yZHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuICAgIHJldHVybiB3b3Jkcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgX3JlZjMpIHtcbiAgICAgIHZhciB3b3JkID0gX3JlZjMud29yZCxcbiAgICAgICAgd2lkdGggPSBfcmVmMy53aWR0aDtcbiAgICAgIHZhciBjdXJyZW50TGluZSA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07XG4gICAgICBpZiAoY3VycmVudExpbmUgJiYgKGxpbmVXaWR0aCA9PSBudWxsIHx8IHNjYWxlVG9GaXQgfHwgY3VycmVudExpbmUud2lkdGggKyB3aWR0aCArIHNwYWNlV2lkdGggPCBOdW1iZXIobGluZVdpZHRoKSkpIHtcbiAgICAgICAgLy8gV29yZCBjYW4gYmUgYWRkZWQgdG8gYW4gZXhpc3RpbmcgbGluZVxuICAgICAgICBjdXJyZW50TGluZS53b3Jkcy5wdXNoKHdvcmQpO1xuICAgICAgICBjdXJyZW50TGluZS53aWR0aCArPSB3aWR0aCArIHNwYWNlV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgZmlyc3Qgd29yZCB0byBsaW5lIG9yIHdvcmQgaXMgdG9vIGxvbmcgdG8gc2NhbGVUb0ZpdCBvbiBleGlzdGluZyBsaW5lXG4gICAgICAgIHZhciBuZXdMaW5lID0ge1xuICAgICAgICAgIHdvcmRzOiBbd29yZF0sXG4gICAgICAgICAgd2lkdGg6IHdpZHRoXG4gICAgICAgIH07XG4gICAgICAgIHJlc3VsdC5wdXNoKG5ld0xpbmUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBbXSk7XG4gIH07XG4gIHZhciBvcmlnaW5hbFJlc3VsdCA9IGNhbGN1bGF0ZShpbml0aWFsV29yZHNXaXRoQ29tcHV0ZWRXaXRoKTtcbiAgdmFyIGZpbmRMb25nZXN0TGluZSA9IGZ1bmN0aW9uIGZpbmRMb25nZXN0TGluZSh3b3Jkcykge1xuICAgIHJldHVybiB3b3Jkcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLndpZHRoID4gYi53aWR0aCA/IGEgOiBiO1xuICAgIH0pO1xuICB9O1xuICBpZiAoIXNob3VsZExpbWl0TGluZXMpIHtcbiAgICByZXR1cm4gb3JpZ2luYWxSZXN1bHQ7XG4gIH1cbiAgdmFyIHN1ZmZpeCA9ICfigKYnO1xuICB2YXIgY2hlY2tPdmVyZmxvdyA9IGZ1bmN0aW9uIGNoZWNrT3ZlcmZsb3coaW5kZXgpIHtcbiAgICB2YXIgdGVtcFRleHQgPSB0ZXh0LnNsaWNlKDAsIGluZGV4KTtcbiAgICB2YXIgd29yZHMgPSBjYWxjdWxhdGVXb3JkV2lkdGhzKHtcbiAgICAgIGJyZWFrQWxsOiBicmVha0FsbCxcbiAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgIGNoaWxkcmVuOiB0ZW1wVGV4dCArIHN1ZmZpeFxuICAgIH0pLndvcmRzV2l0aENvbXB1dGVkV2lkdGg7XG4gICAgdmFyIHJlc3VsdCA9IGNhbGN1bGF0ZSh3b3Jkcyk7XG4gICAgdmFyIGRvZXNPdmVyZmxvdyA9IHJlc3VsdC5sZW5ndGggPiBtYXhMaW5lcyB8fCBmaW5kTG9uZ2VzdExpbmUocmVzdWx0KS53aWR0aCA+IE51bWJlcihsaW5lV2lkdGgpO1xuICAgIHJldHVybiBbZG9lc092ZXJmbG93LCByZXN1bHRdO1xuICB9O1xuICB2YXIgc3RhcnQgPSAwO1xuICB2YXIgZW5kID0gdGV4dC5sZW5ndGggLSAxO1xuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG4gIHZhciB0cmltbWVkUmVzdWx0O1xuICB3aGlsZSAoc3RhcnQgPD0gZW5kICYmIGl0ZXJhdGlvbnMgPD0gdGV4dC5sZW5ndGggLSAxKSB7XG4gICAgdmFyIG1pZGRsZSA9IE1hdGguZmxvb3IoKHN0YXJ0ICsgZW5kKSAvIDIpO1xuICAgIHZhciBwcmV2ID0gbWlkZGxlIC0gMTtcbiAgICB2YXIgX2NoZWNrT3ZlcmZsb3cgPSBjaGVja092ZXJmbG93KHByZXYpLFxuICAgICAgX2NoZWNrT3ZlcmZsb3cyID0gX3NsaWNlZFRvQXJyYXkoX2NoZWNrT3ZlcmZsb3csIDIpLFxuICAgICAgZG9lc1ByZXZPdmVyZmxvdyA9IF9jaGVja092ZXJmbG93MlswXSxcbiAgICAgIHJlc3VsdCA9IF9jaGVja092ZXJmbG93MlsxXTtcbiAgICB2YXIgX2NoZWNrT3ZlcmZsb3czID0gY2hlY2tPdmVyZmxvdyhtaWRkbGUpLFxuICAgICAgX2NoZWNrT3ZlcmZsb3c0ID0gX3NsaWNlZFRvQXJyYXkoX2NoZWNrT3ZlcmZsb3czLCAxKSxcbiAgICAgIGRvZXNNaWRkbGVPdmVyZmxvdyA9IF9jaGVja092ZXJmbG93NFswXTtcbiAgICBpZiAoIWRvZXNQcmV2T3ZlcmZsb3cgJiYgIWRvZXNNaWRkbGVPdmVyZmxvdykge1xuICAgICAgc3RhcnQgPSBtaWRkbGUgKyAxO1xuICAgIH1cbiAgICBpZiAoZG9lc1ByZXZPdmVyZmxvdyAmJiBkb2VzTWlkZGxlT3ZlcmZsb3cpIHtcbiAgICAgIGVuZCA9IG1pZGRsZSAtIDE7XG4gICAgfVxuICAgIGlmICghZG9lc1ByZXZPdmVyZmxvdyAmJiBkb2VzTWlkZGxlT3ZlcmZsb3cpIHtcbiAgICAgIHRyaW1tZWRSZXN1bHQgPSByZXN1bHQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaXRlcmF0aW9ucysrO1xuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gb3JpZ2luYWxSZXN1bHQgKHJlc3VsdCB3aXRob3V0IHRyaW1taW5nKSBpZiB3ZSBjYW5ub3QgZmluZCB0aGVcbiAgLy8gd2hlcmUgdG8gdHJpbS4gIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gOnRtOlxuICByZXR1cm4gdHJpbW1lZFJlc3VsdCB8fCBvcmlnaW5hbFJlc3VsdDtcbn07XG52YXIgZ2V0V29yZHNXaXRob3V0Q2FsY3VsYXRlID0gZnVuY3Rpb24gZ2V0V29yZHNXaXRob3V0Q2FsY3VsYXRlKGNoaWxkcmVuKSB7XG4gIHZhciB3b3JkcyA9ICFpc05pbChjaGlsZHJlbikgPyBjaGlsZHJlbi50b1N0cmluZygpLnNwbGl0KEJSRUFLSU5HX1NQQUNFUykgOiBbXTtcbiAgcmV0dXJuIFt7XG4gICAgd29yZHM6IHdvcmRzXG4gIH1dO1xufTtcbnZhciBnZXRXb3Jkc0J5TGluZXMgPSBmdW5jdGlvbiBnZXRXb3Jkc0J5TGluZXMoX3JlZjQpIHtcbiAgdmFyIHdpZHRoID0gX3JlZjQud2lkdGgsXG4gICAgc2NhbGVUb0ZpdCA9IF9yZWY0LnNjYWxlVG9GaXQsXG4gICAgY2hpbGRyZW4gPSBfcmVmNC5jaGlsZHJlbixcbiAgICBzdHlsZSA9IF9yZWY0LnN0eWxlLFxuICAgIGJyZWFrQWxsID0gX3JlZjQuYnJlYWtBbGwsXG4gICAgbWF4TGluZXMgPSBfcmVmNC5tYXhMaW5lcztcbiAgLy8gT25seSBwZXJmb3JtIGNhbGN1bGF0aW9ucyBpZiB1c2luZyBmZWF0dXJlcyB0aGF0IHJlcXVpcmUgdGhlbSAobXVsdGlsaW5lLCBzY2FsZVRvRml0KVxuICBpZiAoKHdpZHRoIHx8IHNjYWxlVG9GaXQpICYmICFHbG9iYWwuaXNTc3IpIHtcbiAgICB2YXIgd29yZHNXaXRoQ29tcHV0ZWRXaWR0aCwgc3BhY2VXaWR0aDtcbiAgICB2YXIgd29yZFdpZHRocyA9IGNhbGN1bGF0ZVdvcmRXaWR0aHMoe1xuICAgICAgYnJlYWtBbGw6IGJyZWFrQWxsLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgc3R5bGU6IHN0eWxlXG4gICAgfSk7XG4gICAgaWYgKHdvcmRXaWR0aHMpIHtcbiAgICAgIHZhciB3Y3cgPSB3b3JkV2lkdGhzLndvcmRzV2l0aENvbXB1dGVkV2lkdGgsXG4gICAgICAgIHN3ID0gd29yZFdpZHRocy5zcGFjZVdpZHRoO1xuICAgICAgd29yZHNXaXRoQ29tcHV0ZWRXaWR0aCA9IHdjdztcbiAgICAgIHNwYWNlV2lkdGggPSBzdztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdldFdvcmRzV2l0aG91dENhbGN1bGF0ZShjaGlsZHJlbik7XG4gICAgfVxuICAgIHJldHVybiBjYWxjdWxhdGVXb3Jkc0J5TGluZXMoe1xuICAgICAgYnJlYWtBbGw6IGJyZWFrQWxsLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgbWF4TGluZXM6IG1heExpbmVzLFxuICAgICAgc3R5bGU6IHN0eWxlXG4gICAgfSwgd29yZHNXaXRoQ29tcHV0ZWRXaWR0aCwgc3BhY2VXaWR0aCwgd2lkdGgsIHNjYWxlVG9GaXQpO1xuICB9XG4gIHJldHVybiBnZXRXb3Jkc1dpdGhvdXRDYWxjdWxhdGUoY2hpbGRyZW4pO1xufTtcbnZhciBERUZBVUxUX0ZJTEwgPSAnIzgwODA4MCc7XG5leHBvcnQgdmFyIFRleHQgPSBmdW5jdGlvbiBUZXh0KF9yZWY1KSB7XG4gIHZhciBfcmVmNSR4ID0gX3JlZjUueCxcbiAgICBwcm9wc1ggPSBfcmVmNSR4ID09PSB2b2lkIDAgPyAwIDogX3JlZjUkeCxcbiAgICBfcmVmNSR5ID0gX3JlZjUueSxcbiAgICBwcm9wc1kgPSBfcmVmNSR5ID09PSB2b2lkIDAgPyAwIDogX3JlZjUkeSxcbiAgICBfcmVmNSRsaW5lSGVpZ2h0ID0gX3JlZjUubGluZUhlaWdodCxcbiAgICBsaW5lSGVpZ2h0ID0gX3JlZjUkbGluZUhlaWdodCA9PT0gdm9pZCAwID8gJzFlbScgOiBfcmVmNSRsaW5lSGVpZ2h0LFxuICAgIF9yZWY1JGNhcEhlaWdodCA9IF9yZWY1LmNhcEhlaWdodCxcbiAgICBjYXBIZWlnaHQgPSBfcmVmNSRjYXBIZWlnaHQgPT09IHZvaWQgMCA/ICcwLjcxZW0nIDogX3JlZjUkY2FwSGVpZ2h0LFxuICAgIF9yZWY1JHNjYWxlVG9GaXQgPSBfcmVmNS5zY2FsZVRvRml0LFxuICAgIHNjYWxlVG9GaXQgPSBfcmVmNSRzY2FsZVRvRml0ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWY1JHNjYWxlVG9GaXQsXG4gICAgX3JlZjUkdGV4dEFuY2hvciA9IF9yZWY1LnRleHRBbmNob3IsXG4gICAgdGV4dEFuY2hvciA9IF9yZWY1JHRleHRBbmNob3IgPT09IHZvaWQgMCA/ICdzdGFydCcgOiBfcmVmNSR0ZXh0QW5jaG9yLFxuICAgIF9yZWY1JHZlcnRpY2FsQW5jaG9yID0gX3JlZjUudmVydGljYWxBbmNob3IsXG4gICAgdmVydGljYWxBbmNob3IgPSBfcmVmNSR2ZXJ0aWNhbEFuY2hvciA9PT0gdm9pZCAwID8gJ2VuZCcgOiBfcmVmNSR2ZXJ0aWNhbEFuY2hvcixcbiAgICBfcmVmNSRmaWxsID0gX3JlZjUuZmlsbCxcbiAgICBmaWxsID0gX3JlZjUkZmlsbCA9PT0gdm9pZCAwID8gREVGQVVMVF9GSUxMIDogX3JlZjUkZmlsbCxcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmNSwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHdvcmRzQnlMaW5lcyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRXb3Jkc0J5TGluZXMoe1xuICAgICAgYnJlYWtBbGw6IHByb3BzLmJyZWFrQWxsLFxuICAgICAgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuLFxuICAgICAgbWF4TGluZXM6IHByb3BzLm1heExpbmVzLFxuICAgICAgc2NhbGVUb0ZpdDogc2NhbGVUb0ZpdCxcbiAgICAgIHN0eWxlOiBwcm9wcy5zdHlsZSxcbiAgICAgIHdpZHRoOiBwcm9wcy53aWR0aFxuICAgIH0pO1xuICB9LCBbcHJvcHMuYnJlYWtBbGwsIHByb3BzLmNoaWxkcmVuLCBwcm9wcy5tYXhMaW5lcywgc2NhbGVUb0ZpdCwgcHJvcHMuc3R5bGUsIHByb3BzLndpZHRoXSk7XG4gIHZhciBkeCA9IHByb3BzLmR4LFxuICAgIGR5ID0gcHJvcHMuZHksXG4gICAgYW5nbGUgPSBwcm9wcy5hbmdsZSxcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgYnJlYWtBbGwgPSBwcm9wcy5icmVha0FsbCxcbiAgICB0ZXh0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZDIpO1xuICBpZiAoIWlzTnVtT3JTdHIocHJvcHNYKSB8fCAhaXNOdW1PclN0cihwcm9wc1kpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIHggPSBwcm9wc1ggKyAoaXNOdW1iZXIoZHgpID8gZHggOiAwKTtcbiAgdmFyIHkgPSBwcm9wc1kgKyAoaXNOdW1iZXIoZHkpID8gZHkgOiAwKTtcbiAgdmFyIHN0YXJ0RHk7XG4gIHN3aXRjaCAodmVydGljYWxBbmNob3IpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBzdGFydER5ID0gcmVkdWNlQ1NTQ2FsYyhcImNhbGMoXCIuY29uY2F0KGNhcEhlaWdodCwgXCIpXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICBzdGFydER5ID0gcmVkdWNlQ1NTQ2FsYyhcImNhbGMoXCIuY29uY2F0KCh3b3Jkc0J5TGluZXMubGVuZ3RoIC0gMSkgLyAyLCBcIiAqIC1cIikuY29uY2F0KGxpbmVIZWlnaHQsIFwiICsgKFwiKS5jb25jYXQoY2FwSGVpZ2h0LCBcIiAvIDIpKVwiKSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhcnREeSA9IHJlZHVjZUNTU0NhbGMoXCJjYWxjKFwiLmNvbmNhdCh3b3Jkc0J5TGluZXMubGVuZ3RoIC0gMSwgXCIgKiAtXCIpLmNvbmNhdChsaW5lSGVpZ2h0LCBcIilcIikpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgdmFyIHRyYW5zZm9ybXMgPSBbXTtcbiAgaWYgKHNjYWxlVG9GaXQpIHtcbiAgICB2YXIgbGluZVdpZHRoID0gd29yZHNCeUxpbmVzWzBdLndpZHRoO1xuICAgIHZhciB3aWR0aCA9IHByb3BzLndpZHRoO1xuICAgIHRyYW5zZm9ybXMucHVzaChcInNjYWxlKFwiLmNvbmNhdCgoaXNOdW1iZXIod2lkdGgpID8gd2lkdGggLyBsaW5lV2lkdGggOiAxKSAvIGxpbmVXaWR0aCwgXCIpXCIpKTtcbiAgfVxuICBpZiAoYW5nbGUpIHtcbiAgICB0cmFuc2Zvcm1zLnB1c2goXCJyb3RhdGUoXCIuY29uY2F0KGFuZ2xlLCBcIiwgXCIpLmNvbmNhdCh4LCBcIiwgXCIpLmNvbmNhdCh5LCBcIilcIikpO1xuICB9XG4gIGlmICh0cmFuc2Zvcm1zLmxlbmd0aCkge1xuICAgIHRleHRQcm9wcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1zLmpvaW4oJyAnKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0XCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyh0ZXh0UHJvcHMsIHRydWUpLCB7XG4gICAgeDogeCxcbiAgICB5OiB5LFxuICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtdGV4dCcsIGNsYXNzTmFtZSksXG4gICAgdGV4dEFuY2hvcjogdGV4dEFuY2hvcixcbiAgICBmaWxsOiBmaWxsLmluY2x1ZGVzKCd1cmwnKSA/IERFRkFVTFRfRklMTCA6IGZpbGxcbiAgfSksIHdvcmRzQnlMaW5lcy5tYXAoZnVuY3Rpb24gKGxpbmUsIGluZGV4KSB7XG4gICAgdmFyIHdvcmRzID0gbGluZS53b3Jkcy5qb2luKGJyZWFrQWxsID8gJycgOiAnICcpO1xuICAgIHJldHVybiAoXG4gICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAvLyBkdXBsaWNhdGUgd29yZHMgd2lsbCBjYXVzZSBkdXBsaWNhdGUga2V5c1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInRzcGFuXCIsIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgZHk6IGluZGV4ID09PSAwID8gc3RhcnREeSA6IGxpbmVIZWlnaHQsXG4gICAgICAgIGtleTogXCJcIi5jb25jYXQod29yZHMsIFwiLVwiKS5jb25jYXQoaW5kZXgpXG4gICAgICB9LCB3b3JkcylcbiAgICApO1xuICB9KSk7XG59OyJdLCJuYW1lcyI6WyJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiciIsImwiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJlIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJpc0FycmF5IiwiUmVhY3QiLCJ1c2VNZW1vIiwiaXNOaWwiLCJjbHN4IiwiaXNOdW1iZXIiLCJpc051bU9yU3RyIiwiR2xvYmFsIiwiZmlsdGVyUHJvcHMiLCJnZXRTdHJpbmdTaXplIiwicmVkdWNlQ1NTQ2FsYyIsIkJSRUFLSU5HX1NQQUNFUyIsImNhbGN1bGF0ZVdvcmRXaWR0aHMiLCJfcmVmIiwiY2hpbGRyZW4iLCJicmVha0FsbCIsInN0eWxlIiwid29yZHMiLCJzcGxpdCIsIndvcmRzV2l0aENvbXB1dGVkV2lkdGgiLCJtYXAiLCJ3b3JkIiwid2lkdGgiLCJzcGFjZVdpZHRoIiwiY2FsY3VsYXRlV29yZHNCeUxpbmVzIiwiX3JlZjIiLCJpbml0aWFsV29yZHNXaXRoQ29tcHV0ZWRXaXRoIiwibGluZVdpZHRoIiwic2NhbGVUb0ZpdCIsIm1heExpbmVzIiwic2hvdWxkTGltaXRMaW5lcyIsInRleHQiLCJjYWxjdWxhdGUiLCJ1bmRlZmluZWQiLCJyZWR1Y2UiLCJyZXN1bHQiLCJfcmVmMyIsImN1cnJlbnRMaW5lIiwiTnVtYmVyIiwibmV3TGluZSIsIm9yaWdpbmFsUmVzdWx0IiwiZmluZExvbmdlc3RMaW5lIiwiYiIsInN1ZmZpeCIsImNoZWNrT3ZlcmZsb3ciLCJpbmRleCIsInRlbXBUZXh0IiwiZG9lc092ZXJmbG93Iiwic3RhcnQiLCJlbmQiLCJpdGVyYXRpb25zIiwidHJpbW1lZFJlc3VsdCIsIm1pZGRsZSIsIk1hdGgiLCJmbG9vciIsInByZXYiLCJfY2hlY2tPdmVyZmxvdyIsIl9jaGVja092ZXJmbG93MiIsImRvZXNQcmV2T3ZlcmZsb3ciLCJfY2hlY2tPdmVyZmxvdzMiLCJfY2hlY2tPdmVyZmxvdzQiLCJkb2VzTWlkZGxlT3ZlcmZsb3ciLCJnZXRXb3Jkc1dpdGhvdXRDYWxjdWxhdGUiLCJnZXRXb3Jkc0J5TGluZXMiLCJfcmVmNCIsImlzU3NyIiwid29yZFdpZHRocyIsIndjdyIsInN3IiwiREVGQVVMVF9GSUxMIiwiVGV4dCIsIl9yZWY1IiwiX3JlZjUkeCIsIngiLCJwcm9wc1giLCJfcmVmNSR5IiwieSIsInByb3BzWSIsIl9yZWY1JGxpbmVIZWlnaHQiLCJsaW5lSGVpZ2h0IiwiX3JlZjUkY2FwSGVpZ2h0IiwiY2FwSGVpZ2h0IiwiX3JlZjUkc2NhbGVUb0ZpdCIsIl9yZWY1JHRleHRBbmNob3IiLCJ0ZXh0QW5jaG9yIiwiX3JlZjUkdmVydGljYWxBbmNob3IiLCJ2ZXJ0aWNhbEFuY2hvciIsIl9yZWY1JGZpbGwiLCJmaWxsIiwicHJvcHMiLCJ3b3Jkc0J5TGluZXMiLCJkeCIsImR5IiwiYW5nbGUiLCJjbGFzc05hbWUiLCJ0ZXh0UHJvcHMiLCJzdGFydER5IiwiY29uY2F0IiwidHJhbnNmb3JtcyIsInRyYW5zZm9ybSIsImpvaW4iLCJjcmVhdGVFbGVtZW50IiwiaW5jbHVkZXMiLCJsaW5lIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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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O29CQUN6RWlFLFNBQVNPO2dCQUNYO1lBQ0Y7UUFDRjtLQUFFO0FBQ0osRUFBRWpDLGdEQUFhQSxFQUFFO0FBQ2pCakQsZ0JBQWdCOEQsU0FBUyxlQUFlO0FBQ3hDOUQsZ0JBQWdCOEQsU0FBUyxnQkFBZ0I7SUFDdkN3QixvQkFBb0I7SUFDcEJsQixvQkFBb0I7UUFDbEJtQixHQUFHO1FBQ0hDLEdBQUc7SUFDTDtJQUNBbkIsbUJBQW1CO0lBQ25CQyxpQkFBaUI7SUFDakJtQixjQUFjLENBQUM7SUFDZmxCLFlBQVk7UUFDVmdCLEdBQUc7UUFDSEMsR0FBRztJQUNMO0lBQ0FFLFFBQVE7SUFDUkMsYUFBYSxDQUFDO0lBQ2RuQixZQUFZO0lBQ1pDLG1CQUFtQixDQUFDckIsZ0RBQU1BLENBQUN3QyxLQUFLO0lBQ2hDQyxXQUFXLENBQUM7SUFDWkMsWUFBWSxDQUFDO0lBQ2JwQixRQUFRO0lBQ1JJLGtCQUFrQjtRQUNoQlMsR0FBRztRQUNIQyxHQUFHO0lBQ0w7SUFDQU8sV0FBVztJQUNYQyxTQUFTO0lBQ1RqQixnQkFBZ0I7SUFDaEJDLFNBQVM7UUFDUE8sR0FBRztRQUNIQyxHQUFHO1FBQ0hTLFFBQVE7UUFDUkMsT0FBTztJQUNUO0lBQ0FqQixjQUFjLENBQUM7QUFDakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9Ub29sdGlwLmpzP2EwZDciXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgVG9vbHRpcFxuICovXG5pbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IERlZmF1bHRUb29sdGlwQ29udGVudCB9IGZyb20gJy4vRGVmYXVsdFRvb2x0aXBDb250ZW50JztcbmltcG9ydCB7IFRvb2x0aXBCb3VuZGluZ0JveCB9IGZyb20gJy4vVG9vbHRpcEJvdW5kaW5nQm94JztcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4uL3V0aWwvR2xvYmFsJztcbmltcG9ydCB7IGdldFVuaXFQYXlsb2FkIH0gZnJvbSAnLi4vdXRpbC9wYXlsb2FkL2dldFVuaXFQYXlsb2FkJztcbmZ1bmN0aW9uIGRlZmF1bHRVbmlxQnkoZW50cnkpIHtcbiAgcmV0dXJuIGVudHJ5LmRhdGFLZXk7XG59XG5mdW5jdGlvbiByZW5kZXJDb250ZW50KGNvbnRlbnQsIHByb3BzKSB7XG4gIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNvbnRlbnQpKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY29udGVudCwgcHJvcHMpO1xuICB9XG4gIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChjb250ZW50LCBwcm9wcyk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KERlZmF1bHRUb29sdGlwQ29udGVudCwgcHJvcHMpO1xufVxuZXhwb3J0IHZhciBUb29sdGlwID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUHVyZUNvbXBvbmVudCkge1xuICBmdW5jdGlvbiBUb29sdGlwKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUb29sdGlwKTtcbiAgICByZXR1cm4gX2NhbGxTdXBlcih0aGlzLCBUb29sdGlwLCBhcmd1bWVudHMpO1xuICB9XG4gIF9pbmhlcml0cyhUb29sdGlwLCBfUHVyZUNvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoVG9vbHRpcCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBhY3RpdmUgPSBfdGhpcyRwcm9wcy5hY3RpdmUsXG4gICAgICAgIGFsbG93RXNjYXBlVmlld0JveCA9IF90aGlzJHByb3BzLmFsbG93RXNjYXBlVmlld0JveCxcbiAgICAgICAgYW5pbWF0aW9uRHVyYXRpb24gPSBfdGhpcyRwcm9wcy5hbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgYW5pbWF0aW9uRWFzaW5nID0gX3RoaXMkcHJvcHMuYW5pbWF0aW9uRWFzaW5nLFxuICAgICAgICBjb250ZW50ID0gX3RoaXMkcHJvcHMuY29udGVudCxcbiAgICAgICAgY29vcmRpbmF0ZSA9IF90aGlzJHByb3BzLmNvb3JkaW5hdGUsXG4gICAgICAgIGZpbHRlck51bGwgPSBfdGhpcyRwcm9wcy5maWx0ZXJOdWxsLFxuICAgICAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IF90aGlzJHByb3BzLmlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBvZmZzZXQgPSBfdGhpcyRwcm9wcy5vZmZzZXQsXG4gICAgICAgIHBheWxvYWQgPSBfdGhpcyRwcm9wcy5wYXlsb2FkLFxuICAgICAgICBwYXlsb2FkVW5pcUJ5ID0gX3RoaXMkcHJvcHMucGF5bG9hZFVuaXFCeSxcbiAgICAgICAgcG9zaXRpb24gPSBfdGhpcyRwcm9wcy5wb3NpdGlvbixcbiAgICAgICAgcmV2ZXJzZURpcmVjdGlvbiA9IF90aGlzJHByb3BzLnJldmVyc2VEaXJlY3Rpb24sXG4gICAgICAgIHVzZVRyYW5zbGF0ZTNkID0gX3RoaXMkcHJvcHMudXNlVHJhbnNsYXRlM2QsXG4gICAgICAgIHZpZXdCb3ggPSBfdGhpcyRwcm9wcy52aWV3Qm94LFxuICAgICAgICB3cmFwcGVyU3R5bGUgPSBfdGhpcyRwcm9wcy53cmFwcGVyU3R5bGU7XG4gICAgICB2YXIgZmluYWxQYXlsb2FkID0gcGF5bG9hZCAhPT0gbnVsbCAmJiBwYXlsb2FkICE9PSB2b2lkIDAgPyBwYXlsb2FkIDogW107XG4gICAgICBpZiAoZmlsdGVyTnVsbCAmJiBmaW5hbFBheWxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGZpbmFsUGF5bG9hZCA9IGdldFVuaXFQYXlsb2FkKHBheWxvYWQuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZSAhPSBudWxsICYmIChlbnRyeS5oaWRlICE9PSB0cnVlIHx8IF90aGlzLnByb3BzLmluY2x1ZGVIaWRkZW4pO1xuICAgICAgICB9KSwgcGF5bG9hZFVuaXFCeSwgZGVmYXVsdFVuaXFCeSk7XG4gICAgICB9XG4gICAgICB2YXIgaGFzUGF5bG9hZCA9IGZpbmFsUGF5bG9hZC5sZW5ndGggPiAwO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRvb2x0aXBCb3VuZGluZ0JveCwge1xuICAgICAgICBhbGxvd0VzY2FwZVZpZXdCb3g6IGFsbG93RXNjYXBlVmlld0JveCxcbiAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgICBhbmltYXRpb25FYXNpbmc6IGFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgaXNBbmltYXRpb25BY3RpdmU6IGlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBhY3RpdmU6IGFjdGl2ZSxcbiAgICAgICAgY29vcmRpbmF0ZTogY29vcmRpbmF0ZSxcbiAgICAgICAgaGFzUGF5bG9hZDogaGFzUGF5bG9hZCxcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgICAgcmV2ZXJzZURpcmVjdGlvbjogcmV2ZXJzZURpcmVjdGlvbixcbiAgICAgICAgdXNlVHJhbnNsYXRlM2Q6IHVzZVRyYW5zbGF0ZTNkLFxuICAgICAgICB2aWV3Qm94OiB2aWV3Qm94LFxuICAgICAgICB3cmFwcGVyU3R5bGU6IHdyYXBwZXJTdHlsZVxuICAgICAgfSwgcmVuZGVyQ29udGVudChjb250ZW50LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMucHJvcHMpLCB7fSwge1xuICAgICAgICBwYXlsb2FkOiBmaW5hbFBheWxvYWRcbiAgICAgIH0pKSk7XG4gICAgfVxuICB9XSk7XG59KFB1cmVDb21wb25lbnQpO1xuX2RlZmluZVByb3BlcnR5KFRvb2x0aXAsIFwiZGlzcGxheU5hbWVcIiwgJ1Rvb2x0aXAnKTtcbl9kZWZpbmVQcm9wZXJ0eShUb29sdGlwLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGFjY2Vzc2liaWxpdHlMYXllcjogZmFsc2UsXG4gIGFsbG93RXNjYXBlVmlld0JveDoge1xuICAgIHg6IGZhbHNlLFxuICAgIHk6IGZhbHNlXG4gIH0sXG4gIGFuaW1hdGlvbkR1cmF0aW9uOiA0MDAsXG4gIGFuaW1hdGlvbkVhc2luZzogJ2Vhc2UnLFxuICBjb250ZW50U3R5bGU6IHt9LFxuICBjb29yZGluYXRlOiB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH0sXG4gIGN1cnNvcjogdHJ1ZSxcbiAgY3Vyc29yU3R5bGU6IHt9LFxuICBmaWx0ZXJOdWxsOiB0cnVlLFxuICBpc0FuaW1hdGlvbkFjdGl2ZTogIUdsb2JhbC5pc1NzcixcbiAgaXRlbVN0eWxlOiB7fSxcbiAgbGFiZWxTdHlsZToge30sXG4gIG9mZnNldDogMTAsXG4gIHJldmVyc2VEaXJlY3Rpb246IHtcbiAgICB4OiBmYWxzZSxcbiAgICB5OiBmYWxzZVxuICB9LFxuICBzZXBhcmF0b3I6ICcgOiAnLFxuICB0cmlnZ2VyOiAnaG92ZXInLFxuICB1c2VUcmFuc2xhdGUzZDogZmFsc2UsXG4gIHZpZXdCb3g6IHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIHdpZHRoOiAwXG4gIH0sXG4gIHdyYXBwZXJTdHlsZToge31cbn0pOyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImkiLCJkZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsImNhbGwiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiX19wcm90b19fIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJwIiwib2JqIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJEZWZhdWx0VG9vbHRpcENvbnRlbnQiLCJUb29sdGlwQm91bmRpbmdCb3giLCJHbG9iYWwiLCJnZXRVbmlxUGF5bG9hZCIsImRlZmF1bHRVbmlxQnkiLCJlbnRyeSIsImRhdGFLZXkiLCJyZW5kZXJDb250ZW50IiwiY29udGVudCIsImlzVmFsaWRFbGVtZW50IiwiY2xvbmVFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIlRvb2x0aXAiLCJfUHVyZUNvbXBvbmVudCIsInJlbmRlciIsIl90aGlzIiwiX3RoaXMkcHJvcHMiLCJhY3RpdmUiLCJhbGxvd0VzY2FwZVZpZXdCb3giLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkVhc2luZyIsImNvb3JkaW5hdGUiLCJmaWx0ZXJOdWxsIiwiaXNBbmltYXRpb25BY3RpdmUiLCJvZmZzZXQiLCJwYXlsb2FkIiwicGF5bG9hZFVuaXFCeSIsInBvc2l0aW9uIiwicmV2ZXJzZURpcmVjdGlvbiIsInVzZVRyYW5zbGF0ZTNkIiwidmlld0JveCIsIndyYXBwZXJTdHlsZSIsImZpbmFsUGF5bG9hZCIsImhpZGUiLCJpbmNsdWRlSGlkZGVuIiwiaGFzUGF5bG9hZCIsImFjY2Vzc2liaWxpdHlMYXllciIsIngiLCJ5IiwiY29udGVudFN0eWxlIiwiY3Vyc29yIiwiY3Vyc29yU3R5bGUiLCJpc1NzciIsIml0ZW1TdHlsZSIsImxhYmVsU3R5bGUiLCJzZXBhcmF0b3IiLCJ0cmlnZ2VyIiwiaGVpZ2h0Iiwid2lkdGgiXSwic291cmNlUm9vdCI6IiJ9\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/future/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9Ub29sdGlwQm91bmRpbmdCb3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMs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O2dCQUNSLEdBQUdaO2dCQUNILE9BQ0UsV0FBVyxHQUNYLG9EQUFvRDtnQkFDcEQscURBQXFEO2dCQUNyRHpELDBEQUFtQixDQUFDLE9BQU87b0JBQ3pCdUUsVUFBVSxDQUFDO29CQUNYQyxXQUFXWDtvQkFDWFksT0FBT1Y7b0JBQ1BXLEtBQUssU0FBU0EsSUFBSUMsSUFBSTt3QkFDcEIvQixPQUFPakIsV0FBVyxHQUFHZ0Q7b0JBQ3ZCO2dCQUNGLEdBQUcxQjtZQUVQO1FBQ0Y7S0FBRTtBQUNKLEVBQUVoRCxnREFBYUEsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY29tcG9uZW50L1Rvb2x0aXBCb3VuZGluZ0JveC5qcz80ZmQ4Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRUb29sdGlwVHJhbnNsYXRlIH0gZnJvbSAnLi4vdXRpbC90b29sdGlwL3RyYW5zbGF0ZSc7XG52YXIgRVBTSUxPTiA9IDE7XG5leHBvcnQgdmFyIFRvb2x0aXBCb3VuZGluZ0JveCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1B1cmVDb21wb25lbnQpIHtcbiAgZnVuY3Rpb24gVG9vbHRpcEJvdW5kaW5nQm94KCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVG9vbHRpcEJvdW5kaW5nQm94KTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX2NhbGxTdXBlcih0aGlzLCBUb29sdGlwQm91bmRpbmdCb3gsIFtdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInN0YXRlXCIsIHtcbiAgICAgIGRpc21pc3NlZDogZmFsc2UsXG4gICAgICBkaXNtaXNzZWRBdENvb3JkaW5hdGU6IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSxcbiAgICAgIGxhc3RCb3VuZGluZ0JveDoge1xuICAgICAgICB3aWR0aDogLTEsXG4gICAgICAgIGhlaWdodDogLTFcbiAgICAgIH1cbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiaGFuZGxlS2V5RG93blwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyRjb29yZGluYXQsIF90aGlzJHByb3BzJGNvb3JkaW5hdDIsIF90aGlzJHByb3BzJGNvb3JkaW5hdDMsIF90aGlzJHByb3BzJGNvb3JkaW5hdDQ7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBkaXNtaXNzZWQ6IHRydWUsXG4gICAgICAgICAgZGlzbWlzc2VkQXRDb29yZGluYXRlOiB7XG4gICAgICAgICAgICB4OiAoX3RoaXMkcHJvcHMkY29vcmRpbmF0ID0gKF90aGlzJHByb3BzJGNvb3JkaW5hdDIgPSBfdGhpcy5wcm9wcy5jb29yZGluYXRlKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRjb29yZGluYXQyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRjb29yZGluYXQyLngpICE9PSBudWxsICYmIF90aGlzJHByb3BzJGNvb3JkaW5hdCAhPT0gdm9pZCAwID8gX3RoaXMkcHJvcHMkY29vcmRpbmF0IDogMCxcbiAgICAgICAgICAgIHk6IChfdGhpcyRwcm9wcyRjb29yZGluYXQzID0gKF90aGlzJHByb3BzJGNvb3JkaW5hdDQgPSBfdGhpcy5wcm9wcy5jb29yZGluYXRlKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRjb29yZGluYXQ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRjb29yZGluYXQ0LnkpICE9PSBudWxsICYmIF90aGlzJHByb3BzJGNvb3JkaW5hdDMgIT09IHZvaWQgMCA/IF90aGlzJHByb3BzJGNvb3JkaW5hdDMgOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2luaGVyaXRzKFRvb2x0aXBCb3VuZGluZ0JveCwgX1B1cmVDb21wb25lbnQpO1xuICByZXR1cm4gX2NyZWF0ZUNsYXNzKFRvb2x0aXBCb3VuZGluZ0JveCwgW3tcbiAgICBrZXk6IFwidXBkYXRlQkJveFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVCQm94KCkge1xuICAgICAgaWYgKHRoaXMud3JhcHBlck5vZGUgJiYgdGhpcy53cmFwcGVyTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICAgICAgdmFyIGJveCA9IHRoaXMud3JhcHBlck5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChNYXRoLmFicyhib3gud2lkdGggLSB0aGlzLnN0YXRlLmxhc3RCb3VuZGluZ0JveC53aWR0aCkgPiBFUFNJTE9OIHx8IE1hdGguYWJzKGJveC5oZWlnaHQgLSB0aGlzLnN0YXRlLmxhc3RCb3VuZGluZ0JveC5oZWlnaHQpID4gRVBTSUxPTikge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgbGFzdEJvdW5kaW5nQm94OiB7XG4gICAgICAgICAgICAgIHdpZHRoOiBib3gud2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodDogYm94LmhlaWdodFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUubGFzdEJvdW5kaW5nQm94LndpZHRoICE9PSAtMSB8fCB0aGlzLnN0YXRlLmxhc3RCb3VuZGluZ0JveC5oZWlnaHQgIT09IC0xKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGxhc3RCb3VuZGluZ0JveDoge1xuICAgICAgICAgICAgd2lkdGg6IC0xLFxuICAgICAgICAgICAgaGVpZ2h0OiAtMVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gICAgICB0aGlzLnVwZGF0ZUJCb3goKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlEb3duKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyRjb29yZGluYXQ1LCBfdGhpcyRwcm9wcyRjb29yZGluYXQ2O1xuICAgICAgaWYgKHRoaXMucHJvcHMuYWN0aXZlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQkJveCgpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnN0YXRlLmRpc21pc3NlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoKChfdGhpcyRwcm9wcyRjb29yZGluYXQ1ID0gdGhpcy5wcm9wcy5jb29yZGluYXRlKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRjb29yZGluYXQ1ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRjb29yZGluYXQ1LngpICE9PSB0aGlzLnN0YXRlLmRpc21pc3NlZEF0Q29vcmRpbmF0ZS54IHx8ICgoX3RoaXMkcHJvcHMkY29vcmRpbmF0NiA9IHRoaXMucHJvcHMuY29vcmRpbmF0ZSkgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkY29vcmRpbmF0NiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkY29vcmRpbmF0Ni55KSAhPT0gdGhpcy5zdGF0ZS5kaXNtaXNzZWRBdENvb3JkaW5hdGUueSkge1xuICAgICAgICB0aGlzLnN0YXRlLmRpc21pc3NlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBhY3RpdmUgPSBfdGhpcyRwcm9wcy5hY3RpdmUsXG4gICAgICAgIGFsbG93RXNjYXBlVmlld0JveCA9IF90aGlzJHByb3BzLmFsbG93RXNjYXBlVmlld0JveCxcbiAgICAgICAgYW5pbWF0aW9uRHVyYXRpb24gPSBfdGhpcyRwcm9wcy5hbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgYW5pbWF0aW9uRWFzaW5nID0gX3RoaXMkcHJvcHMuYW5pbWF0aW9uRWFzaW5nLFxuICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzLmNoaWxkcmVuLFxuICAgICAgICBjb29yZGluYXRlID0gX3RoaXMkcHJvcHMuY29vcmRpbmF0ZSxcbiAgICAgICAgaGFzUGF5bG9hZCA9IF90aGlzJHByb3BzLmhhc1BheWxvYWQsXG4gICAgICAgIGlzQW5pbWF0aW9uQWN0aXZlID0gX3RoaXMkcHJvcHMuaXNBbmltYXRpb25BY3RpdmUsXG4gICAgICAgIG9mZnNldCA9IF90aGlzJHByb3BzLm9mZnNldCxcbiAgICAgICAgcG9zaXRpb24gPSBfdGhpcyRwcm9wcy5wb3NpdGlvbixcbiAgICAgICAgcmV2ZXJzZURpcmVjdGlvbiA9IF90aGlzJHByb3BzLnJldmVyc2VEaXJlY3Rpb24sXG4gICAgICAgIHVzZVRyYW5zbGF0ZTNkID0gX3RoaXMkcHJvcHMudXNlVHJhbnNsYXRlM2QsXG4gICAgICAgIHZpZXdCb3ggPSBfdGhpcyRwcm9wcy52aWV3Qm94LFxuICAgICAgICB3cmFwcGVyU3R5bGUgPSBfdGhpcyRwcm9wcy53cmFwcGVyU3R5bGU7XG4gICAgICB2YXIgX2dldFRvb2x0aXBUcmFuc2xhdGUgPSBnZXRUb29sdGlwVHJhbnNsYXRlKHtcbiAgICAgICAgICBhbGxvd0VzY2FwZVZpZXdCb3g6IGFsbG93RXNjYXBlVmlld0JveCxcbiAgICAgICAgICBjb29yZGluYXRlOiBjb29yZGluYXRlLFxuICAgICAgICAgIG9mZnNldFRvcExlZnQ6IG9mZnNldCxcbiAgICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgICAgcmV2ZXJzZURpcmVjdGlvbjogcmV2ZXJzZURpcmVjdGlvbixcbiAgICAgICAgICB0b29sdGlwQm94OiB0aGlzLnN0YXRlLmxhc3RCb3VuZGluZ0JveCxcbiAgICAgICAgICB1c2VUcmFuc2xhdGUzZDogdXNlVHJhbnNsYXRlM2QsXG4gICAgICAgICAgdmlld0JveDogdmlld0JveFxuICAgICAgICB9KSxcbiAgICAgICAgY3NzQ2xhc3NlcyA9IF9nZXRUb29sdGlwVHJhbnNsYXRlLmNzc0NsYXNzZXMsXG4gICAgICAgIGNzc1Byb3BlcnRpZXMgPSBfZ2V0VG9vbHRpcFRyYW5zbGF0ZS5jc3NQcm9wZXJ0aWVzO1xuICAgICAgdmFyIG91dGVyU3R5bGUgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB0cmFuc2l0aW9uOiBpc0FuaW1hdGlvbkFjdGl2ZSAmJiBhY3RpdmUgPyBcInRyYW5zZm9ybSBcIi5jb25jYXQoYW5pbWF0aW9uRHVyYXRpb24sIFwibXMgXCIpLmNvbmNhdChhbmltYXRpb25FYXNpbmcpIDogdW5kZWZpbmVkXG4gICAgICB9LCBjc3NQcm9wZXJ0aWVzKSwge30sIHtcbiAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICB2aXNpYmlsaXR5OiAhdGhpcy5zdGF0ZS5kaXNtaXNzZWQgJiYgYWN0aXZlICYmIGhhc1BheWxvYWQgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgbGVmdDogMFxuICAgICAgfSwgd3JhcHBlclN0eWxlKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgICAgLy8gVGhpcyBlbGVtZW50IGFsbG93IGxpc3RlbmluZyB0byB0aGUgYEVzY2FwZWAga2V5LlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlY2hhcnRzL3JlY2hhcnRzL3B1bGwvMjkyNVxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgICAgY2xhc3NOYW1lOiBjc3NDbGFzc2VzLFxuICAgICAgICAgIHN0eWxlOiBvdXRlclN0eWxlLFxuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKG5vZGUpIHtcbiAgICAgICAgICAgIF90aGlzMi53cmFwcGVyTm9kZSA9IG5vZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBjaGlsZHJlbilcbiAgICAgICk7XG4gICAgfVxuICB9XSk7XG59KFB1cmVDb21wb25lbnQpOyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImkiLCJkZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsImNhbGwiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiX19wcm90b19fIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJwIiwib2JqIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJnZXRUb29sdGlwVHJhbnNsYXRlIiwiRVBTSUxPTiIsIlRvb2x0aXBCb3VuZGluZ0JveCIsIl9QdXJlQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsImRpc21pc3NlZCIsImRpc21pc3NlZEF0Q29vcmRpbmF0ZSIsIngiLCJ5IiwibGFzdEJvdW5kaW5nQm94Iiwid2lkdGgiLCJoZWlnaHQiLCJldmVudCIsIl90aGlzJHByb3BzJGNvb3JkaW5hdCIsIl90aGlzJHByb3BzJGNvb3JkaW5hdDIiLCJfdGhpcyRwcm9wcyRjb29yZGluYXQzIiwiX3RoaXMkcHJvcHMkY29vcmRpbmF0NCIsInNldFN0YXRlIiwiY29vcmRpbmF0ZSIsInVwZGF0ZUJCb3giLCJ3cmFwcGVyTm9kZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImJveCIsIk1hdGgiLCJhYnMiLCJzdGF0ZSIsImNvbXBvbmVudERpZE1vdW50IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiaGFuZGxlS2V5RG93biIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBvbmVudERpZFVwZGF0ZSIsIl90aGlzJHByb3BzJGNvb3JkaW5hdDUiLCJfdGhpcyRwcm9wcyRjb29yZGluYXQ2IiwiYWN0aXZlIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMiLCJhbGxvd0VzY2FwZVZpZXdCb3giLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkVhc2luZyIsImNoaWxkcmVuIiwiaGFzUGF5bG9hZCIsImlzQW5pbWF0aW9uQWN0aXZlIiwib2Zmc2V0IiwicG9zaXRpb24iLCJyZXZlcnNlRGlyZWN0aW9uIiwidXNlVHJhbnNsYXRlM2QiLCJ2aWV3Qm94Iiwid3JhcHBlclN0eWxlIiwiX2dldFRvb2x0aXBUcmFuc2xhdGUiLCJvZmZzZXRUb3BMZWZ0IiwidG9vbHRpcEJveCIsImNzc0NsYXNzZXMiLCJjc3NQcm9wZXJ0aWVzIiwib3V0ZXJTdHlsZSIsInRyYW5zaXRpb24iLCJ1bmRlZmluZWQiLCJwb2ludGVyRXZlbnRzIiwidmlzaWJpbGl0eSIsInRvcCIsImxlZnQiLCJjcmVhdGVFbGVtZW50IiwidGFiSW5kZXgiLCJjbGFzc05hbWUiLCJzdHlsZSIsInJlZiIsIm5vZGUiXSwic291cmNlUm9vdCI6IiJ9\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/future/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbnRhaW5lci9MYXllci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUlBLFlBQVk7SUFBQztJQUFZO0NBQVk7QUFDekMsU0FBU0M7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTYSxLQUFLLENBQUMsSUFBSSxFQUFFUDtBQUFZO0FBQ2xWLFNBQVNRLHlCQUF5Qk4sTUFBTSxFQUFFTyxRQUFRO0lBQUksSUFBSVAsVUFBVSxNQUFNLE9BQU8sQ0FBQztJQUFHLElBQUlKLFNBQVNZLDhCQUE4QlIsUUFBUU87SUFBVyxJQUFJTixLQUFLSjtJQUFHLElBQUlKLE9BQU9nQixxQkFBcUIsRUFBRTtRQUFFLElBQUlDLG1CQUFtQmpCLE9BQU9nQixxQkFBcUIsQ0FBQ1Q7UUFBUyxJQUFLSCxJQUFJLEdBQUdBLElBQUlhLGlCQUFpQlgsTUFBTSxFQUFFRixJQUFLO1lBQUVJLE1BQU1TLGdCQUFnQixDQUFDYixFQUFFO1lBQUUsSUFBSVUsU0FBU0ksT0FBTyxDQUFDVixRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNSLE9BQU9TLFNBQVMsQ0FBQ1Usb0JBQW9CLENBQUNSLElBQUksQ0FBQ0osUUFBUUMsTUFBTTtZQUFVTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO1FBQUU7SUFBRTtJQUFFLE9BQU9MO0FBQVE7QUFDM2UsU0FBU1ksOEJBQThCUixNQUFNLEVBQUVPLFFBQVE7SUFBSSxJQUFJUCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUosU0FBUyxDQUFDO0lBQUcsSUFBSyxJQUFJSyxPQUFPRCxPQUFRO1FBQUUsSUFBSVAsT0FBT1MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ0osUUFBUUMsTUFBTTtZQUFFLElBQUlNLFNBQVNJLE9BQU8sQ0FBQ1YsUUFBUSxHQUFHO1lBQVVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7UUFBRTtJQUFFO0lBQUUsT0FBT0w7QUFBUTtBQUM1UDtBQUNGO0FBQ3lCO0FBQzFDLElBQUlvQixRQUFRLFdBQVcsR0FBRUgsdURBQWdCLENBQUMsU0FBVUssS0FBSyxFQUFFQyxHQUFHO0lBQ25FLElBQUlDLFdBQVdGLE1BQU1FLFFBQVEsRUFDM0JDLFlBQVlILE1BQU1HLFNBQVMsRUFDM0JDLFNBQVNoQix5QkFBeUJZLE9BQU8zQjtJQUMzQyxJQUFJZ0MsYUFBYVQsZ0RBQUlBLENBQUMsa0JBQWtCTztJQUN4QyxPQUFPLFdBQVcsR0FBRVIsMERBQW1CLENBQUMsS0FBS3JCLFNBQVM7UUFDcEQ2QixXQUFXRTtJQUNiLEdBQUdSLDZEQUFXQSxDQUFDTyxRQUFRLE9BQU87UUFDNUJILEtBQUtBO0lBQ1AsSUFBSUM7QUFDTixHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb250YWluZXIvTGF5ZXIuanM/NzM1MiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIl07XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5leHBvcnQgdmFyIExheWVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgIG90aGVycyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1sYXllcicsIGNsYXNzTmFtZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzc1xuICB9LCBmaWx0ZXJQcm9wcyhvdGhlcnMsIHRydWUpLCB7XG4gICAgcmVmOiByZWZcbiAgfSksIGNoaWxkcmVuKTtcbn0pOyJdLCJuYW1lcyI6WyJfZXhjbHVkZWQiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIlJlYWN0IiwiY2xzeCIsImZpbHRlclByb3BzIiwiTGF5ZXIiLCJmb3J3YXJkUmVmIiwicHJvcHMiLCJyZWYiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIm90aGVycyIsImxheWVyQ2xhc3MiLCJjcmVhdGVFbGVtZW50Il0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbnRhaW5lci9TdXJmYWNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0lBQVk7SUFBUztJQUFVO0lBQVc7SUFBYTtJQUFTO0lBQVM7Q0FBTztBQUNqRyxTQUFTQztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9TLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNhLEtBQUssQ0FBQyxJQUFJLEVBQUVQO0FBQVk7QUFDbFYsU0FBU1EseUJBQXlCTixNQUFNLEVBQUVPLFFBQVE7SUFBSSxJQUFJUCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUosU0FBU1ksOEJBQThCUixRQUFRTztJQUFXLElBQUlOLEtBQUtKO0lBQUcsSUFBSUosT0FBT2dCLHFCQUFxQixFQUFFO1FBQUUsSUFBSUMsbUJBQW1CakIsT0FBT2dCLHFCQUFxQixDQUFDVDtRQUFTLElBQUtILElBQUksR0FBR0EsSUFBSWEsaUJBQWlCWCxNQUFNLEVBQUVGLElBQUs7WUFBRUksTUFBTVMsZ0JBQWdCLENBQUNiLEVBQUU7WUFBRSxJQUFJVSxTQUFTSSxPQUFPLENBQUNWLFFBQVEsR0FBRztZQUFVLElBQUksQ0FBQ1IsT0FBT1MsU0FBUyxDQUFDVSxvQkFBb0IsQ0FBQ1IsSUFBSSxDQUFDSixRQUFRQyxNQUFNO1lBQVVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7UUFBRTtJQUFFO0lBQUUsT0FBT0w7QUFBUTtBQUMzZSxTQUFTWSw4QkFBOEJSLE1BQU0sRUFBRU8sUUFBUTtJQUFJLElBQUlQLFVBQVUsTUFBTSxPQUFPLENBQUM7SUFBRyxJQUFJSixTQUFTLENBQUM7SUFBRyxJQUFLLElBQUlLLE9BQU9ELE9BQVE7UUFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO1lBQUUsSUFBSU0sU0FBU0ksT0FBTyxDQUFDVixRQUFRLEdBQUc7WUFBVUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtRQUFFO0lBQUU7SUFBRSxPQUFPTDtBQUFRO0FBQ3RSOztDQUVDLEdBQ3lCO0FBQ0Y7QUFDeUI7QUFDMUMsU0FBU29CLFFBQVFDLEtBQUs7SUFDM0IsSUFBSUMsV0FBV0QsTUFBTUMsUUFBUSxFQUMzQkMsUUFBUUYsTUFBTUUsS0FBSyxFQUNuQkMsU0FBU0gsTUFBTUcsTUFBTSxFQUNyQkMsVUFBVUosTUFBTUksT0FBTyxFQUN2QkMsWUFBWUwsTUFBTUssU0FBUyxFQUMzQkMsUUFBUU4sTUFBTU0sS0FBSyxFQUNuQkMsUUFBUVAsTUFBTU8sS0FBSyxFQUNuQkMsT0FBT1IsTUFBTVEsSUFBSSxFQUNqQkMsU0FBU3BCLHlCQUF5QlcsT0FBTzFCO0lBQzNDLElBQUlvQyxVQUFVTixXQUFXO1FBQ3ZCRixPQUFPQTtRQUNQQyxRQUFRQTtRQUNSUSxHQUFHO1FBQ0hDLEdBQUc7SUFDTDtJQUNBLElBQUlDLGFBQWFoQixnREFBSUEsQ0FBQyxvQkFBb0JRO0lBQzFDLE9BQU8sV0FBVyxHQUFFVCwwREFBbUIsQ0FBQyxPQUFPckIsU0FBUyxDQUFDLEdBQUd1Qiw2REFBV0EsQ0FBQ1csUUFBUSxNQUFNLFFBQVE7UUFDNUZKLFdBQVdRO1FBQ1hYLE9BQU9BO1FBQ1BDLFFBQVFBO1FBQ1JHLE9BQU9BO1FBQ1BGLFNBQVMsR0FBR1csTUFBTSxDQUFDTCxRQUFRQyxDQUFDLEVBQUUsS0FBS0ksTUFBTSxDQUFDTCxRQUFRRSxDQUFDLEVBQUUsS0FBS0csTUFBTSxDQUFDTCxRQUFRUixLQUFLLEVBQUUsS0FBS2EsTUFBTSxDQUFDTCxRQUFRUCxNQUFNO0lBQzVHLElBQUksV0FBVyxHQUFFUCwwREFBbUIsQ0FBQyxTQUFTLE1BQU1XLFFBQVEsV0FBVyxHQUFFWCwwREFBbUIsQ0FBQyxRQUFRLE1BQU1ZLE9BQU9QO0FBQ3BIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb250YWluZXIvU3VyZmFjZS5qcz8wNjk4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwidmlld0JveFwiLCBcImNsYXNzTmFtZVwiLCBcInN0eWxlXCIsIFwidGl0bGVcIiwgXCJkZXNjXCJdO1xuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFN1cmZhY2VcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuZXhwb3J0IGZ1bmN0aW9uIFN1cmZhY2UocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgdmlld0JveCA9IHByb3BzLnZpZXdCb3gsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgdGl0bGUgPSBwcm9wcy50aXRsZSxcbiAgICBkZXNjID0gcHJvcHMuZGVzYyxcbiAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCk7XG4gIHZhciBzdmdWaWV3ID0gdmlld0JveCB8fCB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuICB2YXIgbGF5ZXJDbGFzcyA9IGNsc3goJ3JlY2hhcnRzLXN1cmZhY2UnLCBjbGFzc05hbWUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKG90aGVycywgdHJ1ZSwgJ3N2ZycpLCB7XG4gICAgY2xhc3NOYW1lOiBsYXllckNsYXNzLFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICBzdHlsZTogc3R5bGUsXG4gICAgdmlld0JveDogXCJcIi5jb25jYXQoc3ZnVmlldy54LCBcIiBcIikuY29uY2F0KHN2Z1ZpZXcueSwgXCIgXCIpLmNvbmNhdChzdmdWaWV3LndpZHRoLCBcIiBcIikuY29uY2F0KHN2Z1ZpZXcuaGVpZ2h0KVxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0aXRsZVwiLCBudWxsLCB0aXRsZSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVzY1wiLCBudWxsLCBkZXNjKSwgY2hpbGRyZW4pO1xufSJdLCJuYW1lcyI6WyJfZXhjbHVkZWQiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIlJlYWN0IiwiY2xzeCIsImZpbHRlclByb3BzIiwiU3VyZmFjZSIsInByb3BzIiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsInZpZXdCb3giLCJjbGFzc05hbWUiLCJzdHlsZSIsInRpdGxlIiwiZGVzYyIsIm90aGVycyIsInN2Z1ZpZXciLCJ4IiwieSIsImxheWVyQ2xhc3MiLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0Il0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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 \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 \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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VyxDQUFBQSxZQUFZLElBQUcsSUFBS21CLEtBQXFDLEdBQUdyQywwREFBU0EsQ0FBQyxPQUFPLHlHQUF5R0EsQ0FBZ0IsR0FBRyxLQUFLO0lBQ2hOLElBQUlpRCxRQUFRL0IsUUFBUSxDQUFDOEIsUUFBUTtJQUM3QixDQUFFQyxDQUFBQSxTQUFTLElBQUcsSUFBS1osS0FBcUMsR0FBR3JDLDBEQUFTQSxDQUFDLE9BQU8sK0JBQWdDa0MsTUFBTSxDQUFDYyxTQUFTLE9BQVFkLE1BQU0sQ0FBQzNDLFFBQVF5RCxVQUFVLE9BQU9kLE1BQU0sQ0FBQ0wsZ0JBQWdCWCxjQUFjbEIsQ0FBZ0IsR0FBRyxLQUFLO0lBQ2pPLE9BQU9pRDtBQUNULEVBQUU7QUFDSyxJQUFJQyxhQUFhLFNBQVNBO0lBQy9CLElBQUkxQixVQUFVekIsaURBQVVBLENBQUNTO0lBQ3pCLE9BQU9nQjtBQUNULEVBQUU7QUFDSyxJQUFJMkIsWUFBWSxTQUFTQTtJQUM5QixPQUFPcEQsaURBQVVBLENBQUNVO0FBQ3BCLEVBQUU7QUFDSyxJQUFJMkMsZ0JBQWdCLFNBQVNBO0lBQ2xDLE9BQU9yRCxpREFBVUEsQ0FBQ2E7QUFDcEIsRUFBRTtBQUNLLElBQUl5QyxpQkFBaUIsU0FBU0E7SUFDbkMsT0FBT3RELGlEQUFVQSxDQUFDWTtBQUNwQixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb250ZXh0L2NoYXJ0TGF5b3V0Q29udGV4dC5qcz83YmMwIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGludmFyaWFudCBmcm9tICd0aW55LWludmFyaWFudCc7XG5pbXBvcnQgZmluZCBmcm9tICdsb2Rhc2gvZmluZCc7XG5pbXBvcnQgZXZlcnkgZnJvbSAnbG9kYXNoL2V2ZXJ5JztcbmltcG9ydCB7IGNhbGN1bGF0ZVZpZXdCb3ggfSBmcm9tICcuLi91dGlsL2NhbGN1bGF0ZVZpZXdCb3gnO1xuaW1wb3J0IHsgZ2V0QW55RWxlbWVudE9mT2JqZWN0IH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuZXhwb3J0IHZhciBYQXhpc0NvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dCh1bmRlZmluZWQpO1xuZXhwb3J0IHZhciBZQXhpc0NvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dCh1bmRlZmluZWQpO1xuZXhwb3J0IHZhciBWaWV3Qm94Q29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG5leHBvcnQgdmFyIE9mZnNldENvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dCh7fSk7XG5leHBvcnQgdmFyIENsaXBQYXRoSWRDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcbmV4cG9ydCB2YXIgQ2hhcnRIZWlnaHRDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQoMCk7XG5leHBvcnQgdmFyIENoYXJ0V2lkdGhDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQoMCk7XG5cbi8qKlxuICogV2lsbCBhZGQgYWxsIHRoZSBwcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIHJlbmRlciBhbGwgaW5kaXZpZHVhbCBSZWNoYXJ0cyBjb21wb25lbnRzIGludG8gYSBSZWFjdCBDb250ZXh0LlxuICpcbiAqIElmIHlvdSB3YW50IHRvIHJlYWQgdGhlc2UgcHJvcGVydGllcywgc2VlIHRoZSBjb2xsZWN0aW9uIG9mIGhvb2tzIGV4cG9ydGVkIGZyb20gdGhpcyBmaWxlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBDYXRlZ29yaWNhbENoYXJ0U3RhdGUsIHBsdXMgY2hpbGRyZW5cbiAqIEByZXR1cm5zIHtSZWFjdEVsZW1lbnR9IFJlYWN0IENvbnRleHQgUHJvdmlkZXJcbiAqL1xuZXhwb3J0IHZhciBDaGFydExheW91dENvbnRleHRQcm92aWRlciA9IGZ1bmN0aW9uIENoYXJ0TGF5b3V0Q29udGV4dFByb3ZpZGVyKHByb3BzKSB7XG4gIHZhciBfcHJvcHMkc3RhdGUgPSBwcm9wcy5zdGF0ZSxcbiAgICB4QXhpc01hcCA9IF9wcm9wcyRzdGF0ZS54QXhpc01hcCxcbiAgICB5QXhpc01hcCA9IF9wcm9wcyRzdGF0ZS55QXhpc01hcCxcbiAgICBvZmZzZXQgPSBfcHJvcHMkc3RhdGUub2Zmc2V0LFxuICAgIGNsaXBQYXRoSWQgPSBwcm9wcy5jbGlwUGF0aElkLFxuICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQ7XG5cbiAgLyoqXG4gICAqIFBlcmhhcHMgd2Ugc2hvdWxkIGNvbXB1dGUgdGhpcyBwcm9wZXJ0eSB3aGVuIHJlYWRpbmc/IExldCdzIHNlZSB3aGF0IGlzIG1vcmUgb2Z0ZW4gdXNlZFxuICAgKi9cbiAgdmFyIHZpZXdCb3ggPSBjYWxjdWxhdGVWaWV3Qm94KG9mZnNldCk7XG5cbiAgLypcbiAgICogVGhpcyBwcmV0ZW5kcyB0byBiZSBhIHNpbmdsZSBjb250ZXh0IGJ1dCBhY3R1YWxseSBpcyBzcGxpdCBpbnRvIG11bHRpcGxlIHNtYWxsZXIgb25lcy5cbiAgICogV2h5P1xuICAgKiBCZWNhdXNlIG9uZSBSZWFjdCBDb250ZXh0IG9ubHkgYWxsb3dzIHRvIHNldCBvbmUgdmFsdWUuXG4gICAqIEJ1dCB3ZSBuZWVkIHRvIHNldCBtdWx0aXBsZSB2YWx1ZXMuXG4gICAqIElmIHdlIGRvIHRoYXQgd2l0aCBvbmUgY29udGV4dCwgdGhlbiB3ZSBmb3JjZSByZS1yZW5kZXIgb24gY29tcG9uZW50cyB0aGF0IG1pZ2h0IG5vdCBldmVuIGJlIGludGVyZXN0ZWRcbiAgICogaW4gdGhlIHBhcnQgb2YgdGhlIHN0YXRlIHRoYXQgaGFzIGNoYW5nZWQuXG4gICAqXG4gICAqIEJ5IHNwbGl0dGluZyBpbnRvIHNtYWxsZXIgY29udGV4dHMsIHdlIGFsbG93IGVhY2ggY29tcG9uZW50cyB0byBiZSBvcHRpbWl6ZWQgYW5kIG9ubHkgcmUtcmVuZGVyIHdoZW4gaXRzIGRlcGVuZGVuY2llcyBjaGFuZ2UuXG4gICAqXG4gICAqIFRvIGFjdHVhbGx5IGFjaGlldmUgdGhlIG9wdGltYWwgcmUtcmVuZGVyLCBpdCBpcyBuZWNlc3NhcnkgdG8gdXNlIFJlYWN0Lm1lbW8oKS5cbiAgICogU2VlIHRoZSB0ZXN0IGZpbGUgZm9yIGRldGFpbHMuXG4gICAqL1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoWEF4aXNDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IHhBeGlzTWFwXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFlBeGlzQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiB5QXhpc01hcFxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChPZmZzZXRDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IG9mZnNldFxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChWaWV3Qm94Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiB2aWV3Qm94XG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENsaXBQYXRoSWRDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNsaXBQYXRoSWRcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hhcnRIZWlnaHRDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGhlaWdodFxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDaGFydFdpZHRoQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiB3aWR0aFxuICB9LCBjaGlsZHJlbikpKSkpKSk7XG59O1xuZXhwb3J0IHZhciB1c2VDbGlwUGF0aElkID0gZnVuY3Rpb24gdXNlQ2xpcFBhdGhJZCgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoQ2xpcFBhdGhJZENvbnRleHQpO1xufTtcbmZ1bmN0aW9uIGdldEtleXNGb3JEZWJ1ZyhvYmplY3QpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ1RoZXJlIGFyZSBubyBhdmFpbGFibGUgaWRzLic7XG4gIH1cbiAgcmV0dXJuIFwiQXZhaWxhYmxlIGlkcyBhcmU6IFwiLmNvbmNhdChrZXlzLCBcIi5cIik7XG59XG5cbi8qKlxuICogVGhpcyBlaXRoZXIgZmluZHMgYW5kIHJldHVybnMgQXhpcyBieSB0aGUgc3BlY2lmaWVkIElELCBvciB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGFuIGF4aXMgd2l0aCB0aGlzIElEIGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSB4QXhpc0lkIGlkZW50aWZpZXIgb2YgdGhlIGF4aXMgLSBpdCdzIGVpdGhlciBhdXRvZ2VuZXJhdGVkICgnMCcpLCBvciBwYXNzZWQgdmlhIGBpZGAgcHJvcCBhcyA8WEF4aXMgaWQ9J2ZvbycgLz5cbiAqIEByZXR1cm5zIGF4aXMgY29uZmlndXJhdGlvbiBvYmplY3RcbiAqIEB0aHJvd3MgRXJyb3IgaWYgbm8gYXhpcyB3aXRoIHRoaXMgSUQgZXhpc3RzXG4gKi9cbmV4cG9ydCB2YXIgdXNlWEF4aXNPclRocm93ID0gZnVuY3Rpb24gdXNlWEF4aXNPclRocm93KHhBeGlzSWQpIHtcbiAgdmFyIHhBeGlzTWFwID0gdXNlQ29udGV4dChYQXhpc0NvbnRleHQpO1xuICAhKHhBeGlzTWFwICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ291bGQgbm90IGZpbmQgUmVjaGFydHMgY29udGV4dDsgYXJlIHlvdSBzdXJlIHRoaXMgaXMgcmVuZGVyZWQgaW5zaWRlIGEgUmVjaGFydHMgd3JhcHBlciBjb21wb25lbnQ/JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICB2YXIgeEF4aXMgPSB4QXhpc01hcFt4QXhpc0lkXTtcbiAgISh4QXhpcyAhPSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgXCJDb3VsZCBub3QgZmluZCB4QXhpcyBieSBpZCBcXFwiXCIuY29uY2F0KHhBeGlzSWQsIFwiXFxcIiBbXCIpLmNvbmNhdChfdHlwZW9mKHhBeGlzSWQpLCBcIl0uIFwiKS5jb25jYXQoZ2V0S2V5c0ZvckRlYnVnKHhBeGlzTWFwKSkpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgcmV0dXJuIHhBeGlzO1xufTtcblxuLyoqXG4gKiBUaGlzIHdpbGwgZmluZCBhbiBhcmJpdHJhcnkgZmlyc3QgWEF4aXMuIElmIHRoZXJlJ3MgZXhhY3RseSBvbmUgaXQgYWx3YXlzIHJldHVybnMgdGhhdCBvbmVcbiAqIC0gYnV0IGlmIHRoZXJlIGFyZSBtdWx0aXBsZSB0aGVuIGl0IGNhbiByZXR1cm4gYW55IG9mIHRob3NlLlxuICpcbiAqIElmIHlvdSB3YW50IHNwZWNpZmljIFhBeGlzIG91dCBvZiBtdWx0aXBsZSB0aGVuIHByZWZlciB1c2luZyB1c2VYQXhpc09yVGhyb3dcbiAqXG4gKiBAcmV0dXJucyBYIGF4aXNPcHRpb25zLCBvciB1bmRlZmluZWQgLSBpZiB0aGVyZSBhcmUgbm8gWCBheGVzXG4gKi9cbmV4cG9ydCB2YXIgdXNlQXJiaXRyYXJ5WEF4aXMgPSBmdW5jdGlvbiB1c2VBcmJpdHJhcnlYQXhpcygpIHtcbiAgdmFyIHhBeGlzTWFwID0gdXNlQ29udGV4dChYQXhpc0NvbnRleHQpO1xuICByZXR1cm4gZ2V0QW55RWxlbWVudE9mT2JqZWN0KHhBeGlzTWFwKTtcbn07XG5cbi8qKlxuICogVGhpcyB3aWxsIGZpbmQgYW4gYXJiaXRyYXJ5IGZpcnN0IFlBeGlzLiBJZiB0aGVyZSdzIGV4YWN0bHkgb25lIGl0IGFsd2F5cyByZXR1cm5zIHRoYXQgb25lXG4gKiAtIGJ1dCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdGhlbiBpdCBjYW4gcmV0dXJuIGFueSBvZiB0aG9zZS5cbiAqXG4gKiBJZiB5b3Ugd2FudCBzcGVjaWZpYyBZQXhpcyBvdXQgb2YgbXVsdGlwbGUgdGhlbiBwcmVmZXIgdXNpbmcgdXNlWEF4aXNPclRocm93XG4gKlxuICogQHJldHVybnMgWSBheGlzT3B0aW9ucywgb3IgdW5kZWZpbmVkIC0gaWYgdGhlcmUgYXJlIG5vIFkgYXhlc1xuICovXG5leHBvcnQgdmFyIHVzZUFyYml0cmFyeVlBeGlzID0gZnVuY3Rpb24gdXNlQXJiaXRyYXJ5WUF4aXMoKSB7XG4gIHZhciB5QXhpc01hcCA9IHVzZUNvbnRleHQoWUF4aXNDb250ZXh0KTtcbiAgcmV0dXJuIGdldEFueUVsZW1lbnRPZk9iamVjdCh5QXhpc01hcCk7XG59O1xuXG4vKipcbiAqIFRoaXMgaG9va3Mgd2lsbDpcbiAqIDFzdCBhdHRlbXB0IHRvIGZpbmQgYW4gWUF4aXMgdGhhdCBoYXMgYWxsIGVsZW1lbnRzIGluIGl0cyBkb21haW4gZmluaXRlXG4gKiBJZiBubyBzdWNoIGF4aXMgZXhpc3RzLCBpdCB3aWxsIHJldHVybiBhbiBhcmJpdHJhcnkgWUF4aXNcbiAqIGlmIHRoZXJlIGFyZSBubyBZIGF4ZXMgdGhlbiBpdCByZXR1cm5zIHVuZGVmaW5lZFxuICpcbiAqIEByZXR1cm5zIEVpdGhlciBZIGF4aXNPcHRpb25zLCBvciB1bmRlZmluZWQgaWYgdGhlcmUgYXJlIG5vIFkgYXhlc1xuICovXG5leHBvcnQgdmFyIHVzZVlBeGlzV2l0aEZpbml0ZURvbWFpbk9yUmFuZG9tID0gZnVuY3Rpb24gdXNlWUF4aXNXaXRoRmluaXRlRG9tYWluT3JSYW5kb20oKSB7XG4gIHZhciB5QXhpc01hcCA9IHVzZUNvbnRleHQoWUF4aXNDb250ZXh0KTtcbiAgdmFyIHlBeGlzV2l0aEZpbml0ZURvbWFpbiA9IGZpbmQoeUF4aXNNYXAsIGZ1bmN0aW9uIChheGlzKSB7XG4gICAgcmV0dXJuIGV2ZXJ5KGF4aXMuZG9tYWluLCBOdW1iZXIuaXNGaW5pdGUpO1xuICB9KTtcbiAgcmV0dXJuIHlBeGlzV2l0aEZpbml0ZURvbWFpbiB8fCBnZXRBbnlFbGVtZW50T2ZPYmplY3QoeUF4aXNNYXApO1xufTtcblxuLyoqXG4gKiBUaGlzIGVpdGhlciBmaW5kcyBhbmQgcmV0dXJucyBBeGlzIGJ5IHRoZSBzcGVjaWZpZWQgSUQsIG9yIHRocm93cyBhbiBleGNlcHRpb24gaWYgYW4gYXhpcyB3aXRoIHRoaXMgSUQgZG9lcyBub3QgZXhpc3QuXG4gKlxuICogQHBhcmFtIHlBeGlzSWQgaWRlbnRpZmllciBvZiB0aGUgYXhpcyAtIGl0J3MgZWl0aGVyIGF1dG9nZW5lcmF0ZWQgKCcwJyksIG9yIHBhc3NlZCB2aWEgYGlkYCBwcm9wIGFzIDxZQXhpcyBpZD0nZm9vJyAvPlxuICogQHJldHVybnMgYXhpcyBjb25maWd1cmF0aW9uIG9iamVjdFxuICogQHRocm93cyBFcnJvciBpZiBubyBheGlzIHdpdGggdGhpcyBJRCBleGlzdHNcbiAqL1xuZXhwb3J0IHZhciB1c2VZQXhpc09yVGhyb3cgPSBmdW5jdGlvbiB1c2VZQXhpc09yVGhyb3coeUF4aXNJZCkge1xuICB2YXIgeUF4aXNNYXAgPSB1c2VDb250ZXh0KFlBeGlzQ29udGV4dCk7XG4gICEoeUF4aXNNYXAgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDb3VsZCBub3QgZmluZCBSZWNoYXJ0cyBjb250ZXh0OyBhcmUgeW91IHN1cmUgdGhpcyBpcyByZW5kZXJlZCBpbnNpZGUgYSBSZWNoYXJ0cyB3cmFwcGVyIGNvbXBvbmVudD8nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHZhciB5QXhpcyA9IHlBeGlzTWFwW3lBeGlzSWRdO1xuICAhKHlBeGlzICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBcIkNvdWxkIG5vdCBmaW5kIHlBeGlzIGJ5IGlkIFxcXCJcIi5jb25jYXQoeUF4aXNJZCwgXCJcXFwiIFtcIikuY29uY2F0KF90eXBlb2YoeUF4aXNJZCksIFwiXS4gXCIpLmNvbmNhdChnZXRLZXlzRm9yRGVidWcoeUF4aXNNYXApKSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICByZXR1cm4geUF4aXM7XG59O1xuZXhwb3J0IHZhciB1c2VWaWV3Qm94ID0gZnVuY3Rpb24gdXNlVmlld0JveCgpIHtcbiAgdmFyIHZpZXdCb3ggPSB1c2VDb250ZXh0KFZpZXdCb3hDb250ZXh0KTtcbiAgcmV0dXJuIHZpZXdCb3g7XG59O1xuZXhwb3J0IHZhciB1c2VPZmZzZXQgPSBmdW5jdGlvbiB1c2VPZmZzZXQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KE9mZnNldENvbnRleHQpO1xufTtcbmV4cG9ydCB2YXIgdXNlQ2hhcnRXaWR0aCA9IGZ1bmN0aW9uIHVzZUNoYXJ0V2lkdGgoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KENoYXJ0V2lkdGhDb250ZXh0KTtcbn07XG5leHBvcnQgdmFyIHVzZUNoYXJ0SGVpZ2h0ID0gZnVuY3Rpb24gdXNlQ2hhcnRIZWlnaHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KENoYXJ0SGVpZ2h0Q29udGV4dCk7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiaW52YXJpYW50IiwiZmluZCIsImV2ZXJ5IiwiY2FsY3VsYXRlVmlld0JveCIsImdldEFueUVsZW1lbnRPZk9iamVjdCIsIlhBeGlzQ29udGV4dCIsInVuZGVmaW5lZCIsIllBeGlzQ29udGV4dCIsIlZpZXdCb3hDb250ZXh0IiwiT2Zmc2V0Q29udGV4dCIsIkNsaXBQYXRoSWRDb250ZXh0IiwiQ2hhcnRIZWlnaHRDb250ZXh0IiwiQ2hhcnRXaWR0aENvbnRleHQiLCJDaGFydExheW91dENvbnRleHRQcm92aWRlciIsInByb3BzIiwiX3Byb3BzJHN0YXRlIiwic3RhdGUiLCJ4QXhpc01hcCIsInlBeGlzTWFwIiwib2Zmc2V0IiwiY2xpcFBhdGhJZCIsImNoaWxkcmVuIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIiwidmFsdWUiLCJ1c2VDbGlwUGF0aElkIiwiZ2V0S2V5c0ZvckRlYnVnIiwib2JqZWN0Iiwia2V5cyIsIk9iamVjdCIsImxlbmd0aCIsImNvbmNhdCIsInVzZVhBeGlzT3JUaHJvdyIsInhBeGlzSWQiLCJwcm9jZXNzIiwieEF4aXMiLCJ1c2VBcmJpdHJhcnlYQXhpcyIsInVzZUFyYml0cmFyeVlBeGlzIiwidXNlWUF4aXNXaXRoRmluaXRlRG9tYWluT3JSYW5kb20iLCJ5QXhpc1dpdGhGaW5pdGVEb21haW4iLCJheGlzIiwiZG9tYWluIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJ1c2VZQXhpc09yVGhyb3ciLCJ5QXhpc0lkIiwieUF4aXMiLCJ1c2VWaWV3Qm94IiwidXNlT2Zmc2V0IiwidXNlQ2hhcnRXaWR0aCIsInVzZUNoYXJ0SGVpZ2h0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\n"); /***/ }), /***/ "(ssr)/./node_modules/recharts/es6/polar/Pie.js": /*!************************************************!*\ !*** ./node_modules/recharts/es6/polar/Pie.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 */ Pie: () => (/* binding */ Pie)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/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_13__ = __webpack_require__(/*! react-smooth */ \"(ssr)/./node_modules/react-smooth/es6/index.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_1__);\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 lodash_isFunction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\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_Curve__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../shape/Curve */ \"(ssr)/./node_modules/recharts/es6/shape/Curve.js\");\n/* harmony import */ var _component_Text__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../component/Text */ \"(ssr)/./node_modules/recharts/es6/component/Text.js\");\n/* harmony import */ var _component_Label__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../component/Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _component_LabelList__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../component/LabelList */ \"(ssr)/./node_modules/recharts/es6/component/LabelList.js\");\n/* harmony import */ var _component_Cell__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../component/Cell */ \"(ssr)/./node_modules/recharts/es6/component/Cell.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_Global__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_PolarUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.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_ChartUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../util/ActiveShapeUtils */ \"(ssr)/./node_modules/recharts/es6/util/ActiveShapeUtils.js\");\nvar _Pie;\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 Render sectors of a pie\n */ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Pie = /*#__PURE__*/ function(_PureComponent) {\n function Pie(props) {\n var _this;\n _classCallCheck(this, Pie);\n _this = _callSuper(this, Pie, [\n props\n ]);\n _defineProperty(_this, \"pieRef\", null);\n _defineProperty(_this, \"sectorRefs\", []);\n _defineProperty(_this, \"id\", (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.uniqueId)(\"recharts-pie-\"));\n _defineProperty(_this, \"handleAnimationEnd\", function() {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default()(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 (lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default()(onAnimationStart)) {\n onAnimationStart();\n }\n });\n _this.state = {\n isAnimationFinished: !props.isAnimationActive,\n prevIsAnimationActive: props.isAnimationActive,\n prevAnimationId: props.animationId,\n sectorToFocus: 0\n };\n return _this;\n }\n _inherits(Pie, _PureComponent);\n return _createClass(Pie, [\n {\n key: \"isActiveIndex\",\n value: function isActiveIndex(i) {\n var activeIndex = this.props.activeIndex;\n if (Array.isArray(activeIndex)) {\n return activeIndex.indexOf(i) !== -1;\n }\n return i === activeIndex;\n }\n },\n {\n key: \"hasActiveIndex\",\n value: function hasActiveIndex() {\n var activeIndex = this.props.activeIndex;\n return Array.isArray(activeIndex) ? activeIndex.length !== 0 : activeIndex || activeIndex === 0;\n }\n },\n {\n key: \"renderLabels\",\n value: function renderLabels(sectors) {\n var isAnimationActive = this.props.isAnimationActive;\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props = this.props, label = _this$props.label, labelLine = _this$props.labelLine, dataKey = _this$props.dataKey, valueKey = _this$props.valueKey;\n var pieProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.filterProps)(this.props, false);\n var customLabelProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.filterProps)(label, false);\n var customLabelLineProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.filterProps)(labelLine, false);\n var offsetRadius = label && label.offsetRadius || 20;\n var labels = sectors.map(function(entry, i) {\n var midAngle = (entry.startAngle + entry.endAngle) / 2;\n var endPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_8__.polarToCartesian)(entry.cx, entry.cy, entry.outerRadius + offsetRadius, midAngle);\n var labelProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieProps), entry), {}, {\n stroke: \"none\"\n }, customLabelProps), {}, {\n index: i,\n textAnchor: Pie.getTextAnchor(endPoint.x, entry.cx)\n }, endPoint);\n var lineProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieProps), entry), {}, {\n fill: \"none\",\n stroke: entry.fill\n }, customLabelLineProps), {}, {\n index: i,\n points: [\n (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_8__.polarToCartesian)(entry.cx, entry.cy, entry.outerRadius, midAngle),\n endPoint\n ]\n });\n var realDataKey = dataKey;\n // TODO: compatible to lower versions\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_3___default()(dataKey) && lodash_isNil__WEBPACK_IMPORTED_MODULE_3___default()(valueKey)) {\n realDataKey = \"value\";\n } else if (lodash_isNil__WEBPACK_IMPORTED_MODULE_3___default()(dataKey)) {\n realDataKey = valueKey;\n }\n return(/*#__PURE__*/ // eslint-disable-next-line react/no-array-index-key\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, {\n key: \"label-\".concat(entry.startAngle, \"-\").concat(entry.endAngle, \"-\").concat(entry.midAngle, \"-\").concat(i)\n }, labelLine && Pie.renderLabelLineItem(labelLine, lineProps, \"line\"), Pie.renderLabelItem(label, labelProps, (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_10__.getValueByDataKey)(entry, realDataKey))));\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, {\n className: \"recharts-pie-labels\"\n }, labels);\n }\n },\n {\n key: \"renderSectorsStatically\",\n value: function renderSectorsStatically(sectors) {\n var _this2 = this;\n var _this$props2 = this.props, activeShape = _this$props2.activeShape, blendStroke = _this$props2.blendStroke, inactiveShapeProp = _this$props2.inactiveShape;\n return sectors.map(function(entry, i) {\n if ((entry === null || entry === void 0 ? void 0 : entry.startAngle) === 0 && (entry === null || entry === void 0 ? void 0 : entry.endAngle) === 0 && sectors.length !== 1) return null;\n var isActive = _this2.isActiveIndex(i);\n var inactiveShape = inactiveShapeProp && _this2.hasActiveIndex() ? inactiveShapeProp : null;\n var sectorOptions = isActive ? activeShape : inactiveShape;\n var sectorProps = _objectSpread(_objectSpread({}, entry), {}, {\n stroke: blendStroke ? entry.fill : entry.stroke,\n tabIndex: -1\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, _extends({\n ref: function ref(_ref) {\n if (_ref && !_this2.sectorRefs.includes(_ref)) {\n _this2.sectorRefs.push(_ref);\n }\n },\n tabIndex: -1,\n className: \"recharts-pie-sector\"\n }, (0,_util_types__WEBPACK_IMPORTED_MODULE_11__.adaptEventsOfChild)(_this2.props, entry, i), {\n // eslint-disable-next-line react/no-array-index-key\n key: \"sector-\".concat(entry === null || entry === void 0 ? void 0 : entry.startAngle, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.endAngle, \"-\").concat(entry.midAngle, \"-\").concat(i)\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_12__.Shape, _extends({\n option: sectorOptions,\n isActive: isActive,\n shapeType: \"sector\"\n }, sectorProps)));\n });\n }\n },\n {\n key: \"renderSectorsWithAnimation\",\n value: function renderSectorsWithAnimation() {\n var _this3 = this;\n var _this$props3 = this.props, sectors = _this$props3.sectors, isAnimationActive = _this$props3.isAnimationActive, animationBegin = _this$props3.animationBegin, animationDuration = _this$props3.animationDuration, animationEasing = _this$props3.animationEasing, animationId = _this$props3.animationId;\n var _this$state = this.state, prevSectors = _this$state.prevSectors, prevIsAnimationActive = _this$state.prevIsAnimationActive;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_13__[\"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: \"pie-\".concat(animationId, \"-\").concat(prevIsAnimationActive),\n onAnimationStart: this.handleAnimationStart,\n onAnimationEnd: this.handleAnimationEnd\n }, function(_ref2) {\n var t = _ref2.t;\n var stepData = [];\n var first = sectors && sectors[0];\n var curAngle = first.startAngle;\n sectors.forEach(function(entry, index) {\n var prev = prevSectors && prevSectors[index];\n var paddingAngle = index > 0 ? lodash_get__WEBPACK_IMPORTED_MODULE_1___default()(entry, \"paddingAngle\", 0) : 0;\n if (prev) {\n var angleIp = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.interpolateNumber)(prev.endAngle - prev.startAngle, entry.endAngle - entry.startAngle);\n var latest = _objectSpread(_objectSpread({}, entry), {}, {\n startAngle: curAngle + paddingAngle,\n endAngle: curAngle + angleIp(t) + paddingAngle\n });\n stepData.push(latest);\n curAngle = latest.endAngle;\n } else {\n var endAngle = entry.endAngle, startAngle = entry.startAngle;\n var interpolatorAngle = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.interpolateNumber)(0, endAngle - startAngle);\n var deltaAngle = interpolatorAngle(t);\n var _latest = _objectSpread(_objectSpread({}, entry), {}, {\n startAngle: curAngle + paddingAngle,\n endAngle: curAngle + deltaAngle + paddingAngle\n });\n stepData.push(_latest);\n curAngle = _latest.endAngle;\n }\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, null, _this3.renderSectorsStatically(stepData));\n });\n }\n },\n {\n key: \"attachKeyboardHandlers\",\n value: function attachKeyboardHandlers(pieRef) {\n var _this4 = this;\n // eslint-disable-next-line no-param-reassign\n pieRef.onkeydown = function(e) {\n if (!e.altKey) {\n switch(e.key){\n case \"ArrowLeft\":\n {\n var next = ++_this4.state.sectorToFocus % _this4.sectorRefs.length;\n _this4.sectorRefs[next].focus();\n _this4.setState({\n sectorToFocus: next\n });\n break;\n }\n case \"ArrowRight\":\n {\n var _next = --_this4.state.sectorToFocus < 0 ? _this4.sectorRefs.length - 1 : _this4.state.sectorToFocus % _this4.sectorRefs.length;\n _this4.sectorRefs[_next].focus();\n _this4.setState({\n sectorToFocus: _next\n });\n break;\n }\n case \"Escape\":\n {\n _this4.sectorRefs[_this4.state.sectorToFocus].blur();\n _this4.setState({\n sectorToFocus: 0\n });\n break;\n }\n default:\n {\n // There is nothing to do here\n }\n }\n }\n };\n }\n },\n {\n key: \"renderSectors\",\n value: function renderSectors() {\n var _this$props4 = this.props, sectors = _this$props4.sectors, isAnimationActive = _this$props4.isAnimationActive;\n var prevSectors = this.state.prevSectors;\n if (isAnimationActive && sectors && sectors.length && (!prevSectors || !lodash_isEqual__WEBPACK_IMPORTED_MODULE_2___default()(prevSectors, sectors))) {\n return this.renderSectorsWithAnimation();\n }\n return this.renderSectorsStatically(sectors);\n }\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.pieRef) {\n this.attachKeyboardHandlers(this.pieRef);\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n var _this$props5 = this.props, hide = _this$props5.hide, sectors = _this$props5.sectors, className = _this$props5.className, label = _this$props5.label, cx = _this$props5.cx, cy = _this$props5.cy, innerRadius = _this$props5.innerRadius, outerRadius = _this$props5.outerRadius, isAnimationActive = _this$props5.isAnimationActive;\n var isAnimationFinished = this.state.isAnimationFinished;\n if (hide || !sectors || !sectors.length || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumber)(cx) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumber)(cy) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumber)(innerRadius) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumber)(outerRadius)) {\n return null;\n }\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(\"recharts-pie\", className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, {\n tabIndex: this.props.rootTabIndex,\n className: layerClass,\n ref: function ref(_ref3) {\n _this5.pieRef = _ref3;\n }\n }, this.renderSectors(), label && this.renderLabels(sectors), _component_Label__WEBPACK_IMPORTED_MODULE_14__.Label.renderCallByParent(this.props, null, false), (!isAnimationActive || isAnimationFinished) && _component_LabelList__WEBPACK_IMPORTED_MODULE_15__.LabelList.renderCallByParent(this.props, sectors, false));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (prevState.prevIsAnimationActive !== nextProps.isAnimationActive) {\n return {\n prevIsAnimationActive: nextProps.isAnimationActive,\n prevAnimationId: nextProps.animationId,\n curSectors: nextProps.sectors,\n prevSectors: [],\n isAnimationFinished: true\n };\n }\n if (nextProps.isAnimationActive && nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curSectors: nextProps.sectors,\n prevSectors: prevState.curSectors,\n isAnimationFinished: true\n };\n }\n if (nextProps.sectors !== prevState.curSectors) {\n return {\n curSectors: nextProps.sectors,\n isAnimationFinished: true\n };\n }\n return null;\n }\n },\n {\n key: \"getTextAnchor\",\n value: function getTextAnchor(x, cx) {\n if (x > cx) {\n return \"start\";\n }\n if (x < cx) {\n return \"end\";\n }\n return \"middle\";\n }\n },\n {\n key: \"renderLabelLineItem\",\n value: function renderLabelLineItem(option, props, key) {\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n }\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default()(option)) {\n return option(props);\n }\n var className = (0,clsx__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(\"recharts-pie-label-line\", typeof option !== \"boolean\" ? option.className : \"\");\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Curve__WEBPACK_IMPORTED_MODULE_16__.Curve, _extends({}, props, {\n key: key,\n type: \"linear\",\n className: className\n }));\n }\n },\n {\n key: \"renderLabelItem\",\n value: function renderLabelItem(option, props, value) {\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n }\n var label = value;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default()(option)) {\n label = option(props);\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(label)) {\n return label;\n }\n }\n var className = (0,clsx__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(\"recharts-pie-label-text\", typeof option !== \"boolean\" && !lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default()(option) ? option.className : \"\");\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Text__WEBPACK_IMPORTED_MODULE_17__.Text, _extends({}, props, {\n alignmentBaseline: \"middle\",\n className: className\n }), label);\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_Pie = Pie;\n_defineProperty(Pie, \"displayName\", \"Pie\");\n_defineProperty(Pie, \"defaultProps\", {\n stroke: \"#fff\",\n fill: \"#808080\",\n legendType: \"rect\",\n cx: \"50%\",\n cy: \"50%\",\n startAngle: 0,\n endAngle: 360,\n innerRadius: 0,\n outerRadius: \"80%\",\n paddingAngle: 0,\n labelLine: true,\n hide: false,\n minAngle: 0,\n isAnimationActive: !_util_Global__WEBPACK_IMPORTED_MODULE_18__.Global.isSsr,\n animationBegin: 400,\n animationDuration: 1500,\n animationEasing: \"ease\",\n nameKey: \"name\",\n blendStroke: false,\n rootTabIndex: 0\n});\n_defineProperty(Pie, \"parseDeltaAngle\", function(startAngle, endAngle) {\n var sign = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.mathSign)(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n});\n_defineProperty(Pie, \"getRealPieData\", function(itemProps) {\n var data = itemProps.data, children = itemProps.children;\n var presentationProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.filterProps)(itemProps, false);\n var cells = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.findAllByType)(children, _component_Cell__WEBPACK_IMPORTED_MODULE_19__.Cell);\n if (data && data.length) {\n return data.map(function(entry, index) {\n return _objectSpread(_objectSpread(_objectSpread({\n payload: entry\n }, presentationProps), entry), cells && cells[index] && cells[index].props);\n });\n }\n if (cells && cells.length) {\n return cells.map(function(cell) {\n return _objectSpread(_objectSpread({}, presentationProps), cell.props);\n });\n }\n return [];\n});\n_defineProperty(Pie, \"parseCoordinateOfPie\", function(itemProps, offset) {\n var top = offset.top, left = offset.left, width = offset.width, height = offset.height;\n var maxPieRadius = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_8__.getMaxRadius)(width, height);\n var cx = left + (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.getPercentValue)(itemProps.cx, width, width / 2);\n var cy = top + (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.getPercentValue)(itemProps.cy, height, height / 2);\n var innerRadius = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.getPercentValue)(itemProps.innerRadius, maxPieRadius, 0);\n var outerRadius = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.getPercentValue)(itemProps.outerRadius, maxPieRadius, maxPieRadius * 0.8);\n var maxRadius = itemProps.maxRadius || Math.sqrt(width * width + height * height) / 2;\n return {\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n maxRadius: maxRadius\n };\n});\n_defineProperty(Pie, \"getComposedData\", function(_ref4) {\n var item = _ref4.item, offset = _ref4.offset;\n var itemProps = item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var pieData = _Pie.getRealPieData(itemProps);\n if (!pieData || !pieData.length) {\n return null;\n }\n var cornerRadius = itemProps.cornerRadius, startAngle = itemProps.startAngle, endAngle = itemProps.endAngle, paddingAngle = itemProps.paddingAngle, dataKey = itemProps.dataKey, nameKey = itemProps.nameKey, valueKey = itemProps.valueKey, tooltipType = itemProps.tooltipType;\n var minAngle = Math.abs(itemProps.minAngle);\n var coordinate = _Pie.parseCoordinateOfPie(itemProps, offset);\n var deltaAngle = _Pie.parseDeltaAngle(startAngle, endAngle);\n var absDeltaAngle = Math.abs(deltaAngle);\n var realDataKey = dataKey;\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_3___default()(dataKey) && lodash_isNil__WEBPACK_IMPORTED_MODULE_3___default()(valueKey)) {\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_20__.warn)(false, 'Use \"dataKey\" to specify the value of pie,\\n the props \"valueKey\" will be deprecated in 1.1.0');\n realDataKey = \"value\";\n } else if (lodash_isNil__WEBPACK_IMPORTED_MODULE_3___default()(dataKey)) {\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_20__.warn)(false, 'Use \"dataKey\" to specify the value of pie,\\n the props \"valueKey\" will be deprecated in 1.1.0');\n realDataKey = valueKey;\n }\n var notZeroItemCount = pieData.filter(function(entry) {\n return (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_10__.getValueByDataKey)(entry, realDataKey, 0) !== 0;\n }).length;\n var totalPadingAngle = (absDeltaAngle >= 360 ? notZeroItemCount : notZeroItemCount - 1) * paddingAngle;\n var realTotalAngle = absDeltaAngle - notZeroItemCount * minAngle - totalPadingAngle;\n var sum = pieData.reduce(function(result, entry) {\n var val = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_10__.getValueByDataKey)(entry, realDataKey, 0);\n return result + ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumber)(val) ? val : 0);\n }, 0);\n var sectors;\n if (sum > 0) {\n var prev;\n sectors = pieData.map(function(entry, i) {\n var val = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_10__.getValueByDataKey)(entry, realDataKey, 0);\n var name = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_10__.getValueByDataKey)(entry, nameKey, i);\n var percent = ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumber)(val) ? val : 0) / sum;\n var tempStartAngle;\n if (i) {\n tempStartAngle = prev.endAngle + (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.mathSign)(deltaAngle) * paddingAngle * (val !== 0 ? 1 : 0);\n } else {\n tempStartAngle = startAngle;\n }\n var tempEndAngle = tempStartAngle + (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.mathSign)(deltaAngle) * ((val !== 0 ? minAngle : 0) + percent * realTotalAngle);\n var midAngle = (tempStartAngle + tempEndAngle) / 2;\n var middleRadius = (coordinate.innerRadius + coordinate.outerRadius) / 2;\n var tooltipPayload = [\n {\n name: name,\n value: val,\n payload: entry,\n dataKey: realDataKey,\n type: tooltipType\n }\n ];\n var tooltipPosition = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_8__.polarToCartesian)(coordinate.cx, coordinate.cy, middleRadius, midAngle);\n prev = _objectSpread(_objectSpread(_objectSpread({\n percent: percent,\n cornerRadius: cornerRadius,\n name: name,\n tooltipPayload: tooltipPayload,\n midAngle: midAngle,\n middleRadius: middleRadius,\n tooltipPosition: tooltipPosition\n }, entry), coordinate), {}, {\n value: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_10__.getValueByDataKey)(entry, realDataKey),\n startAngle: tempStartAngle,\n endAngle: tempEndAngle,\n payload: entry,\n paddingAngle: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.mathSign)(deltaAngle) * paddingAngle\n });\n return prev;\n });\n }\n return _objectSpread(_objectSpread({}, coordinate), {}, {\n sectors: sectors,\n data: pieData\n });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3BvbGFyL1BpZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJQTtBQUNKLFNBQVNDLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9GLFNBQVMsQ0FBQ1csY0FBYyxDQUFDQyxJQUFJLENBQUNILFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNZLEtBQUssQ0FBQyxJQUFJLEVBQUVOO0FBQVk7QUFDbFYsU0FBU08sUUFBUUMsQ0FBQyxFQUFFQyxDQUFDO0lBQUksSUFBSUMsSUFBSWYsT0FBT2dCLElBQUksQ0FBQ0g7SUFBSSxJQUFJYixPQUFPaUIscUJBQXFCLEVBQUU7UUFBRSxJQUFJdkIsSUFBSU0sT0FBT2lCLHFCQUFxQixDQUFDSjtRQUFJQyxLQUFNcEIsQ0FBQUEs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QUFnQkEsQ0FBQ3lLLFdBQVd6SCxFQUFFLEVBQUV5SCxXQUFXeEgsRUFBRSxFQUFFdUksY0FBYzVJO1lBQ25GMEQsT0FBT3BLLGNBQWNBLGNBQWNBLGNBQWM7Z0JBQy9DbVAsU0FBU0E7Z0JBQ1RkLGNBQWNBO2dCQUNkYSxNQUFNQTtnQkFDTkssZ0JBQWdCQTtnQkFDaEI3SSxVQUFVQTtnQkFDVjRJLGNBQWNBO2dCQUNkRSxpQkFBaUJBO1lBQ25CLEdBQUcvSSxRQUFROEgsYUFBYSxDQUFDLEdBQUc7Z0JBQzFCbE0sT0FBT2dDLG9FQUFpQkEsQ0FBQ29DLE9BQU9pQjtnQkFDaENmLFlBQVl5STtnQkFDWnhJLFVBQVV5STtnQkFDVmhDLFNBQVM1RztnQkFDVDRELGNBQWNuRyx5REFBUUEsQ0FBQ3VHLGNBQWNKO1lBQ3ZDO1lBQ0EsT0FBT0Q7UUFDVDtJQUNGO0lBQ0EsT0FBT3BLLGNBQWNBLGNBQWMsQ0FBQyxHQUFHdU8sYUFBYSxDQUFDLEdBQUc7UUFDdEQxSSxTQUFTQTtRQUNUb0gsTUFBTWtCO0lBQ1I7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvcG9sYXIvUGllLmpzP2YwN2YiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9QaWU7XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFJlbmRlciBzZWN0b3JzIG9mIGEgcGllXG4gKi9cbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEFuaW1hdGUgZnJvbSAncmVhY3Qtc21vb3RoJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgQ3VydmUgfSBmcm9tICcuLi9zaGFwZS9DdXJ2ZSc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50L1RleHQnO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuLi9jb21wb25lbnQvTGFiZWwnO1xuaW1wb3J0IHsgTGFiZWxMaXN0IH0gZnJvbSAnLi4vY29tcG9uZW50L0xhYmVsTGlzdCc7XG5pbXBvcnQgeyBDZWxsIH0gZnJvbSAnLi4vY29tcG9uZW50L0NlbGwnO1xuaW1wb3J0IHsgZmluZEFsbEJ5VHlwZSwgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnLi4vdXRpbC9HbG9iYWwnO1xuaW1wb3J0IHsgcG9sYXJUb0NhcnRlc2lhbiwgZ2V0TWF4UmFkaXVzIH0gZnJvbSAnLi4vdXRpbC9Qb2xhclV0aWxzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBnZXRQZXJjZW50VmFsdWUsIG1hdGhTaWduLCBpbnRlcnBvbGF0ZU51bWJlciwgdW5pcXVlSWQgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBnZXRWYWx1ZUJ5RGF0YUtleSB9IGZyb20gJy4uL3V0aWwvQ2hhcnRVdGlscyc7XG5pbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi4vdXRpbC9Mb2dVdGlscyc7XG5pbXBvcnQgeyBhZGFwdEV2ZW50c09mQ2hpbGQgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB7IFNoYXBlIH0gZnJvbSAnLi4vdXRpbC9BY3RpdmVTaGFwZVV0aWxzJztcbmV4cG9ydCB2YXIgUGllID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUHVyZUNvbXBvbmVudCkge1xuICBmdW5jdGlvbiBQaWUocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBpZSk7XG4gICAgX3RoaXMgPSBfY2FsbFN1cGVyKHRoaXMsIFBpZSwgW3Byb3BzXSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcInBpZVJlZlwiLCBudWxsKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX3RoaXMsIFwic2VjdG9yUmVmc1wiLCBbXSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImlkXCIsIHVuaXF1ZUlkKCdyZWNoYXJ0cy1waWUtJykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJoYW5kbGVBbmltYXRpb25FbmRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG9uQW5pbWF0aW9uRW5kID0gX3RoaXMucHJvcHMub25BbmltYXRpb25FbmQ7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzQW5pbWF0aW9uRmluaXNoZWQ6IHRydWVcbiAgICAgIH0pO1xuICAgICAgaWYgKGlzRnVuY3Rpb24ob25BbmltYXRpb25FbmQpKSB7XG4gICAgICAgIG9uQW5pbWF0aW9uRW5kKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF90aGlzLCBcImhhbmRsZUFuaW1hdGlvblN0YXJ0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBvbkFuaW1hdGlvblN0YXJ0ID0gX3RoaXMucHJvcHMub25BbmltYXRpb25TdGFydDtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNBbmltYXRpb25GaW5pc2hlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgaWYgKGlzRnVuY3Rpb24ob25BbmltYXRpb25TdGFydCkpIHtcbiAgICAgICAgb25BbmltYXRpb25TdGFydCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgaXNBbmltYXRpb25GaW5pc2hlZDogIXByb3BzLmlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgcHJldklzQW5pbWF0aW9uQWN0aXZlOiBwcm9wcy5pc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgIHByZXZBbmltYXRpb25JZDogcHJvcHMuYW5pbWF0aW9uSWQsXG4gICAgICBzZWN0b3JUb0ZvY3VzOiAwXG4gICAgfTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2luaGVyaXRzKFBpZSwgX1B1cmVDb21wb25lbnQpO1xuICByZXR1cm4gX2NyZWF0ZUNsYXNzKFBpZSwgW3tcbiAgICBrZXk6IFwiaXNBY3RpdmVJbmRleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0FjdGl2ZUluZGV4KGkpIHtcbiAgICAgIHZhciBhY3RpdmVJbmRleCA9IHRoaXMucHJvcHMuYWN0aXZlSW5kZXg7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhY3RpdmVJbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIGFjdGl2ZUluZGV4LmluZGV4T2YoaSkgIT09IC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGkgPT09IGFjdGl2ZUluZGV4O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNBY3RpdmVJbmRleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNBY3RpdmVJbmRleCgpIHtcbiAgICAgIHZhciBhY3RpdmVJbmRleCA9IHRoaXMucHJvcHMuYWN0aXZlSW5kZXg7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhY3RpdmVJbmRleCkgPyBhY3RpdmVJbmRleC5sZW5ndGggIT09IDAgOiBhY3RpdmVJbmRleCB8fCBhY3RpdmVJbmRleCA9PT0gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTGFiZWxzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckxhYmVscyhzZWN0b3JzKSB7XG4gICAgICB2YXIgaXNBbmltYXRpb25BY3RpdmUgPSB0aGlzLnByb3BzLmlzQW5pbWF0aW9uQWN0aXZlO1xuICAgICAgaWYgKGlzQW5pbWF0aW9uQWN0aXZlICYmICF0aGlzLnN0YXRlLmlzQW5pbWF0aW9uRmluaXNoZWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBsYWJlbCA9IF90aGlzJHByb3BzLmxhYmVsLFxuICAgICAgICBsYWJlbExpbmUgPSBfdGhpcyRwcm9wcy5sYWJlbExpbmUsXG4gICAgICAgIGRhdGFLZXkgPSBfdGhpcyRwcm9wcy5kYXRhS2V5LFxuICAgICAgICB2YWx1ZUtleSA9IF90aGlzJHByb3BzLnZhbHVlS2V5O1xuICAgICAgdmFyIHBpZVByb3BzID0gZmlsdGVyUHJvcHModGhpcy5wcm9wcywgZmFsc2UpO1xuICAgICAgdmFyIGN1c3RvbUxhYmVsUHJvcHMgPSBmaWx0ZXJQcm9wcyhsYWJlbCwgZmFsc2UpO1xuICAgICAgdmFyIGN1c3RvbUxhYmVsTGluZVByb3BzID0gZmlsdGVyUHJvcHMobGFiZWxMaW5lLCBmYWxzZSk7XG4gICAgICB2YXIgb2Zmc2V0UmFkaXVzID0gbGFiZWwgJiYgbGFiZWwub2Zmc2V0UmFkaXVzIHx8IDIwO1xuICAgICAgdmFyIGxhYmVscyA9IHNlY3RvcnMubWFwKGZ1bmN0aW9uIChlbnRyeSwgaSkge1xuICAgICAgICB2YXIgbWlkQW5nbGUgPSAoZW50cnkuc3RhcnRBbmdsZSArIGVudHJ5LmVuZEFuZ2xlKSAvIDI7XG4gICAgICAgIHZhciBlbmRQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oZW50cnkuY3gsIGVudHJ5LmN5LCBlbnRyeS5vdXRlclJhZGl1cyArIG9mZnNldFJhZGl1cywgbWlkQW5nbGUpO1xuICAgICAgICB2YXIgbGFiZWxQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHBpZVByb3BzKSwgZW50cnkpLCB7fSwge1xuICAgICAgICAgIHN0cm9rZTogJ25vbmUnXG4gICAgICAgIH0sIGN1c3RvbUxhYmVsUHJvcHMpLCB7fSwge1xuICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgIHRleHRBbmNob3I6IFBpZS5nZXRUZXh0QW5jaG9yKGVuZFBvaW50LngsIGVudHJ5LmN4KVxuICAgICAgICB9LCBlbmRQb2ludCk7XG4gICAgICAgIHZhciBsaW5lUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwaWVQcm9wcyksIGVudHJ5KSwge30sIHtcbiAgICAgICAgICBmaWxsOiAnbm9uZScsXG4gICAgICAgICAgc3Ryb2tlOiBlbnRyeS5maWxsXG4gICAgICAgIH0sIGN1c3RvbUxhYmVsTGluZVByb3BzKSwge30sIHtcbiAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICBwb2ludHM6IFtwb2xhclRvQ2FydGVzaWFuKGVudHJ5LmN4LCBlbnRyeS5jeSwgZW50cnkub3V0ZXJSYWRpdXMsIG1pZEFuZ2xlKSwgZW5kUG9pbnRdXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVhbERhdGFLZXkgPSBkYXRhS2V5O1xuICAgICAgICAvLyBUT0RPOiBjb21wYXRpYmxlIHRvIGxvd2VyIHZlcnNpb25zXG4gICAgICAgIGlmIChpc05pbChkYXRhS2V5KSAmJiBpc05pbCh2YWx1ZUtleSkpIHtcbiAgICAgICAgICByZWFsRGF0YUtleSA9ICd2YWx1ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOaWwoZGF0YUtleSkpIHtcbiAgICAgICAgICByZWFsRGF0YUtleSA9IHZhbHVlS2V5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLyojX19QVVJFX18qL1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgICAgICBrZXk6IFwibGFiZWwtXCIuY29uY2F0KGVudHJ5LnN0YXJ0QW5nbGUsIFwiLVwiKS5jb25jYXQoZW50cnkuZW5kQW5nbGUsIFwiLVwiKS5jb25jYXQoZW50cnkubWlkQW5nbGUsIFwiLVwiKS5jb25jYXQoaSlcbiAgICAgICAgICB9LCBsYWJlbExpbmUgJiYgUGllLnJlbmRlckxhYmVsTGluZUl0ZW0obGFiZWxMaW5lLCBsaW5lUHJvcHMsICdsaW5lJyksIFBpZS5yZW5kZXJMYWJlbEl0ZW0obGFiZWwsIGxhYmVsUHJvcHMsIGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCByZWFsRGF0YUtleSkpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLXBpZS1sYWJlbHNcIlxuICAgICAgfSwgbGFiZWxzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyU2VjdG9yc1N0YXRpY2FsbHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyU2VjdG9yc1N0YXRpY2FsbHkoc2VjdG9ycykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgYWN0aXZlU2hhcGUgPSBfdGhpcyRwcm9wczIuYWN0aXZlU2hhcGUsXG4gICAgICAgIGJsZW5kU3Ryb2tlID0gX3RoaXMkcHJvcHMyLmJsZW5kU3Ryb2tlLFxuICAgICAgICBpbmFjdGl2ZVNoYXBlUHJvcCA9IF90aGlzJHByb3BzMi5pbmFjdGl2ZVNoYXBlO1xuICAgICAgcmV0dXJuIHNlY3RvcnMubWFwKGZ1bmN0aW9uIChlbnRyeSwgaSkge1xuICAgICAgICBpZiAoKGVudHJ5ID09PSBudWxsIHx8IGVudHJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS5zdGFydEFuZ2xlKSA9PT0gMCAmJiAoZW50cnkgPT09IG51bGwgfHwgZW50cnkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVudHJ5LmVuZEFuZ2xlKSA9PT0gMCAmJiBzZWN0b3JzLmxlbmd0aCAhPT0gMSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHZhciBpc0FjdGl2ZSA9IF90aGlzMi5pc0FjdGl2ZUluZGV4KGkpO1xuICAgICAgICB2YXIgaW5hY3RpdmVTaGFwZSA9IGluYWN0aXZlU2hhcGVQcm9wICYmIF90aGlzMi5oYXNBY3RpdmVJbmRleCgpID8gaW5hY3RpdmVTaGFwZVByb3AgOiBudWxsO1xuICAgICAgICB2YXIgc2VjdG9yT3B0aW9ucyA9IGlzQWN0aXZlID8gYWN0aXZlU2hhcGUgOiBpbmFjdGl2ZVNoYXBlO1xuICAgICAgICB2YXIgc2VjdG9yUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGVudHJ5KSwge30sIHtcbiAgICAgICAgICBzdHJva2U6IGJsZW5kU3Ryb2tlID8gZW50cnkuZmlsbCA6IGVudHJ5LnN0cm9rZSxcbiAgICAgICAgICB0YWJJbmRleDogLTFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgX2V4dGVuZHMoe1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKF9yZWYpIHtcbiAgICAgICAgICAgIGlmIChfcmVmICYmICFfdGhpczIuc2VjdG9yUmVmcy5pbmNsdWRlcyhfcmVmKSkge1xuICAgICAgICAgICAgICBfdGhpczIuc2VjdG9yUmVmcy5wdXNoKF9yZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1waWUtc2VjdG9yXCJcbiAgICAgICAgfSwgYWRhcHRFdmVudHNPZkNoaWxkKF90aGlzMi5wcm9wcywgZW50cnksIGkpLCB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgICAgIGtleTogXCJzZWN0b3ItXCIuY29uY2F0KGVudHJ5ID09PSBudWxsIHx8IGVudHJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS5zdGFydEFuZ2xlLCBcIi1cIikuY29uY2F0KGVudHJ5ID09PSBudWxsIHx8IGVudHJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS5lbmRBbmdsZSwgXCItXCIpLmNvbmNhdChlbnRyeS5taWRBbmdsZSwgXCItXCIpLmNvbmNhdChpKVxuICAgICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2hhcGUsIF9leHRlbmRzKHtcbiAgICAgICAgICBvcHRpb246IHNlY3Rvck9wdGlvbnMsXG4gICAgICAgICAgaXNBY3RpdmU6IGlzQWN0aXZlLFxuICAgICAgICAgIHNoYXBlVHlwZTogXCJzZWN0b3JcIlxuICAgICAgICB9LCBzZWN0b3JQcm9wcykpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJTZWN0b3JzV2l0aEFuaW1hdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJTZWN0b3JzV2l0aEFuaW1hdGlvbigpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IHRoaXMucHJvcHMsXG4gICAgICAgIHNlY3RvcnMgPSBfdGhpcyRwcm9wczMuc2VjdG9ycyxcbiAgICAgICAgaXNBbmltYXRpb25BY3RpdmUgPSBfdGhpcyRwcm9wczMuaXNBbmltYXRpb25BY3RpdmUsXG4gICAgICAgIGFuaW1hdGlvbkJlZ2luID0gX3RoaXMkcHJvcHMzLmFuaW1hdGlvbkJlZ2luLFxuICAgICAgICBhbmltYXRpb25EdXJhdGlvbiA9IF90aGlzJHByb3BzMy5hbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgYW5pbWF0aW9uRWFzaW5nID0gX3RoaXMkcHJvcHMzLmFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgYW5pbWF0aW9uSWQgPSBfdGhpcyRwcm9wczMuYW5pbWF0aW9uSWQ7XG4gICAgICB2YXIgX3RoaXMkc3RhdGUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBwcmV2U2VjdG9ycyA9IF90aGlzJHN0YXRlLnByZXZTZWN0b3JzLFxuICAgICAgICBwcmV2SXNBbmltYXRpb25BY3RpdmUgPSBfdGhpcyRzdGF0ZS5wcmV2SXNBbmltYXRpb25BY3RpdmU7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQW5pbWF0ZSwge1xuICAgICAgICBiZWdpbjogYW5pbWF0aW9uQmVnaW4sXG4gICAgICAgIGR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgaXNBY3RpdmU6IGlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBlYXNpbmc6IGFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHQ6IDBcbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB0OiAxXG4gICAgICAgIH0sXG4gICAgICAgIGtleTogXCJwaWUtXCIuY29uY2F0KGFuaW1hdGlvbklkLCBcIi1cIikuY29uY2F0KHByZXZJc0FuaW1hdGlvbkFjdGl2ZSksXG4gICAgICAgIG9uQW5pbWF0aW9uU3RhcnQ6IHRoaXMuaGFuZGxlQW5pbWF0aW9uU3RhcnQsXG4gICAgICAgIG9uQW5pbWF0aW9uRW5kOiB0aGlzLmhhbmRsZUFuaW1hdGlvbkVuZFxuICAgICAgfSwgZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgIHZhciB0ID0gX3JlZjIudDtcbiAgICAgICAgdmFyIHN0ZXBEYXRhID0gW107XG4gICAgICAgIHZhciBmaXJzdCA9IHNlY3RvcnMgJiYgc2VjdG9yc1swXTtcbiAgICAgICAgdmFyIGN1ckFuZ2xlID0gZmlyc3Quc3RhcnRBbmdsZTtcbiAgICAgICAgc2VjdG9ycy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICAgICAgICB2YXIgcHJldiA9IHByZXZTZWN0b3JzICYmIHByZXZTZWN0b3JzW2luZGV4XTtcbiAgICAgICAgICB2YXIgcGFkZGluZ0FuZ2xlID0gaW5kZXggPiAwID8gZ2V0KGVudHJ5LCAncGFkZGluZ0FuZ2xlJywgMCkgOiAwO1xuICAgICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgICB2YXIgYW5nbGVJcCA9IGludGVycG9sYXRlTnVtYmVyKHByZXYuZW5kQW5nbGUgLSBwcmV2LnN0YXJ0QW5nbGUsIGVudHJ5LmVuZEFuZ2xlIC0gZW50cnkuc3RhcnRBbmdsZSk7XG4gICAgICAgICAgICB2YXIgbGF0ZXN0ID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgICAgICAgIHN0YXJ0QW5nbGU6IGN1ckFuZ2xlICsgcGFkZGluZ0FuZ2xlLFxuICAgICAgICAgICAgICBlbmRBbmdsZTogY3VyQW5nbGUgKyBhbmdsZUlwKHQpICsgcGFkZGluZ0FuZ2xlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHN0ZXBEYXRhLnB1c2gobGF0ZXN0KTtcbiAgICAgICAgICAgIGN1ckFuZ2xlID0gbGF0ZXN0LmVuZEFuZ2xlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgZW5kQW5nbGUgPSBlbnRyeS5lbmRBbmdsZSxcbiAgICAgICAgICAgICAgc3RhcnRBbmdsZSA9IGVudHJ5LnN0YXJ0QW5nbGU7XG4gICAgICAgICAgICB2YXIgaW50ZXJwb2xhdG9yQW5nbGUgPSBpbnRlcnBvbGF0ZU51bWJlcigwLCBlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpO1xuICAgICAgICAgICAgdmFyIGRlbHRhQW5nbGUgPSBpbnRlcnBvbGF0b3JBbmdsZSh0KTtcbiAgICAgICAgICAgIHZhciBfbGF0ZXN0ID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgICAgICAgIHN0YXJ0QW5nbGU6IGN1ckFuZ2xlICsgcGFkZGluZ0FuZ2xlLFxuICAgICAgICAgICAgICBlbmRBbmdsZTogY3VyQW5nbGUgKyBkZWx0YUFuZ2xlICsgcGFkZGluZ0FuZ2xlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHN0ZXBEYXRhLnB1c2goX2xhdGVzdCk7XG4gICAgICAgICAgICBjdXJBbmdsZSA9IF9sYXRlc3QuZW5kQW5nbGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCBudWxsLCBfdGhpczMucmVuZGVyU2VjdG9yc1N0YXRpY2FsbHkoc3RlcERhdGEpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhdHRhY2hLZXlib2FyZEhhbmRsZXJzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGF0dGFjaEtleWJvYXJkSGFuZGxlcnMocGllUmVmKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgcGllUmVmLm9ua2V5ZG93biA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmICghZS5hbHRLZXkpIHtcbiAgICAgICAgICBzd2l0Y2ggKGUua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSArK190aGlzNC5zdGF0ZS5zZWN0b3JUb0ZvY3VzICUgX3RoaXM0LnNlY3RvclJlZnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIF90aGlzNC5zZWN0b3JSZWZzW25leHRdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgX3RoaXM0LnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgIHNlY3RvclRvRm9jdXM6IG5leHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX25leHQgPSAtLV90aGlzNC5zdGF0ZS5zZWN0b3JUb0ZvY3VzIDwgMCA/IF90aGlzNC5zZWN0b3JSZWZzLmxlbmd0aCAtIDEgOiBfdGhpczQuc3RhdGUuc2VjdG9yVG9Gb2N1cyAlIF90aGlzNC5zZWN0b3JSZWZzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBfdGhpczQuc2VjdG9yUmVmc1tfbmV4dF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICBfdGhpczQuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgc2VjdG9yVG9Gb2N1czogX25leHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIF90aGlzNC5zZWN0b3JSZWZzW190aGlzNC5zdGF0ZS5zZWN0b3JUb0ZvY3VzXS5ibHVyKCk7XG4gICAgICAgICAgICAgICAgX3RoaXM0LnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgIHNlY3RvclRvRm9jdXM6IDBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gaGVyZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJTZWN0b3JzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclNlY3RvcnMoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM0ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgc2VjdG9ycyA9IF90aGlzJHByb3BzNC5zZWN0b3JzLFxuICAgICAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IF90aGlzJHByb3BzNC5pc0FuaW1hdGlvbkFjdGl2ZTtcbiAgICAgIHZhciBwcmV2U2VjdG9ycyA9IHRoaXMuc3RhdGUucHJldlNlY3RvcnM7XG4gICAgICBpZiAoaXNBbmltYXRpb25BY3RpdmUgJiYgc2VjdG9ycyAmJiBzZWN0b3JzLmxlbmd0aCAmJiAoIXByZXZTZWN0b3JzIHx8ICFpc0VxdWFsKHByZXZTZWN0b3JzLCBzZWN0b3JzKSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyU2VjdG9yc1dpdGhBbmltYXRpb24oKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJlbmRlclNlY3RvcnNTdGF0aWNhbGx5KHNlY3RvcnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnBpZVJlZikge1xuICAgICAgICB0aGlzLmF0dGFjaEtleWJvYXJkSGFuZGxlcnModGhpcy5waWVSZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgaGlkZSA9IF90aGlzJHByb3BzNS5oaWRlLFxuICAgICAgICBzZWN0b3JzID0gX3RoaXMkcHJvcHM1LnNlY3RvcnMsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNS5jbGFzc05hbWUsXG4gICAgICAgIGxhYmVsID0gX3RoaXMkcHJvcHM1LmxhYmVsLFxuICAgICAgICBjeCA9IF90aGlzJHByb3BzNS5jeCxcbiAgICAgICAgY3kgPSBfdGhpcyRwcm9wczUuY3ksXG4gICAgICAgIGlubmVyUmFkaXVzID0gX3RoaXMkcHJvcHM1LmlubmVyUmFkaXVzLFxuICAgICAgICBvdXRlclJhZGl1cyA9IF90aGlzJHByb3BzNS5vdXRlclJhZGl1cyxcbiAgICAgICAgaXNBbmltYXRpb25BY3RpdmUgPSBfdGhpcyRwcm9wczUuaXNBbmltYXRpb25BY3RpdmU7XG4gICAgICB2YXIgaXNBbmltYXRpb25GaW5pc2hlZCA9IHRoaXMuc3RhdGUuaXNBbmltYXRpb25GaW5pc2hlZDtcbiAgICAgIGlmIChoaWRlIHx8ICFzZWN0b3JzIHx8ICFzZWN0b3JzLmxlbmd0aCB8fCAhaXNOdW1iZXIoY3gpIHx8ICFpc051bWJlcihjeSkgfHwgIWlzTnVtYmVyKGlubmVyUmFkaXVzKSB8fCAhaXNOdW1iZXIob3V0ZXJSYWRpdXMpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1waWUnLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIHRhYkluZGV4OiB0aGlzLnByb3BzLnJvb3RUYWJJbmRleCxcbiAgICAgICAgY2xhc3NOYW1lOiBsYXllckNsYXNzLFxuICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihfcmVmMykge1xuICAgICAgICAgIF90aGlzNS5waWVSZWYgPSBfcmVmMztcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5yZW5kZXJTZWN0b3JzKCksIGxhYmVsICYmIHRoaXMucmVuZGVyTGFiZWxzKHNlY3RvcnMpLCBMYWJlbC5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcywgbnVsbCwgZmFsc2UpLCAoIWlzQW5pbWF0aW9uQWN0aXZlIHx8IGlzQW5pbWF0aW9uRmluaXNoZWQpICYmIExhYmVsTGlzdC5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcywgc2VjdG9ycywgZmFsc2UpKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICBpZiAocHJldlN0YXRlLnByZXZJc0FuaW1hdGlvbkFjdGl2ZSAhPT0gbmV4dFByb3BzLmlzQW5pbWF0aW9uQWN0aXZlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJldklzQW5pbWF0aW9uQWN0aXZlOiBuZXh0UHJvcHMuaXNBbmltYXRpb25BY3RpdmUsXG4gICAgICAgICAgcHJldkFuaW1hdGlvbklkOiBuZXh0UHJvcHMuYW5pbWF0aW9uSWQsXG4gICAgICAgICAgY3VyU2VjdG9yczogbmV4dFByb3BzLnNlY3RvcnMsXG4gICAgICAgICAgcHJldlNlY3RvcnM6IFtdLFxuICAgICAgICAgIGlzQW5pbWF0aW9uRmluaXNoZWQ6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0UHJvcHMuaXNBbmltYXRpb25BY3RpdmUgJiYgbmV4dFByb3BzLmFuaW1hdGlvbklkICE9PSBwcmV2U3RhdGUucHJldkFuaW1hdGlvbklkKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJldkFuaW1hdGlvbklkOiBuZXh0UHJvcHMuYW5pbWF0aW9uSWQsXG4gICAgICAgICAgY3VyU2VjdG9yczogbmV4dFByb3BzLnNlY3RvcnMsXG4gICAgICAgICAgcHJldlNlY3RvcnM6IHByZXZTdGF0ZS5jdXJTZWN0b3JzLFxuICAgICAgICAgIGlzQW5pbWF0aW9uRmluaXNoZWQ6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0UHJvcHMuc2VjdG9ycyAhPT0gcHJldlN0YXRlLmN1clNlY3RvcnMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjdXJTZWN0b3JzOiBuZXh0UHJvcHMuc2VjdG9ycyxcbiAgICAgICAgICBpc0FuaW1hdGlvbkZpbmlzaGVkOiB0cnVlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGV4dEFuY2hvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUZXh0QW5jaG9yKHgsIGN4KSB7XG4gICAgICBpZiAoeCA+IGN4KSB7XG4gICAgICAgIHJldHVybiAnc3RhcnQnO1xuICAgICAgfVxuICAgICAgaWYgKHggPCBjeCkge1xuICAgICAgICByZXR1cm4gJ2VuZCc7XG4gICAgICB9XG4gICAgICByZXR1cm4gJ21pZGRsZSc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckxhYmVsTGluZUl0ZW1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTGFiZWxMaW5lSXRlbShvcHRpb24sIHByb3BzLCBrZXkpIHtcbiAgICAgIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KG9wdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQob3B0aW9uLCBwcm9wcyk7XG4gICAgICB9XG4gICAgICBpZiAoaXNGdW5jdGlvbihvcHRpb24pKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24ocHJvcHMpO1xuICAgICAgfVxuICAgICAgdmFyIGNsYXNzTmFtZSA9IGNsc3goJ3JlY2hhcnRzLXBpZS1sYWJlbC1saW5lJywgdHlwZW9mIG9wdGlvbiAhPT0gJ2Jvb2xlYW4nID8gb3B0aW9uLmNsYXNzTmFtZSA6ICcnKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDdXJ2ZSwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIGtleToga2V5LFxuICAgICAgICB0eXBlOiBcImxpbmVhclwiLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJMYWJlbEl0ZW1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTGFiZWxJdGVtKG9wdGlvbiwgcHJvcHMsIHZhbHVlKSB7XG4gICAgICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICAgICAgfVxuICAgICAgdmFyIGxhYmVsID0gdmFsdWU7XG4gICAgICBpZiAoaXNGdW5jdGlvbihvcHRpb24pKSB7XG4gICAgICAgIGxhYmVsID0gb3B0aW9uKHByb3BzKTtcbiAgICAgICAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQobGFiZWwpKSB7XG4gICAgICAgICAgcmV0dXJuIGxhYmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgY2xhc3NOYW1lID0gY2xzeCgncmVjaGFydHMtcGllLWxhYmVsLXRleHQnLCB0eXBlb2Ygb3B0aW9uICE9PSAnYm9vbGVhbicgJiYgIWlzRnVuY3Rpb24ob3B0aW9uKSA/IG9wdGlvbi5jbGFzc05hbWUgOiAnJyk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGV4dCwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIGFsaWdubWVudEJhc2VsaW5lOiBcIm1pZGRsZVwiLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZVxuICAgICAgfSksIGxhYmVsKTtcbiAgICB9XG4gIH1dKTtcbn0oUHVyZUNvbXBvbmVudCk7XG5fUGllID0gUGllO1xuX2RlZmluZVByb3BlcnR5KFBpZSwgXCJkaXNwbGF5TmFtZVwiLCAnUGllJyk7XG5fZGVmaW5lUHJvcGVydHkoUGllLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHN0cm9rZTogJyNmZmYnLFxuICBmaWxsOiAnIzgwODA4MCcsXG4gIGxlZ2VuZFR5cGU6ICdyZWN0JyxcbiAgY3g6ICc1MCUnLFxuICBjeTogJzUwJScsXG4gIHN0YXJ0QW5nbGU6IDAsXG4gIGVuZEFuZ2xlOiAzNjAsXG4gIGlubmVyUmFkaXVzOiAwLFxuICBvdXRlclJhZGl1czogJzgwJScsXG4gIHBhZGRpbmdBbmdsZTogMCxcbiAgbGFiZWxMaW5lOiB0cnVlLFxuICBoaWRlOiBmYWxzZSxcbiAgbWluQW5nbGU6IDAsXG4gIGlzQW5pbWF0aW9uQWN0aXZlOiAhR2xvYmFsLmlzU3NyLFxuICBhbmltYXRpb25CZWdpbjogNDAwLFxuICBhbmltYXRpb25EdXJhdGlvbjogMTUwMCxcbiAgYW5pbWF0aW9uRWFzaW5nOiAnZWFzZScsXG4gIG5hbWVLZXk6ICduYW1lJyxcbiAgYmxlbmRTdHJva2U6IGZhbHNlLFxuICByb290VGFiSW5kZXg6IDBcbn0pO1xuX2RlZmluZVByb3BlcnR5KFBpZSwgXCJwYXJzZURlbHRhQW5nbGVcIiwgZnVuY3Rpb24gKHN0YXJ0QW5nbGUsIGVuZEFuZ2xlKSB7XG4gIHZhciBzaWduID0gbWF0aFNpZ24oZW5kQW5nbGUgLSBzdGFydEFuZ2xlKTtcbiAgdmFyIGRlbHRhQW5nbGUgPSBNYXRoLm1pbihNYXRoLmFicyhlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpLCAzNjApO1xuICByZXR1cm4gc2lnbiAqIGRlbHRhQW5nbGU7XG59KTtcbl9kZWZpbmVQcm9wZXJ0eShQaWUsIFwiZ2V0UmVhbFBpZURhdGFcIiwgZnVuY3Rpb24gKGl0ZW1Qcm9wcykge1xuICB2YXIgZGF0YSA9IGl0ZW1Qcm9wcy5kYXRhLFxuICAgIGNoaWxkcmVuID0gaXRlbVByb3BzLmNoaWxkcmVuO1xuICB2YXIgcHJlc2VudGF0aW9uUHJvcHMgPSBmaWx0ZXJQcm9wcyhpdGVtUHJvcHMsIGZhbHNlKTtcbiAgdmFyIGNlbGxzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgQ2VsbCk7XG4gIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHBheWxvYWQ6IGVudHJ5XG4gICAgICB9LCBwcmVzZW50YXRpb25Qcm9wcyksIGVudHJ5KSwgY2VsbHMgJiYgY2VsbHNbaW5kZXhdICYmIGNlbGxzW2luZGV4XS5wcm9wcyk7XG4gICAgfSk7XG4gIH1cbiAgaWYgKGNlbGxzICYmIGNlbGxzLmxlbmd0aCkge1xuICAgIHJldHVybiBjZWxscy5tYXAoZnVuY3Rpb24gKGNlbGwpIHtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByZXNlbnRhdGlvblByb3BzKSwgY2VsbC5wcm9wcyk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufSk7XG5fZGVmaW5lUHJvcGVydHkoUGllLCBcInBhcnNlQ29vcmRpbmF0ZU9mUGllXCIsIGZ1bmN0aW9uIChpdGVtUHJvcHMsIG9mZnNldCkge1xuICB2YXIgdG9wID0gb2Zmc2V0LnRvcCxcbiAgICBsZWZ0ID0gb2Zmc2V0LmxlZnQsXG4gICAgd2lkdGggPSBvZmZzZXQud2lkdGgsXG4gICAgaGVpZ2h0ID0gb2Zmc2V0LmhlaWdodDtcbiAgdmFyIG1heFBpZVJhZGl1cyA9IGdldE1heFJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgdmFyIGN4ID0gbGVmdCArIGdldFBlcmNlbnRWYWx1ZShpdGVtUHJvcHMuY3gsIHdpZHRoLCB3aWR0aCAvIDIpO1xuICB2YXIgY3kgPSB0b3AgKyBnZXRQZXJjZW50VmFsdWUoaXRlbVByb3BzLmN5LCBoZWlnaHQsIGhlaWdodCAvIDIpO1xuICB2YXIgaW5uZXJSYWRpdXMgPSBnZXRQZXJjZW50VmFsdWUoaXRlbVByb3BzLmlubmVyUmFkaXVzLCBtYXhQaWVSYWRpdXMsIDApO1xuICB2YXIgb3V0ZXJSYWRpdXMgPSBnZXRQZXJjZW50VmFsdWUoaXRlbVByb3BzLm91dGVyUmFkaXVzLCBtYXhQaWVSYWRpdXMsIG1heFBpZVJhZGl1cyAqIDAuOCk7XG4gIHZhciBtYXhSYWRpdXMgPSBpdGVtUHJvcHMubWF4UmFkaXVzIHx8IE1hdGguc3FydCh3aWR0aCAqIHdpZHRoICsgaGVpZ2h0ICogaGVpZ2h0KSAvIDI7XG4gIHJldHVybiB7XG4gICAgY3g6IGN4LFxuICAgIGN5OiBjeSxcbiAgICBpbm5lclJhZGl1czogaW5uZXJSYWRpdXMsXG4gICAgb3V0ZXJSYWRpdXM6IG91dGVyUmFkaXVzLFxuICAgIG1heFJhZGl1czogbWF4UmFkaXVzXG4gIH07XG59KTtcbl9kZWZpbmVQcm9wZXJ0eShQaWUsIFwiZ2V0Q29tcG9zZWREYXRhXCIsIGZ1bmN0aW9uIChfcmVmNCkge1xuICB2YXIgaXRlbSA9IF9yZWY0Lml0ZW0sXG4gICAgb2Zmc2V0ID0gX3JlZjQub2Zmc2V0O1xuICB2YXIgaXRlbVByb3BzID0gaXRlbS50eXBlLmRlZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkID8gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpdGVtLnR5cGUuZGVmYXVsdFByb3BzKSwgaXRlbS5wcm9wcykgOiBpdGVtLnByb3BzO1xuICB2YXIgcGllRGF0YSA9IF9QaWUuZ2V0UmVhbFBpZURhdGEoaXRlbVByb3BzKTtcbiAgaWYgKCFwaWVEYXRhIHx8ICFwaWVEYXRhLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBjb3JuZXJSYWRpdXMgPSBpdGVtUHJvcHMuY29ybmVyUmFkaXVzLFxuICAgIHN0YXJ0QW5nbGUgPSBpdGVtUHJvcHMuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IGl0ZW1Qcm9wcy5lbmRBbmdsZSxcbiAgICBwYWRkaW5nQW5nbGUgPSBpdGVtUHJvcHMucGFkZGluZ0FuZ2xlLFxuICAgIGRhdGFLZXkgPSBpdGVtUHJvcHMuZGF0YUtleSxcbiAgICBuYW1lS2V5ID0gaXRlbVByb3BzLm5hbWVLZXksXG4gICAgdmFsdWVLZXkgPSBpdGVtUHJvcHMudmFsdWVLZXksXG4gICAgdG9vbHRpcFR5cGUgPSBpdGVtUHJvcHMudG9vbHRpcFR5cGU7XG4gIHZhciBtaW5BbmdsZSA9IE1hdGguYWJzKGl0ZW1Qcm9wcy5taW5BbmdsZSk7XG4gIHZhciBjb29yZGluYXRlID0gX1BpZS5wYXJzZUNvb3JkaW5hdGVPZlBpZShpdGVtUHJvcHMsIG9mZnNldCk7XG4gIHZhciBkZWx0YUFuZ2xlID0gX1BpZS5wYXJzZURlbHRhQW5nbGUoc3RhcnRBbmdsZSwgZW5kQW5nbGUpO1xuICB2YXIgYWJzRGVsdGFBbmdsZSA9IE1hdGguYWJzKGRlbHRhQW5nbGUpO1xuICB2YXIgcmVhbERhdGFLZXkgPSBkYXRhS2V5O1xuICBpZiAoaXNOaWwoZGF0YUtleSkgJiYgaXNOaWwodmFsdWVLZXkpKSB7XG4gICAgd2FybihmYWxzZSwgXCJVc2UgXFxcImRhdGFLZXlcXFwiIHRvIHNwZWNpZnkgdGhlIHZhbHVlIG9mIHBpZSxcXG4gICAgICB0aGUgcHJvcHMgXFxcInZhbHVlS2V5XFxcIiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gMS4xLjBcIik7XG4gICAgcmVhbERhdGFLZXkgPSAndmFsdWUnO1xuICB9IGVsc2UgaWYgKGlzTmlsKGRhdGFLZXkpKSB7XG4gICAgd2FybihmYWxzZSwgXCJVc2UgXFxcImRhdGFLZXlcXFwiIHRvIHNwZWNpZnkgdGhlIHZhbHVlIG9mIHBpZSxcXG4gICAgICB0aGUgcHJvcHMgXFxcInZhbHVlS2V5XFxcIiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gMS4xLjBcIik7XG4gICAgcmVhbERhdGFLZXkgPSB2YWx1ZUtleTtcbiAgfVxuICB2YXIgbm90WmVyb0l0ZW1Db3VudCA9IHBpZURhdGEuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHJldHVybiBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwgcmVhbERhdGFLZXksIDApICE9PSAwO1xuICB9KS5sZW5ndGg7XG4gIHZhciB0b3RhbFBhZGluZ0FuZ2xlID0gKGFic0RlbHRhQW5nbGUgPj0gMzYwID8gbm90WmVyb0l0ZW1Db3VudCA6IG5vdFplcm9JdGVtQ291bnQgLSAxKSAqIHBhZGRpbmdBbmdsZTtcbiAgdmFyIHJlYWxUb3RhbEFuZ2xlID0gYWJzRGVsdGFBbmdsZSAtIG5vdFplcm9JdGVtQ291bnQgKiBtaW5BbmdsZSAtIHRvdGFsUGFkaW5nQW5nbGU7XG4gIHZhciBzdW0gPSBwaWVEYXRhLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgIHZhciB2YWwgPSBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwgcmVhbERhdGFLZXksIDApO1xuICAgIHJldHVybiByZXN1bHQgKyAoaXNOdW1iZXIodmFsKSA/IHZhbCA6IDApO1xuICB9LCAwKTtcbiAgdmFyIHNlY3RvcnM7XG4gIGlmIChzdW0gPiAwKSB7XG4gICAgdmFyIHByZXY7XG4gICAgc2VjdG9ycyA9IHBpZURhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaSkge1xuICAgICAgdmFyIHZhbCA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCByZWFsRGF0YUtleSwgMCk7XG4gICAgICB2YXIgbmFtZSA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCBuYW1lS2V5LCBpKTtcbiAgICAgIHZhciBwZXJjZW50ID0gKGlzTnVtYmVyKHZhbCkgPyB2YWwgOiAwKSAvIHN1bTtcbiAgICAgIHZhciB0ZW1wU3RhcnRBbmdsZTtcbiAgICAgIGlmIChpKSB7XG4gICAgICAgIHRlbXBTdGFydEFuZ2xlID0gcHJldi5lbmRBbmdsZSArIG1hdGhTaWduKGRlbHRhQW5nbGUpICogcGFkZGluZ0FuZ2xlICogKHZhbCAhPT0gMCA/IDEgOiAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlbXBTdGFydEFuZ2xlID0gc3RhcnRBbmdsZTtcbiAgICAgIH1cbiAgICAgIHZhciB0ZW1wRW5kQW5nbGUgPSB0ZW1wU3RhcnRBbmdsZSArIG1hdGhTaWduKGRlbHRhQW5nbGUpICogKCh2YWwgIT09IDAgPyBtaW5BbmdsZSA6IDApICsgcGVyY2VudCAqIHJlYWxUb3RhbEFuZ2xlKTtcbiAgICAgIHZhciBtaWRBbmdsZSA9ICh0ZW1wU3RhcnRBbmdsZSArIHRlbXBFbmRBbmdsZSkgLyAyO1xuICAgICAgdmFyIG1pZGRsZVJhZGl1cyA9IChjb29yZGluYXRlLmlubmVyUmFkaXVzICsgY29vcmRpbmF0ZS5vdXRlclJhZGl1cykgLyAyO1xuICAgICAgdmFyIHRvb2x0aXBQYXlsb2FkID0gW3tcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgcGF5bG9hZDogZW50cnksXG4gICAgICAgIGRhdGFLZXk6IHJlYWxEYXRhS2V5LFxuICAgICAgICB0eXBlOiB0b29sdGlwVHlwZVxuICAgICAgfV07XG4gICAgICB2YXIgdG9vbHRpcFBvc2l0aW9uID0gcG9sYXJUb0NhcnRlc2lhbihjb29yZGluYXRlLmN4LCBjb29yZGluYXRlLmN5LCBtaWRkbGVSYWRpdXMsIG1pZEFuZ2xlKTtcbiAgICAgIHByZXYgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHBlcmNlbnQ6IHBlcmNlbnQsXG4gICAgICAgIGNvcm5lclJhZGl1czogY29ybmVyUmFkaXVzLFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB0b29sdGlwUGF5bG9hZDogdG9vbHRpcFBheWxvYWQsXG4gICAgICAgIG1pZEFuZ2xlOiBtaWRBbmdsZSxcbiAgICAgICAgbWlkZGxlUmFkaXVzOiBtaWRkbGVSYWRpdXMsXG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbjogdG9vbHRpcFBvc2l0aW9uXG4gICAgICB9LCBlbnRyeSksIGNvb3JkaW5hdGUpLCB7fSwge1xuICAgICAgICB2YWx1ZTogZ2V0VmFsdWVCeURhdGFLZXkoZW50cnksIHJlYWxEYXRhS2V5KSxcbiAgICAgICAgc3RhcnRBbmdsZTogdGVtcFN0YXJ0QW5nbGUsXG4gICAgICAgIGVuZEFuZ2xlOiB0ZW1wRW5kQW5nbGUsXG4gICAgICAgIHBheWxvYWQ6IGVudHJ5LFxuICAgICAgICBwYWRkaW5nQW5nbGU6IG1hdGhTaWduKGRlbHRhQW5nbGUpICogcGFkZGluZ0FuZ2xlXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNvb3JkaW5hdGUpLCB7fSwge1xuICAgIHNlY3RvcnM6IHNlY3RvcnMsXG4gICAgZGF0YTogcGllRGF0YVxuICB9KTtcbn0pOyJdLCJuYW1lcyI6WyJfUGllIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIkFuaW1hdGUiLCJnZXQiLCJpc0VxdWFsIiwiaXNOaWwiLCJpc0Z1bmN0aW9uIiwiY2xzeCIsIkxheWVyIiwiQ3VydmUiLCJUZXh0IiwiTGFiZWwiLCJMYWJlbExpc3QiLCJDZWxsIiwiZmluZEFsbEJ5VHlwZSIsImZpbHRlclByb3BzIiwiR2xvYmFsIiwicG9sYXJUb0NhcnRlc2lhbiIsImdldE1heFJhZGl1cyIsImlzTnVtYmVyIiwiZ2V0UGVyY2VudFZhbHVlIiwibWF0aFNpZ24iLCJpbnRlcnBvbGF0ZU51bWJlciIsInVuaXF1ZUlkIiwiZ2V0VmFsdWVCeURhdGFLZXkiLCJ3YXJuIiwiYWRhcHRFdmVudHNPZkNoaWxkIiwiU2hhcGUiLCJQaWUiLCJfUHVyZUNvbXBvbmVudCIsIl90aGlzIiwib25BbmltYXRpb25FbmQiLCJzZXRTdGF0ZSIsImlzQW5pbWF0aW9uRmluaXNoZWQiLCJvbkFuaW1hdGlvblN0YXJ0Iiwic3RhdGUiLCJpc0FuaW1hdGlvbkFjdGl2ZSIsInByZXZJc0FuaW1hdGlvbkFjdGl2ZSIsInByZXZBbmltYXRpb25JZCIsImFuaW1hdGlvbklkIiwic2VjdG9yVG9Gb2N1cyIsImlzQWN0aXZlSW5kZXgiLCJhY3RpdmVJbmRleCIsIkFycmF5IiwiaXNBcnJheSIsImluZGV4T2YiLCJoYXNBY3RpdmVJbmRleCIsInJlbmRlckxhYmVscyIsInNlY3RvcnMiLCJfdGhpcyRwcm9wcyIsImxhYmVsIiwibGFiZWxMaW5lIiwiZGF0YUtleSIsInZhbHVlS2V5IiwicGllUHJvcHMiLCJjdXN0b21MYWJlbFByb3BzIiwiY3VzdG9tTGFiZWxMaW5lUHJvcHMiLCJvZmZzZXRSYWRpdXMiLCJsYWJlbHMiLCJtYXAiLCJlbnRyeSIsIm1pZEFuZ2xlIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwiZW5kUG9pbnQiLCJjeCIsImN5Iiwib3V0ZXJSYWRpdXMiLCJsYWJlbFByb3BzIiwic3Ryb2tlIiwiaW5kZXgiLCJ0ZXh0QW5jaG9yIiwiZ2V0VGV4dEFuY2hvciIsIngiLCJsaW5lUHJvcHMiLCJmaWxsIiwicG9pbnRzIiwicmVhbERhdGFLZXkiLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0IiwicmVuZGVyTGFiZWxMaW5lSXRlbSIsInJlbmRlckxhYmVsSXRlbSIsImNsYXNzTmFtZSIsInJlbmRlclNlY3RvcnNTdGF0aWNhbGx5IiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMyIiwiYWN0aXZlU2hhcGUiLCJibGVuZFN0cm9rZSIsImluYWN0aXZlU2hhcGVQcm9wIiwiaW5hY3RpdmVTaGFwZSIsImlzQWN0aXZlIiwic2VjdG9yT3B0aW9ucyIsInNlY3RvclByb3BzIiwidGFiSW5kZXgiLCJyZWYiLCJfcmVmIiwic2VjdG9yUmVmcyIsImluY2x1ZGVzIiwib3B0aW9uIiwic2hhcGVUeXBlIiwicmVuZGVyU2VjdG9yc1dpdGhBbmltYXRpb24iLCJfdGhpczMiLCJfdGhpcyRwcm9wczMiLCJhbmltYXRpb25CZWdpbiIsImFuaW1hdGlvbkR1cmF0aW9uIiwiYW5pbWF0aW9uRWFzaW5nIiwiX3RoaXMkc3RhdGUiLCJwcmV2U2VjdG9ycyIsImJlZ2luIiwiZHVyYXRpb24iLCJlYXNpbmciLCJmcm9tIiwidG8iLCJoYW5kbGVBbmltYXRpb25TdGFydCIsImhhbmRsZUFuaW1hdGlvbkVuZCIsIl9yZWYyIiwic3RlcERhdGEiLCJmaXJzdCIsImN1ckFuZ2xlIiwicHJldiIsInBhZGRpbmdBbmdsZSIsImFuZ2xlSXAiLCJsYXRlc3QiLCJpbnRlcnBvbGF0b3JBbmdsZSIsImRlbHRhQW5nbGUiLCJfbGF0ZXN0IiwiYXR0YWNoS2V5Ym9hcmRIYW5kbGVycyIsInBpZVJlZiIsIl90aGlzNCIsIm9ua2V5ZG93biIsImFsdEtleSIsIm5leHQiLCJmb2N1cyIsIl9uZXh0IiwiYmx1ciIsInJlbmRlclNlY3RvcnMiLCJfdGhpcyRwcm9wczQiLCJjb21wb25lbnREaWRNb3VudCIsInJlbmRlciIsIl90aGlzNSIsIl90aGlzJHByb3BzNSIsImhpZGUiLCJpbm5lclJhZGl1cyIsImxheWVyQ2xhc3MiLCJyb290VGFiSW5kZXgiLCJfcmVmMyIsInJlbmRlckNhbGxCeVBhcmVudCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIm5leHRQcm9wcyIsInByZXZTdGF0ZSIsImN1clNlY3RvcnMiLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCIsInR5cGUiLCJhbGlnbm1lbnRCYXNlbGluZSIsImxlZ2VuZFR5cGUiLCJtaW5BbmdsZSIsImlzU3NyIiwibmFtZUtleSIsInNpZ24iLCJNYXRoIiwibWluIiwiYWJzIiwiaXRlbVByb3BzIiwiZGF0YSIsImNoaWxkcmVuIiwicHJlc2VudGF0aW9uUHJvcHMiLCJjZWxscyIsInBheWxvYWQiLCJjZWxsIiwib2Zmc2V0IiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwibWF4UGllUmFkaXVzIiwibWF4UmFkaXVzIiwic3FydCIsIl9yZWY0IiwiaXRlbSIsImRlZmF1bHRQcm9wcyIsInVuZGVmaW5lZCIsInBpZURhdGEiLCJnZXRSZWFsUGllRGF0YSIsImNvcm5lclJhZGl1cyIsInRvb2x0aXBUeXBlIiwiY29vcmRpbmF0ZSIsInBhcnNlQ29vcmRpbmF0ZU9mUGllIiwicGFyc2VEZWx0YUFuZ2xlIiwiYWJzRGVsdGFBbmdsZSIsIm5vdFplcm9JdGVtQ291bnQiLCJ0b3RhbFBhZGluZ0FuZ2xlIiwicmVhbFRvdGFsQW5nbGUiLCJzdW0iLCJyZWR1Y2UiLCJyZXN1bHQiLCJ2YWwiLCJuYW1lIiwicGVyY2VudCIsInRlbXBTdGFydEFuZ2xlIiwidGVtcEVuZEFuZ2xlIiwibWlkZGxlUmFkaXVzIiwidG9vbHRpcFBheWxvYWQiLCJ0b29sdGlwUG9zaXRpb24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/polar/Pie.js\n"); /***/ }), /***/ "(ssr)/./node_modules/recharts/es6/polar/PolarAngleAxis.js": /*!***********************************************************!*\ !*** ./node_modules/recharts/es6/polar/PolarAngleAxis.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 */ PolarAngleAxis: () => (/* binding */ PolarAngleAxis)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/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 _shape_Dot__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shape/Dot */ \"(ssr)/./node_modules/recharts/es6/shape/Dot.js\");\n/* harmony import */ var _shape_Polygon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../shape/Polygon */ \"(ssr)/./node_modules/recharts/es6/shape/Polygon.js\");\n/* harmony import */ var _component_Text__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../component/Text */ \"(ssr)/./node_modules/recharts/es6/component/Text.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\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\");\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 Axis of radial direction\n */ \n\n\n\n\n\n\n\n\n\nvar RADIAN = Math.PI / 180;\nvar eps = 1e-5;\nvar PolarAngleAxis = /*#__PURE__*/ function(_PureComponent) {\n function PolarAngleAxis() {\n _classCallCheck(this, PolarAngleAxis);\n return _callSuper(this, PolarAngleAxis, arguments);\n }\n _inherits(PolarAngleAxis, _PureComponent);\n return _createClass(PolarAngleAxis, [\n {\n key: \"getTickLineCoord\",\n value: /**\n * Calculate the coordinate of line endpoint\n * @param {Object} data The Data if ticks\n * @return {Object} (x0, y0): The start point of text,\n * (x1, y1): The end point close to text,\n * (x2, y2): The end point close to axis\n */ function getTickLineCoord(data) {\n var _this$props = this.props, cx = _this$props.cx, cy = _this$props.cy, radius = _this$props.radius, orientation = _this$props.orientation, tickSize = _this$props.tickSize;\n var tickLineSize = tickSize || 8;\n var p1 = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, radius, data.coordinate);\n var p2 = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, radius + (orientation === \"inner\" ? -1 : 1) * tickLineSize, data.coordinate);\n return {\n x1: p1.x,\n y1: p1.y,\n x2: p2.x,\n y2: p2.y\n };\n }\n },\n {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor(data) {\n var orientation = this.props.orientation;\n var cos = Math.cos(-data.coordinate * RADIAN);\n var textAnchor;\n if (cos > eps) {\n textAnchor = orientation === \"outer\" ? \"start\" : \"end\";\n } else if (cos < -eps) {\n textAnchor = orientation === \"outer\" ? \"end\" : \"start\";\n } else {\n textAnchor = \"middle\";\n }\n return textAnchor;\n }\n },\n {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props2 = this.props, cx = _this$props2.cx, cy = _this$props2.cy, radius = _this$props2.radius, axisLine = _this$props2.axisLine, axisLineType = _this$props2.axisLineType;\n var props = _objectSpread(_objectSpread({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__.filterProps)(this.props, false)), {}, {\n fill: \"none\"\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__.filterProps)(axisLine, false));\n if (axisLineType === \"circle\") {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Dot__WEBPACK_IMPORTED_MODULE_5__.Dot, _extends({\n className: \"recharts-polar-angle-axis-line\"\n }, props, {\n cx: cx,\n cy: cy,\n r: radius\n }));\n }\n var ticks = this.props.ticks;\n var points = ticks.map(function(entry) {\n return (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, radius, entry.coordinate);\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Polygon__WEBPACK_IMPORTED_MODULE_6__.Polygon, _extends({\n className: \"recharts-polar-angle-axis-line\"\n }, props, {\n points: points\n }));\n }\n },\n {\n key: \"renderTicks\",\n value: function renderTicks() {\n var _this = this;\n var _this$props3 = this.props, ticks = _this$props3.ticks, tick = _this$props3.tick, tickLine = _this$props3.tickLine, tickFormatter = _this$props3.tickFormatter, stroke = _this$props3.stroke;\n var axisProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__.filterProps)(this.props, false);\n var customTickProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__.filterProps)(tick, false);\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: \"none\"\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__.filterProps)(tickLine, false));\n var items = ticks.map(function(entry, i) {\n var lineCoord = _this.getTickLineCoord(entry);\n var textAnchor = _this.getTickTextAnchor(entry);\n var tickProps = _objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor\n }, axisProps), {}, {\n stroke: \"none\",\n fill: stroke\n }, customTickProps), {}, {\n index: i,\n payload: entry,\n x: lineCoord.x2,\n y: lineCoord.y2\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, _extends({\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\"recharts-polar-angle-axis-tick\", (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.getTickClassName)(tick)),\n key: \"tick-\".concat(entry.coordinate)\n }, (0,_util_types__WEBPACK_IMPORTED_MODULE_8__.adaptEventsOfChild)(_this.props, entry, i)), tickLine && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({\n className: \"recharts-polar-angle-axis-tick-line\"\n }, tickLineProps, lineCoord)), tick && PolarAngleAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value));\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n className: \"recharts-polar-angle-axis-ticks\"\n }, items);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props, ticks = _this$props4.ticks, radius = _this$props4.radius, axisLine = _this$props4.axisLine;\n if (radius <= 0 || !ticks || !ticks.length) {\n return null;\n }\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-polar-angle-axis\", this.props.className)\n }, axisLine && this.renderAxisLine(), this.renderTicks());\n }\n }\n ], [\n {\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n tickItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Text__WEBPACK_IMPORTED_MODULE_9__.Text, _extends({}, props, {\n className: \"recharts-polar-angle-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(PolarAngleAxis, \"displayName\", \"PolarAngleAxis\");\n_defineProperty(PolarAngleAxis, \"axisType\", \"angleAxis\");\n_defineProperty(PolarAngleAxis, \"defaultProps\", {\n type: \"category\",\n angleAxisId: 0,\n scale: \"auto\",\n cx: 0,\n cy: 0,\n orientation: \"outer\",\n axisLine: true,\n tickLine: true,\n tickSize: 8,\n tick: true,\n hide: false,\n allowDuplicatedCategory: true\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3BvbGFyL1BvbGFyQW5nbGVBeGlzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlmLE9BQU9nQixJQUFJLENBQUNIO0lBQUksSUFBSWIsT0FBT2lCLHFCQUFxQixFQUFFO1FBQUUsSUFBSXZCLElBQUlNLE9BQU9pQixxQkFBcUIsQ0FBQ0o7UUFBSUMsS0FBTXBCLENBQUFBLElBQUlBLEVBQUV3QixN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QVMsQ0FBQyxHQUFHa0MsT0FBTzt3QkFDcEUrRSxXQUFXO29CQUNiLElBQUlyRDtnQkFDTjtnQkFDQSxPQUFPOEU7WUFDVDtRQUNGO0tBQUU7QUFDSixFQUFFckUsZ0RBQWFBLEVBQUU7QUFDakI1QyxnQkFBZ0IyRCxnQkFBZ0IsZUFBZTtBQUMvQzNELGdCQUFnQjJELGdCQUFnQixZQUFZO0FBQzVDM0QsZ0JBQWdCMkQsZ0JBQWdCLGdCQUFnQjtJQUM5Q3lELE1BQU07SUFDTkMsYUFBYTtJQUNiQyxPQUFPO0lBQ1B0RCxJQUFJO0lBQ0pDLElBQUk7SUFDSkUsYUFBYTtJQUNiaUIsVUFBVTtJQUNWYSxVQUFVO0lBQ1Y3QixVQUFVO0lBQ1Y0QixNQUFNO0lBQ051QixNQUFNO0lBQ05DLHlCQUF5QjtBQUMzQiIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvcG9sYXIvUG9sYXJBbmdsZUF4aXMuanM/YTA1MCJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IEF4aXMgb2YgcmFkaWFsIGRpcmVjdGlvblxuICovXG5pbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgRG90IH0gZnJvbSAnLi4vc2hhcGUvRG90JztcbmltcG9ydCB7IFBvbHlnb24gfSBmcm9tICcuLi9zaGFwZS9Qb2x5Z29uJztcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9jb21wb25lbnQvVGV4dCc7XG5pbXBvcnQgeyBhZGFwdEV2ZW50c09mQ2hpbGQgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmltcG9ydCB7IGdldFRpY2tDbGFzc05hbWUsIHBvbGFyVG9DYXJ0ZXNpYW4gfSBmcm9tICcuLi91dGlsL1BvbGFyVXRpbHMnO1xudmFyIFJBRElBTiA9IE1hdGguUEkgLyAxODA7XG52YXIgZXBzID0gMWUtNTtcbmV4cG9ydCB2YXIgUG9sYXJBbmdsZUF4aXMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIGZ1bmN0aW9uIFBvbGFyQW5nbGVBeGlzKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQb2xhckFuZ2xlQXhpcyk7XG4gICAgcmV0dXJuIF9jYWxsU3VwZXIodGhpcywgUG9sYXJBbmdsZUF4aXMsIGFyZ3VtZW50cyk7XG4gIH1cbiAgX2luaGVyaXRzKFBvbGFyQW5nbGVBeGlzLCBfUHVyZUNvbXBvbmVudCk7XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoUG9sYXJBbmdsZUF4aXMsIFt7XG4gICAga2V5OiBcImdldFRpY2tMaW5lQ29vcmRcIixcbiAgICB2YWx1ZTpcbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgdGhlIGNvb3JkaW5hdGUgb2YgbGluZSBlbmRwb2ludFxuICAgICAqIEBwYXJhbSAge09iamVjdH0gZGF0YSBUaGUgRGF0YSBpZiB0aWNrc1xuICAgICAqIEByZXR1cm4ge09iamVjdH0gKHgwLCB5MCk6IFRoZSBzdGFydCBwb2ludCBvZiB0ZXh0LFxuICAgICAqICAgICAgICAgICAgICAgICAgKHgxLCB5MSk6IFRoZSBlbmQgcG9pbnQgY2xvc2UgdG8gdGV4dCxcbiAgICAgKiAgICAgICAgICAgICAgICAgICh4MiwgeTIpOiBUaGUgZW5kIHBvaW50IGNsb3NlIHRvIGF4aXNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRUaWNrTGluZUNvb3JkKGRhdGEpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGN4ID0gX3RoaXMkcHJvcHMuY3gsXG4gICAgICAgIGN5ID0gX3RoaXMkcHJvcHMuY3ksXG4gICAgICAgIHJhZGl1cyA9IF90aGlzJHByb3BzLnJhZGl1cyxcbiAgICAgICAgb3JpZW50YXRpb24gPSBfdGhpcyRwcm9wcy5vcmllbnRhdGlvbixcbiAgICAgICAgdGlja1NpemUgPSBfdGhpcyRwcm9wcy50aWNrU2l6ZTtcbiAgICAgIHZhciB0aWNrTGluZVNpemUgPSB0aWNrU2l6ZSB8fCA4O1xuICAgICAgdmFyIHAxID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHJhZGl1cywgZGF0YS5jb29yZGluYXRlKTtcbiAgICAgIHZhciBwMiA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByYWRpdXMgKyAob3JpZW50YXRpb24gPT09ICdpbm5lcicgPyAtMSA6IDEpICogdGlja0xpbmVTaXplLCBkYXRhLmNvb3JkaW5hdGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDE6IHAxLngsXG4gICAgICAgIHkxOiBwMS55LFxuICAgICAgICB4MjogcDIueCxcbiAgICAgICAgeTI6IHAyLnlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSB0ZXh0LWFuY2hvciBvZiBlYWNoIHRpY2tcbiAgICAgKiBAcGFyYW0gIHtPYmplY3R9IGRhdGEgRGF0YSBvZiB0aWNrc1xuICAgICAqIEByZXR1cm4ge1N0cmluZ30gdGV4dC1hbmNob3JcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRUaWNrVGV4dEFuY2hvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUaWNrVGV4dEFuY2hvcihkYXRhKSB7XG4gICAgICB2YXIgb3JpZW50YXRpb24gPSB0aGlzLnByb3BzLm9yaWVudGF0aW9uO1xuICAgICAgdmFyIGNvcyA9IE1hdGguY29zKC1kYXRhLmNvb3JkaW5hdGUgKiBSQURJQU4pO1xuICAgICAgdmFyIHRleHRBbmNob3I7XG4gICAgICBpZiAoY29zID4gZXBzKSB7XG4gICAgICAgIHRleHRBbmNob3IgPSBvcmllbnRhdGlvbiA9PT0gJ291dGVyJyA/ICdzdGFydCcgOiAnZW5kJztcbiAgICAgIH0gZWxzZSBpZiAoY29zIDwgLWVwcykge1xuICAgICAgICB0ZXh0QW5jaG9yID0gb3JpZW50YXRpb24gPT09ICdvdXRlcicgPyAnZW5kJyA6ICdzdGFydCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXh0QW5jaG9yID0gJ21pZGRsZSc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGV4dEFuY2hvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQXhpc0xpbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQXhpc0xpbmUoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY3ggPSBfdGhpcyRwcm9wczIuY3gsXG4gICAgICAgIGN5ID0gX3RoaXMkcHJvcHMyLmN5LFxuICAgICAgICByYWRpdXMgPSBfdGhpcyRwcm9wczIucmFkaXVzLFxuICAgICAgICBheGlzTGluZSA9IF90aGlzJHByb3BzMi5heGlzTGluZSxcbiAgICAgICAgYXhpc0xpbmVUeXBlID0gX3RoaXMkcHJvcHMyLmF4aXNMaW5lVHlwZTtcbiAgICAgIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyUHJvcHModGhpcy5wcm9wcywgZmFsc2UpKSwge30sIHtcbiAgICAgICAgZmlsbDogJ25vbmUnXG4gICAgICB9LCBmaWx0ZXJQcm9wcyhheGlzTGluZSwgZmFsc2UpKTtcbiAgICAgIGlmIChheGlzTGluZVR5cGUgPT09ICdjaXJjbGUnKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChEb3QsIF9leHRlbmRzKHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtcG9sYXItYW5nbGUtYXhpcy1saW5lXCJcbiAgICAgICAgfSwgcHJvcHMsIHtcbiAgICAgICAgICBjeDogY3gsXG4gICAgICAgICAgY3k6IGN5LFxuICAgICAgICAgIHI6IHJhZGl1c1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICB2YXIgdGlja3MgPSB0aGlzLnByb3BzLnRpY2tzO1xuICAgICAgdmFyIHBvaW50cyA9IHRpY2tzLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByYWRpdXMsIGVudHJ5LmNvb3JkaW5hdGUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUG9seWdvbiwgX2V4dGVuZHMoe1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtcG9sYXItYW5nbGUtYXhpcy1saW5lXCJcbiAgICAgIH0sIHByb3BzLCB7XG4gICAgICAgIHBvaW50czogcG9pbnRzXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclRpY2tzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclRpY2tzKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSB0aGlzLnByb3BzLFxuICAgICAgICB0aWNrcyA9IF90aGlzJHByb3BzMy50aWNrcyxcbiAgICAgICAgdGljayA9IF90aGlzJHByb3BzMy50aWNrLFxuICAgICAgICB0aWNrTGluZSA9IF90aGlzJHByb3BzMy50aWNrTGluZSxcbiAgICAgICAgdGlja0Zvcm1hdHRlciA9IF90aGlzJHByb3BzMy50aWNrRm9ybWF0dGVyLFxuICAgICAgICBzdHJva2UgPSBfdGhpcyRwcm9wczMuc3Ryb2tlO1xuICAgICAgdmFyIGF4aXNQcm9wcyA9IGZpbHRlclByb3BzKHRoaXMucHJvcHMsIGZhbHNlKTtcbiAgICAgIHZhciBjdXN0b21UaWNrUHJvcHMgPSBmaWx0ZXJQcm9wcyh0aWNrLCBmYWxzZSk7XG4gICAgICB2YXIgdGlja0xpbmVQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXhpc1Byb3BzKSwge30sIHtcbiAgICAgICAgZmlsbDogJ25vbmUnXG4gICAgICB9LCBmaWx0ZXJQcm9wcyh0aWNrTGluZSwgZmFsc2UpKTtcbiAgICAgIHZhciBpdGVtcyA9IHRpY2tzLm1hcChmdW5jdGlvbiAoZW50cnksIGkpIHtcbiAgICAgICAgdmFyIGxpbmVDb29yZCA9IF90aGlzLmdldFRpY2tMaW5lQ29vcmQoZW50cnkpO1xuICAgICAgICB2YXIgdGV4dEFuY2hvciA9IF90aGlzLmdldFRpY2tUZXh0QW5jaG9yKGVudHJ5KTtcbiAgICAgICAgdmFyIHRpY2tQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB0ZXh0QW5jaG9yOiB0ZXh0QW5jaG9yXG4gICAgICAgIH0sIGF4aXNQcm9wcyksIHt9LCB7XG4gICAgICAgICAgc3Ryb2tlOiAnbm9uZScsXG4gICAgICAgICAgZmlsbDogc3Ryb2tlXG4gICAgICAgIH0sIGN1c3RvbVRpY2tQcm9wcyksIHt9LCB7XG4gICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgcGF5bG9hZDogZW50cnksXG4gICAgICAgICAgeDogbGluZUNvb3JkLngyLFxuICAgICAgICAgIHk6IGxpbmVDb29yZC55MlxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCBfZXh0ZW5kcyh7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1wb2xhci1hbmdsZS1heGlzLXRpY2snLCBnZXRUaWNrQ2xhc3NOYW1lKHRpY2spKSxcbiAgICAgICAgICBrZXk6IFwidGljay1cIi5jb25jYXQoZW50cnkuY29vcmRpbmF0ZSlcbiAgICAgICAgfSwgYWRhcHRFdmVudHNPZkNoaWxkKF90aGlzLnByb3BzLCBlbnRyeSwgaSkpLCB0aWNrTGluZSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1wb2xhci1hbmdsZS1heGlzLXRpY2stbGluZVwiXG4gICAgICAgIH0sIHRpY2tMaW5lUHJvcHMsIGxpbmVDb29yZCkpLCB0aWNrICYmIFBvbGFyQW5nbGVBeGlzLnJlbmRlclRpY2tJdGVtKHRpY2ssIHRpY2tQcm9wcywgdGlja0Zvcm1hdHRlciA/IHRpY2tGb3JtYXR0ZXIoZW50cnkudmFsdWUsIGkpIDogZW50cnkudmFsdWUpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1wb2xhci1hbmdsZS1heGlzLXRpY2tzXCJcbiAgICAgIH0sIGl0ZW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSB0aGlzLnByb3BzLFxuICAgICAgICB0aWNrcyA9IF90aGlzJHByb3BzNC50aWNrcyxcbiAgICAgICAgcmFkaXVzID0gX3RoaXMkcHJvcHM0LnJhZGl1cyxcbiAgICAgICAgYXhpc0xpbmUgPSBfdGhpcyRwcm9wczQuYXhpc0xpbmU7XG4gICAgICBpZiAocmFkaXVzIDw9IDAgfHwgIXRpY2tzIHx8ICF0aWNrcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1wb2xhci1hbmdsZS1heGlzJywgdGhpcy5wcm9wcy5jbGFzc05hbWUpXG4gICAgICB9LCBheGlzTGluZSAmJiB0aGlzLnJlbmRlckF4aXNMaW5lKCksIHRoaXMucmVuZGVyVGlja3MoKSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwicmVuZGVyVGlja0l0ZW1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyVGlja0l0ZW0ob3B0aW9uLCBwcm9wcywgdmFsdWUpIHtcbiAgICAgIHZhciB0aWNrSXRlbTtcbiAgICAgIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KG9wdGlvbikpIHtcbiAgICAgICAgdGlja0l0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKG9wdGlvbikpIHtcbiAgICAgICAgdGlja0l0ZW0gPSBvcHRpb24ocHJvcHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGlja0l0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0LCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtcG9sYXItYW5nbGUtYXhpcy10aWNrLXZhbHVlXCJcbiAgICAgICAgfSksIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aWNrSXRlbTtcbiAgICB9XG4gIH1dKTtcbn0oUHVyZUNvbXBvbmVudCk7XG5fZGVmaW5lUHJvcGVydHkoUG9sYXJBbmdsZUF4aXMsIFwiZGlzcGxheU5hbWVcIiwgJ1BvbGFyQW5nbGVBeGlzJyk7XG5fZGVmaW5lUHJvcGVydHkoUG9sYXJBbmdsZUF4aXMsIFwiYXhpc1R5cGVcIiwgJ2FuZ2xlQXhpcycpO1xuX2RlZmluZVByb3BlcnR5KFBvbGFyQW5nbGVBeGlzLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHR5cGU6ICdjYXRlZ29yeScsXG4gIGFuZ2xlQXhpc0lkOiAwLFxuICBzY2FsZTogJ2F1dG8nLFxuICBjeDogMCxcbiAgY3k6IDAsXG4gIG9yaWVudGF0aW9uOiAnb3V0ZXInLFxuICBheGlzTGluZTogdHJ1ZSxcbiAgdGlja0xpbmU6IHRydWUsXG4gIHRpY2tTaXplOiA4LFxuICB0aWNrOiB0cnVlLFxuICBoaWRlOiBmYWxzZSxcbiAgYWxsb3dEdXBsaWNhdGVkQ2F0ZWdvcnk6IHRydWVcbn0pOyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiaXNGdW5jdGlvbiIsImNsc3giLCJMYXllciIsIkRvdCIsIlBvbHlnb24iLCJUZXh0IiwiYWRhcHRFdmVudHNPZkNoaWxkIiwiZmlsdGVyUHJvcHMiLCJnZXRUaWNrQ2xhc3NOYW1lIiwicG9sYXJUb0NhcnRlc2lhbiIsIlJBRElBTiIsIk1hdGgiLCJQSSIsImVwcyIsIlBvbGFyQW5nbGVBeGlzIiwiX1B1cmVDb21wb25lbnQiLCJnZXRUaWNrTGluZUNvb3JkIiwiZGF0YSIsIl90aGlzJHByb3BzIiwiY3giLCJjeSIsInJhZGl1cyIsIm9yaWVudGF0aW9uIiwidGlja1NpemUiLCJ0aWNrTGluZVNpemUiLCJwMSIsImNvb3JkaW5hdGUiLCJwMiIsIngxIiwieCIsInkxIiwieSIsIngyIiwieTIiLCJnZXRUaWNrVGV4dEFuY2hvciIsImNvcyIsInRleHRBbmNob3IiLCJyZW5kZXJBeGlzTGluZSIsIl90aGlzJHByb3BzMiIsImF4aXNMaW5lIiwiYXhpc0xpbmVUeXBlIiwiZmlsbCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJ0aWNrcyIsInBvaW50cyIsIm1hcCIsImVudHJ5IiwicmVuZGVyVGlja3MiLCJfdGhpcyIsIl90aGlzJHByb3BzMyIsInRpY2siLCJ0aWNrTGluZSIsInRpY2tGb3JtYXR0ZXIiLCJzdHJva2UiLCJheGlzUHJvcHMiLCJjdXN0b21UaWNrUHJvcHMiLCJ0aWNrTGluZVByb3BzIiwiaXRlbXMiLCJsaW5lQ29vcmQiLCJ0aWNrUHJvcHMiLCJpbmRleCIsInBheWxvYWQiLCJjb25jYXQiLCJyZW5kZXJUaWNrSXRlbSIsInJlbmRlciIsIl90aGlzJHByb3BzNCIsIm9wdGlvbiIsInRpY2tJdGVtIiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJ0eXBlIiwiYW5nbGVBeGlzSWQiLCJzY2FsZSIsImhpZGUiLCJhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/polar/PolarAngleAxis.js\n"); /***/ }), /***/ "(ssr)/./node_modules/recharts/es6/polar/PolarRadiusAxis.js": /*!************************************************************!*\ !*** ./node_modules/recharts/es6/polar/PolarRadiusAxis.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 */ PolarRadiusAxis: () => (/* binding */ PolarRadiusAxis)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/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_maxBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/maxBy */ \"(ssr)/./node_modules/lodash/maxBy.js\");\n/* harmony import */ var lodash_maxBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_maxBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_minBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/minBy */ \"(ssr)/./node_modules/lodash/minBy.js\");\n/* harmony import */ var lodash_minBy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_minBy__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 _component_Text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../component/Text */ \"(ssr)/./node_modules/recharts/es6/component/Text.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 _container_Layer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _util_PolarUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_8__ = __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\");\nvar _excluded = [\n \"cx\",\n \"cy\",\n \"angle\",\n \"ticks\",\n \"axisLine\"\n], _excluded2 = [\n \"ticks\",\n \"tick\",\n \"angle\",\n \"tickFormatter\",\n \"stroke\"\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 The axis of polar coordinate system\n */ \n\n\n\n\n\n\n\n\n\n\nvar PolarRadiusAxis = /*#__PURE__*/ function(_PureComponent) {\n function PolarRadiusAxis() {\n _classCallCheck(this, PolarRadiusAxis);\n return _callSuper(this, PolarRadiusAxis, arguments);\n }\n _inherits(PolarRadiusAxis, _PureComponent);\n return _createClass(PolarRadiusAxis, [\n {\n key: \"getTickValueCoord\",\n value: /**\n * Calculate the coordinate of tick\n * @param {Number} coordinate The radius of tick\n * @return {Object} (x, y)\n */ function getTickValueCoord(_ref) {\n var coordinate = _ref.coordinate;\n var _this$props = this.props, angle = _this$props.angle, cx = _this$props.cx, cy = _this$props.cy;\n return (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_5__.polarToCartesian)(cx, cy, coordinate, angle);\n }\n },\n {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var orientation = this.props.orientation;\n var textAnchor;\n switch(orientation){\n case \"left\":\n textAnchor = \"end\";\n break;\n case \"right\":\n textAnchor = \"start\";\n break;\n default:\n textAnchor = \"middle\";\n break;\n }\n return textAnchor;\n }\n },\n {\n key: \"getViewBox\",\n value: function getViewBox() {\n var _this$props2 = this.props, cx = _this$props2.cx, cy = _this$props2.cy, angle = _this$props2.angle, ticks = _this$props2.ticks;\n var maxRadiusTick = lodash_maxBy__WEBPACK_IMPORTED_MODULE_1___default()(ticks, function(entry) {\n return entry.coordinate || 0;\n });\n var minRadiusTick = lodash_minBy__WEBPACK_IMPORTED_MODULE_2___default()(ticks, function(entry) {\n return entry.coordinate || 0;\n });\n return {\n cx: cx,\n cy: cy,\n startAngle: angle,\n endAngle: angle,\n innerRadius: minRadiusTick.coordinate || 0,\n outerRadius: maxRadiusTick.coordinate || 0\n };\n }\n },\n {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props3 = this.props, cx = _this$props3.cx, cy = _this$props3.cy, angle = _this$props3.angle, ticks = _this$props3.ticks, axisLine = _this$props3.axisLine, others = _objectWithoutProperties(_this$props3, _excluded);\n var extent = ticks.reduce(function(result, entry) {\n return [\n Math.min(result[0], entry.coordinate),\n Math.max(result[1], entry.coordinate)\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n var point0 = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_5__.polarToCartesian)(cx, cy, extent[0], angle);\n var point1 = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_5__.polarToCartesian)(cx, cy, extent[1], angle);\n var props = _objectSpread(_objectSpread(_objectSpread({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(others, false)), {}, {\n fill: \"none\"\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(axisLine, false)), {}, {\n x1: point0.x,\n y1: point0.y,\n x2: point1.x,\n y2: point1.y\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({\n className: \"recharts-polar-radius-axis-line\"\n }, props));\n }\n },\n {\n key: \"renderTicks\",\n value: function renderTicks() {\n var _this = this;\n var _this$props4 = this.props, ticks = _this$props4.ticks, tick = _this$props4.tick, angle = _this$props4.angle, tickFormatter = _this$props4.tickFormatter, stroke = _this$props4.stroke, others = _objectWithoutProperties(_this$props4, _excluded2);\n var textAnchor = this.getTickTextAnchor();\n var axisProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(others, false);\n var customTickProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(tick, false);\n var items = ticks.map(function(entry, i) {\n var coord = _this.getTickValueCoord(entry);\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n transform: \"rotate(\".concat(90 - angle, \", \").concat(coord.x, \", \").concat(coord.y, \")\")\n }, axisProps), {}, {\n stroke: \"none\",\n fill: stroke\n }, customTickProps), {}, {\n index: i\n }, coord), {}, {\n payload: entry\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, _extends({\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\"recharts-polar-radius-axis-tick\", (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_5__.getTickClassName)(tick)),\n key: \"tick-\".concat(entry.coordinate)\n }, (0,_util_types__WEBPACK_IMPORTED_MODULE_8__.adaptEventsOfChild)(_this.props, entry, i)), PolarRadiusAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value));\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n className: \"recharts-polar-radius-axis-ticks\"\n }, items);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this$props5 = this.props, ticks = _this$props5.ticks, axisLine = _this$props5.axisLine, tick = _this$props5.tick;\n if (!ticks || !ticks.length) {\n return null;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\"recharts-polar-radius-axis\", this.props.className)\n }, axisLine && this.renderAxisLine(), tick && this.renderTicks(), _component_Label__WEBPACK_IMPORTED_MODULE_9__.Label.renderCallByParent(this.props, this.getViewBox()));\n }\n }\n ], [\n {\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n tickItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Text__WEBPACK_IMPORTED_MODULE_10__.Text, _extends({}, props, {\n className: \"recharts-polar-radius-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }\n ]);\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(PolarRadiusAxis, \"displayName\", \"PolarRadiusAxis\");\n_defineProperty(PolarRadiusAxis, \"axisType\", \"radiusAxis\");\n_defineProperty(PolarRadiusAxis, \"defaultProps\", {\n type: \"number\",\n radiusAxisId: 0,\n cx: 0,\n cy: 0,\n angle: 0,\n orientation: \"right\",\n stroke: \"#ccc\",\n axisLine: true,\n tick: true,\n tickCount: 5,\n allowDataOverflow: false,\n scale: \"auto\",\n allowDuplicatedCategory: true\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3BvbGFyL1BvbGFyUmFkaXVzQXhpcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0lBQU07SUFBTTtJQUFTO0lBQVM7Q0FBVyxFQUN4REMsYUFBYTtJQUFDO0lBQVM7SUFBUTtJQUFTO0lBQWlCO0NBQVM7QUFDcEUsU0FBU0MsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJZixPQUFPZ0IsSUFBSSxDQUFDSDtJQUFJLElB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SUFBSXNDLHdEQUFVQSxDQUFDeUUsU0FBUztvQkFDN0JDLFdBQVdELE9BQU8vRztnQkFDcEIsT0FBTztvQkFDTGdILFdBQVcsV0FBVyxHQUFFOUUsMERBQW1CLENBQUNNLGtEQUFJQSxFQUFFaEYsU0FBUyxDQUFDLEdBQUd3QyxPQUFPO3dCQUNwRTBGLFdBQVc7b0JBQ2IsSUFBSWhFO2dCQUNOO2dCQUNBLE9BQU9zRjtZQUNUO1FBQ0Y7S0FBRTtBQUNKLEVBQUU3RSxnREFBYUEsRUFBRTtBQUNqQmxELGdCQUFnQjhELGlCQUFpQixlQUFlO0FBQ2hEOUQsZ0JBQWdCOEQsaUJBQWlCLFlBQVk7QUFDN0M5RCxnQkFBZ0I4RCxpQkFBaUIsZ0JBQWdCO0lBQy9Db0UsTUFBTTtJQUNOQyxjQUFjO0lBQ2Q5RCxJQUFJO0lBQ0pDLElBQUk7SUFDSkYsT0FBTztJQUNQSSxhQUFhO0lBQ2J1QyxRQUFRO0lBQ1J6QixVQUFVO0lBQ1Z1QixNQUFNO0lBQ051QixXQUFXO0lBQ1hDLG1CQUFtQjtJQUNuQkMsT0FBTztJQUNQQyx5QkFBeUI7QUFDM0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3BvbGFyL1BvbGFyUmFkaXVzQXhpcy5qcz81NTY1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfZXhjbHVkZWQgPSBbXCJjeFwiLCBcImN5XCIsIFwiYW5nbGVcIiwgXCJ0aWNrc1wiLCBcImF4aXNMaW5lXCJdLFxuICBfZXhjbHVkZWQyID0gW1widGlja3NcIiwgXCJ0aWNrXCIsIFwiYW5nbGVcIiwgXCJ0aWNrRm9ybWF0dGVyXCIsIFwic3Ryb2tlXCJdO1xuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgVGhlIGF4aXMgb2YgcG9sYXIgY29vcmRpbmF0ZSBzeXN0ZW1cbiAqL1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbWF4QnkgZnJvbSAnbG9kYXNoL21heEJ5JztcbmltcG9ydCBtaW5CeSBmcm9tICdsb2Rhc2gvbWluQnknO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50L1RleHQnO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuLi9jb21wb25lbnQvTGFiZWwnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgZ2V0VGlja0NsYXNzTmFtZSwgcG9sYXJUb0NhcnRlc2lhbiB9IGZyb20gJy4uL3V0aWwvUG9sYXJVdGlscyc7XG5pbXBvcnQgeyBhZGFwdEV2ZW50c09mQ2hpbGQgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmV4cG9ydCB2YXIgUG9sYXJSYWRpdXNBeGlzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUHVyZUNvbXBvbmVudCkge1xuICBmdW5jdGlvbiBQb2xhclJhZGl1c0F4aXMoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBvbGFyUmFkaXVzQXhpcyk7XG4gICAgcmV0dXJuIF9jYWxsU3VwZXIodGhpcywgUG9sYXJSYWRpdXNBeGlzLCBhcmd1bWVudHMpO1xuICB9XG4gIF9pbmhlcml0cyhQb2xhclJhZGl1c0F4aXMsIF9QdXJlQ29tcG9uZW50KTtcbiAgcmV0dXJuIF9jcmVhdGVDbGFzcyhQb2xhclJhZGl1c0F4aXMsIFt7XG4gICAga2V5OiBcImdldFRpY2tWYWx1ZUNvb3JkXCIsXG4gICAgdmFsdWU6XG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlIHRoZSBjb29yZGluYXRlIG9mIHRpY2tcbiAgICAgKiBAcGFyYW0gIHtOdW1iZXJ9IGNvb3JkaW5hdGUgVGhlIHJhZGl1cyBvZiB0aWNrXG4gICAgICogQHJldHVybiB7T2JqZWN0fSAoeCwgeSlcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRUaWNrVmFsdWVDb29yZChfcmVmKSB7XG4gICAgICB2YXIgY29vcmRpbmF0ZSA9IF9yZWYuY29vcmRpbmF0ZTtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGFuZ2xlID0gX3RoaXMkcHJvcHMuYW5nbGUsXG4gICAgICAgIGN4ID0gX3RoaXMkcHJvcHMuY3gsXG4gICAgICAgIGN5ID0gX3RoaXMkcHJvcHMuY3k7XG4gICAgICByZXR1cm4gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIGNvb3JkaW5hdGUsIGFuZ2xlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGlja1RleHRBbmNob3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VGlja1RleHRBbmNob3IoKSB7XG4gICAgICB2YXIgb3JpZW50YXRpb24gPSB0aGlzLnByb3BzLm9yaWVudGF0aW9uO1xuICAgICAgdmFyIHRleHRBbmNob3I7XG4gICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIHRleHRBbmNob3IgPSAnZW5kJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIHRleHRBbmNob3IgPSAnc3RhcnQnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRleHRBbmNob3IgPSAnbWlkZGxlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZXh0QW5jaG9yO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRWaWV3Qm94XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZXdCb3goKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY3ggPSBfdGhpcyRwcm9wczIuY3gsXG4gICAgICAgIGN5ID0gX3RoaXMkcHJvcHMyLmN5LFxuICAgICAgICBhbmdsZSA9IF90aGlzJHByb3BzMi5hbmdsZSxcbiAgICAgICAgdGlja3MgPSBfdGhpcyRwcm9wczIudGlja3M7XG4gICAgICB2YXIgbWF4UmFkaXVzVGljayA9IG1heEJ5KHRpY2tzLCBmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmNvb3JkaW5hdGUgfHwgMDtcbiAgICAgIH0pO1xuICAgICAgdmFyIG1pblJhZGl1c1RpY2sgPSBtaW5CeSh0aWNrcywgZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiBlbnRyeS5jb29yZGluYXRlIHx8IDA7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGN4OiBjeCxcbiAgICAgICAgY3k6IGN5LFxuICAgICAgICBzdGFydEFuZ2xlOiBhbmdsZSxcbiAgICAgICAgZW5kQW5nbGU6IGFuZ2xlLFxuICAgICAgICBpbm5lclJhZGl1czogbWluUmFkaXVzVGljay5jb29yZGluYXRlIHx8IDAsXG4gICAgICAgIG91dGVyUmFkaXVzOiBtYXhSYWRpdXNUaWNrLmNvb3JkaW5hdGUgfHwgMFxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQXhpc0xpbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQXhpc0xpbmUoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY3ggPSBfdGhpcyRwcm9wczMuY3gsXG4gICAgICAgIGN5ID0gX3RoaXMkcHJvcHMzLmN5LFxuICAgICAgICBhbmdsZSA9IF90aGlzJHByb3BzMy5hbmdsZSxcbiAgICAgICAgdGlja3MgPSBfdGhpcyRwcm9wczMudGlja3MsXG4gICAgICAgIGF4aXNMaW5lID0gX3RoaXMkcHJvcHMzLmF4aXNMaW5lLFxuICAgICAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHMzLCBfZXhjbHVkZWQpO1xuICAgICAgdmFyIGV4dGVudCA9IHRpY2tzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgICAgICByZXR1cm4gW01hdGgubWluKHJlc3VsdFswXSwgZW50cnkuY29vcmRpbmF0ZSksIE1hdGgubWF4KHJlc3VsdFsxXSwgZW50cnkuY29vcmRpbmF0ZSldO1xuICAgICAgfSwgW0luZmluaXR5LCAtSW5maW5pdHldKTtcbiAgICAgIHZhciBwb2ludDAgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgZXh0ZW50WzBdLCBhbmdsZSk7XG4gICAgICB2YXIgcG9pbnQxID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIGV4dGVudFsxXSwgYW5nbGUpO1xuICAgICAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGZpbHRlclByb3BzKG90aGVycywgZmFsc2UpKSwge30sIHtcbiAgICAgICAgZmlsbDogJ25vbmUnXG4gICAgICB9LCBmaWx0ZXJQcm9wcyhheGlzTGluZSwgZmFsc2UpKSwge30sIHtcbiAgICAgICAgeDE6IHBvaW50MC54LFxuICAgICAgICB5MTogcG9pbnQwLnksXG4gICAgICAgIHgyOiBwb2ludDEueCxcbiAgICAgICAgeTI6IHBvaW50MS55XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwgX2V4dGVuZHMoe1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtcG9sYXItcmFkaXVzLWF4aXMtbGluZVwiXG4gICAgICB9LCBwcm9wcykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJUaWNrc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJUaWNrcygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM0ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgdGlja3MgPSBfdGhpcyRwcm9wczQudGlja3MsXG4gICAgICAgIHRpY2sgPSBfdGhpcyRwcm9wczQudGljayxcbiAgICAgICAgYW5nbGUgPSBfdGhpcyRwcm9wczQuYW5nbGUsXG4gICAgICAgIHRpY2tGb3JtYXR0ZXIgPSBfdGhpcyRwcm9wczQudGlja0Zvcm1hdHRlcixcbiAgICAgICAgc3Ryb2tlID0gX3RoaXMkcHJvcHM0LnN0cm9rZSxcbiAgICAgICAgb3RoZXJzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNCwgX2V4Y2x1ZGVkMik7XG4gICAgICB2YXIgdGV4dEFuY2hvciA9IHRoaXMuZ2V0VGlja1RleHRBbmNob3IoKTtcbiAgICAgIHZhciBheGlzUHJvcHMgPSBmaWx0ZXJQcm9wcyhvdGhlcnMsIGZhbHNlKTtcbiAgICAgIHZhciBjdXN0b21UaWNrUHJvcHMgPSBmaWx0ZXJQcm9wcyh0aWNrLCBmYWxzZSk7XG4gICAgICB2YXIgaXRlbXMgPSB0aWNrcy5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgICAgIHZhciBjb29yZCA9IF90aGlzLmdldFRpY2tWYWx1ZUNvb3JkKGVudHJ5KTtcbiAgICAgICAgdmFyIHRpY2tQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIHRleHRBbmNob3I6IHRleHRBbmNob3IsXG4gICAgICAgICAgdHJhbnNmb3JtOiBcInJvdGF0ZShcIi5jb25jYXQoOTAgLSBhbmdsZSwgXCIsIFwiKS5jb25jYXQoY29vcmQueCwgXCIsIFwiKS5jb25jYXQoY29vcmQueSwgXCIpXCIpXG4gICAgICAgIH0sIGF4aXNQcm9wcyksIHt9LCB7XG4gICAgICAgICAgc3Ryb2tlOiAnbm9uZScsXG4gICAgICAgICAgZmlsbDogc3Ryb2tlXG4gICAgICAgIH0sIGN1c3RvbVRpY2tQcm9wcyksIHt9LCB7XG4gICAgICAgICAgaW5kZXg6IGlcbiAgICAgICAgfSwgY29vcmQpLCB7fSwge1xuICAgICAgICAgIHBheWxvYWQ6IGVudHJ5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIF9leHRlbmRzKHtcbiAgICAgICAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXBvbGFyLXJhZGl1cy1heGlzLXRpY2snLCBnZXRUaWNrQ2xhc3NOYW1lKHRpY2spKSxcbiAgICAgICAgICBrZXk6IFwidGljay1cIi5jb25jYXQoZW50cnkuY29vcmRpbmF0ZSlcbiAgICAgICAgfSwgYWRhcHRFdmVudHNPZkNoaWxkKF90aGlzLnByb3BzLCBlbnRyeSwgaSkpLCBQb2xhclJhZGl1c0F4aXMucmVuZGVyVGlja0l0ZW0odGljaywgdGlja1Byb3BzLCB0aWNrRm9ybWF0dGVyID8gdGlja0Zvcm1hdHRlcihlbnRyeS52YWx1ZSwgaSkgOiBlbnRyeS52YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLXBvbGFyLXJhZGl1cy1heGlzLXRpY2tzXCJcbiAgICAgIH0sIGl0ZW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczUgPSB0aGlzLnByb3BzLFxuICAgICAgICB0aWNrcyA9IF90aGlzJHByb3BzNS50aWNrcyxcbiAgICAgICAgYXhpc0xpbmUgPSBfdGhpcyRwcm9wczUuYXhpc0xpbmUsXG4gICAgICAgIHRpY2sgPSBfdGhpcyRwcm9wczUudGljaztcbiAgICAgIGlmICghdGlja3MgfHwgIXRpY2tzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgICAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXBvbGFyLXJhZGl1cy1heGlzJywgdGhpcy5wcm9wcy5jbGFzc05hbWUpXG4gICAgICB9LCBheGlzTGluZSAmJiB0aGlzLnJlbmRlckF4aXNMaW5lKCksIHRpY2sgJiYgdGhpcy5yZW5kZXJUaWNrcygpLCBMYWJlbC5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcywgdGhpcy5nZXRWaWV3Qm94KCkpKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJyZW5kZXJUaWNrSXRlbVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJUaWNrSXRlbShvcHRpb24sIHByb3BzLCB2YWx1ZSkge1xuICAgICAgdmFyIHRpY2tJdGVtO1xuICAgICAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQob3B0aW9uKSkge1xuICAgICAgICB0aWNrSXRlbSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQob3B0aW9uLCBwcm9wcyk7XG4gICAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgICAgICB0aWNrSXRlbSA9IG9wdGlvbihwcm9wcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aWNrSXRlbSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRleHQsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1wb2xhci1yYWRpdXMtYXhpcy10aWNrLXZhbHVlXCJcbiAgICAgICAgfSksIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aWNrSXRlbTtcbiAgICB9XG4gIH1dKTtcbn0oUHVyZUNvbXBvbmVudCk7XG5fZGVmaW5lUHJvcGVydHkoUG9sYXJSYWRpdXNBeGlzLCBcImRpc3BsYXlOYW1lXCIsICdQb2xhclJhZGl1c0F4aXMnKTtcbl9kZWZpbmVQcm9wZXJ0eShQb2xhclJhZGl1c0F4aXMsIFwiYXhpc1R5cGVcIiwgJ3JhZGl1c0F4aXMnKTtcbl9kZWZpbmVQcm9wZXJ0eShQb2xhclJhZGl1c0F4aXMsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgdHlwZTogJ251bWJlcicsXG4gIHJhZGl1c0F4aXNJZDogMCxcbiAgY3g6IDAsXG4gIGN5OiAwLFxuICBhbmdsZTogMCxcbiAgb3JpZW50YXRpb246ICdyaWdodCcsXG4gIHN0cm9rZTogJyNjY2MnLFxuICBheGlzTGluZTogdHJ1ZSxcbiAgdGljazogdHJ1ZSxcbiAgdGlja0NvdW50OiA1LFxuICBhbGxvd0RhdGFPdmVyZmxvdzogZmFsc2UsXG4gIHNjYWxlOiAnYXV0bycsXG4gIGFsbG93RHVwbGljYXRlZENhdGVnb3J5OiB0cnVlXG59KTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIm93bktleXMiLCJlIiwiciIsInQiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIm1heEJ5IiwibWluQnkiLCJpc0Z1bmN0aW9uIiwiY2xzeCIsIlRleHQiLCJMYWJlbCIsIkxheWVyIiwiZ2V0VGlja0NsYXNzTmFtZSIsInBvbGFyVG9DYXJ0ZXNpYW4iLCJhZGFwdEV2ZW50c09mQ2hpbGQiLCJmaWx0ZXJQcm9wcyIsIlBvbGFyUmFkaXVzQXhpcyIsIl9QdXJlQ29tcG9uZW50IiwiZ2V0VGlja1ZhbHVlQ29vcmQiLCJfcmVmIiwiY29vcmRpbmF0ZSIsIl90aGlzJHByb3BzIiwiYW5nbGUiLCJjeCIsImN5IiwiZ2V0VGlja1RleHRBbmNob3IiLCJvcmllbnRhdGlvbiIsInRleHRBbmNob3IiLCJnZXRWaWV3Qm94IiwiX3RoaXMkcHJvcHMyIiwidGlja3MiLCJtYXhSYWRpdXNUaWNrIiwiZW50cnkiLCJtaW5SYWRpdXNUaWNrIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwiaW5uZXJSYWRpdXMiLCJvdXRlclJhZGl1cyIsInJlbmRlckF4aXNMaW5lIiwiX3RoaXMkcHJvcHMzIiwiYXhpc0xpbmUiLCJvdGhlcnMiLCJleHRlbnQiLCJyZWR1Y2UiLCJyZXN1bHQiLCJNYXRoIiwibWluIiwibWF4IiwiSW5maW5pdHkiLCJwb2ludDAiLCJwb2ludDEiLCJmaWxsIiwieDEiLCJ4IiwieTEiLCJ5IiwieDIiLCJ5MiIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJyZW5kZXJUaWNrcyIsIl90aGlzIiwiX3RoaXMkcHJvcHM0IiwidGljayIsInRpY2tGb3JtYXR0ZXIiLCJzdHJva2UiLCJheGlzUHJvcHMiLCJjdXN0b21UaWNrUHJvcHMiLCJpdGVtcyIsIm1hcCIsImNvb3JkIiwidGlja1Byb3BzIiwidHJhbnNmb3JtIiwiY29uY2F0IiwiaW5kZXgiLCJwYXlsb2FkIiwicmVuZGVyVGlja0l0ZW0iLCJyZW5kZXIiLCJfdGhpcyRwcm9wczUiLCJyZW5kZXJDYWxsQnlQYXJlbnQiLCJvcHRpb24iLCJ0aWNrSXRlbSIsImlzVmFsaWRFbGVtZW50IiwiY2xvbmVFbGVtZW50IiwidHlwZSIsInJhZGl1c0F4aXNJZCIsInRpY2tDb3VudCIsImFsbG93RGF0YU92ZXJmbG93Iiwic2NhbGUiLCJhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/polar/PolarRadiusAxis.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/future/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL0Nyb3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxJQUFJSyxZQUFZO0lBQUM7SUFBSztJQUFLO0lBQU87SUFBUTtJQUFTO0lBQVU7Q0FBWTtBQUN6RSxTQUFTQztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9ILFNBQVMsQ0FBQ1ksY0FBYyxDQUFDQyxJQUFJLENBQUNILFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNZLEtBQUssQ0FBQyxJQUFJLEVBQUVOO0FBQVk7QUFDbFYsU0FBU08sUUFBUUMsQ0FBQyxFQUFFQyxDQUFDO0lBQUksSUFBSUMsSUFBSWYsT0FBT2dCLElBQUksQ0FBQ0g7SUFBSSxJQUFJYixPQUFPaUIscUJBQXFCLEVBQUU7UUFBRSxJQUFJeEIsSUFBSU8sT0FBT2lCLHFCQUFx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SSxJQUFJQSxhQUN0Q0MsWUFBWVAsS0FBS08sU0FBUyxFQUMxQkMsT0FBTzNCLHlCQUF5Qm1CLE1BQU0zRDtJQUN4QyxJQUFJb0UsUUFBUTVDLGNBQWM7UUFDeEIyQixHQUFHQTtRQUNIQyxHQUFHQTtRQUNIRyxLQUFLQTtRQUNMQyxNQUFNQTtRQUNOSCxPQUFPQTtRQUNQQyxRQUFRQTtJQUNWLEdBQUdhO0lBQ0gsSUFBSSxDQUFDbkIseURBQVFBLENBQUNHLE1BQU0sQ0FBQ0gseURBQVFBLENBQUNJLE1BQU0sQ0FBQ0oseURBQVFBLENBQUNLLFVBQVUsQ0FBQ0wseURBQVFBLENBQUNNLFdBQVcsQ0FBQ04seURBQVFBLENBQUNPLFFBQVEsQ0FBQ1AseURBQVFBLENBQUNRLE9BQU87UUFDOUcsT0FBTztJQUNUO0lBQ0EsT0FBTyxXQUFXLEdBQUVWLDBEQUFtQixDQUFDLFFBQVE3QyxTQUFTLENBQUMsR0FBR2dELDZEQUFXQSxDQUFDbUIsT0FBTyxPQUFPO1FBQ3JGRixXQUFXbkIsZ0RBQUlBLENBQUMsa0JBQWtCbUI7UUFDbENJLEdBQUdwQixRQUFRQyxHQUFHQyxHQUFHQyxPQUFPQyxRQUFRQyxLQUFLQztJQUN2QztBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL0Nyb3NzLmpzPzRkNmEiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxudmFyIF9leGNsdWRlZCA9IFtcInhcIiwgXCJ5XCIsIFwidG9wXCIsIFwibGVmdFwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwiY2xhc3NOYW1lXCJdO1xuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBDcm9zc1xuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbnZhciBnZXRQYXRoID0gZnVuY3Rpb24gZ2V0UGF0aCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCB0b3AsIGxlZnQpIHtcbiAgcmV0dXJuIFwiTVwiLmNvbmNhdCh4LCBcIixcIikuY29uY2F0KHRvcCwgXCJ2XCIpLmNvbmNhdChoZWlnaHQsIFwiTVwiKS5jb25jYXQobGVmdCwgXCIsXCIpLmNvbmNhdCh5LCBcImhcIikuY29uY2F0KHdpZHRoKTtcbn07XG5leHBvcnQgdmFyIENyb3NzID0gZnVuY3Rpb24gQ3Jvc3MoX3JlZikge1xuICB2YXIgX3JlZiR4ID0gX3JlZi54LFxuICAgIHggPSBfcmVmJHggPT09IHZvaWQgMCA/IDAgOiBfcmVmJHgsXG4gICAgX3JlZiR5ID0gX3JlZi55LFxuICAgIHkgPSBfcmVmJHkgPT09IHZvaWQgMCA/IDAgOiBfcmVmJHksXG4gICAgX3JlZiR0b3AgPSBfcmVmLnRvcCxcbiAgICB0b3AgPSBfcmVmJHRvcCA9PT0gdm9pZCAwID8gMCA6IF9yZWYkdG9wLFxuICAgIF9yZWYkbGVmdCA9IF9yZWYubGVmdCxcbiAgICBsZWZ0ID0gX3JlZiRsZWZ0ID09PSB2b2lkIDAgPyAwIDogX3JlZiRsZWZ0LFxuICAgIF9yZWYkd2lkdGggPSBfcmVmLndpZHRoLFxuICAgIHdpZHRoID0gX3JlZiR3aWR0aCA9PT0gdm9pZCAwID8gMCA6IF9yZWYkd2lkdGgsXG4gICAgX3JlZiRoZWlnaHQgPSBfcmVmLmhlaWdodCxcbiAgICBoZWlnaHQgPSBfcmVmJGhlaWdodCA9PT0gdm9pZCAwID8gMCA6IF9yZWYkaGVpZ2h0LFxuICAgIGNsYXNzTmFtZSA9IF9yZWYuY2xhc3NOYW1lLFxuICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZCh7XG4gICAgeDogeCxcbiAgICB5OiB5LFxuICAgIHRvcDogdG9wLFxuICAgIGxlZnQ6IGxlZnQsXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH0sIHJlc3QpO1xuICBpZiAoIWlzTnVtYmVyKHgpIHx8ICFpc051bWJlcih5KSB8fCAhaXNOdW1iZXIod2lkdGgpIHx8ICFpc051bWJlcihoZWlnaHQpIHx8ICFpc051bWJlcih0b3ApIHx8ICFpc051bWJlcihsZWZ0KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKHByb3BzLCB0cnVlKSwge1xuICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtY3Jvc3MnLCBjbGFzc05hbWUpLFxuICAgIGQ6IGdldFBhdGgoeCwgeSwgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0KVxuICB9KSk7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXhjbHVkZWQiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIlJlYWN0IiwiY2xzeCIsImlzTnVtYmVyIiwiZmlsdGVyUHJvcHMiLCJnZXRQYXRoIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiLCJjb25jYXQiLCJDcm9zcyIsIl9yZWYiLCJfcmVmJHgiLCJfcmVmJHkiLCJfcmVmJHRvcCIsIl9yZWYkbGVmdCIsIl9yZWYkd2lkdGgiLCJfcmVmJGhlaWdodCIsImNsYXNzTmFtZSIsInJlc3QiLCJwcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJkIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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___default().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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SyxJQUFJZ0IsUUFBUSxTQUFTQSxNQUFNQyxLQUFLO0lBQ3JDLElBQUlDLFlBQVlELE1BQU1DLFNBQVMsRUFDN0J2QixTQUFTc0IsTUFBTXRCLE1BQU0sRUFDckJ3QixPQUFPRixNQUFNRSxJQUFJLEVBQ2pCQyxVQUFVSCxNQUFNRyxPQUFPO0lBQ3pCLElBQUksQ0FBQyxDQUFDekIsVUFBVSxDQUFDQSxPQUFPeEUsTUFBTSxLQUFLLENBQUNnRyxNQUFNO1FBQ3hDLE9BQU87SUFDVDtJQUNBLElBQUlFLFdBQVcxQixVQUFVQSxPQUFPeEUsTUFBTSxHQUFHb0UsUUFBUTBCLFNBQVNFO0lBQzFELE9BQU8sV0FBVyxHQUFFaEUsMERBQW1CLENBQUMsUUFBUXZDLFNBQVMsQ0FBQyxHQUFHNkQsNkRBQVdBLENBQUN3QyxPQUFPLFFBQVF6QywrREFBa0JBLENBQUN5QyxRQUFRO1FBQ2pIQyxXQUFXM0MsZ0RBQUlBLENBQUMsa0JBQWtCMkM7UUFDbENOLEdBQUdTO1FBQ0hFLEtBQUtIO0lBQ1A7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9zaGFwZS9DdXJ2ZS5qcz85YWFjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBDdXJ2ZVxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbGluZSBhcyBzaGFwZUxpbmUsIGFyZWEgYXMgc2hhcGVBcmVhLCBjdXJ2ZUJhc2lzQ2xvc2VkLCBjdXJ2ZUJhc2lzT3BlbiwgY3VydmVCYXNpcywgY3VydmVCdW1wWCwgY3VydmVCdW1wWSwgY3VydmVMaW5lYXJDbG9zZWQsIGN1cnZlTGluZWFyLCBjdXJ2ZU1vbm90b25lWCwgY3VydmVNb25vdG9uZVksIGN1cnZlTmF0dXJhbCwgY3VydmVTdGVwLCBjdXJ2ZVN0ZXBBZnRlciwgY3VydmVTdGVwQmVmb3JlIH0gZnJvbSAndmljdG9yeS12ZW5kb3IvZDMtc2hhcGUnO1xuaW1wb3J0IHVwcGVyRmlyc3QgZnJvbSAnbG9kYXNoL3VwcGVyRmlyc3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBhZGFwdEV2ZW50SGFuZGxlcnMgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xudmFyIENVUlZFX0ZBQ1RPUklFUyA9IHtcbiAgY3VydmVCYXNpc0Nsb3NlZDogY3VydmVCYXNpc0Nsb3NlZCxcbiAgY3VydmVCYXNpc09wZW46IGN1cnZlQmFzaXNPcGVuLFxuICBjdXJ2ZUJhc2lzOiBjdXJ2ZUJhc2lzLFxuICBjdXJ2ZUJ1bXBYOiBjdXJ2ZUJ1bXBYLFxuICBjdXJ2ZUJ1bXBZOiBjdXJ2ZUJ1bXBZLFxuICBjdXJ2ZUxpbmVhckNsb3NlZDogY3VydmVMaW5lYXJDbG9zZWQsXG4gIGN1cnZlTGluZWFyOiBjdXJ2ZUxpbmVhcixcbiAgY3VydmVNb25vdG9uZVg6IGN1cnZlTW9ub3RvbmVYLFxuICBjdXJ2ZU1vbm90b25lWTogY3VydmVNb25vdG9uZVksXG4gIGN1cnZlTmF0dXJhbDogY3VydmVOYXR1cmFsLFxuICBjdXJ2ZVN0ZXA6IGN1cnZlU3RlcCxcbiAgY3VydmVTdGVwQWZ0ZXI6IGN1cnZlU3RlcEFmdGVyLFxuICBjdXJ2ZVN0ZXBCZWZvcmU6IGN1cnZlU3RlcEJlZm9yZVxufTtcbnZhciBkZWZpbmVkID0gZnVuY3Rpb24gZGVmaW5lZChwKSB7XG4gIHJldHVybiBwLnggPT09ICtwLnggJiYgcC55ID09PSArcC55O1xufTtcbnZhciBnZXRYID0gZnVuY3Rpb24gZ2V0WChwKSB7XG4gIHJldHVybiBwLng7XG59O1xudmFyIGdldFkgPSBmdW5jdGlvbiBnZXRZKHApIHtcbiAgcmV0dXJuIHAueTtcbn07XG52YXIgZ2V0Q3VydmVGYWN0b3J5ID0gZnVuY3Rpb24gZ2V0Q3VydmVGYWN0b3J5KHR5cGUsIGxheW91dCkge1xuICBpZiAoaXNGdW5jdGlvbih0eXBlKSkge1xuICAgIHJldHVybiB0eXBlO1xuICB9XG4gIHZhciBuYW1lID0gXCJjdXJ2ZVwiLmNvbmNhdCh1cHBlckZpcnN0KHR5cGUpKTtcbiAgaWYgKChuYW1lID09PSAnY3VydmVNb25vdG9uZScgfHwgbmFtZSA9PT0gJ2N1cnZlQnVtcCcpICYmIGxheW91dCkge1xuICAgIHJldHVybiBDVVJWRV9GQUNUT1JJRVNbXCJcIi5jb25jYXQobmFtZSkuY29uY2F0KGxheW91dCA9PT0gJ3ZlcnRpY2FsJyA/ICdZJyA6ICdYJyldO1xuICB9XG4gIHJldHVybiBDVVJWRV9GQUNUT1JJRVNbbmFtZV0gfHwgY3VydmVMaW5lYXI7XG59O1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHBhdGggb2YgY3VydmUuIFJldHVybnMgbnVsbCBpZiBwb2ludHMgaXMgYW4gZW1wdHkgYXJyYXkuXG4gKiBAcmV0dXJuIHBhdGggb3IgbnVsbFxuICovXG5leHBvcnQgdmFyIGdldFBhdGggPSBmdW5jdGlvbiBnZXRQYXRoKF9yZWYpIHtcbiAgdmFyIF9yZWYkdHlwZSA9IF9yZWYudHlwZSxcbiAgICB0eXBlID0gX3JlZiR0eXBlID09PSB2b2lkIDAgPyAnbGluZWFyJyA6IF9yZWYkdHlwZSxcbiAgICBfcmVmJHBvaW50cyA9IF9yZWYucG9pbnRzLFxuICAgIHBvaW50cyA9IF9yZWYkcG9pbnRzID09PSB2b2lkIDAgPyBbXSA6IF9yZWYkcG9pbnRzLFxuICAgIGJhc2VMaW5lID0gX3JlZi5iYXNlTGluZSxcbiAgICBsYXlvdXQgPSBfcmVmLmxheW91dCxcbiAgICBfcmVmJGNvbm5lY3ROdWxscyA9IF9yZWYuY29ubmVjdE51bGxzLFxuICAgIGNvbm5lY3ROdWxscyA9IF9yZWYkY29ubmVjdE51bGxzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkY29ubmVjdE51bGxzO1xuICB2YXIgY3VydmVGYWN0b3J5ID0gZ2V0Q3VydmVGYWN0b3J5KHR5cGUsIGxheW91dCk7XG4gIHZhciBmb3JtYXRQb2ludHMgPSBjb25uZWN0TnVsbHMgPyBwb2ludHMuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHJldHVybiBkZWZpbmVkKGVudHJ5KTtcbiAgfSkgOiBwb2ludHM7XG4gIHZhciBsaW5lRnVuY3Rpb247XG4gIGlmIChBcnJheS5pc0FycmF5KGJhc2VMaW5lKSkge1xuICAgIHZhciBmb3JtYXRCYXNlTGluZSA9IGNvbm5lY3ROdWxscyA/IGJhc2VMaW5lLmZpbHRlcihmdW5jdGlvbiAoYmFzZSkge1xuICAgICAgcmV0dXJuIGRlZmluZWQoYmFzZSk7XG4gICAgfSkgOiBiYXNlTGluZTtcbiAgICB2YXIgYXJlYVBvaW50cyA9IGZvcm1hdFBvaW50cy5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICBiYXNlOiBmb3JtYXRCYXNlTGluZVtpbmRleF1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIGxpbmVGdW5jdGlvbiA9IHNoYXBlQXJlYSgpLnkoZ2V0WSkueDEoZ2V0WCkueDAoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgcmV0dXJuIGQuYmFzZS54O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmVGdW5jdGlvbiA9IHNoYXBlQXJlYSgpLngoZ2V0WCkueTEoZ2V0WSkueTAoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgcmV0dXJuIGQuYmFzZS55O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGxpbmVGdW5jdGlvbi5kZWZpbmVkKGRlZmluZWQpLmN1cnZlKGN1cnZlRmFjdG9yeSk7XG4gICAgcmV0dXJuIGxpbmVGdW5jdGlvbihhcmVhUG9pbnRzKTtcbiAgfVxuICBpZiAobGF5b3V0ID09PSAndmVydGljYWwnICYmIGlzTnVtYmVyKGJhc2VMaW5lKSkge1xuICAgIGxpbmVGdW5jdGlvbiA9IHNoYXBlQXJlYSgpLnkoZ2V0WSkueDEoZ2V0WCkueDAoYmFzZUxpbmUpO1xuICB9IGVsc2UgaWYgKGlzTnVtYmVyKGJhc2VMaW5lKSkge1xuICAgIGxpbmVGdW5jdGlvbiA9IHNoYXBlQXJlYSgpLngoZ2V0WCkueTEoZ2V0WSkueTAoYmFzZUxpbmUpO1xuICB9IGVsc2Uge1xuICAgIGxpbmVGdW5jdGlvbiA9IHNoYXBlTGluZSgpLngoZ2V0WCkueShnZXRZKTtcbiAgfVxuICBsaW5lRnVuY3Rpb24uZGVmaW5lZChkZWZpbmVkKS5jdXJ2ZShjdXJ2ZUZhY3RvcnkpO1xuICByZXR1cm4gbGluZUZ1bmN0aW9uKGZvcm1hdFBvaW50cyk7XG59O1xuZXhwb3J0IHZhciBDdXJ2ZSA9IGZ1bmN0aW9uIEN1cnZlKHByb3BzKSB7XG4gIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgcG9pbnRzID0gcHJvcHMucG9pbnRzLFxuICAgIHBhdGggPSBwcm9wcy5wYXRoLFxuICAgIHBhdGhSZWYgPSBwcm9wcy5wYXRoUmVmO1xuICBpZiAoKCFwb2ludHMgfHwgIXBvaW50cy5sZW5ndGgpICYmICFwYXRoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIHJlYWxQYXRoID0gcG9pbnRzICYmIHBvaW50cy5sZW5ndGggPyBnZXRQYXRoKHByb3BzKSA6IHBhdGg7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKHByb3BzLCBmYWxzZSksIGFkYXB0RXZlbnRIYW5kbGVycyhwcm9wcyksIHtcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLWN1cnZlJywgY2xhc3NOYW1lKSxcbiAgICBkOiByZWFsUGF0aCxcbiAgICByZWY6IHBhdGhSZWZcbiAgfSkpO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJsaW5lIiwic2hhcGVMaW5lIiwiYXJlYSIsInNoYXBlQXJlYSIsImN1cnZlQmFzaXNDbG9zZWQiLCJjdXJ2ZUJhc2lzT3BlbiIsImN1cnZlQmFzaXMiLCJjdXJ2ZUJ1bXBYIiwiY3VydmVCdW1wWSIsImN1cnZlTGluZWFyQ2xvc2VkIiwiY3VydmVMaW5lYXIiLCJjdXJ2ZU1vbm90b25lWCIsImN1cnZlTW9ub3RvbmVZIiwiY3VydmVOYXR1cmFsIiwiY3VydmVTdGVwIiwiY3VydmVTdGVwQWZ0ZXIiLCJjdXJ2ZVN0ZXBCZWZvcmUiLCJ1cHBlckZpcnN0IiwiaXNGdW5jdGlvbiIsImNsc3giLCJhZGFwdEV2ZW50SGFuZGxlcnMiLCJmaWx0ZXJQcm9wcyIsImlzTnVtYmVyIiwiQ1VSVkVfRkFDVE9SSUVTIiwiZGVmaW5lZCIsInAiLCJ4IiwieSIsImdldFgiLCJnZXRZIiwiZ2V0Q3VydmVGYWN0b3J5IiwidHlwZSIsImxheW91dCIsIm5hbWUiLCJjb25jYXQiLCJnZXRQYXRoIiwiX3JlZiIsIl9yZWYkdHlwZSIsIl9yZWYkcG9pbnRzIiwicG9pbnRzIiwiYmFzZUxpbmUiLCJfcmVmJGNvbm5lY3ROdWxscyIsImNvbm5lY3ROdWxscyIsImN1cnZlRmFjdG9yeSIsImZvcm1hdFBvaW50cyIsImVudHJ5IiwibGluZUZ1bmN0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0QmFzZUxpbmUiLCJiYXNlIiwiYXJlYVBvaW50cyIsIm1hcCIsImluZGV4IiwieDEiLCJ4MCIsImQiLCJ5MSIsInkwIiwiY3VydmUiLCJDdXJ2ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwicGF0aCIsInBhdGhSZWYiLCJyZWFsUGF0aCIsImNyZWF0ZUVsZW1lbnQiLCJyZWYiXSwic291cmNlUm9vdCI6IiJ9\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/future/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___default().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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL0RvdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxTQUFTQTtJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9TLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNhLEtBQUssQ0FBQyxJQUFJLEVBQUVQO0FBQVk7QUFDbFY7O0NBRUMsR0FDeUI7QUFDRjtBQUMyQjtBQUNGO0FBQzFDLElBQUlZLE1BQU0sU0FBU0EsSUFBSUMsS0FBSztJQUNqQyxJQUFJQyxLQUFLRCxNQUFNQyxFQUFFLEVBQ2ZDLEtBQUtGLE1BQU1FLEVBQUUsRUFDYkMsSUFBSUgsTUFBTUcsQ0FBQyxFQUNYQyxZQUFZSixNQUFNSSxTQUFTO0lBQzdCLElBQUlDLGFBQWFULGdEQUFJQSxDQUFDLGdCQUFnQlE7SUFDdEMsSUFBSUgsT0FBTyxDQUFDQSxNQUFNQyxPQUFPLENBQUNBLE1BQU1DLE1BQU0sQ0FBQ0EsR0FBRztRQUN4QyxPQUFPLFdBQVcsR0FBRVIsMERBQW1CLENBQUMsVUFBVWQsU0FBUyxDQUFDLEdBQUdpQiw2REFBV0EsQ0FBQ0UsT0FBTyxRQUFRSCwrREFBa0JBLENBQUNHLFFBQVE7WUFDbkhJLFdBQVdDO1lBQ1hKLElBQUlBO1lBQ0pDLElBQUlBO1lBQ0pDLEdBQUdBO1FBQ0w7SUFDRjtJQUNBLE9BQU87QUFDVCxFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9zaGFwZS9Eb3QuanM/NjZiZSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBEb3RcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgYWRhcHRFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5leHBvcnQgdmFyIERvdCA9IGZ1bmN0aW9uIERvdChwcm9wcykge1xuICB2YXIgY3ggPSBwcm9wcy5jeCxcbiAgICBjeSA9IHByb3BzLmN5LFxuICAgIHIgPSBwcm9wcy5yLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1kb3QnLCBjbGFzc05hbWUpO1xuICBpZiAoY3ggPT09ICtjeCAmJiBjeSA9PT0gK2N5ICYmIHIgPT09ICtyKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY2lyY2xlXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhwcm9wcywgZmFsc2UpLCBhZGFwdEV2ZW50SGFuZGxlcnMocHJvcHMpLCB7XG4gICAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3MsXG4gICAgICBjeDogY3gsXG4gICAgICBjeTogY3ksXG4gICAgICByOiByXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTsiXSwibmFtZXMiOlsiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiUmVhY3QiLCJjbHN4IiwiYWRhcHRFdmVudEhhbmRsZXJzIiwiZmlsdGVyUHJvcHMiLCJEb3QiLCJwcm9wcyIsImN4IiwiY3kiLCJyIiwiY2xhc3NOYW1lIiwibGF5ZXJDbGFzcyIsImNyZWF0ZUVsZW1lbnQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Dot.js\n"); /***/ }), /***/ "(ssr)/./node_modules/recharts/es6/shape/Polygon.js": /*!****************************************************!*\ !*** ./node_modules/recharts/es6/shape/Polygon.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 */ Polygon: () => (/* binding */ Polygon)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/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 \"points\",\n \"className\",\n \"baseLinePoints\",\n \"connectNulls\"\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 _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 * @fileOverview Polygon\n */ \n\n\nvar isValidatePoint = function isValidatePoint(point) {\n return point && point.x === +point.x && point.y === +point.y;\n};\nvar getParsedPoints = function getParsedPoints() {\n var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var segmentPoints = [\n []\n ];\n points.forEach(function(entry) {\n if (isValidatePoint(entry)) {\n segmentPoints[segmentPoints.length - 1].push(entry);\n } else if (segmentPoints[segmentPoints.length - 1].length > 0) {\n // add another path\n segmentPoints.push([]);\n }\n });\n if (isValidatePoint(points[0])) {\n segmentPoints[segmentPoints.length - 1].push(points[0]);\n }\n if (segmentPoints[segmentPoints.length - 1].length <= 0) {\n segmentPoints = segmentPoints.slice(0, -1);\n }\n return segmentPoints;\n};\nvar getSinglePolygonPath = function getSinglePolygonPath(points, connectNulls) {\n var segmentPoints = getParsedPoints(points);\n if (connectNulls) {\n segmentPoints = [\n segmentPoints.reduce(function(res, segPoints) {\n return [].concat(_toConsumableArray(res), _toConsumableArray(segPoints));\n }, [])\n ];\n }\n var polygonPath = segmentPoints.map(function(segPoints) {\n return segPoints.reduce(function(path, point, index) {\n return \"\".concat(path).concat(index === 0 ? \"M\" : \"L\").concat(point.x, \",\").concat(point.y);\n }, \"\");\n }).join(\"\");\n return segmentPoints.length === 1 ? \"\".concat(polygonPath, \"Z\") : polygonPath;\n};\nvar getRanglePath = function getRanglePath(points, baseLinePoints, connectNulls) {\n var outerPath = getSinglePolygonPath(points, connectNulls);\n return \"\".concat(outerPath.slice(-1) === \"Z\" ? outerPath.slice(0, -1) : outerPath, \"L\").concat(getSinglePolygonPath(baseLinePoints.reverse(), connectNulls).slice(1));\n};\nvar Polygon = function Polygon(props) {\n var points = props.points, className = props.className, baseLinePoints = props.baseLinePoints, connectNulls = props.connectNulls, others = _objectWithoutProperties(props, _excluded);\n if (!points || !points.length) {\n return null;\n }\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-polygon\", className);\n if (baseLinePoints && baseLinePoints.length) {\n var hasStroke = others.stroke && others.stroke !== \"none\";\n var rangePath = getRanglePath(points, baseLinePoints, connectNulls);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", {\n className: layerClass\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, true), {\n fill: rangePath.slice(-1) === \"Z\" ? others.fill : \"none\",\n stroke: \"none\",\n d: rangePath\n })), hasStroke ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, true), {\n fill: \"none\",\n d: getSinglePolygonPath(points, connectNulls)\n })) : null, hasStroke ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, true), {\n fill: \"none\",\n d: getSinglePolygonPath(baseLinePoints, connectNulls)\n })) : null);\n }\n var singlePath = getSinglePolygonPath(points, connectNulls);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, true), {\n fill: singlePath.slice(-1) === \"Z\" ? others.fill : \"none\",\n className: layerClass,\n d: singlePath\n }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1BvbHlnb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFJQSxZQUFZO0lBQUM7SUFBVTtJQUFhO0lBQWtCO0NBQWU7QUFDekUsU0FBU0M7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTYSxLQUFLLENBQUMsSUFBSSxFQUFFUDtBQUFZO0FBQ2xWLFNBQVNRLHlCQUF5Qk4sTUFBTSxFQUFFTyxRQUFRO0lBQUksSUFBSVAsVUFBVSxNQUFNLE9BQU8sQ0FBQztJQUFHLElBQUlKLFNBQVNZLDhCQUE4QlIsUUFBUU87SUFBVyxJQUFJTixLQUFLSjtJQUFHLElBQUlKLE9BQU9nQixxQkFBcUIsRUFBRTtRQUFFLElBQUlDLG1CQUFtQmpCLE9BQU9nQixxQkFBcUIsQ0FBQ1Q7UUFBUyxJQUFLSCxJQUFJLEdBQUdBLElBQUlhLGlCQUFpQlgsTUFBTSxFQUFFRixJQUFLO1lBQUVJLE1BQU1TLGdCQUFnQixDQUFDYixFQUFFO1lBQUUsSUFBSVUsU0FBU0ksT0FBTyxDQUFDVixRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNSLE9BQU9TLFNBQVMsQ0FBQ1Usb0JBQW9CLENBQUNSLElBQUksQ0FBQ0osUUFBUUMsTUFBTTtZQUFVTCxNQUFNLENBQUNL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LFNBQVMsQ0FBQyxHQUFHK0MsNkRBQVdBLENBQUM4QixRQUFRLE9BQU87WUFDaEdNLE1BQU07WUFDTkMsR0FBR3pCLHFCQUFxQk4sUUFBUU87UUFDbEMsTUFBTSxNQUFNbUIsWUFBWSxXQUFXLEdBQUVsQywwREFBbUIsQ0FBQyxRQUFRN0MsU0FBUyxDQUFDLEdBQUcrQyw2REFBV0EsQ0FBQzhCLFFBQVEsT0FBTztZQUN2R00sTUFBTTtZQUNOQyxHQUFHekIscUJBQXFCWSxnQkFBZ0JYO1FBQzFDLE1BQU07SUFDUjtJQUNBLElBQUl5QixhQUFhMUIscUJBQXFCTixRQUFRTztJQUM5QyxPQUFPLFdBQVcsR0FBRWYsMERBQW1CLENBQUMsUUFBUTdDLFNBQVMsQ0FBQyxHQUFHK0MsNkRBQVdBLENBQUM4QixRQUFRLE9BQU87UUFDdEZNLE1BQU1FLFdBQVdwRCxLQUFLLENBQUMsQ0FBQyxPQUFPLE1BQU00QyxPQUFPTSxJQUFJLEdBQUc7UUFDbkRQLFdBQVdFO1FBQ1hNLEdBQUdDO0lBQ0w7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9zaGFwZS9Qb2x5Z29uLmpzPzIyZGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9leGNsdWRlZCA9IFtcInBvaW50c1wiLCBcImNsYXNzTmFtZVwiLCBcImJhc2VMaW5lUG9pbnRzXCIsIFwiY29ubmVjdE51bGxzXCJdO1xuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkoYXJyKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBQb2x5Z29uXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbnZhciBpc1ZhbGlkYXRlUG9pbnQgPSBmdW5jdGlvbiBpc1ZhbGlkYXRlUG9pbnQocG9pbnQpIHtcbiAgcmV0dXJuIHBvaW50ICYmIHBvaW50LnggPT09ICtwb2ludC54ICYmIHBvaW50LnkgPT09ICtwb2ludC55O1xufTtcbnZhciBnZXRQYXJzZWRQb2ludHMgPSBmdW5jdGlvbiBnZXRQYXJzZWRQb2ludHMoKSB7XG4gIHZhciBwb2ludHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuICB2YXIgc2VnbWVudFBvaW50cyA9IFtbXV07XG4gIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGlmIChpc1ZhbGlkYXRlUG9pbnQoZW50cnkpKSB7XG4gICAgICBzZWdtZW50UG9pbnRzW3NlZ21lbnRQb2ludHMubGVuZ3RoIC0gMV0ucHVzaChlbnRyeSk7XG4gICAgfSBlbHNlIGlmIChzZWdtZW50UG9pbnRzW3NlZ21lbnRQb2ludHMubGVuZ3RoIC0gMV0ubGVuZ3RoID4gMCkge1xuICAgICAgLy8gYWRkIGFub3RoZXIgcGF0aFxuICAgICAgc2VnbWVudFBvaW50cy5wdXNoKFtdKTtcbiAgICB9XG4gIH0pO1xuICBpZiAoaXNWYWxpZGF0ZVBvaW50KHBvaW50c1swXSkpIHtcbiAgICBzZWdtZW50UG9pbnRzW3NlZ21lbnRQb2ludHMubGVuZ3RoIC0gMV0ucHVzaChwb2ludHNbMF0pO1xuICB9XG4gIGlmIChzZWdtZW50UG9pbnRzW3NlZ21lbnRQb2ludHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDApIHtcbiAgICBzZWdtZW50UG9pbnRzID0gc2VnbWVudFBvaW50cy5zbGljZSgwLCAtMSk7XG4gIH1cbiAgcmV0dXJuIHNlZ21lbnRQb2ludHM7XG59O1xudmFyIGdldFNpbmdsZVBvbHlnb25QYXRoID0gZnVuY3Rpb24gZ2V0U2luZ2xlUG9seWdvblBhdGgocG9pbnRzLCBjb25uZWN0TnVsbHMpIHtcbiAgdmFyIHNlZ21lbnRQb2ludHMgPSBnZXRQYXJzZWRQb2ludHMocG9pbnRzKTtcbiAgaWYgKGNvbm5lY3ROdWxscykge1xuICAgIHNlZ21lbnRQb2ludHMgPSBbc2VnbWVudFBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgc2VnUG9pbnRzKSB7XG4gICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXMpLCBfdG9Db25zdW1hYmxlQXJyYXkoc2VnUG9pbnRzKSk7XG4gICAgfSwgW10pXTtcbiAgfVxuICB2YXIgcG9seWdvblBhdGggPSBzZWdtZW50UG9pbnRzLm1hcChmdW5jdGlvbiAoc2VnUG9pbnRzKSB7XG4gICAgcmV0dXJuIHNlZ1BvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKHBhdGgsIHBvaW50LCBpbmRleCkge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHBhdGgpLmNvbmNhdChpbmRleCA9PT0gMCA/ICdNJyA6ICdMJykuY29uY2F0KHBvaW50LngsIFwiLFwiKS5jb25jYXQocG9pbnQueSk7XG4gICAgfSwgJycpO1xuICB9KS5qb2luKCcnKTtcbiAgcmV0dXJuIHNlZ21lbnRQb2ludHMubGVuZ3RoID09PSAxID8gXCJcIi5jb25jYXQocG9seWdvblBhdGgsIFwiWlwiKSA6IHBvbHlnb25QYXRoO1xufTtcbnZhciBnZXRSYW5nbGVQYXRoID0gZnVuY3Rpb24gZ2V0UmFuZ2xlUGF0aChwb2ludHMsIGJhc2VMaW5lUG9pbnRzLCBjb25uZWN0TnVsbHMpIHtcbiAgdmFyIG91dGVyUGF0aCA9IGdldFNpbmdsZVBvbHlnb25QYXRoKHBvaW50cywgY29ubmVjdE51bGxzKTtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KG91dGVyUGF0aC5zbGljZSgtMSkgPT09ICdaJyA/IG91dGVyUGF0aC5zbGljZSgwLCAtMSkgOiBvdXRlclBhdGgsIFwiTFwiKS5jb25jYXQoZ2V0U2luZ2xlUG9seWdvblBhdGgoYmFzZUxpbmVQb2ludHMucmV2ZXJzZSgpLCBjb25uZWN0TnVsbHMpLnNsaWNlKDEpKTtcbn07XG5leHBvcnQgdmFyIFBvbHlnb24gPSBmdW5jdGlvbiBQb2x5Z29uKHByb3BzKSB7XG4gIHZhciBwb2ludHMgPSBwcm9wcy5wb2ludHMsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgIGJhc2VMaW5lUG9pbnRzID0gcHJvcHMuYmFzZUxpbmVQb2ludHMsXG4gICAgY29ubmVjdE51bGxzID0gcHJvcHMuY29ubmVjdE51bGxzLFxuICAgIG90aGVycyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgaWYgKCFwb2ludHMgfHwgIXBvaW50cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgbGF5ZXJDbGFzcyA9IGNsc3goJ3JlY2hhcnRzLXBvbHlnb24nLCBjbGFzc05hbWUpO1xuICBpZiAoYmFzZUxpbmVQb2ludHMgJiYgYmFzZUxpbmVQb2ludHMubGVuZ3RoKSB7XG4gICAgdmFyIGhhc1N0cm9rZSA9IG90aGVycy5zdHJva2UgJiYgb3RoZXJzLnN0cm9rZSAhPT0gJ25vbmUnO1xuICAgIHZhciByYW5nZVBhdGggPSBnZXRSYW5nbGVQYXRoKHBvaW50cywgYmFzZUxpbmVQb2ludHMsIGNvbm5lY3ROdWxscyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3NcbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKG90aGVycywgdHJ1ZSksIHtcbiAgICAgIGZpbGw6IHJhbmdlUGF0aC5zbGljZSgtMSkgPT09ICdaJyA/IG90aGVycy5maWxsIDogJ25vbmUnLFxuICAgICAgc3Ryb2tlOiBcIm5vbmVcIixcbiAgICAgIGQ6IHJhbmdlUGF0aFxuICAgIH0pKSwgaGFzU3Ryb2tlID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhvdGhlcnMsIHRydWUpLCB7XG4gICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgIGQ6IGdldFNpbmdsZVBvbHlnb25QYXRoKHBvaW50cywgY29ubmVjdE51bGxzKVxuICAgIH0pKSA6IG51bGwsIGhhc1N0cm9rZSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCBfZXh0ZW5kcyh7fSwgZmlsdGVyUHJvcHMob3RoZXJzLCB0cnVlKSwge1xuICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICBkOiBnZXRTaW5nbGVQb2x5Z29uUGF0aChiYXNlTGluZVBvaW50cywgY29ubmVjdE51bGxzKVxuICAgIH0pKSA6IG51bGwpO1xuICB9XG4gIHZhciBzaW5nbGVQYXRoID0gZ2V0U2luZ2xlUG9seWdvblBhdGgocG9pbnRzLCBjb25uZWN0TnVsbHMpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhvdGhlcnMsIHRydWUpLCB7XG4gICAgZmlsbDogc2luZ2xlUGF0aC5zbGljZSgtMSkgPT09ICdaJyA/IG90aGVycy5maWxsIDogJ25vbmUnLFxuICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzcyxcbiAgICBkOiBzaW5nbGVQYXRoXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIm8iLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsImlzQXJyYXkiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJjbHN4IiwiZmlsdGVyUHJvcHMiLCJpc1ZhbGlkYXRlUG9pbnQiLCJwb2ludCIsIngiLCJ5IiwiZ2V0UGFyc2VkUG9pbnRzIiwicG9pbnRzIiwidW5kZWZpbmVkIiwic2VnbWVudFBvaW50cyIsImZvckVhY2giLCJlbnRyeSIsInB1c2giLCJnZXRTaW5nbGVQb2x5Z29uUGF0aCIsImNvbm5lY3ROdWxscyIsInJlZHVjZSIsInJlcyIsInNlZ1BvaW50cyIsImNvbmNhdCIsInBvbHlnb25QYXRoIiwibWFwIiwicGF0aCIsImluZGV4Iiwiam9pbiIsImdldFJhbmdsZVBhdGgiLCJiYXNlTGluZVBvaW50cyIsIm91dGVyUGF0aCIsInJldmVyc2UiLCJQb2x5Z29uIiwicHJvcHMiLCJjbGFzc05hbWUiLCJvdGhlcnMiLCJsYXllckNsYXNzIiwiaGFzU3Ryb2tlIiwic3Ryb2tlIiwicmFuZ2VQYXRoIiwiY3JlYXRlRWxlbWVudCIsImZpbGwiLCJkIiwic2luZ2xlUGF0aCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Polygon.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/future/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)(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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1JlY3RhbmdsZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxlQUFlQyxHQUFHLEVBQUVULENBQUM7SUFBSSxPQUFPVSxnQkFBZ0JELFFBQVFFLHNCQUFzQkYsS0FBS1QsTUFBTVksNEJBQTRCSCxLQUFLVCxNQUFNYTtBQUFvQjtBQUM3SixTQUFTQTtJQUFxQixNQUFNLElBQUlDLFVBQVU7QUFBOEk7QUFDaE0sU0FBU0YsNEJBQTRCdEIsQ0FBQyxFQUFFeUIsTUFB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LE1BQU0sT0FBTzBELE1BQU0sQ0FBQ3dCLGdCQUFnQixDQUFDLElBQUksSUFBSUEsYUFBYTtZQUMxRFcsSUFBSSxHQUFHbkMsTUFBTSxDQUFDd0IsYUFBYTtZQUMzQm1CLGVBQWU7WUFDZkMsT0FBTzdCO1lBQ1BxQixVQUFVcEI7WUFDVnFCLFVBQVV4QjtZQUNWZ0MsUUFBUTVCO1FBQ1YsR0FBRyxXQUFXLEdBQUV2QywwREFBbUIsQ0FBQyxRQUFRL0QsU0FBUyxDQUFDLEdBQUdxRSw2REFBV0EsQ0FBQ29DLE9BQU8sT0FBTztZQUNqRlUsV0FBV0M7WUFDWEUsR0FBR2hELGlCQUFpQndELE9BQU9DLE9BQU9ILFdBQVdDLFlBQVlsRDtZQUN6RHdELEtBQUt6QjtRQUNQO0lBQ0Y7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9zaGFwZS9SZWN0YW5nbGUuanM/ZmNhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBSZWN0YW5nbGVcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IEFuaW1hdGUgZnJvbSAncmVhY3Qtc21vb3RoJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbnZhciBnZXRSZWN0YW5nbGVQYXRoID0gZnVuY3Rpb24gZ2V0UmVjdGFuZ2xlUGF0aCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMpIHtcbiAgdmFyIG1heFJhZGl1cyA9IE1hdGgubWluKE1hdGguYWJzKHdpZHRoKSAvIDIsIE1hdGguYWJzKGhlaWdodCkgLyAyKTtcbiAgdmFyIHlTaWduID0gaGVpZ2h0ID49IDAgPyAxIDogLTE7XG4gIHZhciB4U2lnbiA9IHdpZHRoID49IDAgPyAxIDogLTE7XG4gIHZhciBjbG9ja1dpc2UgPSBoZWlnaHQgPj0gMCAmJiB3aWR0aCA+PSAwIHx8IGhlaWdodCA8IDAgJiYgd2lkdGggPCAwID8gMSA6IDA7XG4gIHZhciBwYXRoO1xuICBpZiAobWF4UmFkaXVzID4gMCAmJiByYWRpdXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIHZhciBuZXdSYWRpdXMgPSBbMCwgMCwgMCwgMF07XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IDQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgbmV3UmFkaXVzW2ldID0gcmFkaXVzW2ldID4gbWF4UmFkaXVzID8gbWF4UmFkaXVzIDogcmFkaXVzW2ldO1xuICAgIH1cbiAgICBwYXRoID0gXCJNXCIuY29uY2F0KHgsIFwiLFwiKS5jb25jYXQoeSArIHlTaWduICogbmV3UmFkaXVzWzBdKTtcbiAgICBpZiAobmV3UmFkaXVzWzBdID4gMCkge1xuICAgICAgcGF0aCArPSBcIkEgXCIuY29uY2F0KG5ld1JhZGl1c1swXSwgXCIsXCIpLmNvbmNhdChuZXdSYWRpdXNbMF0sIFwiLDAsMCxcIikuY29uY2F0KGNsb2NrV2lzZSwgXCIsXCIpLmNvbmNhdCh4ICsgeFNpZ24gKiBuZXdSYWRpdXNbMF0sIFwiLFwiKS5jb25jYXQoeSk7XG4gICAgfVxuICAgIHBhdGggKz0gXCJMIFwiLmNvbmNhdCh4ICsgd2lkdGggLSB4U2lnbiAqIG5ld1JhZGl1c1sxXSwgXCIsXCIpLmNvbmNhdCh5KTtcbiAgICBpZiAobmV3UmFkaXVzWzFdID4gMCkge1xuICAgICAgcGF0aCArPSBcIkEgXCIuY29uY2F0KG5ld1JhZGl1c1sxXSwgXCIsXCIpLmNvbmNhdChuZXdSYWRpdXNbMV0sIFwiLDAsMCxcIikuY29uY2F0KGNsb2NrV2lzZSwgXCIsXFxuICAgICAgICBcIikuY29uY2F0KHggKyB3aWR0aCwgXCIsXCIpLmNvbmNhdCh5ICsgeVNpZ24gKiBuZXdSYWRpdXNbMV0pO1xuICAgIH1cbiAgICBwYXRoICs9IFwiTCBcIi5jb25jYXQoeCArIHdpZHRoLCBcIixcIikuY29uY2F0KHkgKyBoZWlnaHQgLSB5U2lnbiAqIG5ld1JhZGl1c1syXSk7XG4gICAgaWYgKG5ld1JhZGl1c1syXSA+IDApIHtcbiAgICAgIHBhdGggKz0gXCJBIFwiLmNvbmNhdChuZXdSYWRpdXNbMl0sIFwiLFwiKS5jb25jYXQobmV3UmFkaXVzWzJdLCBcIiwwLDAsXCIpLmNvbmNhdChjbG9ja1dpc2UsIFwiLFxcbiAgICAgICAgXCIpLmNvbmNhdCh4ICsgd2lkdGggLSB4U2lnbiAqIG5ld1JhZGl1c1syXSwgXCIsXCIpLmNvbmNhdCh5ICsgaGVpZ2h0KTtcbiAgICB9XG4gICAgcGF0aCArPSBcIkwgXCIuY29uY2F0KHggKyB4U2lnbiAqIG5ld1JhZGl1c1szXSwgXCIsXCIpLmNvbmNhdCh5ICsgaGVpZ2h0KTtcbiAgICBpZiAobmV3UmFkaXVzWzNdID4gMCkge1xuICAgICAgcGF0aCArPSBcIkEgXCIuY29uY2F0KG5ld1JhZGl1c1szXSwgXCIsXCIpLmNvbmNhdChuZXdSYWRpdXNbM10sIFwiLDAsMCxcIikuY29uY2F0KGNsb2NrV2lzZSwgXCIsXFxuICAgICAgICBcIikuY29uY2F0KHgsIFwiLFwiKS5jb25jYXQoeSArIGhlaWdodCAtIHlTaWduICogbmV3UmFkaXVzWzNdKTtcbiAgICB9XG4gICAgcGF0aCArPSAnWic7XG4gIH0gZWxzZSBpZiAobWF4UmFkaXVzID4gMCAmJiByYWRpdXMgPT09ICtyYWRpdXMgJiYgcmFkaXVzID4gMCkge1xuICAgIHZhciBfbmV3UmFkaXVzID0gTWF0aC5taW4obWF4UmFkaXVzLCByYWRpdXMpO1xuICAgIHBhdGggPSBcIk0gXCIuY29uY2F0KHgsIFwiLFwiKS5jb25jYXQoeSArIHlTaWduICogX25ld1JhZGl1cywgXCJcXG4gICAgICAgICAgICBBIFwiKS5jb25jYXQoX25ld1JhZGl1cywgXCIsXCIpLmNvbmNhdChfbmV3UmFkaXVzLCBcIiwwLDAsXCIpLmNvbmNhdChjbG9ja1dpc2UsIFwiLFwiKS5jb25jYXQoeCArIHhTaWduICogX25ld1JhZGl1cywgXCIsXCIpLmNvbmNhdCh5LCBcIlxcbiAgICAgICAgICAgIEwgXCIpLmNvbmNhdCh4ICsgd2lkdGggLSB4U2lnbiAqIF9uZXdSYWRpdXMsIFwiLFwiKS5jb25jYXQoeSwgXCJcXG4gICAgICAgICAgICBBIFwiKS5jb25jYXQoX25ld1JhZGl1cywgXCIsXCIpLmNvbmNhdChfbmV3UmFkaXVzLCBcIiwwLDAsXCIpLmNvbmNhdChjbG9ja1dpc2UsIFwiLFwiKS5jb25jYXQoeCArIHdpZHRoLCBcIixcIikuY29uY2F0KHkgKyB5U2lnbiAqIF9uZXdSYWRpdXMsIFwiXFxuICAgICAgICAgICAgTCBcIikuY29uY2F0KHggKyB3aWR0aCwgXCIsXCIpLmNvbmNhdCh5ICsgaGVpZ2h0IC0geVNpZ24gKiBfbmV3UmFkaXVzLCBcIlxcbiAgICAgICAgICAgIEEgXCIpLmNvbmNhdChfbmV3UmFkaXVzLCBcIixcIikuY29uY2F0KF9uZXdSYWRpdXMsIFwiLDAsMCxcIikuY29uY2F0KGNsb2NrV2lzZSwgXCIsXCIpLmNvbmNhdCh4ICsgd2lkdGggLSB4U2lnbiAqIF9uZXdSYWRpdXMsIFwiLFwiKS5jb25jYXQoeSArIGhlaWdodCwgXCJcXG4gICAgICAgICAgICBMIFwiKS5jb25jYXQoeCArIHhTaWduICogX25ld1JhZGl1cywgXCIsXCIpLmNvbmNhdCh5ICsgaGVpZ2h0LCBcIlxcbiAgICAgICAgICAgIEEgXCIpLmNvbmNhdChfbmV3UmFkaXVzLCBcIixcIikuY29uY2F0KF9uZXdSYWRpdXMsIFwiLDAsMCxcIikuY29uY2F0KGNsb2NrV2lzZSwgXCIsXCIpLmNvbmNhdCh4LCBcIixcIikuY29uY2F0KHkgKyBoZWlnaHQgLSB5U2lnbiAqIF9uZXdSYWRpdXMsIFwiIFpcIik7XG4gIH0gZWxzZSB7XG4gICAgcGF0aCA9IFwiTSBcIi5jb25jYXQoeCwgXCIsXCIpLmNvbmNhdCh5LCBcIiBoIFwiKS5jb25jYXQod2lkdGgsIFwiIHYgXCIpLmNvbmNhdChoZWlnaHQsIFwiIGggXCIpLmNvbmNhdCgtd2lkdGgsIFwiIFpcIik7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59O1xuZXhwb3J0IHZhciBpc0luUmVjdGFuZ2xlID0gZnVuY3Rpb24gaXNJblJlY3RhbmdsZShwb2ludCwgcmVjdCkge1xuICBpZiAoIXBvaW50IHx8ICFyZWN0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBweCA9IHBvaW50LngsXG4gICAgcHkgPSBwb2ludC55O1xuICB2YXIgeCA9IHJlY3QueCxcbiAgICB5ID0gcmVjdC55LFxuICAgIHdpZHRoID0gcmVjdC53aWR0aCxcbiAgICBoZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgaWYgKE1hdGguYWJzKHdpZHRoKSA+IDAgJiYgTWF0aC5hYnMoaGVpZ2h0KSA+IDApIHtcbiAgICB2YXIgbWluWCA9IE1hdGgubWluKHgsIHggKyB3aWR0aCk7XG4gICAgdmFyIG1heFggPSBNYXRoLm1heCh4LCB4ICsgd2lkdGgpO1xuICAgIHZhciBtaW5ZID0gTWF0aC5taW4oeSwgeSArIGhlaWdodCk7XG4gICAgdmFyIG1heFkgPSBNYXRoLm1heCh5LCB5ICsgaGVpZ2h0KTtcbiAgICByZXR1cm4gcHggPj0gbWluWCAmJiBweCA8PSBtYXhYICYmIHB5ID49IG1pblkgJiYgcHkgPD0gbWF4WTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgeDogMCxcbiAgeTogMCxcbiAgd2lkdGg6IDAsXG4gIGhlaWdodDogMCxcbiAgLy8gVGhlIHJhZGl1cyBvZiBib3JkZXJcbiAgLy8gVGhlIHJhZGl1cyBvZiBmb3VyIGNvcm5lcnMgd2hlbiByYWRpdXMgaXMgYSBudW1iZXJcbiAgLy8gVGhlIHJhZGl1cyBvZiBsZWZ0LXRvcCwgcmlnaHQtdG9wLCByaWdodC1ib3R0b20sIGxlZnQtYm90dG9tIHdoZW4gcmFkaXVzIGlzIGFuIGFycmF5XG4gIHJhZGl1czogMCxcbiAgaXNBbmltYXRpb25BY3RpdmU6IGZhbHNlLFxuICBpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZTogZmFsc2UsXG4gIGFuaW1hdGlvbkJlZ2luOiAwLFxuICBhbmltYXRpb25EdXJhdGlvbjogMTUwMCxcbiAgYW5pbWF0aW9uRWFzaW5nOiAnZWFzZSdcbn07XG5leHBvcnQgdmFyIFJlY3RhbmdsZSA9IGZ1bmN0aW9uIFJlY3RhbmdsZShyZWN0YW5nbGVQcm9wcykge1xuICB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRQcm9wcyksIHJlY3RhbmdsZVByb3BzKTtcbiAgdmFyIHBhdGhSZWYgPSB1c2VSZWYoKTtcbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKC0xKSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICB0b3RhbExlbmd0aCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgc2V0VG90YWxMZW5ndGggPSBfdXNlU3RhdGUyWzFdO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChwYXRoUmVmLmN1cnJlbnQgJiYgcGF0aFJlZi5jdXJyZW50LmdldFRvdGFsTGVuZ3RoKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcGF0aFRvdGFsTGVuZ3RoID0gcGF0aFJlZi5jdXJyZW50LmdldFRvdGFsTGVuZ3RoKCk7XG4gICAgICAgIGlmIChwYXRoVG90YWxMZW5ndGgpIHtcbiAgICAgICAgICBzZXRUb3RhbExlbmd0aChwYXRoVG90YWxMZW5ndGgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRvdGFsIGxlbmd0aCBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pO1xuICB2YXIgeCA9IHByb3BzLngsXG4gICAgeSA9IHByb3BzLnksXG4gICAgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgcmFkaXVzID0gcHJvcHMucmFkaXVzLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgdmFyIGFuaW1hdGlvbkVhc2luZyA9IHByb3BzLmFuaW1hdGlvbkVhc2luZyxcbiAgICBhbmltYXRpb25EdXJhdGlvbiA9IHByb3BzLmFuaW1hdGlvbkR1cmF0aW9uLFxuICAgIGFuaW1hdGlvbkJlZ2luID0gcHJvcHMuYW5pbWF0aW9uQmVnaW4sXG4gICAgaXNBbmltYXRpb25BY3RpdmUgPSBwcm9wcy5pc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICBpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZSA9IHByb3BzLmlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlO1xuICBpZiAoeCAhPT0gK3ggfHwgeSAhPT0gK3kgfHwgd2lkdGggIT09ICt3aWR0aCB8fCBoZWlnaHQgIT09ICtoZWlnaHQgfHwgd2lkdGggPT09IDAgfHwgaGVpZ2h0ID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1yZWN0YW5nbGUnLCBjbGFzc05hbWUpO1xuICBpZiAoIWlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCBfZXh0ZW5kcyh7fSwgZmlsdGVyUHJvcHMocHJvcHMsIHRydWUpLCB7XG4gICAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3MsXG4gICAgICBkOiBnZXRSZWN0YW5nbGVQYXRoKHgsIHksIHdpZHRoLCBoZWlnaHQsIHJhZGl1cylcbiAgICB9KSk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEFuaW1hdGUsIHtcbiAgICBjYW5CZWdpbjogdG90YWxMZW5ndGggPiAwLFxuICAgIGZyb206IHtcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LFxuICAgIHRvOiB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSxcbiAgICBkdXJhdGlvbjogYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgYW5pbWF0aW9uRWFzaW5nOiBhbmltYXRpb25FYXNpbmcsXG4gICAgaXNBY3RpdmU6IGlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlXG4gIH0sIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIGN1cnJXaWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICBjdXJySGVpZ2h0ID0gX3JlZi5oZWlnaHQsXG4gICAgICBjdXJyWCA9IF9yZWYueCxcbiAgICAgIGN1cnJZID0gX3JlZi55O1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChBbmltYXRlLCB7XG4gICAgICBjYW5CZWdpbjogdG90YWxMZW5ndGggPiAwLFxuICAgICAgZnJvbTogXCIwcHggXCIuY29uY2F0KHRvdGFsTGVuZ3RoID09PSAtMSA/IDEgOiB0b3RhbExlbmd0aCwgXCJweFwiKSxcbiAgICAgIHRvOiBcIlwiLmNvbmNhdCh0b3RhbExlbmd0aCwgXCJweCAwcHhcIiksXG4gICAgICBhdHRyaWJ1dGVOYW1lOiBcInN0cm9rZURhc2hhcnJheVwiLFxuICAgICAgYmVnaW46IGFuaW1hdGlvbkJlZ2luLFxuICAgICAgZHVyYXRpb246IGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgaXNBY3RpdmU6IGlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgZWFzaW5nOiBhbmltYXRpb25FYXNpbmdcbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKHByb3BzLCB0cnVlKSwge1xuICAgICAgY2xhc3NOYW1lOiBsYXllckNsYXNzLFxuICAgICAgZDogZ2V0UmVjdGFuZ2xlUGF0aChjdXJyWCwgY3VyclksIGN1cnJXaWR0aCwgY3VyckhlaWdodCwgcmFkaXVzKSxcbiAgICAgIHJlZjogcGF0aFJlZlxuICAgIH0pKSk7XG4gIH0pO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsInIiLCJsIiwidCIsImUiLCJ1IiwiYSIsImYiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImlzQXJyYXkiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY2xzeCIsIkFuaW1hdGUiLCJmaWx0ZXJQcm9wcyIsImdldFJlY3RhbmdsZVBhdGgiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwicmFkaXVzIiwibWF4UmFkaXVzIiwiTWF0aCIsIm1pbiIsImFicyIsInlTaWduIiwieFNpZ24iLCJjbG9ja1dpc2UiLCJwYXRoIiwibmV3UmFkaXVzIiwiY29uY2F0IiwiX25ld1JhZGl1cyIsImlzSW5SZWN0YW5nbGUiLCJwb2ludCIsInJlY3QiLCJweCIsInB5IiwibWluWCIsIm1heFgiLCJtYXgiLCJtaW5ZIiwibWF4WSIsImRlZmF1bHRQcm9wcyIsImlzQW5pbWF0aW9uQWN0aXZlIiwiaXNVcGRhdGVBbmltYXRpb25BY3RpdmUiLCJhbmltYXRpb25CZWdpbiIsImFuaW1hdGlvbkR1cmF0aW9uIiwiYW5pbWF0aW9uRWFzaW5nIiwiUmVjdGFuZ2xlIiwicmVjdGFuZ2xlUHJvcHMiLCJwcm9wcyIsInBhdGhSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwidG90YWxMZW5ndGgiLCJzZXRUb3RhbExlbmd0aCIsImN1cnJlbnQiLCJnZXRUb3RhbExlbmd0aCIsInBhdGhUb3RhbExlbmd0aCIsImVyciIsImNsYXNzTmFtZSIsImxheWVyQ2xhc3MiLCJjcmVhdGVFbGVtZW50IiwiZCIsImNhbkJlZ2luIiwidG8iLCJkdXJhdGlvbiIsImlzQWN0aXZlIiwiX3JlZiIsImN1cnJXaWR0aCIsImN1cnJIZWlnaHQiLCJjdXJyWCIsImN1cnJZIiwiYXR0cmlidXRlTmFtZSIsImJlZ2luIiwiZWFzaW5nIiwicmVmIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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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LGdFQUFlQSxDQUFDaUIsY0FBY21ELGFBQWEsR0FBRztJQUN2RCxJQUFJakM7SUFDSixJQUFJa0MsS0FBSyxLQUFLOUQsS0FBS0UsR0FBRyxDQUFDTixhQUFhQyxZQUFZLEtBQUs7UUFDbkQrQixPQUFPTSxvQkFBb0I7WUFDekI3QixJQUFJQTtZQUNKQyxJQUFJQTtZQUNKaUIsYUFBYUE7WUFDYkMsYUFBYUE7WUFDYmQsY0FBY1YsS0FBS0MsR0FBRyxDQUFDNkQsSUFBSUQsY0FBYztZQUN6Q3pCLG1CQUFtQkE7WUFDbkJ6QixrQkFBa0JBO1lBQ2xCZixZQUFZQTtZQUNaQyxVQUFVQTtRQUNaO0lBQ0YsT0FBTztRQUNMK0IsT0FBT1AsY0FBYztZQUNuQmhCLElBQUlBO1lBQ0pDLElBQUlBO1lBQ0ppQixhQUFhQTtZQUNiQyxhQUFhQTtZQUNiNUIsWUFBWUE7WUFDWkMsVUFBVUE7UUFDWjtJQUNGO0lBQ0EsT0FBTyxXQUFXLEdBQUVULDBEQUFtQixDQUFDLFFBQVF2QyxTQUFTLENBQUMsR0FBR3lDLDZEQUFXQSxDQUFDb0UsT0FBTyxPQUFPO1FBQ3JGQyxXQUFXQztRQUNYSSxHQUFHcEM7UUFDSHFDLE1BQU07SUFDUjtBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1NlY3Rvci5qcz81YzllIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBTZWN0b3JcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgcG9sYXJUb0NhcnRlc2lhbiwgUkFESUFOIH0gZnJvbSAnLi4vdXRpbC9Qb2xhclV0aWxzJztcbmltcG9ydCB7IGdldFBlcmNlbnRWYWx1ZSwgbWF0aFNpZ24gfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG52YXIgZ2V0RGVsdGFBbmdsZSA9IGZ1bmN0aW9uIGdldERlbHRhQW5nbGUoc3RhcnRBbmdsZSwgZW5kQW5nbGUpIHtcbiAgdmFyIHNpZ24gPSBtYXRoU2lnbihlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpO1xuICB2YXIgZGVsdGFBbmdsZSA9IE1hdGgubWluKE1hdGguYWJzKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSksIDM1OS45OTkpO1xuICByZXR1cm4gc2lnbiAqIGRlbHRhQW5nbGU7XG59O1xudmFyIGdldFRhbmdlbnRDaXJjbGUgPSBmdW5jdGlvbiBnZXRUYW5nZW50Q2lyY2xlKF9yZWYpIHtcbiAgdmFyIGN4ID0gX3JlZi5jeCxcbiAgICBjeSA9IF9yZWYuY3ksXG4gICAgcmFkaXVzID0gX3JlZi5yYWRpdXMsXG4gICAgYW5nbGUgPSBfcmVmLmFuZ2xlLFxuICAgIHNpZ24gPSBfcmVmLnNpZ24sXG4gICAgaXNFeHRlcm5hbCA9IF9yZWYuaXNFeHRlcm5hbCxcbiAgICBjb3JuZXJSYWRpdXMgPSBfcmVmLmNvcm5lclJhZGl1cyxcbiAgICBjb3JuZXJJc0V4dGVybmFsID0gX3JlZi5jb3JuZXJJc0V4dGVybmFsO1xuICB2YXIgY2VudGVyUmFkaXVzID0gY29ybmVyUmFkaXVzICogKGlzRXh0ZXJuYWwgPyAxIDogLTEpICsgcmFkaXVzO1xuICB2YXIgdGhldGEgPSBNYXRoLmFzaW4oY29ybmVyUmFkaXVzIC8gY2VudGVyUmFkaXVzKSAvIFJBRElBTjtcbiAgdmFyIGNlbnRlckFuZ2xlID0gY29ybmVySXNFeHRlcm5hbCA/IGFuZ2xlIDogYW5nbGUgKyBzaWduICogdGhldGE7XG4gIHZhciBjZW50ZXIgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgY2VudGVyUmFkaXVzLCBjZW50ZXJBbmdsZSk7XG4gIC8vIFRoZSBjb29yZGluYXRlIG9mIHBvaW50IHdoaWNoIGlzIHRhbmdlbnQgdG8gdGhlIGNpcmNsZVxuICB2YXIgY2lyY2xlVGFuZ2VuY3kgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgcmFkaXVzLCBjZW50ZXJBbmdsZSk7XG4gIC8vIFRoZSBjb29yZGluYXRlIG9mIHBvaW50IHdoaWNoIGlzIHRhbmdlbnQgdG8gdGhlIHJhZGl1cyBsaW5lXG4gIHZhciBsaW5lVGFuZ2VuY3lBbmdsZSA9IGNvcm5lcklzRXh0ZXJuYWwgPyBhbmdsZSAtIHNpZ24gKiB0aGV0YSA6IGFuZ2xlO1xuICB2YXIgbGluZVRhbmdlbmN5ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIGNlbnRlclJhZGl1cyAqIE1hdGguY29zKHRoZXRhICogUkFESUFOKSwgbGluZVRhbmdlbmN5QW5nbGUpO1xuICByZXR1cm4ge1xuICAgIGNlbnRlcjogY2VudGVyLFxuICAgIGNpcmNsZVRhbmdlbmN5OiBjaXJjbGVUYW5nZW5jeSxcbiAgICBsaW5lVGFuZ2VuY3k6IGxpbmVUYW5nZW5jeSxcbiAgICB0aGV0YTogdGhldGFcbiAgfTtcbn07XG52YXIgZ2V0U2VjdG9yUGF0aCA9IGZ1bmN0aW9uIGdldFNlY3RvclBhdGgoX3JlZjIpIHtcbiAgdmFyIGN4ID0gX3JlZjIuY3gsXG4gICAgY3kgPSBfcmVmMi5jeSxcbiAgICBpbm5lclJhZGl1cyA9IF9yZWYyLmlubmVyUmFkaXVzLFxuICAgIG91dGVyUmFkaXVzID0gX3JlZjIub3V0ZXJSYWRpdXMsXG4gICAgc3RhcnRBbmdsZSA9IF9yZWYyLnN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGUgPSBfcmVmMi5lbmRBbmdsZTtcbiAgdmFyIGFuZ2xlID0gZ2V0RGVsdGFBbmdsZShzdGFydEFuZ2xlLCBlbmRBbmdsZSk7XG5cbiAgLy8gV2hlbiB0aGUgYW5nbGUgb2Ygc2VjdG9yIGVxdWFscyB0byAzNjAsIHN0YXIgcG9pbnQgYW5kIGVuZCBwb2ludCBjb2luY2lkZVxuICB2YXIgdGVtcEVuZEFuZ2xlID0gc3RhcnRBbmdsZSArIGFuZ2xlO1xuICB2YXIgb3V0ZXJTdGFydFBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIG91dGVyUmFkaXVzLCBzdGFydEFuZ2xlKTtcbiAgdmFyIG91dGVyRW5kUG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgb3V0ZXJSYWRpdXMsIHRlbXBFbmRBbmdsZSk7XG4gIHZhciBwYXRoID0gXCJNIFwiLmNvbmNhdChvdXRlclN0YXJ0UG9pbnQueCwgXCIsXCIpLmNvbmNhdChvdXRlclN0YXJ0UG9pbnQueSwgXCJcXG4gICAgQSBcIikuY29uY2F0KG91dGVyUmFkaXVzLCBcIixcIikuY29uY2F0KG91dGVyUmFkaXVzLCBcIiwwLFxcbiAgICBcIikuY29uY2F0KCsoTWF0aC5hYnMoYW5nbGUpID4gMTgwKSwgXCIsXCIpLmNvbmNhdCgrKHN0YXJ0QW5nbGUgPiB0ZW1wRW5kQW5nbGUpLCBcIixcXG4gICAgXCIpLmNvbmNhdChvdXRlckVuZFBvaW50LngsIFwiLFwiKS5jb25jYXQob3V0ZXJFbmRQb2ludC55LCBcIlxcbiAgXCIpO1xuICBpZiAoaW5uZXJSYWRpdXMgPiAwKSB7XG4gICAgdmFyIGlubmVyU3RhcnRQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCBpbm5lclJhZGl1cywgc3RhcnRBbmdsZSk7XG4gICAgdmFyIGlubmVyRW5kUG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgaW5uZXJSYWRpdXMsIHRlbXBFbmRBbmdsZSk7XG4gICAgcGF0aCArPSBcIkwgXCIuY29uY2F0KGlubmVyRW5kUG9pbnQueCwgXCIsXCIpLmNvbmNhdChpbm5lckVuZFBvaW50LnksIFwiXFxuICAgICAgICAgICAgQSBcIikuY29uY2F0KGlubmVyUmFkaXVzLCBcIixcIikuY29uY2F0KGlubmVyUmFkaXVzLCBcIiwwLFxcbiAgICAgICAgICAgIFwiKS5jb25jYXQoKyhNYXRoLmFicyhhbmdsZSkgPiAxODApLCBcIixcIikuY29uY2F0KCsoc3RhcnRBbmdsZSA8PSB0ZW1wRW5kQW5nbGUpLCBcIixcXG4gICAgICAgICAgICBcIikuY29uY2F0KGlubmVyU3RhcnRQb2ludC54LCBcIixcIikuY29uY2F0KGlubmVyU3RhcnRQb2ludC55LCBcIiBaXCIpO1xuICB9IGVsc2Uge1xuICAgIHBhdGggKz0gXCJMIFwiLmNvbmNhdChjeCwgXCIsXCIpLmNvbmNhdChjeSwgXCIgWlwiKTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn07XG52YXIgZ2V0U2VjdG9yV2l0aENvcm5lciA9IGZ1bmN0aW9uIGdldFNlY3RvcldpdGhDb3JuZXIoX3JlZjMpIHtcbiAgdmFyIGN4ID0gX3JlZjMuY3gsXG4gICAgY3kgPSBfcmVmMy5jeSxcbiAgICBpbm5lclJhZGl1cyA9IF9yZWYzLmlubmVyUmFkaXVzLFxuICAgIG91dGVyUmFkaXVzID0gX3JlZjMub3V0ZXJSYWRpdXMsXG4gICAgY29ybmVyUmFkaXVzID0gX3JlZjMuY29ybmVyUmFkaXVzLFxuICAgIGZvcmNlQ29ybmVyUmFkaXVzID0gX3JlZjMuZm9yY2VDb3JuZXJSYWRpdXMsXG4gICAgY29ybmVySXNFeHRlcm5hbCA9IF9yZWYzLmNvcm5lcklzRXh0ZXJuYWwsXG4gICAgc3RhcnRBbmdsZSA9IF9yZWYzLnN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGUgPSBfcmVmMy5lbmRBbmdsZTtcbiAgdmFyIHNpZ24gPSBtYXRoU2lnbihlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpO1xuICB2YXIgX2dldFRhbmdlbnRDaXJjbGUgPSBnZXRUYW5nZW50Q2lyY2xlKHtcbiAgICAgIGN4OiBjeCxcbiAgICAgIGN5OiBjeSxcbiAgICAgIHJhZGl1czogb3V0ZXJSYWRpdXMsXG4gICAgICBhbmdsZTogc3RhcnRBbmdsZSxcbiAgICAgIHNpZ246IHNpZ24sXG4gICAgICBjb3JuZXJSYWRpdXM6IGNvcm5lclJhZGl1cyxcbiAgICAgIGNvcm5lcklzRXh0ZXJuYWw6IGNvcm5lcklzRXh0ZXJuYWxcbiAgICB9KSxcbiAgICBzb2N0ID0gX2dldFRhbmdlbnRDaXJjbGUuY2lyY2xlVGFuZ2VuY3ksXG4gICAgc29sdCA9IF9nZXRUYW5nZW50Q2lyY2xlLmxpbmVUYW5nZW5jeSxcbiAgICBzb3QgPSBfZ2V0VGFuZ2VudENpcmNsZS50aGV0YTtcbiAgdmFyIF9nZXRUYW5nZW50Q2lyY2xlMiA9IGdldFRhbmdlbnRDaXJjbGUoe1xuICAgICAgY3g6IGN4LFxuICAgICAgY3k6IGN5LFxuICAgICAgcmFkaXVzOiBvdXRlclJhZGl1cyxcbiAgICAgIGFuZ2xlOiBlbmRBbmdsZSxcbiAgICAgIHNpZ246IC1zaWduLFxuICAgICAgY29ybmVyUmFkaXVzOiBjb3JuZXJSYWRpdXMsXG4gICAgICBjb3JuZXJJc0V4dGVybmFsOiBjb3JuZXJJc0V4dGVybmFsXG4gICAgfSksXG4gICAgZW9jdCA9IF9nZXRUYW5nZW50Q2lyY2xlMi5jaXJjbGVUYW5nZW5jeSxcbiAgICBlb2x0ID0gX2dldFRhbmdlbnRDaXJjbGUyLmxpbmVUYW5nZW5jeSxcbiAgICBlb3QgPSBfZ2V0VGFuZ2VudENpcmNsZTIudGhldGE7XG4gIHZhciBvdXRlckFyY0FuZ2xlID0gY29ybmVySXNFeHRlcm5hbCA/IE1hdGguYWJzKHN0YXJ0QW5nbGUgLSBlbmRBbmdsZSkgOiBNYXRoLmFicyhzdGFydEFuZ2xlIC0gZW5kQW5nbGUpIC0gc290IC0gZW90O1xuICBpZiAob3V0ZXJBcmNBbmdsZSA8IDApIHtcbiAgICBpZiAoZm9yY2VDb3JuZXJSYWRpdXMpIHtcbiAgICAgIHJldHVybiBcIk0gXCIuY29uY2F0KHNvbHQueCwgXCIsXCIpLmNvbmNhdChzb2x0LnksIFwiXFxuICAgICAgICBhXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLFwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIiwwLDAsMSxcIikuY29uY2F0KGNvcm5lclJhZGl1cyAqIDIsIFwiLDBcXG4gICAgICAgIGFcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLDAsMCwxLFwiKS5jb25jYXQoLWNvcm5lclJhZGl1cyAqIDIsIFwiLDBcXG4gICAgICBcIik7XG4gICAgfVxuICAgIHJldHVybiBnZXRTZWN0b3JQYXRoKHtcbiAgICAgIGN4OiBjeCxcbiAgICAgIGN5OiBjeSxcbiAgICAgIGlubmVyUmFkaXVzOiBpbm5lclJhZGl1cyxcbiAgICAgIG91dGVyUmFkaXVzOiBvdXRlclJhZGl1cyxcbiAgICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUsXG4gICAgICBlbmRBbmdsZTogZW5kQW5nbGVcbiAgICB9KTtcbiAgfVxuICB2YXIgcGF0aCA9IFwiTSBcIi5jb25jYXQoc29sdC54LCBcIixcIikuY29uY2F0KHNvbHQueSwgXCJcXG4gICAgQVwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIixcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsMCwwLFwiKS5jb25jYXQoKyhzaWduIDwgMCksIFwiLFwiKS5jb25jYXQoc29jdC54LCBcIixcIikuY29uY2F0KHNvY3QueSwgXCJcXG4gICAgQVwiKS5jb25jYXQob3V0ZXJSYWRpdXMsIFwiLFwiKS5jb25jYXQob3V0ZXJSYWRpdXMsIFwiLDAsXCIpLmNvbmNhdCgrKG91dGVyQXJjQW5nbGUgPiAxODApLCBcIixcIikuY29uY2F0KCsoc2lnbiA8IDApLCBcIixcIikuY29uY2F0KGVvY3QueCwgXCIsXCIpLmNvbmNhdChlb2N0LnksIFwiXFxuICAgIEFcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLDAsMCxcIikuY29uY2F0KCsoc2lnbiA8IDApLCBcIixcIikuY29uY2F0KGVvbHQueCwgXCIsXCIpLmNvbmNhdChlb2x0LnksIFwiXFxuICBcIik7XG4gIGlmIChpbm5lclJhZGl1cyA+IDApIHtcbiAgICB2YXIgX2dldFRhbmdlbnRDaXJjbGUzID0gZ2V0VGFuZ2VudENpcmNsZSh7XG4gICAgICAgIGN4OiBjeCxcbiAgICAgICAgY3k6IGN5LFxuICAgICAgICByYWRpdXM6IGlubmVyUmFkaXVzLFxuICAgICAgICBhbmdsZTogc3RhcnRBbmdsZSxcbiAgICAgICAgc2lnbjogc2lnbixcbiAgICAgICAgaXNFeHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgY29ybmVyUmFkaXVzOiBjb3JuZXJSYWRpdXMsXG4gICAgICAgIGNvcm5lcklzRXh0ZXJuYWw6IGNvcm5lcklzRXh0ZXJuYWxcbiAgICAgIH0pLFxuICAgICAgc2ljdCA9IF9nZXRUYW5nZW50Q2lyY2xlMy5jaXJjbGVUYW5nZW5jeSxcbiAgICAgIHNpbHQgPSBfZ2V0VGFuZ2VudENpcmNsZTMubGluZVRhbmdlbmN5LFxuICAgICAgc2l0ID0gX2dldFRhbmdlbnRDaXJjbGUzLnRoZXRhO1xuICAgIHZhciBfZ2V0VGFuZ2VudENpcmNsZTQgPSBnZXRUYW5nZW50Q2lyY2xlKHtcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBjeTogY3ksXG4gICAgICAgIHJhZGl1czogaW5uZXJSYWRpdXMsXG4gICAgICAgIGFuZ2xlOiBlbmRBbmdsZSxcbiAgICAgICAgc2lnbjogLXNpZ24sXG4gICAgICAgIGlzRXh0ZXJuYWw6IHRydWUsXG4gICAgICAgIGNvcm5lclJhZGl1czogY29ybmVyUmFkaXVzLFxuICAgICAgICBjb3JuZXJJc0V4dGVybmFsOiBjb3JuZXJJc0V4dGVybmFsXG4gICAgICB9KSxcbiAgICAgIGVpY3QgPSBfZ2V0VGFuZ2VudENpcmNsZTQuY2lyY2xlVGFuZ2VuY3ksXG4gICAgICBlaWx0ID0gX2dldFRhbmdlbnRDaXJjbGU0LmxpbmVUYW5nZW5jeSxcbiAgICAgIGVpdCA9IF9nZXRUYW5nZW50Q2lyY2xlNC50aGV0YTtcbiAgICB2YXIgaW5uZXJBcmNBbmdsZSA9IGNvcm5lcklzRXh0ZXJuYWwgPyBNYXRoLmFicyhzdGFydEFuZ2xlIC0gZW5kQW5nbGUpIDogTWF0aC5hYnMoc3RhcnRBbmdsZSAtIGVuZEFuZ2xlKSAtIHNpdCAtIGVpdDtcbiAgICBpZiAoaW5uZXJBcmNBbmdsZSA8IDAgJiYgY29ybmVyUmFkaXVzID09PSAwKSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQocGF0aCwgXCJMXCIpLmNvbmNhdChjeCwgXCIsXCIpLmNvbmNhdChjeSwgXCJaXCIpO1xuICAgIH1cbiAgICBwYXRoICs9IFwiTFwiLmNvbmNhdChlaWx0LngsIFwiLFwiKS5jb25jYXQoZWlsdC55LCBcIlxcbiAgICAgIEFcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLDAsMCxcIikuY29uY2F0KCsoc2lnbiA8IDApLCBcIixcIikuY29uY2F0KGVpY3QueCwgXCIsXCIpLmNvbmNhdChlaWN0LnksIFwiXFxuICAgICAgQVwiKS5jb25jYXQoaW5uZXJSYWRpdXMsIFwiLFwiKS5jb25jYXQoaW5uZXJSYWRpdXMsIFwiLDAsXCIpLmNvbmNhdCgrKGlubmVyQXJjQW5nbGUgPiAxODApLCBcIixcIikuY29uY2F0KCsoc2lnbiA+IDApLCBcIixcIikuY29uY2F0KHNpY3QueCwgXCIsXCIpLmNvbmNhdChzaWN0LnksIFwiXFxuICAgICAgQVwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIixcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsMCwwLFwiKS5jb25jYXQoKyhzaWduIDwgMCksIFwiLFwiKS5jb25jYXQoc2lsdC54LCBcIixcIikuY29uY2F0KHNpbHQueSwgXCJaXCIpO1xuICB9IGVsc2Uge1xuICAgIHBhdGggKz0gXCJMXCIuY29uY2F0KGN4LCBcIixcIikuY29uY2F0KGN5LCBcIlpcIik7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59O1xudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgY3g6IDAsXG4gIGN5OiAwLFxuICBpbm5lclJhZGl1czogMCxcbiAgb3V0ZXJSYWRpdXM6IDAsXG4gIHN0YXJ0QW5nbGU6IDAsXG4gIGVuZEFuZ2xlOiAwLFxuICBjb3JuZXJSYWRpdXM6IDAsXG4gIGZvcmNlQ29ybmVyUmFkaXVzOiBmYWxzZSxcbiAgY29ybmVySXNFeHRlcm5hbDogZmFsc2Vcbn07XG5leHBvcnQgdmFyIFNlY3RvciA9IGZ1bmN0aW9uIFNlY3RvcihzZWN0b3JQcm9wcykge1xuICB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRQcm9wcyksIHNlY3RvclByb3BzKTtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgY3kgPSBwcm9wcy5jeSxcbiAgICBpbm5lclJhZGl1cyA9IHByb3BzLmlubmVyUmFkaXVzLFxuICAgIG91dGVyUmFkaXVzID0gcHJvcHMub3V0ZXJSYWRpdXMsXG4gICAgY29ybmVyUmFkaXVzID0gcHJvcHMuY29ybmVyUmFkaXVzLFxuICAgIGZvcmNlQ29ybmVyUmFkaXVzID0gcHJvcHMuZm9yY2VDb3JuZXJSYWRpdXMsXG4gICAgY29ybmVySXNFeHRlcm5hbCA9IHByb3BzLmNvcm5lcklzRXh0ZXJuYWwsXG4gICAgc3RhcnRBbmdsZSA9IHByb3BzLnN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGUgPSBwcm9wcy5lbmRBbmdsZSxcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gIGlmIChvdXRlclJhZGl1cyA8IGlubmVyUmFkaXVzIHx8IHN0YXJ0QW5nbGUgPT09IGVuZEFuZ2xlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1zZWN0b3InLCBjbGFzc05hbWUpO1xuICB2YXIgZGVsdGFSYWRpdXMgPSBvdXRlclJhZGl1cyAtIGlubmVyUmFkaXVzO1xuICB2YXIgY3IgPSBnZXRQZXJjZW50VmFsdWUoY29ybmVyUmFkaXVzLCBkZWx0YVJhZGl1cywgMCwgdHJ1ZSk7XG4gIHZhciBwYXRoO1xuICBpZiAoY3IgPiAwICYmIE1hdGguYWJzKHN0YXJ0QW5nbGUgLSBlbmRBbmdsZSkgPCAzNjApIHtcbiAgICBwYXRoID0gZ2V0U2VjdG9yV2l0aENvcm5lcih7XG4gICAgICBjeDogY3gsXG4gICAgICBjeTogY3ksXG4gICAgICBpbm5lclJhZGl1czogaW5uZXJSYWRpdXMsXG4gICAgICBvdXRlclJhZGl1czogb3V0ZXJSYWRpdXMsXG4gICAgICBjb3JuZXJSYWRpdXM6IE1hdGgubWluKGNyLCBkZWx0YVJhZGl1cyAvIDIpLFxuICAgICAgZm9yY2VDb3JuZXJSYWRpdXM6IGZvcmNlQ29ybmVyUmFkaXVzLFxuICAgICAgY29ybmVySXNFeHRlcm5hbDogY29ybmVySXNFeHRlcm5hbCxcbiAgICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUsXG4gICAgICBlbmRBbmdsZTogZW5kQW5nbGVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBwYXRoID0gZ2V0U2VjdG9yUGF0aCh7XG4gICAgICBjeDogY3gsXG4gICAgICBjeTogY3ksXG4gICAgICBpbm5lclJhZGl1czogaW5uZXJSYWRpdXMsXG4gICAgICBvdXRlclJhZGl1czogb3V0ZXJSYWRpdXMsXG4gICAgICBzdGFydEFuZ2xlOiBzdGFydEFuZ2xlLFxuICAgICAgZW5kQW5nbGU6IGVuZEFuZ2xlXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCBfZXh0ZW5kcyh7fSwgZmlsdGVyUHJvcHMocHJvcHMsIHRydWUpLCB7XG4gICAgY2xhc3NOYW1lOiBsYXllckNsYXNzLFxuICAgIGQ6IHBhdGgsXG4gICAgcm9sZTogXCJpbWdcIlxuICB9KSk7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJSZWFjdCIsImNsc3giLCJmaWx0ZXJQcm9wcyIsInBvbGFyVG9DYXJ0ZXNpYW4iLCJSQURJQU4iLCJnZXRQZXJjZW50VmFsdWUiLCJtYXRoU2lnbiIsImdldERlbHRhQW5nbGUiLCJzdGFydEFuZ2xlIiwiZW5kQW5nbGUiLCJzaWduIiwiZGVsdGFBbmdsZSIsIk1hdGgiLCJtaW4iLCJhYnMiLCJnZXRUYW5nZW50Q2lyY2xlIiwiX3JlZiIsImN4IiwiY3kiLCJyYWRpdXMiLCJhbmdsZSIsImlzRXh0ZXJuYWwiLCJjb3JuZXJSYWRpdXMiLCJjb3JuZXJJc0V4dGVybmFsIiwiY2VudGVyUmFkaXVzIiwidGhldGEiLCJhc2luIiwiY2VudGVyQW5nbGUiLCJjZW50ZXIiLCJjaXJjbGVUYW5nZW5jeSIsImxpbmVUYW5nZW5jeUFuZ2xlIiwibGluZVRhbmdlbmN5IiwiY29zIiwiZ2V0U2VjdG9yUGF0aCIsIl9yZWYyIiwiaW5uZXJSYWRpdXMiLCJvdXRlclJhZGl1cyIsInRlbXBFbmRBbmdsZSIsIm91dGVyU3RhcnRQb2ludCIsIm91dGVyRW5kUG9pbnQiLCJwYXRoIiwiY29uY2F0IiwieCIsInkiLCJpbm5lclN0YXJ0UG9pbnQiLCJpbm5lckVuZFBvaW50IiwiZ2V0U2VjdG9yV2l0aENvcm5lciIsIl9yZWYzIiwiZm9yY2VDb3JuZXJSYWRpdXMiLCJfZ2V0VGFuZ2VudENpcmNsZSIsInNvY3QiLCJzb2x0Iiwic290IiwiX2dldFRhbmdlbnRDaXJjbGUyIiwiZW9jdCIsImVvbHQiLCJlb3QiLCJvdXRlckFyY0FuZ2xlIiwiX2dldFRhbmdlbnRDaXJjbGUzIiwic2ljdCIsInNpbHQiLCJzaXQiLCJfZ2V0VGFuZ2VudENpcmNsZTQiLCJlaWN0IiwiZWlsdCIsImVpdCIsImlubmVyQXJjQW5nbGUiLCJkZWZhdWx0UHJvcHMiLCJTZWN0b3IiLCJzZWN0b3JQcm9wcyIsInByb3BzIiwiY2xhc3NOYW1lIiwibGF5ZXJDbGFzcyIsImRlbHRhUmFkaXVzIiwiY3IiLCJjcmVhdGVFbGVtZW50IiwiZCIsInJvbGUiXSwic291cmNlUm9vdCI6IiJ9\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/future/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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LE1BQU1DLFVBQVVMO1FBQ3RGLE9BQU9oQjtJQUNUO0lBQ0EsSUFBSXFDLFlBQVlILE1BQU1HLFNBQVMsRUFDN0JDLEtBQUtKLE1BQU1JLEVBQUUsRUFDYkMsS0FBS0wsTUFBTUssRUFBRTtJQUNmLElBQUlDLGdCQUFnQjlCLDZEQUFXQSxDQUFDd0IsT0FBTztJQUN2QyxJQUFJSSxPQUFPLENBQUNBLE1BQU1DLE9BQU8sQ0FBQ0EsTUFBTW5CLFNBQVMsQ0FBQ0EsTUFBTTtRQUM5QyxPQUFPLFdBQVcsR0FBRXRCLDBEQUFtQixDQUFDLFFBQVE3QyxTQUFTLENBQUMsR0FBR3VGLGVBQWU7WUFDMUVILFdBQVc1QixnREFBSUEsQ0FBQyxvQkFBb0I0QjtZQUNwQ0ssV0FBVyxhQUFheEIsTUFBTSxDQUFDb0IsSUFBSSxNQUFNcEIsTUFBTSxDQUFDcUIsSUFBSTtZQUNwREksR0FBR1I7UUFDTDtJQUNGO0lBQ0EsT0FBTztBQUNULEVBQUU7QUFDRlAsUUFBUUYsY0FBYyxHQUFHQSIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvc2hhcGUvU3ltYm9scy5qcz8zMjJmIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbnZhciBfZXhjbHVkZWQgPSBbXCJ0eXBlXCIsIFwic2l6ZVwiLCBcInNpemVUeXBlXCJdO1xuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBDdXJ2ZVxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVwcGVyRmlyc3QgZnJvbSAnbG9kYXNoL3VwcGVyRmlyc3QnO1xuaW1wb3J0IHsgc3ltYm9sIGFzIHNoYXBlU3ltYm9sLCBzeW1ib2xDaXJjbGUsIHN5bWJvbENyb3NzLCBzeW1ib2xEaWFtb25kLCBzeW1ib2xTcXVhcmUsIHN5bWJvbFN0YXIsIHN5bWJvbFRyaWFuZ2xlLCBzeW1ib2xXeWUgfSBmcm9tICd2aWN0b3J5LXZlbmRvci9kMy1zaGFwZSc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbnZhciBzeW1ib2xGYWN0b3JpZXMgPSB7XG4gIHN5bWJvbENpcmNsZTogc3ltYm9sQ2lyY2xlLFxuICBzeW1ib2xDcm9zczogc3ltYm9sQ3Jvc3MsXG4gIHN5bWJvbERpYW1vbmQ6IHN5bWJvbERpYW1vbmQsXG4gIHN5bWJvbFNxdWFyZTogc3ltYm9sU3F1YXJlLFxuICBzeW1ib2xTdGFyOiBzeW1ib2xTdGFyLFxuICBzeW1ib2xUcmlhbmdsZTogc3ltYm9sVHJpYW5nbGUsXG4gIHN5bWJvbFd5ZTogc3ltYm9sV3llXG59O1xudmFyIFJBRElBTiA9IE1hdGguUEkgLyAxODA7XG52YXIgZ2V0U3ltYm9sRmFjdG9yeSA9IGZ1bmN0aW9uIGdldFN5bWJvbEZhY3RvcnkodHlwZSkge1xuICB2YXIgbmFtZSA9IFwic3ltYm9sXCIuY29uY2F0KHVwcGVyRmlyc3QodHlwZSkpO1xuICByZXR1cm4gc3ltYm9sRmFjdG9yaWVzW25hbWVdIHx8IHN5bWJvbENpcmNsZTtcbn07XG52YXIgY2FsY3VsYXRlQXJlYVNpemUgPSBmdW5jdGlvbiBjYWxjdWxhdGVBcmVhU2l6ZShzaXplLCBzaXplVHlwZSwgdHlwZSkge1xuICBpZiAoc2l6ZVR5cGUgPT09ICdhcmVhJykge1xuICAgIHJldHVybiBzaXplO1xuICB9XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2Nyb3NzJzpcbiAgICAgIHJldHVybiA1ICogc2l6ZSAqIHNpemUgLyA5O1xuICAgIGNhc2UgJ2RpYW1vbmQnOlxuICAgICAgcmV0dXJuIDAuNSAqIHNpemUgKiBzaXplIC8gTWF0aC5zcXJ0KDMpO1xuICAgIGNhc2UgJ3NxdWFyZSc6XG4gICAgICByZXR1cm4gc2l6ZSAqIHNpemU7XG4gICAgY2FzZSAnc3Rhcic6XG4gICAgICB7XG4gICAgICAgIHZhciBhbmdsZSA9IDE4ICogUkFESUFOO1xuICAgICAgICByZXR1cm4gMS4yNSAqIHNpemUgKiBzaXplICogKE1hdGgudGFuKGFuZ2xlKSAtIE1hdGgudGFuKGFuZ2xlICogMikgKiBNYXRoLnBvdyhNYXRoLnRhbihhbmdsZSksIDIpKTtcbiAgICAgIH1cbiAgICBjYXNlICd0cmlhbmdsZSc6XG4gICAgICByZXR1cm4gTWF0aC5zcXJ0KDMpICogc2l6ZSAqIHNpemUgLyA0O1xuICAgIGNhc2UgJ3d5ZSc6XG4gICAgICByZXR1cm4gKDIxIC0gMTAgKiBNYXRoLnNxcnQoMykpICogc2l6ZSAqIHNpemUgLyA4O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gTWF0aC5QSSAqIHNpemUgKiBzaXplIC8gNDtcbiAgfVxufTtcbnZhciByZWdpc3RlclN5bWJvbCA9IGZ1bmN0aW9uIHJlZ2lzdGVyU3ltYm9sKGtleSwgZmFjdG9yeSkge1xuICBzeW1ib2xGYWN0b3JpZXNbXCJzeW1ib2xcIi5jb25jYXQodXBwZXJGaXJzdChrZXkpKV0gPSBmYWN0b3J5O1xufTtcbmV4cG9ydCB2YXIgU3ltYm9scyA9IGZ1bmN0aW9uIFN5bWJvbHMoX3JlZikge1xuICB2YXIgX3JlZiR0eXBlID0gX3JlZi50eXBlLFxuICAgIHR5cGUgPSBfcmVmJHR5cGUgPT09IHZvaWQgMCA/ICdjaXJjbGUnIDogX3JlZiR0eXBlLFxuICAgIF9yZWYkc2l6ZSA9IF9yZWYuc2l6ZSxcbiAgICBzaXplID0gX3JlZiRzaXplID09PSB2b2lkIDAgPyA2NCA6IF9yZWYkc2l6ZSxcbiAgICBfcmVmJHNpemVUeXBlID0gX3JlZi5zaXplVHlwZSxcbiAgICBzaXplVHlwZSA9IF9yZWYkc2l6ZVR5cGUgPT09IHZvaWQgMCA/ICdhcmVhJyA6IF9yZWYkc2l6ZVR5cGUsXG4gICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuICB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3QpLCB7fSwge1xuICAgIHR5cGU6IHR5cGUsXG4gICAgc2l6ZTogc2l6ZSxcbiAgICBzaXplVHlwZTogc2l6ZVR5cGVcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0aGUgcGF0aCBvZiBjdXJ2ZVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHBhdGhcbiAgICovXG4gIHZhciBnZXRQYXRoID0gZnVuY3Rpb24gZ2V0UGF0aCgpIHtcbiAgICB2YXIgc3ltYm9sRmFjdG9yeSA9IGdldFN5bWJvbEZhY3RvcnkodHlwZSk7XG4gICAgdmFyIHN5bWJvbCA9IHNoYXBlU3ltYm9sKCkudHlwZShzeW1ib2xGYWN0b3J5KS5zaXplKGNhbGN1bGF0ZUFyZWFTaXplKHNpemUsIHNpemVUeXBlLCB0eXBlKSk7XG4gICAgcmV0dXJuIHN5bWJvbCgpO1xuICB9O1xuICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgIGN4ID0gcHJvcHMuY3gsXG4gICAgY3kgPSBwcm9wcy5jeTtcbiAgdmFyIGZpbHRlcmVkUHJvcHMgPSBmaWx0ZXJQcm9wcyhwcm9wcywgdHJ1ZSk7XG4gIGlmIChjeCA9PT0gK2N4ICYmIGN5ID09PSArY3kgJiYgc2l6ZSA9PT0gK3NpemUpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJlZFByb3BzLCB7XG4gICAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXN5bWJvbHMnLCBjbGFzc05hbWUpLFxuICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIi5jb25jYXQoY3gsIFwiLCBcIikuY29uY2F0KGN5LCBcIilcIiksXG4gICAgICBkOiBnZXRQYXRoKClcbiAgICB9KSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuU3ltYm9scy5yZWdpc3RlclN5bWJvbCA9IHJlZ2lzdGVyU3ltYm9sOyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXhjbHVkZWQiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIlJlYWN0IiwidXBwZXJGaXJzdCIsInN5bWJvbCIsInNoYXBlU3ltYm9sIiwic3ltYm9sQ2lyY2xlIiwic3ltYm9sQ3Jvc3MiLCJzeW1ib2xEaWFtb25kIiwic3ltYm9sU3F1YXJlIiwic3ltYm9sU3RhciIsInN5bWJvbFRyaWFuZ2xlIiwic3ltYm9sV3llIiwiY2xzeCIsImZpbHRlclByb3BzIiwic3ltYm9sRmFjdG9yaWVzIiwiUkFESUFOIiwiTWF0aCIsIlBJIiwiZ2V0U3ltYm9sRmFjdG9yeSIsInR5cGUiLCJuYW1lIiwiY29uY2F0IiwiY2FsY3VsYXRlQXJlYVNpemUiLCJzaXplIiwic2l6ZVR5cGUiLCJzcXJ0IiwiYW5nbGUiLCJ0YW4iLCJwb3ciLCJyZWdpc3RlclN5bWJvbCIsImZhY3RvcnkiLCJTeW1ib2xzIiwiX3JlZiIsIl9yZWYkdHlwZSIsIl9yZWYkc2l6ZSIsIl9yZWYkc2l6ZVR5cGUiLCJyZXN0IiwicHJvcHMiLCJnZXRQYXRoIiwic3ltYm9sRmFjdG9yeSIsImNsYXNzTmFtZSIsImN4IiwiY3kiLCJmaWx0ZXJlZFByb3BzIiwiY3JlYXRlRWxlbWVudCIsInRyYW5zZm9ybSIsImQiXSwic291cmNlUm9vdCI6IiJ9\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/future/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)(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 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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QUFpQnNDLE9BQU9DLE9BQU9KLGdCQUFnQkMsZ0JBQWdCQztZQUNsRU0sS0FBSzFCO1FBQ1A7SUFDRjtBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1RyYXBlem9pZC5qcz85MTI2Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7IHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07IGlmIChudWxsICE9IHQpIHsgdmFyIGUsIG4sIGksIHUsIGEgPSBbXSwgZiA9ICEwLCBvID0gITE7IHRyeSB7IGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHsgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuOyBmID0gITE7IH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTsgfSBjYXRjaCAocikgeyBvID0gITAsIG4gPSByOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47IH0gZmluYWxseSB7IGlmIChvKSB0aHJvdyBuOyB9IH0gcmV0dXJuIGE7IH0gfVxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFJlY3RhbmdsZVxuICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgQW5pbWF0ZSBmcm9tICdyZWFjdC1zbW9vdGgnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xudmFyIGdldFRyYXBlem9pZFBhdGggPSBmdW5jdGlvbiBnZXRUcmFwZXpvaWRQYXRoKHgsIHksIHVwcGVyV2lkdGgsIGxvd2VyV2lkdGgsIGhlaWdodCkge1xuICB2YXIgd2lkdGhHYXAgPSB1cHBlcldpZHRoIC0gbG93ZXJXaWR0aDtcbiAgdmFyIHBhdGg7XG4gIHBhdGggPSBcIk0gXCIuY29uY2F0KHgsIFwiLFwiKS5jb25jYXQoeSk7XG4gIHBhdGggKz0gXCJMIFwiLmNvbmNhdCh4ICsgdXBwZXJXaWR0aCwgXCIsXCIpLmNvbmNhdCh5KTtcbiAgcGF0aCArPSBcIkwgXCIuY29uY2F0KHggKyB1cHBlcldpZHRoIC0gd2lkdGhHYXAgLyAyLCBcIixcIikuY29uY2F0KHkgKyBoZWlnaHQpO1xuICBwYXRoICs9IFwiTCBcIi5jb25jYXQoeCArIHVwcGVyV2lkdGggLSB3aWR0aEdhcCAvIDIgLSBsb3dlcldpZHRoLCBcIixcIikuY29uY2F0KHkgKyBoZWlnaHQpO1xuICBwYXRoICs9IFwiTCBcIi5jb25jYXQoeCwgXCIsXCIpLmNvbmNhdCh5LCBcIiBaXCIpO1xuICByZXR1cm4gcGF0aDtcbn07XG52YXIgZGVmYXVsdFByb3BzID0ge1xuICB4OiAwLFxuICB5OiAwLFxuICB1cHBlcldpZHRoOiAwLFxuICBsb3dlcldpZHRoOiAwLFxuICBoZWlnaHQ6IDAsXG4gIGlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlOiBmYWxzZSxcbiAgYW5pbWF0aW9uQmVnaW46IDAsXG4gIGFuaW1hdGlvbkR1cmF0aW9uOiAxNTAwLFxuICBhbmltYXRpb25FYXNpbmc6ICdlYXNlJ1xufTtcbmV4cG9ydCB2YXIgVHJhcGV6b2lkID0gZnVuY3Rpb24gVHJhcGV6b2lkKHByb3BzKSB7XG4gIHZhciB0cmFwZXpvaWRQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZGVmYXVsdFByb3BzKSwgcHJvcHMpO1xuICB2YXIgcGF0aFJlZiA9IHVzZVJlZigpO1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoLTEpLFxuICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgIHRvdGFsTGVuZ3RoID0gX3VzZVN0YXRlMlswXSxcbiAgICBzZXRUb3RhbExlbmd0aCA9IF91c2VTdGF0ZTJbMV07XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHBhdGhSZWYuY3VycmVudCAmJiBwYXRoUmVmLmN1cnJlbnQuZ2V0VG90YWxMZW5ndGgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBwYXRoVG90YWxMZW5ndGggPSBwYXRoUmVmLmN1cnJlbnQuZ2V0VG90YWxMZW5ndGgoKTtcbiAgICAgICAgaWYgKHBhdGhUb3RhbExlbmd0aCkge1xuICAgICAgICAgIHNldFRvdGFsTGVuZ3RoKHBhdGhUb3RhbExlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBjYWxjdWxhdGUgdG90YWwgbGVuZ3RoIGVycm9yXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSk7XG4gIHZhciB4ID0gdHJhcGV6b2lkUHJvcHMueCxcbiAgICB5ID0gdHJhcGV6b2lkUHJvcHMueSxcbiAgICB1cHBlcldpZHRoID0gdHJhcGV6b2lkUHJvcHMudXBwZXJXaWR0aCxcbiAgICBsb3dlcldpZHRoID0gdHJhcGV6b2lkUHJvcHMubG93ZXJXaWR0aCxcbiAgICBoZWlnaHQgPSB0cmFwZXpvaWRQcm9wcy5oZWlnaHQsXG4gICAgY2xhc3NOYW1lID0gdHJhcGV6b2lkUHJvcHMuY2xhc3NOYW1lO1xuICB2YXIgYW5pbWF0aW9uRWFzaW5nID0gdHJhcGV6b2lkUHJvcHMuYW5pbWF0aW9uRWFzaW5nLFxuICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gdHJhcGV6b2lkUHJvcHMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgYW5pbWF0aW9uQmVnaW4gPSB0cmFwZXpvaWRQcm9wcy5hbmltYXRpb25CZWdpbixcbiAgICBpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZSA9IHRyYXBlem9pZFByb3BzLmlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlO1xuICBpZiAoeCAhPT0gK3ggfHwgeSAhPT0gK3kgfHwgdXBwZXJXaWR0aCAhPT0gK3VwcGVyV2lkdGggfHwgbG93ZXJXaWR0aCAhPT0gK2xvd2VyV2lkdGggfHwgaGVpZ2h0ICE9PSAraGVpZ2h0IHx8IHVwcGVyV2lkdGggPT09IDAgJiYgbG93ZXJXaWR0aCA9PT0gMCB8fCBoZWlnaHQgPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgbGF5ZXJDbGFzcyA9IGNsc3goJ3JlY2hhcnRzLXRyYXBlem9pZCcsIGNsYXNzTmFtZSk7XG4gIGlmICghaXNVcGRhdGVBbmltYXRpb25BY3RpdmUpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCBfZXh0ZW5kcyh7fSwgZmlsdGVyUHJvcHModHJhcGV6b2lkUHJvcHMsIHRydWUpLCB7XG4gICAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3MsXG4gICAgICBkOiBnZXRUcmFwZXpvaWRQYXRoKHgsIHksIHVwcGVyV2lkdGgsIGxvd2VyV2lkdGgsIGhlaWdodClcbiAgICB9KSkpO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChBbmltYXRlLCB7XG4gICAgY2FuQmVnaW46IHRvdGFsTGVuZ3RoID4gMCxcbiAgICBmcm9tOiB7XG4gICAgICB1cHBlcldpZHRoOiAwLFxuICAgICAgbG93ZXJXaWR0aDogMCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LFxuICAgIHRvOiB7XG4gICAgICB1cHBlcldpZHRoOiB1cHBlcldpZHRoLFxuICAgICAgbG93ZXJXaWR0aDogbG93ZXJXaWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LFxuICAgIGR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbixcbiAgICBhbmltYXRpb25FYXNpbmc6IGFuaW1hdGlvbkVhc2luZyxcbiAgICBpc0FjdGl2ZTogaXNVcGRhdGVBbmltYXRpb25BY3RpdmVcbiAgfSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICB2YXIgY3VyclVwcGVyV2lkdGggPSBfcmVmLnVwcGVyV2lkdGgsXG4gICAgICBjdXJyTG93ZXJXaWR0aCA9IF9yZWYubG93ZXJXaWR0aCxcbiAgICAgIGN1cnJIZWlnaHQgPSBfcmVmLmhlaWdodCxcbiAgICAgIGN1cnJYID0gX3JlZi54LFxuICAgICAgY3VyclkgPSBfcmVmLnk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEFuaW1hdGUsIHtcbiAgICAgIGNhbkJlZ2luOiB0b3RhbExlbmd0aCA+IDAsXG4gICAgICBmcm9tOiBcIjBweCBcIi5jb25jYXQodG90YWxMZW5ndGggPT09IC0xID8gMSA6IHRvdGFsTGVuZ3RoLCBcInB4XCIpLFxuICAgICAgdG86IFwiXCIuY29uY2F0KHRvdGFsTGVuZ3RoLCBcInB4IDBweFwiKSxcbiAgICAgIGF0dHJpYnV0ZU5hbWU6IFwic3Ryb2tlRGFzaGFycmF5XCIsXG4gICAgICBiZWdpbjogYW5pbWF0aW9uQmVnaW4sXG4gICAgICBkdXJhdGlvbjogYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICBlYXNpbmc6IGFuaW1hdGlvbkVhc2luZ1xuICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCBfZXh0ZW5kcyh7fSwgZmlsdGVyUHJvcHModHJhcGV6b2lkUHJvcHMsIHRydWUpLCB7XG4gICAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3MsXG4gICAgICBkOiBnZXRUcmFwZXpvaWRQYXRoKGN1cnJYLCBjdXJyWSwgY3VyclVwcGVyV2lkdGgsIGN1cnJMb3dlcldpZHRoLCBjdXJySGVpZ2h0KSxcbiAgICAgIHJlZjogcGF0aFJlZlxuICAgIH0pKSk7XG4gIH0pO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsInIiLCJsIiwidCIsImUiLCJ1IiwiYSIsImYiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImlzQXJyYXkiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY2xzeCIsIkFuaW1hdGUiLCJmaWx0ZXJQcm9wcyIsImdldFRyYXBlem9pZFBhdGgiLCJ4IiwieSIsInVwcGVyV2lkdGgiLCJsb3dlcldpZHRoIiwiaGVpZ2h0Iiwid2lkdGhHYXAiLCJwYXRoIiwiY29uY2F0IiwiZGVmYXVsdFByb3BzIiwiaXNVcGRhdGVBbmltYXRpb25BY3RpdmUiLCJhbmltYXRpb25CZWdpbiIsImFuaW1hdGlvbkR1cmF0aW9uIiwiYW5pbWF0aW9uRWFzaW5nIiwiVHJhcGV6b2lkIiwicHJvcHMiLCJ0cmFwZXpvaWRQcm9wcyIsInBhdGhSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwidG90YWxMZW5ndGgiLCJzZXRUb3RhbExlbmd0aCIsImN1cnJlbnQiLCJnZXRUb3RhbExlbmd0aCIsInBhdGhUb3RhbExlbmd0aCIsImVyciIsImNsYXNzTmFtZSIsImxheWVyQ2xhc3MiLCJjcmVhdGVFbGVtZW50IiwiZCIsImNhbkJlZ2luIiwidG8iLCJkdXJhdGlvbiIsImlzQWN0aXZlIiwiX3JlZiIsImN1cnJVcHBlcldpZHRoIiwiY3Vyckxvd2VyV2lkdGgiLCJjdXJySGVpZ2h0IiwiY3VyclgiLCJjdXJyWSIsImF0dHJpYnV0ZU5hbWUiLCJiZWdpbiIsImVhc2luZyIsInJlZiJdLCJzb3VyY2VSb290IjoiIn0=\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/future/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 * 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 * is a subcomponent of 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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QzdDTixnQkFBZ0JpQyxNQUFNakMsYUFBYSxFQUNuQ2tDLFdBQVdELE1BQU1DLFFBQVE7SUFDM0IsSUFBSVIsV0FBV0QsZ0JBQWdCekIsZUFBZU07SUFDOUMsSUFBSXVCLGlCQUFpQkYsNkJBQTZCM0IsZUFBZU07SUFDakUsSUFBSTZCLG9CQUFvQkQsU0FBUzFGLE1BQU0sQ0FBQyxTQUFVNEYsS0FBSyxFQUFFQyxTQUFTO1FBQ2hFLElBQUlDLGNBQWNsRSxxREFBT0EsQ0FBQ3lELGdCQUFnQk87UUFDMUMsSUFBSUcseUJBQXlCdkMsY0FBY3BCLEtBQUssQ0FBQzhDLFNBQVMsQ0FBQ2xGLE1BQU0sQ0FBQyxTQUFVNkQsU0FBUztZQUNuRixJQUFJbUIsYUFBYUYsZ0JBQWdCdEIsZUFBZU07WUFDaEQsT0FBT2tCLFdBQVduQixXQUFXQztRQUMvQjtRQUVBLGlEQUFpRDtRQUNqRCxJQUFJa0MsMEJBQTBCeEMsY0FBY3BCLEtBQUssQ0FBQzhDLFNBQVMsQ0FBQzNGLE9BQU8sQ0FBQ3dHLHNCQUFzQixDQUFDQSx1QkFBdUJ6RyxNQUFNLEdBQUcsRUFBRTtRQUM3SCxJQUFJMkcsbUJBQW1CSixjQUFjRztRQUNyQyxPQUFPRixlQUFlRztJQUN4QjtJQUVBLGlEQUFpRDtJQUNqRCxJQUFJQyxjQUFjUixTQUFTbkcsT0FBTyxDQUFDb0csaUJBQWlCLENBQUNBLGtCQUFrQnJHLE1BQU0sR0FBRyxFQUFFO0lBQ2xGLE9BQU80RztBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0FjdGl2ZVNoYXBlVXRpbHMuanM/YTNmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wib3B0aW9uXCIsIFwic2hhcGVUeXBlXCIsIFwicHJvcFRyYW5zZm9ybWVyXCIsIFwiYWN0aXZlQ2xhc3NOYW1lXCIsIFwiaXNBY3RpdmVcIl07XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmltcG9ydCBSZWFjdCwgeyBpc1ZhbGlkRWxlbWVudCwgY2xvbmVFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnbG9kYXNoL2lzUGxhaW5PYmplY3QnO1xuaW1wb3J0IGlzQm9vbGVhbiBmcm9tICdsb2Rhc2gvaXNCb29sZWFuJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCB7IFJlY3RhbmdsZSB9IGZyb20gJy4uL3NoYXBlL1JlY3RhbmdsZSc7XG5pbXBvcnQgeyBUcmFwZXpvaWQgfSBmcm9tICcuLi9zaGFwZS9UcmFwZXpvaWQnO1xuaW1wb3J0IHsgU2VjdG9yIH0gZnJvbSAnLi4vc2hhcGUvU2VjdG9yJztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vY29udGFpbmVyL0xheWVyJztcbmltcG9ydCB7IFN5bWJvbHMgfSBmcm9tICcuLi9zaGFwZS9TeW1ib2xzJztcblxuLyoqXG4gKiBUaGlzIGlzIGFuIGFic3RyYWN0aW9uIGZvciByZW5kZXJpbmcgYSB1c2VyIGRlZmluZWQgcHJvcCBmb3IgYSBjdXN0b21pemVkIHNoYXBlIGluIHNldmVyYWwgZm9ybXMuXG4gKlxuICogPFNoYXBlIC8+IGlzIHRoZSByb290IGFuZCB3aWxsIGhhbmRsZSB0YWtpbmcgaW46XG4gKiAgLSBhbiBvYmplY3Qgb2Ygc3ZnIHByb3BlcnRpZXNcbiAqICAtIGEgYm9vbGVhblxuICogIC0gYSByZW5kZXIgcHJvcChpbmxpbmUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGpzeClcbiAqICAtIGEgcmVhY3QgZWxlbWVudFxuICpcbiAqIDxTaGFwZVNlbGVjdG9yIC8+IGlzIGEgc3ViY29tcG9uZW50IG9mIDxTaGFwZSAvPiBhbmQgdXNlZCB0byBtYXRjaCBhIGNvbXBvbmVudFxuICogdG8gdGhlIHZhbHVlIG9mIHByb3BzLnNoYXBlVHlwZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgcm9vdC5cbiAqXG4gKi9cblxuZnVuY3Rpb24gZGVmYXVsdFByb3BUcmFuc2Zvcm1lcihvcHRpb24sIHByb3BzKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwgb3B0aW9uKTtcbn1cbmZ1bmN0aW9uIGlzU3ltYm9sc1Byb3BzKHNoYXBlVHlwZSwgX2VsZW1lbnRQcm9wcykge1xuICByZXR1cm4gc2hhcGVUeXBlID09PSAnc3ltYm9scyc7XG59XG5mdW5jdGlvbiBTaGFwZVNlbGVjdG9yKF9yZWYpIHtcbiAgdmFyIHNoYXBlVHlwZSA9IF9yZWYuc2hhcGVUeXBlLFxuICAgIGVsZW1lbnRQcm9wcyA9IF9yZWYuZWxlbWVudFByb3BzO1xuICBzd2l0Y2ggKHNoYXBlVHlwZSkge1xuICAgIGNhc2UgJ3JlY3RhbmdsZSc6XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVjdGFuZ2xlLCBlbGVtZW50UHJvcHMpO1xuICAgIGNhc2UgJ3RyYXBlem9pZCc6XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhcGV6b2lkLCBlbGVtZW50UHJvcHMpO1xuICAgIGNhc2UgJ3NlY3Rvcic6XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2VjdG9yLCBlbGVtZW50UHJvcHMpO1xuICAgIGNhc2UgJ3N5bWJvbHMnOlxuICAgICAgaWYgKGlzU3ltYm9sc1Byb3BzKHNoYXBlVHlwZSwgZWxlbWVudFByb3BzKSkge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3ltYm9scywgZWxlbWVudFByb3BzKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BzRnJvbVNoYXBlT3B0aW9uKG9wdGlvbikge1xuICBpZiAoIC8qI19fUFVSRV9fKi9pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5wcm9wcztcbiAgfVxuICByZXR1cm4gb3B0aW9uO1xufVxuZXhwb3J0IGZ1bmN0aW9uIFNoYXBlKF9yZWYyKSB7XG4gIHZhciBvcHRpb24gPSBfcmVmMi5vcHRpb24sXG4gICAgc2hhcGVUeXBlID0gX3JlZjIuc2hhcGVUeXBlLFxuICAgIF9yZWYyJHByb3BUcmFuc2Zvcm1lciA9IF9yZWYyLnByb3BUcmFuc2Zvcm1lcixcbiAgICBwcm9wVHJhbnNmb3JtZXIgPSBfcmVmMiRwcm9wVHJhbnNmb3JtZXIgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wVHJhbnNmb3JtZXIgOiBfcmVmMiRwcm9wVHJhbnNmb3JtZXIsXG4gICAgX3JlZjIkYWN0aXZlQ2xhc3NOYW1lID0gX3JlZjIuYWN0aXZlQ2xhc3NOYW1lLFxuICAgIGFjdGl2ZUNsYXNzTmFtZSA9IF9yZWYyJGFjdGl2ZUNsYXNzTmFtZSA9PT0gdm9pZCAwID8gJ3JlY2hhcnRzLWFjdGl2ZS1zaGFwZScgOiBfcmVmMiRhY3RpdmVDbGFzc05hbWUsXG4gICAgaXNBY3RpdmUgPSBfcmVmMi5pc0FjdGl2ZSxcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHNoYXBlO1xuICBpZiAoIC8qI19fUFVSRV9fKi9pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgc2hhcGUgPSAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KG9wdGlvbiwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIGdldFByb3BzRnJvbVNoYXBlT3B0aW9uKG9wdGlvbikpKTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKG9wdGlvbikpIHtcbiAgICBzaGFwZSA9IG9wdGlvbihwcm9wcyk7XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChvcHRpb24pICYmICFpc0Jvb2xlYW4ob3B0aW9uKSkge1xuICAgIHZhciBuZXh0UHJvcHMgPSBwcm9wVHJhbnNmb3JtZXIob3B0aW9uLCBwcm9wcyk7XG4gICAgc2hhcGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTaGFwZVNlbGVjdG9yLCB7XG4gICAgICBzaGFwZVR5cGU6IHNoYXBlVHlwZSxcbiAgICAgIGVsZW1lbnRQcm9wczogbmV4dFByb3BzXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGVsZW1lbnRQcm9wcyA9IHByb3BzO1xuICAgIHNoYXBlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2hhcGVTZWxlY3Rvciwge1xuICAgICAgc2hhcGVUeXBlOiBzaGFwZVR5cGUsXG4gICAgICBlbGVtZW50UHJvcHM6IGVsZW1lbnRQcm9wc1xuICAgIH0pO1xuICB9XG4gIGlmIChpc0FjdGl2ZSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgICAgY2xhc3NOYW1lOiBhY3RpdmVDbGFzc05hbWVcbiAgICB9LCBzaGFwZSk7XG4gIH1cbiAgcmV0dXJuIHNoYXBlO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gYWJzdHJhY3Rpb24gdG8gaGFuZGxlIGlkZW50aWZ5aW5nIHRoZSBhY3RpdmUgaW5kZXggZnJvbSBhIHRvb2x0aXAgbW91c2UgaW50ZXJhY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNGdW5uZWwoZ3JhcGhpY2FsSXRlbSwgX2l0ZW0pIHtcbiAgcmV0dXJuIF9pdGVtICE9IG51bGwgJiYgJ3RyYXBlem9pZHMnIGluIGdyYXBoaWNhbEl0ZW0ucHJvcHM7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNQaWUoZ3JhcGhpY2FsSXRlbSwgX2l0ZW0pIHtcbiAgcmV0dXJuIF9pdGVtICE9IG51bGwgJiYgJ3NlY3RvcnMnIGluIGdyYXBoaWNhbEl0ZW0ucHJvcHM7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTY2F0dGVyKGdyYXBoaWNhbEl0ZW0sIF9pdGVtKSB7XG4gIHJldHVybiBfaXRlbSAhPSBudWxsICYmICdwb2ludHMnIGluIGdyYXBoaWNhbEl0ZW0ucHJvcHM7XG59XG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZUZ1bm5lbChzaGFwZURhdGEsIGFjdGl2ZVRvb2x0aXBJdGVtKSB7XG4gIHZhciBfYWN0aXZlVG9vbHRpcEl0ZW0kbGEsIF9hY3RpdmVUb29sdGlwSXRlbSRsYTI7XG4gIHZhciB4TWF0Y2hlcyA9IHNoYXBlRGF0YS54ID09PSAoYWN0aXZlVG9vbHRpcEl0ZW0gPT09IG51bGwgfHwgYWN0aXZlVG9vbHRpcEl0ZW0gPT09IHZvaWQgMCB8fCAoX2FjdGl2ZVRvb2x0aXBJdGVtJGxhID0gYWN0aXZlVG9vbHRpcEl0ZW0ubGFiZWxWaWV3Qm94KSA9PT0gbnVsbCB8fCBfYWN0aXZlVG9vbHRpcEl0ZW0kbGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hY3RpdmVUb29sdGlwSXRlbSRsYS54KSB8fCBzaGFwZURhdGEueCA9PT0gYWN0aXZlVG9vbHRpcEl0ZW0ueDtcbiAgdmFyIHlNYXRjaGVzID0gc2hhcGVEYXRhLnkgPT09IChhY3RpdmVUb29sdGlwSXRlbSA9PT0gbnVsbCB8fCBhY3RpdmVUb29sdGlwSXRlbSA9PT0gdm9pZCAwIHx8IChfYWN0aXZlVG9vbHRpcEl0ZW0kbGEyID0gYWN0aXZlVG9vbHRpcEl0ZW0ubGFiZWxWaWV3Qm94KSA9PT0gbnVsbCB8fCBfYWN0aXZlVG9vbHRpcEl0ZW0kbGEyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYWN0aXZlVG9vbHRpcEl0ZW0kbGEyLnkpIHx8IHNoYXBlRGF0YS55ID09PSBhY3RpdmVUb29sdGlwSXRlbS55O1xuICByZXR1cm4geE1hdGNoZXMgJiYgeU1hdGNoZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZVBpZShzaGFwZURhdGEsIGFjdGl2ZVRvb2x0aXBJdGVtKSB7XG4gIHZhciBzdGFydEFuZ2xlTWF0Y2hlcyA9IHNoYXBlRGF0YS5lbmRBbmdsZSA9PT0gYWN0aXZlVG9vbHRpcEl0ZW0uZW5kQW5nbGU7XG4gIHZhciBlbmRBbmdsZU1hdGNoZXMgPSBzaGFwZURhdGEuc3RhcnRBbmdsZSA9PT0gYWN0aXZlVG9vbHRpcEl0ZW0uc3RhcnRBbmdsZTtcbiAgcmV0dXJuIHN0YXJ0QW5nbGVNYXRjaGVzICYmIGVuZEFuZ2xlTWF0Y2hlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlU2NhdHRlcihzaGFwZURhdGEsIGFjdGl2ZVRvb2x0aXBJdGVtKSB7XG4gIHZhciB4TWF0Y2hlcyA9IHNoYXBlRGF0YS54ID09PSBhY3RpdmVUb29sdGlwSXRlbS54O1xuICB2YXIgeU1hdGNoZXMgPSBzaGFwZURhdGEueSA9PT0gYWN0aXZlVG9vbHRpcEl0ZW0ueTtcbiAgdmFyIHpNYXRjaGVzID0gc2hhcGVEYXRhLnogPT09IGFjdGl2ZVRvb2x0aXBJdGVtLno7XG4gIHJldHVybiB4TWF0Y2hlcyAmJiB5TWF0Y2hlcyAmJiB6TWF0Y2hlcztcbn1cbmZ1bmN0aW9uIGdldENvbXBhcmlzb25GbihncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSB7XG4gIHZhciBjb21wYXJpc29uO1xuICBpZiAoaXNGdW5uZWwoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkpIHtcbiAgICBjb21wYXJpc29uID0gY29tcGFyZUZ1bm5lbDtcbiAgfSBlbHNlIGlmIChpc1BpZShncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSkge1xuICAgIGNvbXBhcmlzb24gPSBjb21wYXJlUGllO1xuICB9IGVsc2UgaWYgKGlzU2NhdHRlcihncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSkge1xuICAgIGNvbXBhcmlzb24gPSBjb21wYXJlU2NhdHRlcjtcbiAgfVxuICByZXR1cm4gY29tcGFyaXNvbjtcbn1cbmZ1bmN0aW9uIGdldFNoYXBlRGF0YUtleShncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSB7XG4gIHZhciBzaGFwZUtleTtcbiAgaWYgKGlzRnVubmVsKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgc2hhcGVLZXkgPSAndHJhcGV6b2lkcyc7XG4gIH0gZWxzZSBpZiAoaXNQaWUoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkpIHtcbiAgICBzaGFwZUtleSA9ICdzZWN0b3JzJztcbiAgfSBlbHNlIGlmIChpc1NjYXR0ZXIoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkpIHtcbiAgICBzaGFwZUtleSA9ICdwb2ludHMnO1xuICB9XG4gIHJldHVybiBzaGFwZUtleTtcbn1cbmZ1bmN0aW9uIGdldEFjdGl2ZVNoYXBlVG9vbHRpcFBheWxvYWQoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkge1xuICBpZiAoaXNGdW5uZWwoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkpIHtcbiAgICB2YXIgX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhO1xuICAgIHJldHVybiAoX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhID0gYWN0aXZlSXRlbS50b29sdGlwUGF5bG9hZCkgPT09IG51bGwgfHwgX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhID09PSB2b2lkIDAgfHwgKF9hY3RpdmVJdGVtJHRvb2x0aXBQYSA9IF9hY3RpdmVJdGVtJHRvb2x0aXBQYVswXSkgPT09IG51bGwgfHwgX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhID09PSB2b2lkIDAgfHwgKF9hY3RpdmVJdGVtJHRvb2x0aXBQYSA9IF9hY3RpdmVJdGVtJHRvb2x0aXBQYS5wYXlsb2FkKSA9PT0gbnVsbCB8fCBfYWN0aXZlSXRlbSR0b29sdGlwUGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hY3RpdmVJdGVtJHRvb2x0aXBQYS5wYXlsb2FkO1xuICB9XG4gIGlmIChpc1BpZShncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSkge1xuICAgIHZhciBfYWN0aXZlSXRlbSR0b29sdGlwUGEyO1xuICAgIHJldHVybiAoX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMiA9IGFjdGl2ZUl0ZW0udG9vbHRpcFBheWxvYWQpID09PSBudWxsIHx8IF9hY3RpdmVJdGVtJHRvb2x0aXBQYTIgPT09IHZvaWQgMCB8fCAoX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMiA9IF9hY3RpdmVJdGVtJHRvb2x0aXBQYTJbMF0pID09PSBudWxsIHx8IF9hY3RpdmVJdGVtJHRvb2x0aXBQYTIgPT09IHZvaWQgMCB8fCAoX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMiA9IF9hY3RpdmVJdGVtJHRvb2x0aXBQYTIucGF5bG9hZCkgPT09IG51bGwgfHwgX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMi5wYXlsb2FkO1xuICB9XG4gIGlmIChpc1NjYXR0ZXIoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkpIHtcbiAgICByZXR1cm4gYWN0aXZlSXRlbS5wYXlsb2FkO1xuICB9XG4gIHJldHVybiB7fTtcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSB7R2V0QWN0aXZlU2hhcGVJbmRleEZvclRvb2x0aXB9IGFyZyBhbiBvYmplY3Qgb2YgaW5jb21pbmcgYXR0cmlidXRlcyBmcm9tIFRvb2x0aXBcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKlxuICogVG8gaGFuZGxlIHBvc3NpYmxlIGR1cGxpY2F0ZXMgaW4gdGhlIGRhdGEgc2V0LFxuICogbWF0Y2ggYm90aCB0aGUgZGF0YSB2YWx1ZSBvZiB0aGUgYWN0aXZlIGl0ZW0gdG8gYSBkYXRhIHZhbHVlIG9uIGEgZ3JhcGggaXRlbSxcbiAqIGFuZCBtYXRjaCB0aGUgbW91c2UgY29vcmRpbmF0ZXMgb2YgdGhlIGFjdGl2ZSBpdGVtIHRvIHRoZSBjb29yZGluYXRlcyBvZiBpbiBhIHBhcnRpY3VsYXIgY29tcG9uZW50cyBzaGFwZSBkYXRhLlxuICogVGhpcyBhc3N1bWVzIGVxdWFsIGxlbmd0aHMgb2Ygc2hhcGUgb2JqZWN0cyB0byBkYXRhIGl0ZW1zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZlU2hhcGVJbmRleEZvclRvb2x0aXAoX3JlZjMpIHtcbiAgdmFyIGFjdGl2ZVRvb2x0aXBJdGVtID0gX3JlZjMuYWN0aXZlVG9vbHRpcEl0ZW0sXG4gICAgZ3JhcGhpY2FsSXRlbSA9IF9yZWYzLmdyYXBoaWNhbEl0ZW0sXG4gICAgaXRlbURhdGEgPSBfcmVmMy5pdGVtRGF0YTtcbiAgdmFyIHNoYXBlS2V5ID0gZ2V0U2hhcGVEYXRhS2V5KGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZVRvb2x0aXBJdGVtKTtcbiAgdmFyIHRvb2x0aXBQYXlsb2FkID0gZ2V0QWN0aXZlU2hhcGVUb29sdGlwUGF5bG9hZChncmFwaGljYWxJdGVtLCBhY3RpdmVUb29sdGlwSXRlbSk7XG4gIHZhciBhY3RpdmVJdGVtTWF0Y2hlcyA9IGl0ZW1EYXRhLmZpbHRlcihmdW5jdGlvbiAoZGF0dW0sIGRhdGFJbmRleCkge1xuICAgIHZhciB2YWx1ZXNNYXRjaCA9IGlzRXF1YWwodG9vbHRpcFBheWxvYWQsIGRhdHVtKTtcbiAgICB2YXIgbW91c2VDb29yZGluYXRlTWF0Y2hlcyA9IGdyYXBoaWNhbEl0ZW0ucHJvcHNbc2hhcGVLZXldLmZpbHRlcihmdW5jdGlvbiAoc2hhcGVEYXRhKSB7XG4gICAgICB2YXIgY29tcGFyaXNvbiA9IGdldENvbXBhcmlzb25GbihncmFwaGljYWxJdGVtLCBhY3RpdmVUb29sdGlwSXRlbSk7XG4gICAgICByZXR1cm4gY29tcGFyaXNvbihzaGFwZURhdGEsIGFjdGl2ZVRvb2x0aXBJdGVtKTtcbiAgICB9KTtcblxuICAgIC8vIGdldCB0aGUgbGFzdCBpbmRleCBpbiBjYXNlIG9mIG11bHRpcGxlIG1hdGNoZXNcbiAgICB2YXIgaW5kZXhPZk1vdXNlQ29vcmRpbmF0ZXMgPSBncmFwaGljYWxJdGVtLnByb3BzW3NoYXBlS2V5XS5pbmRleE9mKG1vdXNlQ29vcmRpbmF0ZU1hdGNoZXNbbW91c2VDb29yZGluYXRlTWF0Y2hlcy5sZW5ndGggLSAxXSk7XG4gICAgdmFyIGNvb3JkaW5hdGVzTWF0Y2ggPSBkYXRhSW5kZXggPT09IGluZGV4T2ZNb3VzZUNvb3JkaW5hdGVzO1xuICAgIHJldHVybiB2YWx1ZXNNYXRjaCAmJiBjb29yZGluYXRlc01hdGNoO1xuICB9KTtcblxuICAvLyBnZXQgdGhlIGxhc3QgaW5kZXggaW4gY2FzZSBvZiBtdWx0aXBsZSBtYXRjaGVzXG4gIHZhciBhY3RpdmVJbmRleCA9IGl0ZW1EYXRhLmluZGV4T2YoYWN0aXZlSXRlbU1hdGNoZXNbYWN0aXZlSXRlbU1hdGNoZXMubGVuZ3RoIC0gMV0pO1xuICByZXR1cm4gYWN0aXZlSW5kZXg7XG59Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsInNvdXJjZSIsImV4Y2x1ZGVkIiwidGFyZ2V0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJrZXkiLCJpIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsImxlbmd0aCIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImNhbGwiLCJoYXNPd25Qcm9wZXJ0eSIsIm93bktleXMiLCJlIiwiciIsInQiLCJrZXlzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVhY3QiLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCIsImlzRnVuY3Rpb24iLCJpc1BsYWluT2JqZWN0IiwiaXNCb29sZWFuIiwiaXNFcXVhbCIsIlJlY3RhbmdsZSIsIlRyYXBlem9pZCIsIlNlY3RvciIsIkxheWVyIiwiU3ltYm9scyIsImRlZmF1bHRQcm9wVHJhbnNmb3JtZXIiLCJvcHRpb24iLCJwcm9wcyIsImlzU3ltYm9sc1Byb3BzIiwic2hhcGVUeXBlIiwiX2VsZW1lbnRQcm9wcyIsIlNoYXBlU2VsZWN0b3IiLCJfcmVmIiwiZWxlbWVudFByb3BzIiwiY3JlYXRlRWxlbWVudCIsImdldFByb3BzRnJvbVNoYXBlT3B0aW9uIiwiU2hhcGUiLCJfcmVmMiIsIl9yZWYyJHByb3BUcmFuc2Zvcm1lciIsInByb3BUcmFuc2Zvcm1lciIsIl9yZWYyJGFjdGl2ZUNsYXNzTmFtZSIsImFjdGl2ZUNsYXNzTmFtZSIsImlzQWN0aXZlIiwic2hhcGUiLCJuZXh0UHJvcHMiLCJjbGFzc05hbWUiLCJpc0Z1bm5lbCIsImdyYXBoaWNhbEl0ZW0iLCJfaXRlbSIsImlzUGllIiwiaXNTY2F0dGVyIiwiY29tcGFyZUZ1bm5lbCIsInNoYXBlRGF0YSIsImFjdGl2ZVRvb2x0aXBJdGVtIiwiX2FjdGl2ZVRvb2x0aXBJdGVtJGxhIiwiX2FjdGl2ZVRvb2x0aXBJdGVtJGxhMiIsInhNYXRjaGVzIiwieCIsImxhYmVsVmlld0JveCIsInlNYXRjaGVzIiwieSIsImNvbXBhcmVQaWUiLCJzdGFydEFuZ2xlTWF0Y2hlcyIsImVuZEFuZ2xlIiwiZW5kQW5nbGVNYXRjaGVzIiwic3RhcnRBbmdsZSIsImNvbXBhcmVTY2F0dGVyIiwiek1hdGNoZXMiLCJ6IiwiZ2V0Q29tcGFyaXNvbkZuIiwiYWN0aXZlSXRlbSIsImNvbXBhcmlzb24iLCJnZXRTaGFwZURhdGFLZXkiLCJzaGFwZUtleSIsImdldEFjdGl2ZVNoYXBlVG9vbHRpcFBheWxvYWQiLCJfYWN0aXZlSXRlbSR0b29sdGlwUGEiLCJ0b29sdGlwUGF5bG9hZCIsInBheWxvYWQiLCJfYWN0aXZlSXRlbSR0b29sdGlwUGEyIiwiZ2V0QWN0aXZlU2hhcGVJbmRleEZvclRvb2x0aXAiLCJfcmVmMyIsIml0ZW1EYXRhIiwiYWN0aXZlSXRlbU1hdGNoZXMiLCJkYXR1bSIsImRhdGFJbmRleCIsInZhbHVlc01hdGNoIiwibW91c2VDb29yZGluYXRlTWF0Y2hlcyIsImluZGV4T2ZNb3VzZUNvb3JkaW5hdGVzIiwiY29vcmRpbmF0ZXNNYXRjaCIsImFjdGl2ZUluZGV4Il0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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\");\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// 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 isValueNumber = typeof value === \"number\";\n if (isValueNumber) {\n return minPointSize(value, index);\n }\n !isValueNumber ? 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 are supported.\")) : 0 : void 0;\n return defaultValue;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQmFyVXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0lBQUs7Q0FBSTtBQUMxQixTQUFTQyxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlmLE9BQU9nQixJQUFJLENBQUNIO0lBQUksSUFBSWIsT0FBT2lCLHFCQUFxQixFQUFFO1FBQUUsSUFBSXZCLElBQUlNLE9BQU9pQixxQkFBcUIsQ0FBQ0o7UUFBSUMsS0FBTXBCLENB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QTtRQUNSRSxPQUFPQTtRQUNQQyxNQUFNZCxNQUFNYyxJQUFJO1FBQ2hCQyxRQUFRZixNQUFNZSxNQUFNO0lBQ3RCO0FBQ0Y7QUFDTyxTQUFTQyxhQUFhaEIsS0FBSztJQUNoQyxPQUFPLFdBQVcsR0FBRUwsMERBQW1CLENBQUNFLG9EQUFLQSxFQUFFL0MsU0FBUztRQUN0RG9FLFdBQVc7UUFDWEMsaUJBQWlCckI7UUFDakJzQixpQkFBaUI7SUFDbkIsR0FBR3BCO0FBQ0w7QUFDQTs7Ozs7Q0FLQyxHQUNNLElBQUlxQix1QkFBdUIsU0FBU0EscUJBQXFCQyxZQUFZO0lBQzFFLElBQUlDLGVBQWVuRSxVQUFVQyxNQUFNLEdBQUcsS0FBS0QsU0FBUyxDQUFDLEVBQUUsS0FBS29FLFlBQVlwRSxTQUFTLENBQUMsRUFBRSxHQUFHO0lBQ3ZGLE9BQU8sU0FBVXdCLEtBQUssRUFBRTZDLEtBQUs7UUFDM0IsSUFBSSxPQUFPSCxpQkFBaUIsVUFBVSxPQUFPQTtRQUM3QyxJQUFJSSxnQkFBZ0IsT0FBTzlDLFVBQVU7UUFDckMsSUFBSThDLGVBQWU7WUFDakIsT0FBT0osYUFBYTFDLE9BQU82QztRQUM3QjtRQUNBLENBQUNDLGdCQUFnQkMsS0FBcUMsR0FBRy9CLDBEQUFTQSxDQUFDLE9BQU8sZ0VBQWdFVyxNQUFNLENBQUMvRCxRQUFRb0MsUUFBUSw4Q0FBOENnQixDQUFnQixHQUFHLEtBQUs7UUFDdk8sT0FBTzJCO0lBQ1Q7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0JhclV0aWxzLmpzPzc0N2UiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9leGNsdWRlZCA9IFtcInhcIiwgXCJ5XCJdO1xuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaW52YXJpYW50IGZyb20gJ3RpbnktaW52YXJpYW50JztcbmltcG9ydCB7IFNoYXBlIH0gZnJvbSAnLi9BY3RpdmVTaGFwZVV0aWxzJztcblxuLy8gUmVjdGFuZ2xlIHByb3BzIGlzIGV4cGVjdGluZyB4LCB5LCBoZWlnaHQsIHdpZHRoIGFzIG51bWJlcnMsIG5hbWUgYXMgYSBzdHJpbmcsIGFuZCByYWRpdXMgYXMgYSBjdXN0b20gdHlwZVxuLy8gV2hlbiBwcm9wcyBhcmUgYmVpbmcgc3ByZWFkIGluIGZyb20gYSB1c2VyIGRlZmluZWQgY29tcG9uZW50IGluIEJhcixcbi8vIHRoZSBwcm9wIHR5cGVzIG9mIGFuIFNWR0VsZW1lbnQgaGF2ZSB0aGVzZSB0eXBlZCBhcyBzb21ldGhpbmcgZWxzZS5cbi8vIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHBhc3NlZCBpbiBwcm9wc1xuLy8gYWxvbmcgd2l0aCB4LCB5LCBoZWlnaHQgYXMgbnVtYmVycywgbmFtZSBhcyBhIHN0cmluZywgYW5kIHJhZGl1cyBhcyBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuZnVuY3Rpb24gdHlwZWd1YXJkQmFyUmVjdGFuZ2xlUHJvcHMoX3JlZiwgcHJvcHMpIHtcbiAgdmFyIHhQcm9wID0gX3JlZi54LFxuICAgIHlQcm9wID0gX3JlZi55LFxuICAgIG9wdGlvbiA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuICB2YXIgeFZhbHVlID0gXCJcIi5jb25jYXQoeFByb3ApO1xuICB2YXIgeCA9IHBhcnNlSW50KHhWYWx1ZSwgMTApO1xuICB2YXIgeVZhbHVlID0gXCJcIi5jb25jYXQoeVByb3ApO1xuICB2YXIgeSA9IHBhcnNlSW50KHlWYWx1ZSwgMTApO1xuICB2YXIgaGVpZ2h0VmFsdWUgPSBcIlwiLmNvbmNhdChwcm9wcy5oZWlnaHQgfHwgb3B0aW9uLmhlaWdodCk7XG4gIHZhciBoZWlnaHQgPSBwYXJzZUludChoZWlnaHRWYWx1ZSwgMTApO1xuICB2YXIgd2lkdGhWYWx1ZSA9IFwiXCIuY29uY2F0KHByb3BzLndpZHRoIHx8IG9wdGlvbi53aWR0aCk7XG4gIHZhciB3aWR0aCA9IHBhcnNlSW50KHdpZHRoVmFsdWUsIDEwKTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCBvcHRpb24pLCB4ID8ge1xuICAgIHg6IHhcbiAgfSA6IHt9KSwgeSA/IHtcbiAgICB5OiB5XG4gIH0gOiB7fSksIHt9LCB7XG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgcmFkaXVzOiBwcm9wcy5yYWRpdXNcbiAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gQmFyUmVjdGFuZ2xlKHByb3BzKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTaGFwZSwgX2V4dGVuZHMoe1xuICAgIHNoYXBlVHlwZTogXCJyZWN0YW5nbGVcIixcbiAgICBwcm9wVHJhbnNmb3JtZXI6IHR5cGVndWFyZEJhclJlY3RhbmdsZVByb3BzLFxuICAgIGFjdGl2ZUNsYXNzTmFtZTogXCJyZWNoYXJ0cy1hY3RpdmUtYmFyXCJcbiAgfSwgcHJvcHMpKTtcbn1cbi8qKlxuICogU2FmZWx5IGdldHMgbWluUG9pbnRTaXplIGZyb20gZnJvbSB0aGUgbWluUG9pbnRTaXplIHByb3AgaWYgaXQgaXMgYSBmdW5jdGlvblxuICogQHBhcmFtIG1pblBvaW50U2l6ZSBtaW5Qb2ludFNpemUgYXMgcGFzc2VkIHRvIHRoZSBCYXIgY29tcG9uZW50XG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIGRlZmF1bHQgbWluUG9pbnRTaXplXG4gKiBAcmV0dXJucyBtaW5Qb2ludFNpemVcbiAqL1xuZXhwb3J0IHZhciBtaW5Qb2ludFNpemVDYWxsYmFjayA9IGZ1bmN0aW9uIG1pblBvaW50U2l6ZUNhbGxiYWNrKG1pblBvaW50U2l6ZSkge1xuICB2YXIgZGVmYXVsdFZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAwO1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuICAgIGlmICh0eXBlb2YgbWluUG9pbnRTaXplID09PSAnbnVtYmVyJykgcmV0dXJuIG1pblBvaW50U2l6ZTtcbiAgICB2YXIgaXNWYWx1ZU51bWJlciA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG4gICAgaWYgKGlzVmFsdWVOdW1iZXIpIHtcbiAgICAgIHJldHVybiBtaW5Qb2ludFNpemUodmFsdWUsIGluZGV4KTtcbiAgICB9XG4gICAgIWlzVmFsdWVOdW1iZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIFwibWluUG9pbnRTaXplIGNhbGxiYWNrIGZ1bmN0aW9uIHJlY2VpdmVkIGEgdmFsdWUgd2l0aCB0eXBlIG9mIFwiLmNvbmNhdChfdHlwZW9mKHZhbHVlKSwgXCIuIEN1cnJlbnRseSBvbmx5IG51bWJlcnMgYXJlIHN1cHBvcnRlZC5cIikpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9O1xufTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJSZWFjdCIsImludmFyaWFudCIsIlNoYXBlIiwidHlwZWd1YXJkQmFyUmVjdGFuZ2xlUHJvcHMiLCJfcmVmIiwicHJvcHMiLCJ4UHJvcCIsIngiLCJ5UHJvcCIsInkiLCJvcHRpb24iLCJ4VmFsdWUiLCJjb25jYXQiLCJwYXJzZUludCIsInlWYWx1ZSIsImhlaWdodFZhbHVlIiwiaGVpZ2h0Iiwid2lkdGhWYWx1ZSIsIndpZHRoIiwibmFtZSIsInJhZGl1cyIsIkJhclJlY3RhbmdsZSIsImNyZWF0ZUVsZW1lbnQiLCJzaGFwZVR5cGUiLCJwcm9wVHJhbnNmb3JtZXIiLCJhY3RpdmVDbGFzc05hbWUiLCJtaW5Qb2ludFNpemVDYWxsYmFjayIsIm1pblBvaW50U2l6ZSIsImRlZmF1bHRWYWx1ZSIsInVuZGVmaW5lZCIsImluZGV4IiwiaXNWYWx1ZU51bWJlciIsInByb2Nlc3MiXSwic291cmNlUm9vdCI6IiJ9\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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QUFFeUcsS0FBSztnQkFDeEMsT0FBT0osTUFBTSxDQUFDSSxNQUFNLENBQUNWLFNBQVMsQ0FBQy9GO1lBQ2pDO1FBQ0Y7SUFDRjtBQUNGLEVBQUU7QUFFRjs7dUdBRXVHLEdBQ2hHLFNBQVMwRyxlQUFlQyxLQUFLO0lBQ2xDLE9BQU8sQ0FBQ0EsUUFBUSxNQUFNLEdBQUUsSUFBSztBQUMvQjtBQUVBOzs7O0NBSUMsR0FDTSxJQUFJQywwQkFBMEIsU0FBU0Esd0JBQXdCQyxLQUFLO0lBQ3pFLElBQUl4RixRQUFRd0YsTUFBTXhGLEtBQUssRUFDckJDLFNBQVN1RixNQUFNdkYsTUFBTTtJQUN2QixJQUFJcUYsUUFBUWpILFVBQVV2QixNQUFNLEdBQUcsS0FBS3VCLFNBQVMsQ0FBQyxFQUFFLEtBQUtnRyxZQUFZaEcsU0FBUyxDQUFDLEVBQUUsR0FBRztJQUNoRixnQ0FBZ0M7SUFDaEMsSUFBSW9ILGtCQUFrQkosZUFBZUM7SUFDckMsSUFBSUksZUFBZUQsa0JBQWtCakQsS0FBS21ELEVBQUUsR0FBRztJQUUvQztxRUFDbUUsR0FDbkUsSUFBSUMsaUJBQWlCcEQsS0FBS3FELElBQUksQ0FBQzVGLFNBQVNEO0lBQ3hDLElBQUk4RixjQUFjSixlQUFlRSxrQkFBa0JGLGVBQWVsRCxLQUFLbUQsRUFBRSxHQUFHQyxpQkFBaUIzRixTQUFTdUMsS0FBS3VELEdBQUcsQ0FBQ0wsZ0JBQWdCMUYsUUFBUXdDLEtBQUt3RCxHQUFHLENBQUNOO0lBQ2hKLE9BQU9sRCxLQUFLc0IsR0FBRyxDQUFDZ0M7QUFDbEIsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9DYXJ0ZXNpYW5VdGlscy5qcz9mMDdkIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgbWFwVmFsdWVzIGZyb20gJ2xvZGFzaC9tYXBWYWx1ZXMnO1xuaW1wb3J0IGV2ZXJ5IGZyb20gJ2xvZGFzaC9ldmVyeSc7XG5pbXBvcnQgeyBnZXRUaWNrc09mU2NhbGUsIHBhcnNlU2NhbGUsIGNoZWNrRG9tYWluT2ZTY2FsZSwgZ2V0QmFuZFNpemVPZkF4aXMgfSBmcm9tICcuL0NoYXJ0VXRpbHMnO1xuaW1wb3J0IHsgZmluZENoaWxkQnlUeXBlIH0gZnJvbSAnLi9SZWFjdFV0aWxzJztcbmltcG9ydCB7IGNvbXBhcmVWYWx1ZXMsIGdldFBlcmNlbnRWYWx1ZSB9IGZyb20gJy4vRGF0YVV0aWxzJztcbmltcG9ydCB7IEJhciB9IGZyb20gJy4uL2NhcnRlc2lhbi9CYXInO1xuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgc2NhbGUgZnVuY3Rpb24sIHBvc2l0aW9uLCB3aWR0aCwgaGVpZ2h0IG9mIGF4ZXNcbiAqIEBwYXJhbSAge09iamVjdH0gcHJvcHMgICAgIExhdGVzdCBwcm9wc1xuICogQHBhcmFtICB7T2JqZWN0fSBheGlzTWFwICAgVGhlIGNvbmZpZ3VyYXRpb24gb2YgYXhlc1xuICogQHBhcmFtICB7T2JqZWN0fSBvZmZzZXQgICAgVGhlIG9mZnNldCBvZiBtYWluIHBhcnQgaW4gdGhlIHN2ZyBlbGVtZW50XG4gKiBAcGFyYW0gIHtTdHJpbmd9IGF4aXNUeXBlICBUaGUgdHlwZSBvZiBheGVzLCB4LWF4aXMgb3IgeS1heGlzXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGNoYXJ0TmFtZSBUaGUgbmFtZSBvZiBjaGFydFxuICogQHJldHVybiB7T2JqZWN0fSBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCB2YXIgZm9ybWF0QXhpc01hcCA9IGZ1bmN0aW9uIGZvcm1hdEF4aXNNYXAocHJvcHMsIGF4aXNNYXAsIG9mZnNldCwgYXhpc1R5cGUsIGNoYXJ0TmFtZSkge1xuICB2YXIgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgbGF5b3V0ID0gcHJvcHMubGF5b3V0LFxuICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBpZHMgPSBPYmplY3Qua2V5cyhheGlzTWFwKTtcbiAgdmFyIHN0ZXBzID0ge1xuICAgIGxlZnQ6IG9mZnNldC5sZWZ0LFxuICAgIGxlZnRNaXJyb3I6IG9mZnNldC5sZWZ0LFxuICAgIHJpZ2h0OiB3aWR0aCAtIG9mZnNldC5yaWdodCxcbiAgICByaWdodE1pcnJvcjogd2lkdGggLSBvZmZzZXQucmlnaHQsXG4gICAgdG9wOiBvZmZzZXQudG9wLFxuICAgIHRvcE1pcnJvcjogb2Zmc2V0LnRvcCxcbiAgICBib3R0b206IGhlaWdodCAtIG9mZnNldC5ib3R0b20sXG4gICAgYm90dG9tTWlycm9yOiBoZWlnaHQgLSBvZmZzZXQuYm90dG9tXG4gIH07XG4gIHZhciBoYXNCYXIgPSAhIWZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgQmFyKTtcbiAgcmV0dXJuIGlkcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgaWQpIHtcbiAgICB2YXIgYXhpcyA9IGF4aXNNYXBbaWRdO1xuICAgIHZhciBvcmllbnRhdGlvbiA9IGF4aXMub3JpZW50YXRpb24sXG4gICAgICBkb21haW4gPSBheGlzLmRvbWFpbixcbiAgICAgIF9heGlzJHBhZGRpbmcgPSBheGlzLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX2F4aXMkcGFkZGluZyA9PT0gdm9pZCAwID8ge30gOiBfYXhpcyRwYWRkaW5nLFxuICAgICAgbWlycm9yID0gYXhpcy5taXJyb3IsXG4gICAgICByZXZlcnNlZCA9IGF4aXMucmV2ZXJzZWQ7XG4gICAgdmFyIG9mZnNldEtleSA9IFwiXCIuY29uY2F0KG9yaWVudGF0aW9uKS5jb25jYXQobWlycm9yID8gJ01pcnJvcicgOiAnJyk7XG4gICAgdmFyIGNhbGN1bGF0ZWRQYWRkaW5nLCByYW5nZSwgeCwgeSwgbmVlZFNwYWNlO1xuICAgIGlmIChheGlzLnR5cGUgPT09ICdudW1iZXInICYmIChheGlzLnBhZGRpbmcgPT09ICdnYXAnIHx8IGF4aXMucGFkZGluZyA9PT0gJ25vLWdhcCcpKSB7XG4gICAgICB2YXIgZGlmZiA9IGRvbWFpblsxXSAtIGRvbWFpblswXTtcbiAgICAgIHZhciBzbWFsbGVzdERpc3RhbmNlQmV0d2VlblZhbHVlcyA9IEluZmluaXR5O1xuICAgICAgdmFyIHNvcnRlZFZhbHVlcyA9IGF4aXMuY2F0ZWdvcmljYWxEb21haW4uc29ydChjb21wYXJlVmFsdWVzKTtcbiAgICAgIHNvcnRlZFZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgIHNtYWxsZXN0RGlzdGFuY2VCZXR3ZWVuVmFsdWVzID0gTWF0aC5taW4oKHZhbHVlIHx8IDApIC0gKHNvcnRlZFZhbHVlc1tpbmRleCAtIDFdIHx8IDApLCBzbWFsbGVzdERpc3RhbmNlQmV0d2VlblZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKE51bWJlci5pc0Zpbml0ZShzbWFsbGVzdERpc3RhbmNlQmV0d2VlblZhbHVlcykpIHtcbiAgICAgICAgdmFyIHNtYWxsZXN0RGlzdGFuY2VJblBlcmNlbnQgPSBzbWFsbGVzdERpc3RhbmNlQmV0d2VlblZhbHVlcyAvIGRpZmY7XG4gICAgICAgIHZhciByYW5nZVdpZHRoID0gYXhpcy5sYXlvdXQgPT09ICd2ZXJ0aWNhbCcgPyBvZmZzZXQuaGVpZ2h0IDogb2Zmc2V0LndpZHRoO1xuICAgICAgICBpZiAoYXhpcy5wYWRkaW5nID09PSAnZ2FwJykge1xuICAgICAgICAgIGNhbGN1bGF0ZWRQYWRkaW5nID0gc21hbGxlc3REaXN0YW5jZUluUGVyY2VudCAqIHJhbmdlV2lkdGggLyAyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChheGlzLnBhZGRpbmcgPT09ICduby1nYXAnKSB7XG4gICAgICAgICAgdmFyIGdhcCA9IGdldFBlcmNlbnRWYWx1ZShwcm9wcy5iYXJDYXRlZ29yeUdhcCwgc21hbGxlc3REaXN0YW5jZUluUGVyY2VudCAqIHJhbmdlV2lkdGgpO1xuICAgICAgICAgIHZhciBoYWxmQmFuZCA9IHNtYWxsZXN0RGlzdGFuY2VJblBlcmNlbnQgKiByYW5nZVdpZHRoIC8gMjtcbiAgICAgICAgICBjYWxjdWxhdGVkUGFkZGluZyA9IGhhbGZCYW5kIC0gZ2FwIC0gKGhhbGZCYW5kIC0gZ2FwKSAvIHJhbmdlV2lkdGggKiBnYXA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGF4aXNUeXBlID09PSAneEF4aXMnKSB7XG4gICAgICByYW5nZSA9IFtvZmZzZXQubGVmdCArIChwYWRkaW5nLmxlZnQgfHwgMCkgKyAoY2FsY3VsYXRlZFBhZGRpbmcgfHwgMCksIG9mZnNldC5sZWZ0ICsgb2Zmc2V0LndpZHRoIC0gKHBhZGRpbmcucmlnaHQgfHwgMCkgLSAoY2FsY3VsYXRlZFBhZGRpbmcgfHwgMCldO1xuICAgIH0gZWxzZSBpZiAoYXhpc1R5cGUgPT09ICd5QXhpcycpIHtcbiAgICAgIHJhbmdlID0gbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgPyBbb2Zmc2V0LnRvcCArIG9mZnNldC5oZWlnaHQgLSAocGFkZGluZy5ib3R0b20gfHwgMCksIG9mZnNldC50b3AgKyAocGFkZGluZy50b3AgfHwgMCldIDogW29mZnNldC50b3AgKyAocGFkZGluZy50b3AgfHwgMCkgKyAoY2FsY3VsYXRlZFBhZGRpbmcgfHwgMCksIG9mZnNldC50b3AgKyBvZmZzZXQuaGVpZ2h0IC0gKHBhZGRpbmcuYm90dG9tIHx8IDApIC0gKGNhbGN1bGF0ZWRQYWRkaW5nIHx8IDApXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2UgPSBheGlzLnJhbmdlO1xuICAgIH1cbiAgICBpZiAocmV2ZXJzZWQpIHtcbiAgICAgIHJhbmdlID0gW3JhbmdlWzFdLCByYW5nZVswXV07XG4gICAgfVxuICAgIHZhciBfcGFyc2VTY2FsZSA9IHBhcnNlU2NhbGUoYXhpcywgY2hhcnROYW1lLCBoYXNCYXIpLFxuICAgICAgc2NhbGUgPSBfcGFyc2VTY2FsZS5zY2FsZSxcbiAgICAgIHJlYWxTY2FsZVR5cGUgPSBfcGFyc2VTY2FsZS5yZWFsU2NhbGVUeXBlO1xuICAgIHNjYWxlLmRvbWFpbihkb21haW4pLnJhbmdlKHJhbmdlKTtcbiAgICBjaGVja0RvbWFpbk9mU2NhbGUoc2NhbGUpO1xuICAgIHZhciB0aWNrcyA9IGdldFRpY2tzT2ZTY2FsZShzY2FsZSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBheGlzKSwge30sIHtcbiAgICAgIHJlYWxTY2FsZVR5cGU6IHJlYWxTY2FsZVR5cGVcbiAgICB9KSk7XG4gICAgaWYgKGF4aXNUeXBlID09PSAneEF4aXMnKSB7XG4gICAgICBuZWVkU3BhY2UgPSBvcmllbnRhdGlvbiA9PT0gJ3RvcCcgJiYgIW1pcnJvciB8fCBvcmllbnRhdGlvbiA9PT0gJ2JvdHRvbScgJiYgbWlycm9yO1xuICAgICAgeCA9IG9mZnNldC5sZWZ0O1xuICAgICAgeSA9IHN0ZXBzW29mZnNldEtleV0gLSBuZWVkU3BhY2UgKiBheGlzLmhlaWdodDtcbiAgICB9IGVsc2UgaWYgKGF4aXNUeXBlID09PSAneUF4aXMnKSB7XG4gICAgICBuZWVkU3BhY2UgPSBvcmllbnRhdGlvbiA9PT0gJ2xlZnQnICYmICFtaXJyb3IgfHwgb3JpZW50YXRpb24gPT09ICdyaWdodCcgJiYgbWlycm9yO1xuICAgICAgeCA9IHN0ZXBzW29mZnNldEtleV0gLSBuZWVkU3BhY2UgKiBheGlzLndpZHRoO1xuICAgICAgeSA9IG9mZnNldC50b3A7XG4gICAgfVxuICAgIHZhciBmaW5hbEF4aXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXhpcyksIHRpY2tzKSwge30sIHtcbiAgICAgIHJlYWxTY2FsZVR5cGU6IHJlYWxTY2FsZVR5cGUsXG4gICAgICB4OiB4LFxuICAgICAgeTogeSxcbiAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgIHdpZHRoOiBheGlzVHlwZSA9PT0gJ3hBeGlzJyA/IG9mZnNldC53aWR0aCA6IGF4aXMud2lkdGgsXG4gICAgICBoZWlnaHQ6IGF4aXNUeXBlID09PSAneUF4aXMnID8gb2Zmc2V0LmhlaWdodCA6IGF4aXMuaGVpZ2h0XG4gICAgfSk7XG4gICAgZmluYWxBeGlzLmJhbmRTaXplID0gZ2V0QmFuZFNpemVPZkF4aXMoZmluYWxBeGlzLCB0aWNrcyk7XG4gICAgaWYgKCFheGlzLmhpZGUgJiYgYXhpc1R5cGUgPT09ICd4QXhpcycpIHtcbiAgICAgIHN0ZXBzW29mZnNldEtleV0gKz0gKG5lZWRTcGFjZSA/IC0xIDogMSkgKiBmaW5hbEF4aXMuaGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAoIWF4aXMuaGlkZSkge1xuICAgICAgc3RlcHNbb2Zmc2V0S2V5XSArPSAobmVlZFNwYWNlID8gLTEgOiAxKSAqIGZpbmFsQXhpcy53aWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgaWQsIGZpbmFsQXhpcykpO1xuICB9LCB7fSk7XG59O1xuZXhwb3J0IHZhciByZWN0V2l0aFBvaW50cyA9IGZ1bmN0aW9uIHJlY3RXaXRoUG9pbnRzKF9yZWYsIF9yZWYyKSB7XG4gIHZhciB4MSA9IF9yZWYueCxcbiAgICB5MSA9IF9yZWYueTtcbiAgdmFyIHgyID0gX3JlZjIueCxcbiAgICB5MiA9IF9yZWYyLnk7XG4gIHJldHVybiB7XG4gICAgeDogTWF0aC5taW4oeDEsIHgyKSxcbiAgICB5OiBNYXRoLm1pbih5MSwgeTIpLFxuICAgIHdpZHRoOiBNYXRoLmFicyh4MiAtIHgxKSxcbiAgICBoZWlnaHQ6IE1hdGguYWJzKHkyIC0geTEpXG4gIH07XG59O1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIHgsIHksIHdpZHRoLCBhbmQgaGVpZ2h0IG9mIGEgYm94IGZyb20gdHdvIHJlZmVyZW5jZSBwb2ludHMuXG4gKiBAcGFyYW0gIHtPYmplY3R9IGNvb3JkcyAgICAgeDEsIHgyLCB5MSwgYW5kIHkyXG4gKiBAcmV0dXJuIHtPYmplY3R9IG9iamVjdFxuICovXG5leHBvcnQgdmFyIHJlY3RXaXRoQ29vcmRzID0gZnVuY3Rpb24gcmVjdFdpdGhDb29yZHMoX3JlZjMpIHtcbiAgdmFyIHgxID0gX3JlZjMueDEsXG4gICAgeTEgPSBfcmVmMy55MSxcbiAgICB4MiA9IF9yZWYzLngyLFxuICAgIHkyID0gX3JlZjMueTI7XG4gIHJldHVybiByZWN0V2l0aFBvaW50cyh7XG4gICAgeDogeDEsXG4gICAgeTogeTFcbiAgfSwge1xuICAgIHg6IHgyLFxuICAgIHk6IHkyXG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgU2NhbGVIZWxwZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTY2FsZUhlbHBlcihzY2FsZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTY2FsZUhlbHBlcik7XG4gICAgdGhpcy5zY2FsZSA9IHNjYWxlO1xuICB9XG4gIHJldHVybiBfY3JlYXRlQ2xhc3MoU2NhbGVIZWxwZXIsIFt7XG4gICAga2V5OiBcImRvbWFpblwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NhbGUuZG9tYWluO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyYW5nZVwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NhbGUucmFuZ2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJhbmdlTWluXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yYW5nZSgpWzBdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyYW5nZU1heFwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMucmFuZ2UoKVsxXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmFuZHdpZHRoXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zY2FsZS5iYW5kd2lkdGg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFwcGx5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFwcGx5KHZhbHVlKSB7XG4gICAgICB2YXIgX3JlZjQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9LFxuICAgICAgICBiYW5kQXdhcmUgPSBfcmVmNC5iYW5kQXdhcmUsXG4gICAgICAgIHBvc2l0aW9uID0gX3JlZjQucG9zaXRpb247XG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgIHN3aXRjaCAocG9zaXRpb24pIHtcbiAgICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjYWxlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5iYW5kd2lkdGggPyB0aGlzLmJhbmR3aWR0aCgpIC8gMiA6IDA7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjYWxlKHZhbHVlKSArIG9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YXIgX29mZnNldCA9IHRoaXMuYmFuZHdpZHRoID8gdGhpcy5iYW5kd2lkdGgoKSA6IDA7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjYWxlKHZhbHVlKSArIF9vZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYmFuZEF3YXJlKSB7XG4gICAgICAgIHZhciBfb2Zmc2V0MiA9IHRoaXMuYmFuZHdpZHRoID8gdGhpcy5iYW5kd2lkdGgoKSAvIDIgOiAwO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZSh2YWx1ZSkgKyBfb2Zmc2V0MjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnNjYWxlKHZhbHVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNJblJhbmdlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzSW5SYW5nZSh2YWx1ZSkge1xuICAgICAgdmFyIHJhbmdlID0gdGhpcy5yYW5nZSgpO1xuICAgICAgdmFyIGZpcnN0ID0gcmFuZ2VbMF07XG4gICAgICB2YXIgbGFzdCA9IHJhbmdlW3JhbmdlLmxlbmd0aCAtIDFdO1xuICAgICAgcmV0dXJuIGZpcnN0IDw9IGxhc3QgPyB2YWx1ZSA+PSBmaXJzdCAmJiB2YWx1ZSA8PSBsYXN0IDogdmFsdWUgPj0gbGFzdCAmJiB2YWx1ZSA8PSBmaXJzdDtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJjcmVhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlKG9iaikge1xuICAgICAgcmV0dXJuIG5ldyBTY2FsZUhlbHBlcihvYmopO1xuICAgIH1cbiAgfV0pO1xufSgpO1xuX2RlZmluZVByb3BlcnR5KFNjYWxlSGVscGVyLCBcIkVQU1wiLCAxZS00KTtcbmV4cG9ydCB2YXIgY3JlYXRlTGFiZWxlZFNjYWxlcyA9IGZ1bmN0aW9uIGNyZWF0ZUxhYmVsZWRTY2FsZXMob3B0aW9ucykge1xuICB2YXIgc2NhbGVzID0gT2JqZWN0LmtleXMob3B0aW9ucykucmVkdWNlKGZ1bmN0aW9uIChyZXMsIGtleSkge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlcyksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIGtleSwgU2NhbGVIZWxwZXIuY3JlYXRlKG9wdGlvbnNba2V5XSkpKTtcbiAgfSwge30pO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzY2FsZXMpLCB7fSwge1xuICAgIGFwcGx5OiBmdW5jdGlvbiBhcHBseShjb29yZCkge1xuICAgICAgdmFyIF9yZWY1ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fSxcbiAgICAgICAgYmFuZEF3YXJlID0gX3JlZjUuYmFuZEF3YXJlLFxuICAgICAgICBwb3NpdGlvbiA9IF9yZWY1LnBvc2l0aW9uO1xuICAgICAgcmV0dXJuIG1hcFZhbHVlcyhjb29yZCwgZnVuY3Rpb24gKHZhbHVlLCBsYWJlbCkge1xuICAgICAgICByZXR1cm4gc2NhbGVzW2xhYmVsXS5hcHBseSh2YWx1ZSwge1xuICAgICAgICAgIGJhbmRBd2FyZTogYmFuZEF3YXJlLFxuICAgICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgaXNJblJhbmdlOiBmdW5jdGlvbiBpc0luUmFuZ2UoY29vcmQpIHtcbiAgICAgIHJldHVybiBldmVyeShjb29yZCwgZnVuY3Rpb24gKHZhbHVlLCBsYWJlbCkge1xuICAgICAgICByZXR1cm4gc2NhbGVzW2xhYmVsXS5pc0luUmFuZ2UodmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn07XG5cbi8qKiBOb3JtYWxpemVzIHRoZSBhbmdsZSBzbyB0aGF0IDAgPD0gYW5nbGUgPCAxODAuXG4gKiBAcGFyYW0ge251bWJlcn0gYW5nbGUgQW5nbGUgaW4gZGVncmVlcy5cbiAqIEByZXR1cm4ge251bWJlcn0gdGhlIG5vcm1hbGl6ZWQgYW5nbGUgd2l0aCBhIHZhbHVlIG9mIGF0IGxlYXN0IDAgYW5kIG5ldmVyIGdyZWF0ZXIgb3IgZXF1YWwgdG8gMTgwLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFuZ2xlKGFuZ2xlKSB7XG4gIHJldHVybiAoYW5nbGUgJSAxODAgKyAxODApICUgMTgwO1xufVxuXG4vKiogQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIGxhcmdlc3QgaG9yaXpvbnRhbCBsaW5lIHRoYXQgZml0cyBpbnNpZGUgYSByZWN0YW5nbGUgdGhhdCBpcyBkaXNwbGF5ZWQgYXQgYW4gYW5nbGUuXG4gKiBAcGFyYW0ge09iamVjdH0gc2l6ZSBXaWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB0ZXh0IGluIGEgaG9yaXpvbnRhbCBwb3NpdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBhbmdsZSBBbmdsZSBpbiBkZWdyZWVzIGluIHdoaWNoIHRoZSB0ZXh0IGlzIGRpc3BsYXllZC5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHdpZHRoIG9mIHRoZSBsYXJnZXN0IGhvcml6b250YWwgbGluZSB0aGF0IGZpdHMgaW5zaWRlIGEgcmVjdGFuZ2xlIHRoYXQgaXMgZGlzcGxheWVkIGF0IGFuIGFuZ2xlLlxuICovXG5leHBvcnQgdmFyIGdldEFuZ2xlZFJlY3RhbmdsZVdpZHRoID0gZnVuY3Rpb24gZ2V0QW5nbGVkUmVjdGFuZ2xlV2lkdGgoX3JlZjYpIHtcbiAgdmFyIHdpZHRoID0gX3JlZjYud2lkdGgsXG4gICAgaGVpZ2h0ID0gX3JlZjYuaGVpZ2h0O1xuICB2YXIgYW5nbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gIC8vIEVuc3VyZSBhbmdsZSBpcyA+PSAwICYmIDwgMTgwXG4gIHZhciBub3JtYWxpemVkQW5nbGUgPSBub3JtYWxpemVBbmdsZShhbmdsZSk7XG4gIHZhciBhbmdsZVJhZGlhbnMgPSBub3JtYWxpemVkQW5nbGUgKiBNYXRoLlBJIC8gMTgwO1xuXG4gIC8qIERlcGVuZGluZyBvbiB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBvZiB0aGUgcmVjdGFuZ2xlLCB3ZSBtYXkgbmVlZCB0byB1c2UgZGlmZmVyZW50IGZvcm11bGFzIHRvIGNhbGN1bGF0ZSB0aGUgYW5nbGVkXG4gICAqIHdpZHRoLiBUaGlzIHRocmVzaG9sZCBkZWZpbmVzIHdoZW4gZWFjaCBmb3JtdWxhIHNob3VsZCBraWNrIGluLiAqL1xuICB2YXIgYW5nbGVUaHJlc2hvbGQgPSBNYXRoLmF0YW4oaGVpZ2h0IC8gd2lkdGgpO1xuICB2YXIgYW5nbGVkV2lkdGggPSBhbmdsZVJhZGlhbnMgPiBhbmdsZVRocmVzaG9sZCAmJiBhbmdsZVJhZGlhbnMgPCBNYXRoLlBJIC0gYW5nbGVUaHJlc2hvbGQgPyBoZWlnaHQgLyBNYXRoLnNpbihhbmdsZVJhZGlhbnMpIDogd2lkdGggLyBNYXRoLmNvcyhhbmdsZVJhZGlhbnMpO1xuICByZXR1cm4gTWF0aC5hYnMoYW5nbGVkV2lkdGgpO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJpIiwibGVuZ3RoIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJvYmoiLCJ2YWx1ZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlN0cmluZyIsIk51bWJlciIsIm1hcFZhbHVlcyIsImV2ZXJ5IiwiZ2V0VGlja3NPZlNjYWxlIiwicGFyc2VTY2FsZSIsImNoZWNrRG9tYWluT2ZTY2FsZSIsImdldEJhbmRTaXplT2ZBeGlzIiwiZmluZENoaWxkQnlUeXBlIiwiY29tcGFyZVZhbHVlcyIsImdldFBlcmNlbnRWYWx1ZSIsIkJhciIsImZvcm1hdEF4aXNNYXAiLCJheGlzTWFwIiwib2Zmc2V0IiwiYXhpc1R5cGUiLCJjaGFydE5hbWUiLCJ3aWR0aCIsImhlaWdodCIsImxheW91dCIsImNoaWxkcmVuIiwiaWRzIiwic3RlcHMiLCJsZWZ0IiwibGVmdE1pcnJvciIsInJpZ2h0IiwicmlnaHRNaXJyb3IiLCJ0b3AiLCJ0b3BNaXJyb3IiLCJib3R0b20iLCJib3R0b21NaXJyb3IiLCJoYXNCYXIiLCJyZWR1Y2UiLCJyZXN1bHQiLCJpZCIsImF4aXMiLCJvcmllbnRhdGlvbiIsImRvbWFpbiIsIl9heGlzJHBhZGRpbmciLCJwYWRkaW5nIiwibWlycm9yIiwicmV2ZXJzZWQiLCJvZmZzZXRLZXkiLCJjb25jYXQiLCJjYWxjdWxhdGVkUGFkZGluZyIsInJhbmdlIiwieCIsInkiLCJuZWVkU3BhY2UiLCJ0eXBlIiwiZGlmZiIsInNtYWxsZXN0RGlzdGFuY2VCZXR3ZWVuVmFsdWVzIiwiSW5maW5pdHkiLCJzb3J0ZWRWYWx1ZXMiLCJjYXRlZ29yaWNhbERvbWFpbiIsInNvcnQiLCJpbmRleCIsIk1hdGgiLCJtaW4iLCJpc0Zpbml0ZSIsInNtYWxsZXN0RGlzdGFuY2VJblBlcmNlbnQiLCJyYW5nZVdpZHRoIiwiZ2FwIiwiYmFyQ2F0ZWdvcnlHYXAiLCJoYWxmQmFuZCIsIl9wYXJzZVNjYWxlIiwic2NhbGUiLCJyZWFsU2NhbGVUeXBlIiwidGlja3MiLCJmaW5hbEF4aXMiLCJiYW5kU2l6ZSIsImhpZGUiLCJyZWN0V2l0aFBvaW50cyIsIl9yZWYiLCJfcmVmMiIsIngxIiwieTEiLCJ4MiIsInkyIiwiYWJzIiwicmVjdFdpdGhDb29yZHMiLCJfcmVmMyIsIlNjYWxlSGVscGVyIiwiZ2V0IiwiYmFuZHdpZHRoIiwiX3JlZjQiLCJ1bmRlZmluZWQiLCJiYW5kQXdhcmUiLCJwb3NpdGlvbiIsIl9vZmZzZXQiLCJfb2Zmc2V0MiIsImlzSW5SYW5nZSIsImZpcnN0IiwibGFzdCIsImNyZWF0ZSIsImNyZWF0ZUxhYmVsZWRTY2FsZXMiLCJvcHRpb25zIiwic2NhbGVzIiwicmVzIiwiY29vcmQiLCJfcmVmNSIsImxhYmVsIiwibm9ybWFsaXplQW5nbGUiLCJhbmdsZSIsImdldEFuZ2xlZFJlY3RhbmdsZVdpZHRoIiwiX3JlZjYiLCJub3JtYWxpemVkQW5nbGUiLCJhbmdsZVJhZGlhbnMiLCJQSSIsImFuZ2xlVGhyZXNob2xkIiwiYXRhbiIsImFuZ2xlZFdpZHRoIiwic2luIiwiY29zIl0sInNvdXJjZVJvb3QiOiIifQ==\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} sizeList Sizes of all groups\n * @param {number} maxBarSize The maximum size of each bar\n * @return {Array} 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>.\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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L2VzNi91dGlsL0NoYXJ0VXRpbHMuanM/ZjhhNyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGl0ZXJbU3ltYm9sLml0ZXJhdG9yXSAhPSBudWxsIHx8IGl0ZXJbXCJAQGl0ZXJhdG9yXCJdICE9IG51bGwpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpOyB9XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShhcnIpOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmltcG9ydCAqIGFzIGQzU2NhbGVzIGZyb20gJ3ZpY3RvcnktdmVuZG9yL2QzLXNjYWxlJztcbmltcG9ydCB7IHN0YWNrIGFzIHNoYXBlU3RhY2ssIHN0YWNrT2Zmc2V0RXhwYW5kLCBzdGFja09mZnNldE5vbmUsIHN0YWNrT2Zmc2V0U2lsaG91ZXR0ZSwgc3RhY2tPZmZzZXRXaWdnbGUsIHN0YWNrT3JkZXJOb25lIH0gZnJvbSAndmljdG9yeS12ZW5kb3IvZDMtc2hhcGUnO1xuaW1wb3J0IG1heCBmcm9tICdsb2Rhc2gvbWF4JztcbmltcG9ydCBtaW4gZnJvbSAnbG9kYXNoL21pbic7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBpc1N0cmluZyBmcm9tICdsb2Rhc2gvaXNTdHJpbmcnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBmbGF0TWFwIGZyb20gJ2xvZGFzaC9mbGF0TWFwJztcbmltcG9ydCBpc05hbiBmcm9tICdsb2Rhc2gvaXNOYU4nO1xuaW1wb3J0IHVwcGVyRmlyc3QgZnJvbSAnbG9kYXNoL3VwcGVyRmlyc3QnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IHNvcnRCeSBmcm9tICdsb2Rhc2gvc29ydEJ5JztcbmltcG9ydCB7IGdldE5pY2VUaWNrVmFsdWVzLCBnZXRUaWNrVmFsdWVzRml4ZWREb21haW4gfSBmcm9tICdyZWNoYXJ0cy1zY2FsZSc7XG5pbXBvcnQgeyBFcnJvckJhciB9IGZyb20gJy4uL2NhcnRlc2lhbi9FcnJvckJhcic7XG5pbXBvcnQgeyBmaW5kRW50cnlJbkFycmF5LCBnZXRQZXJjZW50VmFsdWUsIGlzTnVtYmVyLCBpc051bU9yU3RyLCBtYXRoU2lnbiwgdW5pcXVlSWQgfSBmcm9tICcuL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcywgZmluZEFsbEJ5VHlwZSwgZ2V0RGlzcGxheU5hbWUgfSBmcm9tICcuL1JlYWN0VXRpbHMnO1xuLy8gVE9ETzogQ2F1c2Ugb2YgY2lyY3VsYXIgZGVwZW5kZW5jeS4gTmVlZHMgcmVmYWN0b3IuXG4vLyBpbXBvcnQgeyBSYWRpdXNBeGlzUHJvcHMsIEFuZ2xlQXhpc1Byb3BzIH0gZnJvbSAnLi4vcG9sYXIvdHlwZXMnO1xuXG5pbXBvcnQgeyBnZXRMZWdlbmRQcm9wcyB9IGZyb20gJy4vZ2V0TGVnZW5kUHJvcHMnO1xuXG4vLyBFeHBvcnRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbmV4cG9ydCB7IGdldExlZ2VuZFByb3BzIH07XG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWVCeURhdGFLZXkob2JqLCBkYXRhS2V5LCBkZWZhdWx0VmFsdWUpIHtcbiAgaWYgKGlzTmlsKG9iaikgfHwgaXNOaWwoZGF0YUtleSkpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG4gIGlmIChpc051bU9yU3RyKGRhdGFLZXkpKSB7XG4gICAgcmV0dXJuIGdldChvYmosIGRhdGFLZXksIGRlZmF1bHRWYWx1ZSk7XG4gIH1cbiAgaWYgKGlzRnVuY3Rpb24oZGF0YUtleSkpIHtcbiAgICByZXR1cm4gZGF0YUtleShvYmopO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59XG4vKipcbiAqIEdldCBkb21haW4gb2YgZGF0YSBieSBrZXkuXG4gKiBAcGFyYW0gIHtBcnJheX0gICBkYXRhICAgICAgVGhlIGRhdGEgZGlzcGxheWVkIGluIHRoZSBjaGFydFxuICogQHBhcmFtICB7U3RyaW5nfSAga2V5ICAgICAgIFRoZSB1bmlxdWUga2V5IG9mIGEgZ3JvdXAgb2YgZGF0YVxuICogQHBhcmFtICB7U3RyaW5nfSAgdHlwZSAgICAgIFRoZSB0eXBlIG9mIGF4aXNcbiAqIEBwYXJhbSAge0Jvb2xlYW59IGZpbHRlck5pbCBXaGV0aGVyIG9yIG5vdCBmaWx0ZXIgbmlsIHZhbHVlc1xuICogQHJldHVybiB7QXJyYXl9IERvbWFpbiBvZiBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb21haW5PZkRhdGFCeUtleShkYXRhLCBrZXksIHR5cGUsIGZpbHRlck5pbCkge1xuICB2YXIgZmxhdHRlbkRhdGEgPSBmbGF0TWFwKGRhdGEsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHJldHVybiBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwga2V5KTtcbiAgfSk7XG4gIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgcGFyc2VGbG9hdCB0eXBlIG9ubHkgYWNjZXB0cyBzdHJpbmdzXG4gICAgdmFyIGRvbWFpbiA9IGZsYXR0ZW5EYXRhLmZpbHRlcihmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgIHJldHVybiBpc051bWJlcihlbnRyeSkgfHwgcGFyc2VGbG9hdChlbnRyeSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRvbWFpbi5sZW5ndGggPyBbbWluKGRvbWFpbiksIG1heChkb21haW4pXSA6IFtJbmZpbml0eSwgLUluZmluaXR5XTtcbiAgfVxuICB2YXIgdmFsaWRhdGVEYXRhID0gZmlsdGVyTmlsID8gZmxhdHRlbkRhdGEuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHJldHVybiAhaXNOaWwoZW50cnkpO1xuICB9KSA6IGZsYXR0ZW5EYXRhO1xuXG4gIC8vIFN1cHBvcnRzIHgtYXhpcyBvZiBEYXRlIHR5cGVcbiAgcmV0dXJuIHZhbGlkYXRlRGF0YS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIGlzTnVtT3JTdHIoZW50cnkpIHx8IGVudHJ5IGluc3RhbmNlb2YgRGF0ZSA/IGVudHJ5IDogJyc7XG4gIH0pO1xufVxuZXhwb3J0IHZhciBjYWxjdWxhdGVBY3RpdmVUaWNrSW5kZXggPSBmdW5jdGlvbiBjYWxjdWxhdGVBY3RpdmVUaWNrSW5kZXgoY29vcmRpbmF0ZSkge1xuICB2YXIgX3RpY2tzJGxlbmd0aDtcbiAgdmFyIHRpY2tzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBbXTtcbiAgdmFyIHVuc29ydGVkVGlja3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGF4aXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMyA/IGFyZ3VtZW50c1szXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBsZW4gPSAoX3RpY2tzJGxlbmd0aCA9IHRpY2tzID09PSBudWxsIHx8IHRpY2tzID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0aWNrcy5sZW5ndGgpICE9PSBudWxsICYmIF90aWNrcyRsZW5ndGggIT09IHZvaWQgMCA/IF90aWNrcyRsZW5ndGggOiAwO1xuXG4gIC8vIGlmIHRoZXJlIGFyZSAxIG9yIGxlc3MgdGlja3MgdGlja3MgdGhlbiB0aGUgYWN0aXZlIHRpY2sgaXMgYXQgaW5kZXggMFxuICBpZiAobGVuIDw9IDEpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAoYXhpcyAmJiBheGlzLmF4aXNUeXBlID09PSAnYW5nbGVBeGlzJyAmJiBNYXRoLmFicyhNYXRoLmFicyhheGlzLnJhbmdlWzFdIC0gYXhpcy5yYW5nZVswXSkgLSAzNjApIDw9IDFlLTYpIHtcbiAgICB2YXIgcmFuZ2UgPSBheGlzLnJhbmdlO1xuICAgIC8vIHRpY2tzIGFyZSBkaXN0cmlidXRlZCBpbiBhIGNpcmNsZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBiZWZvcmUgPSBpID4gMCA/IHVuc29ydGVkVGlja3NbaSAtIDFdLmNvb3JkaW5hdGUgOiB1bnNvcnRlZFRpY2tzW2xlbiAtIDFdLmNvb3JkaW5hdGU7XG4gICAgICB2YXIgY3VyID0gdW5zb3J0ZWRUaWNrc1tpXS5jb29yZGluYXRlO1xuICAgICAgdmFyIGFmdGVyID0gaSA+PSBsZW4gLSAxID8gdW5zb3J0ZWRUaWNrc1swXS5jb29yZGluYXRlIDogdW5zb3J0ZWRUaWNrc1tpICsgMV0uY29vcmRpbmF0ZTtcbiAgICAgIHZhciBzYW1lRGlyZWN0aW9uQ29vcmQgPSB2b2lkIDA7XG4gICAgICBpZiAobWF0aFNpZ24oY3VyIC0gYmVmb3JlKSAhPT0gbWF0aFNpZ24oYWZ0ZXIgLSBjdXIpKSB7XG4gICAgICAgIHZhciBkaWZmSW50ZXJ2YWwgPSBbXTtcbiAgICAgICAgaWYgKG1hdGhTaWduKGFmdGVyIC0gY3VyKSA9PT0gbWF0aFNpZ24ocmFuZ2VbMV0gLSByYW5nZVswXSkpIHtcbiAgICAgICAgICBzYW1lRGlyZWN0aW9uQ29vcmQgPSBhZnRlcjtcbiAgICAgICAgICB2YXIgY3VySW5SYW5nZSA9IGN1ciArIHJhbmdlWzFdIC0gcmFuZ2VbMF07XG4gICAgICAgICAgZGlmZkludGVydmFsWzBdID0gTWF0aC5taW4oY3VySW5SYW5nZSwgKGN1ckluUmFuZ2UgKyBiZWZvcmUpIC8gMik7XG4gICAgICAgICAgZGlmZkludGVydmFsWzFdID0gTWF0aC5tYXgoY3VySW5SYW5nZSwgKGN1ckluUmFuZ2UgKyBiZWZvcmUpIC8gMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2FtZURpcmVjdGlvbkNvb3JkID0gYmVmb3JlO1xuICAgICAgICAgIHZhciBhZnRlckluUmFuZ2UgPSBhZnRlciArIHJhbmdlWzFdIC0gcmFuZ2VbMF07XG4gICAgICAgICAgZGlmZkludGVydmFsWzBdID0gTWF0aC5taW4oY3VyLCAoYWZ0ZXJJblJhbmdlICsgY3VyKSAvIDIpO1xuICAgICAgICAgIGRpZmZJbnRlcnZhbFsxXSA9IE1hdGgubWF4KGN1ciwgKGFmdGVySW5SYW5nZSArIGN1cikgLyAyKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2FtZUludGVydmFsID0gW01hdGgubWluKGN1ciwgKHNhbWVEaXJlY3Rpb25Db29yZCArIGN1cikgLyAyKSwgTWF0aC5tYXgoY3VyLCAoc2FtZURpcmVjdGlvbkNvb3JkICsgY3VyKSAvIDIpXTtcbiAgICAgICAgaWYgKGNvb3JkaW5hdGUgPiBzYW1lSW50ZXJ2YWxbMF0gJiYgY29vcmRpbmF0ZSA8PSBzYW1lSW50ZXJ2YWxbMV0gfHwgY29vcmRpbmF0ZSA+PSBkaWZmSW50ZXJ2YWxbMF0gJiYgY29vcmRpbmF0ZSA8PSBkaWZmSW50ZXJ2YWxbMV0pIHtcbiAgICAgICAgICBpbmRleCA9IHVuc29ydGVkVGlja3NbaV0uaW5kZXg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBtaW5WYWx1ZSA9IE1hdGgubWluKGJlZm9yZSwgYWZ0ZXIpO1xuICAgICAgICB2YXIgbWF4VmFsdWUgPSBNYXRoLm1heChiZWZvcmUsIGFmdGVyKTtcbiAgICAgICAgaWYgKGNvb3JkaW5hdGUgPiAobWluVmFsdWUgKyBjdXIpIC8gMiAmJiBjb29yZGluYXRlIDw9IChtYXhWYWx1ZSArIGN1cikgLyAyKSB7XG4gICAgICAgICAgaW5kZXggPSB1bnNvcnRlZFRpY2tzW2ldLmluZGV4O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIHRpY2tzIGFyZSBkaXN0cmlidXRlZCBpbiBhIHNpbmdsZSBkaXJlY3Rpb25cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuOyBfaSsrKSB7XG4gICAgICBpZiAoX2kgPT09IDAgJiYgY29vcmRpbmF0ZSA8PSAodGlja3NbX2ldLmNvb3JkaW5hdGUgKyB0aWNrc1tfaSArIDFdLmNvb3JkaW5hdGUpIC8gMiB8fCBfaSA+IDAgJiYgX2kgPCBsZW4gLSAxICYmIGNvb3JkaW5hdGUgPiAodGlja3NbX2ldLmNvb3JkaW5hdGUgKyB0aWNrc1tfaSAtIDFdLmNvb3JkaW5hdGUpIC8gMiAmJiBjb29yZGluYXRlIDw9ICh0aWNrc1tfaV0uY29vcmRpbmF0ZSArIHRpY2tzW19pICsgMV0uY29vcmRpbmF0ZSkgLyAyIHx8IF9pID09PSBsZW4gLSAxICYmIGNvb3JkaW5hdGUgPiAodGlja3NbX2ldLmNvb3JkaW5hdGUgKyB0aWNrc1tfaSAtIDFdLmNvb3JkaW5hdGUpIC8gMikge1xuICAgICAgICBpbmRleCA9IHRpY2tzW19pXS5pbmRleDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmRleDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBtYWluIGNvbG9yIG9mIGVhY2ggZ3JhcGhpYyBpdGVtXG4gKiBAcGFyYW0gIHtSZWFjdEVsZW1lbnR9IGl0ZW0gQSBncmFwaGljIGl0ZW1cbiAqIEByZXR1cm4ge1N0cmluZ30gICAgICAgICAgICBDb2xvclxuICovXG5leHBvcnQgdmFyIGdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0gPSBmdW5jdGlvbiBnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtKGl0ZW0pIHtcbiAgdmFyIF9pdGVtJHR5cGU7XG4gIHZhciBfcmVmID0gaXRlbSxcbiAgICBkaXNwbGF5TmFtZSA9IF9yZWYudHlwZS5kaXNwbGF5TmFtZTsgLy8gVE9ETzogY2hlY2sgaWYgZGlzcGxheU5hbWUgaXMgdmFsaWQuXG4gIHZhciBkZWZhdWx0ZWRQcm9wcyA9IChfaXRlbSR0eXBlID0gaXRlbS50eXBlKSAhPT0gbnVsbCAmJiBfaXRlbSR0eXBlICE9PSB2b2lkIDAgJiYgX2l0ZW0kdHlwZS5kZWZhdWx0UHJvcHMgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW0udHlwZS5kZWZhdWx0UHJvcHMpLCBpdGVtLnByb3BzKSA6IGl0ZW0ucHJvcHM7XG4gIHZhciBzdHJva2UgPSBkZWZhdWx0ZWRQcm9wcy5zdHJva2UsXG4gICAgZmlsbCA9IGRlZmF1bHRlZFByb3BzLmZpbGw7XG4gIHZhciByZXN1bHQ7XG4gIHN3aXRjaCAoZGlzcGxheU5hbWUpIHtcbiAgICBjYXNlICdMaW5lJzpcbiAgICAgIHJlc3VsdCA9IHN0cm9rZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0FyZWEnOlxuICAgIGNhc2UgJ1JhZGFyJzpcbiAgICAgIHJlc3VsdCA9IHN0cm9rZSAmJiBzdHJva2UgIT09ICdub25lJyA/IHN0cm9rZSA6IGZpbGw7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVzdWx0ID0gZmlsbDtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHNpemUgb2YgYWxsIGdyb3VwcyBmb3Igc3RhY2tlZCBiYXIgZ3JhcGhcbiAqIEBwYXJhbSAge09iamVjdH0gc3RhY2tHcm91cHMgVGhlIGl0ZW1zIGdyb3VwZWQgYnkgYXhpc0lkIGFuZCBzdGFja0lkXG4gKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBzaXplIG9mIGFsbCBncm91cHNcbiAqL1xuZXhwb3J0IHZhciBnZXRCYXJTaXplTGlzdCA9IGZ1bmN0aW9uIGdldEJhclNpemVMaXN0KF9yZWYyKSB7XG4gIHZhciBnbG9iYWxTaXplID0gX3JlZjIuYmFyU2l6ZSxcbiAgICB0b3RhbFNpemUgPSBfcmVmMi50b3RhbFNpemUsXG4gICAgX3JlZjIkc3RhY2tHcm91cHMgPSBfcmVmMi5zdGFja0dyb3VwcyxcbiAgICBzdGFja0dyb3VwcyA9IF9yZWYyJHN0YWNrR3JvdXBzID09PSB2b2lkIDAgPyB7fSA6IF9yZWYyJHN0YWNrR3JvdXBzO1xuICBpZiAoIXN0YWNrR3JvdXBzKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgdmFyIG51bWVyaWNBeGlzSWRzID0gT2JqZWN0LmtleXMoc3RhY2tHcm91cHMpO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gbnVtZXJpY0F4aXNJZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgc2dzID0gc3RhY2tHcm91cHNbbnVtZXJpY0F4aXNJZHNbaV1dLnN0YWNrR3JvdXBzO1xuICAgIHZhciBzdGFja0lkcyA9IE9iamVjdC5rZXlzKHNncyk7XG4gICAgZm9yICh2YXIgaiA9IDAsIHNMZW4gPSBzdGFja0lkcy5sZW5ndGg7IGogPCBzTGVuOyBqKyspIHtcbiAgICAgIHZhciBfc2dzJHN0YWNrSWRzJGogPSBzZ3Nbc3RhY2tJZHNbal1dLFxuICAgICAgICBpdGVtcyA9IF9zZ3Mkc3RhY2tJZHMkai5pdGVtcyxcbiAgICAgICAgY2F0ZUF4aXNJZCA9IF9zZ3Mkc3RhY2tJZHMkai5jYXRlQXhpc0lkO1xuICAgICAgdmFyIGJhckl0ZW1zID0gaXRlbXMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNwbGF5TmFtZShpdGVtLnR5cGUpLmluZGV4T2YoJ0JhcicpID49IDA7XG4gICAgICB9KTtcbiAgICAgIGlmIChiYXJJdGVtcyAmJiBiYXJJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGJhckl0ZW1EZWZhdWx0UHJvcHMgPSBiYXJJdGVtc1swXS50eXBlLmRlZmF1bHRQcm9wcztcbiAgICAgICAgdmFyIGJhckl0ZW1Qcm9wcyA9IGJhckl0ZW1EZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYmFySXRlbURlZmF1bHRQcm9wcyksIGJhckl0ZW1zWzBdLnByb3BzKSA6IGJhckl0ZW1zWzBdLnByb3BzO1xuICAgICAgICB2YXIgc2VsZlNpemUgPSBiYXJJdGVtUHJvcHMuYmFyU2l6ZTtcbiAgICAgICAgdmFyIGNhdGVJZCA9IGJhckl0ZW1Qcm9wc1tjYXRlQXhpc0lkXTtcbiAgICAgICAgaWYgKCFyZXN1bHRbY2F0ZUlkXSkge1xuICAgICAgICAgIHJlc3VsdFtjYXRlSWRdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJhclNpemUgPSBpc05pbChzZWxmU2l6ZSkgPyBnbG9iYWxTaXplIDogc2VsZlNpemU7XG4gICAgICAgIHJlc3VsdFtjYXRlSWRdLnB1c2goe1xuICAgICAgICAgIGl0ZW06IGJhckl0ZW1zWzBdLFxuICAgICAgICAgIHN0YWNrTGlzdDogYmFySXRlbXMuc2xpY2UoMSksXG4gICAgICAgICAgYmFyU2l6ZTogaXNOaWwoYmFyU2l6ZSkgPyB1bmRlZmluZWQgOiBnZXRQZXJjZW50VmFsdWUoYmFyU2l6ZSwgdG90YWxTaXplLCAwKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZiBlYWNoIGJhciBhbmQgb2Zmc2V0IGJldHdlZW4gc3RhcnQgb2YgYmFuZCBhbmQgdGhlIGJhclxuICpcbiAqIEBwYXJhbSAge251bWJlcn0gYmFuZFNpemUgaXMgdGhlIHNpemUgb2YgYXJlYSB3aGVyZSBiYXJzIGNhbiByZW5kZXJcbiAqIEBwYXJhbSAge251bWJlciB8IHN0cmluZ30gYmFyR2FwIGlzIHRoZSBnYXAgc2l6ZSwgYXMgYSBwZXJjZW50YWdlIG9mIGBiYW5kU2l6ZWAuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgZGVmaW5lZCBhcyBudW1iZXIgb3IgcGVyY2VudCBzdHJpbmdcbiAqIEBwYXJhbSAge251bWJlciB8IHN0cmluZ30gYmFyQ2F0ZWdvcnlHYXAgaXMgdGhlIGdhcCBzaXplLCBhcyBhIHBlcmNlbnRhZ2Ugb2YgYGJhbmRTaXplYC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbiBiZSBkZWZpbmVkIGFzIG51bWJlciBvciBwZXJjZW50IHN0cmluZ1xuICogQHBhcmFtICB7QXJyYXk8b2JqZWN0Pn0gc2l6ZUxpc3QgU2l6ZXMgb2YgYWxsIGdyb3Vwc1xuICogQHBhcmFtICB7bnVtYmVyfSBtYXhCYXJTaXplIFRoZSBtYXhpbXVtIHNpemUgb2YgZWFjaCBiYXJcbiAqIEByZXR1cm4ge0FycmF5PG9iamVjdD59IFRoZSBzaXplIGFuZCBvZmZzZXQgb2YgZWFjaCBiYXJcbiAqL1xuZXhwb3J0IHZhciBnZXRCYXJQb3NpdGlvbiA9IGZ1bmN0aW9uIGdldEJhclBvc2l0aW9uKF9yZWYzKSB7XG4gIHZhciBiYXJHYXAgPSBfcmVmMy5iYXJHYXAsXG4gICAgYmFyQ2F0ZWdvcnlHYXAgPSBfcmVmMy5iYXJDYXRlZ29yeUdhcCxcbiAgICBiYW5kU2l6ZSA9IF9yZWYzLmJhbmRTaXplLFxuICAgIF9yZWYzJHNpemVMaXN0ID0gX3JlZjMuc2l6ZUxpc3QsXG4gICAgc2l6ZUxpc3QgPSBfcmVmMyRzaXplTGlzdCA9PT0gdm9pZCAwID8gW10gOiBfcmVmMyRzaXplTGlzdCxcbiAgICBtYXhCYXJTaXplID0gX3JlZjMubWF4QmFyU2l6ZTtcbiAgdmFyIGxlbiA9IHNpemVMaXN0Lmxlbmd0aDtcbiAgaWYgKGxlbiA8IDEpIHJldHVybiBudWxsO1xuICB2YXIgcmVhbEJhckdhcCA9IGdldFBlcmNlbnRWYWx1ZShiYXJHYXAsIGJhbmRTaXplLCAwLCB0cnVlKTtcbiAgdmFyIHJlc3VsdDtcbiAgdmFyIGluaXRpYWxWYWx1ZSA9IFtdO1xuXG4gIC8vIHdoZXRoZXIgb3Igbm90IGlzIGJhclNpemUgc2V0dGVkIGJ5IHVzZXJcbiAgaWYgKHNpemVMaXN0WzBdLmJhclNpemUgPT09ICtzaXplTGlzdFswXS5iYXJTaXplKSB7XG4gICAgdmFyIHVzZUZ1bGwgPSBmYWxzZTtcbiAgICB2YXIgZnVsbEJhclNpemUgPSBiYW5kU2l6ZSAvIGxlbjtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoZSB0eXBlIGNoZWNrIGFib3ZlIGRvZXMgbm90IGNoZWNrIGZvciB0eXBlIG51bWJlciBleHBsaWNpdGx5XG4gICAgdmFyIHN1bSA9IHNpemVMaXN0LnJlZHVjZShmdW5jdGlvbiAocmVzLCBlbnRyeSkge1xuICAgICAgcmV0dXJuIHJlcyArIGVudHJ5LmJhclNpemUgfHwgMDtcbiAgICB9LCAwKTtcbiAgICBzdW0gKz0gKGxlbiAtIDEpICogcmVhbEJhckdhcDtcbiAgICBpZiAoc3VtID49IGJhbmRTaXplKSB7XG4gICAgICBzdW0gLT0gKGxlbiAtIDEpICogcmVhbEJhckdhcDtcbiAgICAgIHJlYWxCYXJHYXAgPSAwO1xuICAgIH1cbiAgICBpZiAoc3VtID49IGJhbmRTaXplICYmIGZ1bGxCYXJTaXplID4gMCkge1xuICAgICAgdXNlRnVsbCA9IHRydWU7XG4gICAgICBmdWxsQmFyU2l6ZSAqPSAwLjk7XG4gICAgICBzdW0gPSBsZW4gKiBmdWxsQmFyU2l6ZTtcbiAgICB9XG4gICAgdmFyIG9mZnNldCA9IChiYW5kU2l6ZSAtIHN1bSkgLyAyID4+IDA7XG4gICAgdmFyIHByZXYgPSB7XG4gICAgICBvZmZzZXQ6IG9mZnNldCAtIHJlYWxCYXJHYXAsXG4gICAgICBzaXplOiAwXG4gICAgfTtcbiAgICByZXN1bHQgPSBzaXplTGlzdC5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgZW50cnkpIHtcbiAgICAgIHZhciBuZXdQb3NpdGlvbiA9IHtcbiAgICAgICAgaXRlbTogZW50cnkuaXRlbSxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBvZmZzZXQ6IHByZXYub2Zmc2V0ICsgcHJldi5zaXplICsgcmVhbEJhckdhcCxcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoZSB0eXBlIGNoZWNrIGFib3ZlIGRvZXMgbm90IGNoZWNrIGZvciB0eXBlIG51bWJlciBleHBsaWNpdGx5XG4gICAgICAgICAgc2l6ZTogdXNlRnVsbCA/IGZ1bGxCYXJTaXplIDogZW50cnkuYmFyU2l6ZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdmFyIG5ld1JlcyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocmVzKSwgW25ld1Bvc2l0aW9uXSk7XG4gICAgICBwcmV2ID0gbmV3UmVzW25ld1Jlcy5sZW5ndGggLSAxXS5wb3NpdGlvbjtcbiAgICAgIGlmIChlbnRyeS5zdGFja0xpc3QgJiYgZW50cnkuc3RhY2tMaXN0Lmxlbmd0aCkge1xuICAgICAgICBlbnRyeS5zdGFja0xpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIG5ld1Jlcy5wdXNoKHtcbiAgICAgICAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICAgICAgICBwb3NpdGlvbjogcHJldlxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXdSZXM7XG4gICAgfSwgaW5pdGlhbFZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgX29mZnNldCA9IGdldFBlcmNlbnRWYWx1ZShiYXJDYXRlZ29yeUdhcCwgYmFuZFNpemUsIDAsIHRydWUpO1xuICAgIGlmIChiYW5kU2l6ZSAtIDIgKiBfb2Zmc2V0IC0gKGxlbiAtIDEpICogcmVhbEJhckdhcCA8PSAwKSB7XG4gICAgICByZWFsQmFyR2FwID0gMDtcbiAgICB9XG4gICAgdmFyIG9yaWdpbmFsU2l6ZSA9IChiYW5kU2l6ZSAtIDIgKiBfb2Zmc2V0IC0gKGxlbiAtIDEpICogcmVhbEJhckdhcCkgLyBsZW47XG4gICAgaWYgKG9yaWdpbmFsU2l6ZSA+IDEpIHtcbiAgICAgIG9yaWdpbmFsU2l6ZSA+Pj0gMDtcbiAgICB9XG4gICAgdmFyIHNpemUgPSBtYXhCYXJTaXplID09PSArbWF4QmFyU2l6ZSA/IE1hdGgubWluKG9yaWdpbmFsU2l6ZSwgbWF4QmFyU2l6ZSkgOiBvcmlnaW5hbFNpemU7XG4gICAgcmVzdWx0ID0gc2l6ZUxpc3QucmVkdWNlKGZ1bmN0aW9uIChyZXMsIGVudHJ5LCBpKSB7XG4gICAgICB2YXIgbmV3UmVzID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXMpLCBbe1xuICAgICAgICBpdGVtOiBlbnRyeS5pdGVtLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIG9mZnNldDogX29mZnNldCArIChvcmlnaW5hbFNpemUgKyByZWFsQmFyR2FwKSAqIGkgKyAob3JpZ2luYWxTaXplIC0gc2l6ZSkgLyAyLFxuICAgICAgICAgIHNpemU6IHNpemVcbiAgICAgICAgfVxuICAgICAgfV0pO1xuICAgICAgaWYgKGVudHJ5LnN0YWNrTGlzdCAmJiBlbnRyeS5zdGFja0xpc3QubGVuZ3RoKSB7XG4gICAgICAgIGVudHJ5LnN0YWNrTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgbmV3UmVzLnB1c2goe1xuICAgICAgICAgICAgaXRlbTogaXRlbSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBuZXdSZXNbbmV3UmVzLmxlbmd0aCAtIDFdLnBvc2l0aW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld1JlcztcbiAgICB9LCBpbml0aWFsVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IHZhciBhcHBlbmRPZmZzZXRPZkxlZ2VuZCA9IGZ1bmN0aW9uIGFwcGVuZE9mZnNldE9mTGVnZW5kKG9mZnNldCwgX3VudXNlZCwgcHJvcHMsIGxlZ2VuZEJveCkge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICB3aWR0aCA9IHByb3BzLndpZHRoLFxuICAgIG1hcmdpbiA9IHByb3BzLm1hcmdpbjtcbiAgdmFyIGxlZ2VuZFdpZHRoID0gd2lkdGggLSAobWFyZ2luLmxlZnQgfHwgMCkgLSAobWFyZ2luLnJpZ2h0IHx8IDApO1xuICB2YXIgbGVnZW5kUHJvcHMgPSBnZXRMZWdlbmRQcm9wcyh7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGxlZ2VuZFdpZHRoOiBsZWdlbmRXaWR0aFxuICB9KTtcbiAgaWYgKGxlZ2VuZFByb3BzKSB7XG4gICAgdmFyIF9yZWY0ID0gbGVnZW5kQm94IHx8IHt9LFxuICAgICAgYm94V2lkdGggPSBfcmVmNC53aWR0aCxcbiAgICAgIGJveEhlaWdodCA9IF9yZWY0LmhlaWdodDtcbiAgICB2YXIgYWxpZ24gPSBsZWdlbmRQcm9wcy5hbGlnbixcbiAgICAgIHZlcnRpY2FsQWxpZ24gPSBsZWdlbmRQcm9wcy52ZXJ0aWNhbEFsaWduLFxuICAgICAgbGF5b3V0ID0gbGVnZW5kUHJvcHMubGF5b3V0O1xuICAgIGlmICgobGF5b3V0ID09PSAndmVydGljYWwnIHx8IGxheW91dCA9PT0gJ2hvcml6b250YWwnICYmIHZlcnRpY2FsQWxpZ24gPT09ICdtaWRkbGUnKSAmJiBhbGlnbiAhPT0gJ2NlbnRlcicgJiYgaXNOdW1iZXIob2Zmc2V0W2FsaWduXSkpIHtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9mZnNldCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIGFsaWduLCBvZmZzZXRbYWxpZ25dICsgKGJveFdpZHRoIHx8IDApKSk7XG4gICAgfVxuICAgIGlmICgobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgfHwgbGF5b3V0ID09PSAndmVydGljYWwnICYmIGFsaWduID09PSAnY2VudGVyJykgJiYgdmVydGljYWxBbGlnbiAhPT0gJ21pZGRsZScgJiYgaXNOdW1iZXIob2Zmc2V0W3ZlcnRpY2FsQWxpZ25dKSkge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb2Zmc2V0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgdmVydGljYWxBbGlnbiwgb2Zmc2V0W3ZlcnRpY2FsQWxpZ25dICsgKGJveEhlaWdodCB8fCAwKSkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2Zmc2V0O1xufTtcbnZhciBpc0Vycm9yQmFyUmVsZXZhbnRGb3JBeGlzID0gZnVuY3Rpb24gaXNFcnJvckJhclJlbGV2YW50Rm9yQXhpcyhsYXlvdXQsIGF4aXNUeXBlLCBkaXJlY3Rpb24pIHtcbiAgaWYgKGlzTmlsKGF4aXNUeXBlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChsYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgIHJldHVybiBheGlzVHlwZSA9PT0gJ3lBeGlzJztcbiAgfVxuICBpZiAobGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgcmV0dXJuIGF4aXNUeXBlID09PSAneEF4aXMnO1xuICB9XG4gIGlmIChkaXJlY3Rpb24gPT09ICd4Jykge1xuICAgIHJldHVybiBheGlzVHlwZSA9PT0gJ3hBeGlzJztcbiAgfVxuICBpZiAoZGlyZWN0aW9uID09PSAneScpIHtcbiAgICByZXR1cm4gYXhpc1R5cGUgPT09ICd5QXhpcyc7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuZXhwb3J0IHZhciBnZXREb21haW5PZkVycm9yQmFycyA9IGZ1bmN0aW9uIGdldERvbWFpbk9mRXJyb3JCYXJzKGRhdGEsIGl0ZW0sIGRhdGFLZXksIGxheW91dCwgYXhpc1R5cGUpIHtcbiAgdmFyIGNoaWxkcmVuID0gaXRlbS5wcm9wcy5jaGlsZHJlbjtcbiAgdmFyIGVycm9yQmFycyA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIEVycm9yQmFyKS5maWx0ZXIoZnVuY3Rpb24gKGVycm9yQmFyQ2hpbGQpIHtcbiAgICByZXR1cm4gaXNFcnJvckJhclJlbGV2YW50Rm9yQXhpcyhsYXlvdXQsIGF4aXNUeXBlLCBlcnJvckJhckNoaWxkLnByb3BzLmRpcmVjdGlvbik7XG4gIH0pO1xuICBpZiAoZXJyb3JCYXJzICYmIGVycm9yQmFycy5sZW5ndGgpIHtcbiAgICB2YXIga2V5cyA9IGVycm9yQmFycy5tYXAoZnVuY3Rpb24gKGVycm9yQmFyQ2hpbGQpIHtcbiAgICAgIHJldHVybiBlcnJvckJhckNoaWxkLnByb3BzLmRhdGFLZXk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGEucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGVudHJ5KSB7XG4gICAgICB2YXIgZW50cnlWYWx1ZSA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCBkYXRhS2V5KTtcbiAgICAgIGlmIChpc05pbChlbnRyeVZhbHVlKSkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIHZhciBtYWluVmFsdWUgPSBBcnJheS5pc0FycmF5KGVudHJ5VmFsdWUpID8gW21pbihlbnRyeVZhbHVlKSwgbWF4KGVudHJ5VmFsdWUpXSA6IFtlbnRyeVZhbHVlLCBlbnRyeVZhbHVlXTtcbiAgICAgIHZhciBlcnJvckRvbWFpbiA9IGtleXMucmVkdWNlKGZ1bmN0aW9uIChwcmV2RXJyb3JBcnIsIGspIHtcbiAgICAgICAgdmFyIGVycm9yVmFsdWUgPSBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwgaywgMCk7XG4gICAgICAgIHZhciBsb3dlclZhbHVlID0gbWFpblZhbHVlWzBdIC0gTWF0aC5hYnMoQXJyYXkuaXNBcnJheShlcnJvclZhbHVlKSA/IGVycm9yVmFsdWVbMF0gOiBlcnJvclZhbHVlKTtcbiAgICAgICAgdmFyIHVwcGVyVmFsdWUgPSBtYWluVmFsdWVbMV0gKyBNYXRoLmFicyhBcnJheS5pc0FycmF5KGVycm9yVmFsdWUpID8gZXJyb3JWYWx1ZVsxXSA6IGVycm9yVmFsdWUpO1xuICAgICAgICByZXR1cm4gW01hdGgubWluKGxvd2VyVmFsdWUsIHByZXZFcnJvckFyclswXSksIE1hdGgubWF4KHVwcGVyVmFsdWUsIHByZXZFcnJvckFyclsxXSldO1xuICAgICAgfSwgW0luZmluaXR5LCAtSW5maW5pdHldKTtcbiAgICAgIHJldHVybiBbTWF0aC5taW4oZXJyb3JEb21haW5bMF0sIHJlc3VsdFswXSksIE1hdGgubWF4KGVycm9yRG9tYWluWzFdLCByZXN1bHRbMV0pXTtcbiAgICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmV4cG9ydCB2YXIgcGFyc2VFcnJvckJhcnNPZkF4aXMgPSBmdW5jdGlvbiBwYXJzZUVycm9yQmFyc09mQXhpcyhkYXRhLCBpdGVtcywgZGF0YUtleSwgYXhpc1R5cGUsIGxheW91dCkge1xuICB2YXIgZG9tYWlucyA9IGl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiBnZXREb21haW5PZkVycm9yQmFycyhkYXRhLCBpdGVtLCBkYXRhS2V5LCBsYXlvdXQsIGF4aXNUeXBlKTtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHJldHVybiAhaXNOaWwoZW50cnkpO1xuICB9KTtcbiAgaWYgKGRvbWFpbnMgJiYgZG9tYWlucy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZG9tYWlucy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZW50cnkpIHtcbiAgICAgIHJldHVybiBbTWF0aC5taW4ocmVzdWx0WzBdLCBlbnRyeVswXSksIE1hdGgubWF4KHJlc3VsdFsxXSwgZW50cnlbMV0pXTtcbiAgICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuLyoqXG4gKiBHZXQgZG9tYWluIG9mIGRhdGEgYnkgdGhlIGNvbmZpZ3VyYXRpb24gb2YgaXRlbSBlbGVtZW50XG4gKiBAcGFyYW0gIHtBcnJheX0gICBkYXRhICAgICAgVGhlIGRhdGEgZGlzcGxheWVkIGluIHRoZSBjaGFydFxuICogQHBhcmFtICB7QXJyYXl9ICAgaXRlbXMgICAgIFRoZSBpbnN0YW5jZXMgb2YgaXRlbVxuICogQHBhcmFtICB7U3RyaW5nfSAgdHlwZSAgICAgIFRoZSB0eXBlIG9mIGF4aXMsIG51bWJlciAtIE51bWJlciBBeGlzLCBjYXRlZ29yeSAtIENhdGVnb3J5IEF4aXNcbiAqIEBwYXJhbSAge0xheW91dFR5cGV9IGxheW91dCBUaGUgdHlwZSBvZiBsYXlvdXRcbiAqIEBwYXJhbSAge0Jvb2xlYW59IGZpbHRlck5pbCBXaGV0aGVyIG9yIG5vdCBmaWx0ZXIgbmlsIHZhbHVlc1xuICogQHJldHVybiB7QXJyYXl9ICAgICAgICBEb21haW5cbiAqL1xuZXhwb3J0IHZhciBnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzID0gZnVuY3Rpb24gZ2V0RG9tYWluT2ZJdGVtc1dpdGhTYW1lQXhpcyhkYXRhLCBpdGVtcywgdHlwZSwgbGF5b3V0LCBmaWx0ZXJOaWwpIHtcbiAgdmFyIGRvbWFpbnMgPSBpdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgZGF0YUtleSA9IGl0ZW0ucHJvcHMuZGF0YUtleTtcbiAgICBpZiAodHlwZSA9PT0gJ251bWJlcicgJiYgZGF0YUtleSkge1xuICAgICAgcmV0dXJuIGdldERvbWFpbk9mRXJyb3JCYXJzKGRhdGEsIGl0ZW0sIGRhdGFLZXksIGxheW91dCkgfHwgZ2V0RG9tYWluT2ZEYXRhQnlLZXkoZGF0YSwgZGF0YUtleSwgdHlwZSwgZmlsdGVyTmlsKTtcbiAgICB9XG4gICAgcmV0dXJuIGdldERvbWFpbk9mRGF0YUJ5S2V5KGRhdGEsIGRhdGFLZXksIHR5cGUsIGZpbHRlck5pbCk7XG4gIH0pO1xuICBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGRvbWFpbiBvZiBudW1iZXIgYXhpc1xuICAgIHJldHVybiBkb21haW5zLnJlZHVjZShcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGlmICh0eXBlID09PSBudW1iZXIpIG1lYW5zIHRoYXQgdGhlIGRvbWFpbiBpcyBudW1lcmljYWwgdHlwZVxuICAgIC8vIC0gYnV0IHRoaXMgbGluayBpcyBtaXNzaW5nIGluIHRoZSB0eXBlIGRlZmluaXRpb25cbiAgICBmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXN1bHRbMF0sIGVudHJ5WzBdKSwgTWF0aC5tYXgocmVzdWx0WzFdLCBlbnRyeVsxXSldO1xuICAgIH0sIFtJbmZpbml0eSwgLUluZmluaXR5XSk7XG4gIH1cbiAgdmFyIHRhZyA9IHt9O1xuICAvLyBHZXQgdGhlIHVuaW9uIHNldCBvZiBjYXRlZ29yeSBheGlzXG4gIHJldHVybiBkb21haW5zLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBlbnRyeS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBEYXRlIGNhbm5vdCBpbmRleCBhbiBvYmplY3RcbiAgICAgIGlmICghdGFnW2VudHJ5W2ldXSkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIERhdGUgY2Fubm90IGluZGV4IGFuIG9iamVjdFxuICAgICAgICB0YWdbZW50cnlbaV1dID0gdHJ1ZTtcblxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIERhdGUgY2Fubm90IGluZGV4IGFuIG9iamVjdFxuICAgICAgICByZXN1bHQucHVzaChlbnRyeVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIFtdKTtcbn07XG5leHBvcnQgdmFyIGlzQ2F0ZWdvcmljYWxBeGlzID0gZnVuY3Rpb24gaXNDYXRlZ29yaWNhbEF4aXMobGF5b3V0LCBheGlzVHlwZSkge1xuICByZXR1cm4gbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgJiYgYXhpc1R5cGUgPT09ICd4QXhpcycgfHwgbGF5b3V0ID09PSAndmVydGljYWwnICYmIGF4aXNUeXBlID09PSAneUF4aXMnIHx8IGxheW91dCA9PT0gJ2NlbnRyaWMnICYmIGF4aXNUeXBlID09PSAnYW5nbGVBeGlzJyB8fCBsYXlvdXQgPT09ICdyYWRpYWwnICYmIGF4aXNUeXBlID09PSAncmFkaXVzQXhpcyc7XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgQ29vcmRpbmF0ZXMgb2YgZ3JpZFxuICogQHBhcmFtICB7QXJyYXl9IHRpY2tzICAgICAgICAgICBUaGUgdGlja3MgaW4gYXhpc1xuICogQHBhcmFtIHtOdW1iZXJ9IG1pblZhbHVlICAgICAgICBUaGUgbWluaW11biB2YWx1ZSBvZiBheGlzXG4gKiBAcGFyYW0ge051bWJlcn0gbWF4VmFsdWUgICAgICAgIFRoZSBtYXhpbXVuIHZhbHVlIG9mIGF4aXNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc3luY1dpdGhUaWNrcyAgU3luY2hyb25pemUgZ3JpZCBsaW5lcyB3aXRoIHRpY2tzIG9yIG5vdFxuICogQHJldHVybiB7QXJyYXl9ICAgICAgICAgICAgICAgICBDb29yZGluYXRlc1xuICovXG5leHBvcnQgdmFyIGdldENvb3JkaW5hdGVzT2ZHcmlkID0gZnVuY3Rpb24gZ2V0Q29vcmRpbmF0ZXNPZkdyaWQodGlja3MsIG1pblZhbHVlLCBtYXhWYWx1ZSwgc3luY1dpdGhUaWNrcykge1xuICBpZiAoc3luY1dpdGhUaWNrcykge1xuICAgIHJldHVybiB0aWNrcy5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICByZXR1cm4gZW50cnkuY29vcmRpbmF0ZTtcbiAgICB9KTtcbiAgfVxuICB2YXIgaGFzTWluLCBoYXNNYXg7XG4gIHZhciB2YWx1ZXMgPSB0aWNrcy5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgaWYgKGVudHJ5LmNvb3JkaW5hdGUgPT09IG1pblZhbHVlKSB7XG4gICAgICBoYXNNaW4gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZW50cnkuY29vcmRpbmF0ZSA9PT0gbWF4VmFsdWUpIHtcbiAgICAgIGhhc01heCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBlbnRyeS5jb29yZGluYXRlO1xuICB9KTtcbiAgaWYgKCFoYXNNaW4pIHtcbiAgICB2YWx1ZXMucHVzaChtaW5WYWx1ZSk7XG4gIH1cbiAgaWYgKCFoYXNNYXgpIHtcbiAgICB2YWx1ZXMucHVzaChtYXhWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcztcbn07XG5cbi8qKlxuICogR2V0IHRoZSB0aWNrcyBvZiBhbiBheGlzXG4gKiBAcGFyYW0gIHtPYmplY3R9ICBheGlzIFRoZSBjb25maWd1cmF0aW9uIG9mIGFuIGF4aXNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNHcmlkIFdoZXRoZXIgb3Igbm90IGFyZSB0aGUgdGlja3MgaW4gZ3JpZFxuICogQHBhcmFtIHtCb29sZWFufSBpc0FsbCBSZXR1cm4gdGhlIHRpY2tzIG9mIGFsbCB0aGUgcG9pbnRzIG9yIG5vdFxuICogQHJldHVybiB7QXJyYXl9ICBUaWNrc1xuICovXG5leHBvcnQgdmFyIGdldFRpY2tzT2ZBeGlzID0gZnVuY3Rpb24gZ2V0VGlja3NPZkF4aXMoYXhpcywgaXNHcmlkLCBpc0FsbCkge1xuICBpZiAoIWF4aXMpIHJldHVybiBudWxsO1xuICB2YXIgc2NhbGUgPSBheGlzLnNjYWxlO1xuICB2YXIgZHVwbGljYXRlRG9tYWluID0gYXhpcy5kdXBsaWNhdGVEb21haW4sXG4gICAgdHlwZSA9IGF4aXMudHlwZSxcbiAgICByYW5nZSA9IGF4aXMucmFuZ2U7XG4gIHZhciBvZmZzZXRGb3JCYW5kID0gYXhpcy5yZWFsU2NhbGVUeXBlID09PSAnc2NhbGVCYW5kJyA/IHNjYWxlLmJhbmR3aWR0aCgpIC8gMiA6IDI7XG4gIHZhciBvZmZzZXQgPSAoaXNHcmlkIHx8IGlzQWxsKSAmJiB0eXBlID09PSAnY2F0ZWdvcnknICYmIHNjYWxlLmJhbmR3aWR0aCA/IHNjYWxlLmJhbmR3aWR0aCgpIC8gb2Zmc2V0Rm9yQmFuZCA6IDA7XG4gIG9mZnNldCA9IGF4aXMuYXhpc1R5cGUgPT09ICdhbmdsZUF4aXMnICYmIChyYW5nZSA9PT0gbnVsbCB8fCByYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmFuZ2UubGVuZ3RoKSA+PSAyID8gbWF0aFNpZ24ocmFuZ2VbMF0gLSByYW5nZVsxXSkgKiAyICogb2Zmc2V0IDogb2Zmc2V0O1xuXG4gIC8vIFRoZSB0aWNrcyBzZXQgYnkgdXNlciBzaG91bGQgb25seSBhZmZlY3QgdGhlIHRpY2tzIGFkamFjZW50IHRvIGF4aXMgbGluZVxuICBpZiAoaXNHcmlkICYmIChheGlzLnRpY2tzIHx8IGF4aXMubmljZVRpY2tzKSkge1xuICAgIHZhciByZXN1bHQgPSAoYXhpcy50aWNrcyB8fCBheGlzLm5pY2VUaWNrcykubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgdmFyIHNjYWxlQ29udGVudCA9IGR1cGxpY2F0ZURvbWFpbiA/IGR1cGxpY2F0ZURvbWFpbi5pbmRleE9mKGVudHJ5KSA6IGVudHJ5O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLy8gSWYgdGhlIHNjYWxlQ29udGVudCBpcyBub3QgYSBudW1iZXIsIHRoZSBjb29yZGluYXRlIHdpbGwgYmUgTmFOLlxuICAgICAgICAvLyBUaGF0IGNvdWxkIGJlIHRoZSBjYXNlIGZvciBleGFtcGxlIHdpdGggYSBQb2ludFNjYWxlIGFuZCBhIHN0cmluZyBhcyBkb21haW4uXG4gICAgICAgIGNvb3JkaW5hdGU6IHNjYWxlKHNjYWxlQ29udGVudCkgKyBvZmZzZXQsXG4gICAgICAgIHZhbHVlOiBlbnRyeSxcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKHJvdykge1xuICAgICAgcmV0dXJuICFpc05hbihyb3cuY29vcmRpbmF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBXaGVuIGF4aXMgaXMgYSBjYXRlZ29yaWFsIGF4aXMsIGJ1dCB0aGUgdHlwZSBvZiBheGlzIGlzIG51bWJlciBvciB0aGUgc2NhbGUgb2YgYXhpcyBpcyBub3QgXCJhdXRvXCJcbiAgaWYgKGF4aXMuaXNDYXRlZ29yaWNhbCAmJiBheGlzLmNhdGVnb3JpY2FsRG9tYWluKSB7XG4gICAgcmV0dXJuIGF4aXMuY2F0ZWdvcmljYWxEb21haW4ubWFwKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvb3JkaW5hdGU6IHNjYWxlKGVudHJ5KSArIG9mZnNldCxcbiAgICAgICAgdmFsdWU6IGVudHJ5LFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIGlmIChzY2FsZS50aWNrcyAmJiAhaXNBbGwpIHtcbiAgICByZXR1cm4gc2NhbGUudGlja3MoYXhpcy50aWNrQ291bnQpLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvb3JkaW5hdGU6IHNjYWxlKGVudHJ5KSArIG9mZnNldCxcbiAgICAgICAgdmFsdWU6IGVudHJ5LFxuICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFdoZW4gYXhpcyBoYXMgZHVwbGljYXRlZCB0ZXh0LCBzZXJpYWwgbnVtYmVycyBhcmUgdXNlZCB0byBnZW5lcmF0ZSBzY2FsZVxuICByZXR1cm4gc2NhbGUuZG9tYWluKCkubWFwKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29vcmRpbmF0ZTogc2NhbGUoZW50cnkpICsgb2Zmc2V0LFxuICAgICAgdmFsdWU6IGR1cGxpY2F0ZURvbWFpbiA/IGR1cGxpY2F0ZURvbWFpbltlbnRyeV0gOiBlbnRyeSxcbiAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgfTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIGNvbWJpbmUgdGhlIGhhbmRsZXJzXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gZGVmYXVsdEhhbmRsZXIgSW50ZXJuYWwgcHJpdmF0ZSBoYW5kbGVyXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2hpbGRIYW5kbGVyIEhhbmRsZXIgZnVuY3Rpb24gc3BlY2lmaWVkIGluIGNoaWxkIGNvbXBvbmVudFxuICogQHJldHVybiB7RnVuY3Rpb259ICAgICAgICAgICAgICAgIFRoZSBjb21iaW5lZCBoYW5kbGVyXG4gKi9cblxudmFyIGhhbmRsZXJXZWFrTWFwID0gbmV3IFdlYWtNYXAoKTtcbmV4cG9ydCB2YXIgY29tYmluZUV2ZW50SGFuZGxlcnMgPSBmdW5jdGlvbiBjb21iaW5lRXZlbnRIYW5kbGVycyhkZWZhdWx0SGFuZGxlciwgY2hpbGRIYW5kbGVyKSB7XG4gIGlmICh0eXBlb2YgY2hpbGRIYW5kbGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRIYW5kbGVyO1xuICB9XG4gIGlmICghaGFuZGxlcldlYWtNYXAuaGFzKGRlZmF1bHRIYW5kbGVyKSkge1xuICAgIGhhbmRsZXJXZWFrTWFwLnNldChkZWZhdWx0SGFuZGxlciwgbmV3IFdlYWtNYXAoKSk7XG4gIH1cbiAgdmFyIGNoaWxkV2Vha01hcCA9IGhhbmRsZXJXZWFrTWFwLmdldChkZWZhdWx0SGFuZGxlcik7XG4gIGlmIChjaGlsZFdlYWtNYXAuaGFzKGNoaWxkSGFuZGxlcikpIHtcbiAgICByZXR1cm4gY2hpbGRXZWFrTWFwLmdldChjaGlsZEhhbmRsZXIpO1xuICB9XG4gIHZhciBjb21iaW5lSGFuZGxlciA9IGZ1bmN0aW9uIGNvbWJpbmVIYW5kbGVyKCkge1xuICAgIGRlZmF1bHRIYW5kbGVyLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgICBjaGlsZEhhbmRsZXIuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICB9O1xuICBjaGlsZFdlYWtNYXAuc2V0KGNoaWxkSGFuZGxlciwgY29tYmluZUhhbmRsZXIpO1xuICByZXR1cm4gY29tYmluZUhhbmRsZXI7XG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBzY2FsZSBmdW5jdGlvbiBvZiBheGlzXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgYXhpcyAgICAgICAgICBUaGUgb3B0aW9uIG9mIGF4aXNcbiAqIEBwYXJhbSAge1N0cmluZ30gICBjaGFydFR5cGUgICAgIFRoZSBkaXNwbGF5TmFtZSBvZiBjaGFydFxuICogQHBhcmFtICB7Qm9vbGVhbn0gIGhhc0JhciAgICAgICAgaWYgaXQgaGFzIGEgYmFyXG4gKiBAcmV0dXJuIHtvYmplY3R9ICAgICAgICAgICAgICAgVGhlIHNjYWxlIGZ1bmN0aW9uIGFuZCByZXNvbHZlZCBuYW1lXG4gKi9cbmV4cG9ydCB2YXIgcGFyc2VTY2FsZSA9IGZ1bmN0aW9uIHBhcnNlU2NhbGUoYXhpcywgY2hhcnRUeXBlLCBoYXNCYXIpIHtcbiAgdmFyIHNjYWxlID0gYXhpcy5zY2FsZSxcbiAgICB0eXBlID0gYXhpcy50eXBlLFxuICAgIGxheW91dCA9IGF4aXMubGF5b3V0LFxuICAgIGF4aXNUeXBlID0gYXhpcy5heGlzVHlwZTtcbiAgaWYgKHNjYWxlID09PSAnYXV0bycpIHtcbiAgICBpZiAobGF5b3V0ID09PSAncmFkaWFsJyAmJiBheGlzVHlwZSA9PT0gJ3JhZGl1c0F4aXMnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzY2FsZTogZDNTY2FsZXMuc2NhbGVCYW5kKCksXG4gICAgICAgIHJlYWxTY2FsZVR5cGU6ICdiYW5kJ1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGxheW91dCA9PT0gJ3JhZGlhbCcgJiYgYXhpc1R5cGUgPT09ICdhbmdsZUF4aXMnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzY2FsZTogZDNTY2FsZXMuc2NhbGVMaW5lYXIoKSxcbiAgICAgICAgcmVhbFNjYWxlVHlwZTogJ2xpbmVhcidcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnY2F0ZWdvcnknICYmIGNoYXJ0VHlwZSAmJiAoY2hhcnRUeXBlLmluZGV4T2YoJ0xpbmVDaGFydCcpID49IDAgfHwgY2hhcnRUeXBlLmluZGV4T2YoJ0FyZWFDaGFydCcpID49IDAgfHwgY2hhcnRUeXBlLmluZGV4T2YoJ0NvbXBvc2VkQ2hhcnQnKSA+PSAwICYmICFoYXNCYXIpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzY2FsZTogZDNTY2FsZXMuc2NhbGVQb2ludCgpLFxuICAgICAgICByZWFsU2NhbGVUeXBlOiAncG9pbnQnXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ2NhdGVnb3J5Jykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NhbGU6IGQzU2NhbGVzLnNjYWxlQmFuZCgpLFxuICAgICAgICByZWFsU2NhbGVUeXBlOiAnYmFuZCdcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBzY2FsZTogZDNTY2FsZXMuc2NhbGVMaW5lYXIoKSxcbiAgICAgIHJlYWxTY2FsZVR5cGU6ICdsaW5lYXInXG4gICAgfTtcbiAgfVxuICBpZiAoaXNTdHJpbmcoc2NhbGUpKSB7XG4gICAgdmFyIG5hbWUgPSBcInNjYWxlXCIuY29uY2F0KHVwcGVyRmlyc3Qoc2NhbGUpKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2NhbGU6IChkM1NjYWxlc1tuYW1lXSB8fCBkM1NjYWxlcy5zY2FsZVBvaW50KSgpLFxuICAgICAgcmVhbFNjYWxlVHlwZTogZDNTY2FsZXNbbmFtZV0gPyBuYW1lIDogJ3BvaW50J1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGlzRnVuY3Rpb24oc2NhbGUpID8ge1xuICAgIHNjYWxlOiBzY2FsZVxuICB9IDoge1xuICAgIHNjYWxlOiBkM1NjYWxlcy5zY2FsZVBvaW50KCksXG4gICAgcmVhbFNjYWxlVHlwZTogJ3BvaW50J1xuICB9O1xufTtcbnZhciBFUFMgPSAxZS00O1xuZXhwb3J0IHZhciBjaGVja0RvbWFpbk9mU2NhbGUgPSBmdW5jdGlvbiBjaGVja0RvbWFpbk9mU2NhbGUoc2NhbGUpIHtcbiAgdmFyIGRvbWFpbiA9IHNjYWxlLmRvbWFpbigpO1xuICBpZiAoIWRvbWFpbiB8fCBkb21haW4ubGVuZ3RoIDw9IDIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIGxlbiA9IGRvbWFpbi5sZW5ndGg7XG4gIHZhciByYW5nZSA9IHNjYWxlLnJhbmdlKCk7XG4gIHZhciBtaW5WYWx1ZSA9IE1hdGgubWluKHJhbmdlWzBdLCByYW5nZVsxXSkgLSBFUFM7XG4gIHZhciBtYXhWYWx1ZSA9IE1hdGgubWF4KHJhbmdlWzBdLCByYW5nZVsxXSkgKyBFUFM7XG4gIHZhciBmaXJzdCA9IHNjYWxlKGRvbWFpblswXSk7XG4gIHZhciBsYXN0ID0gc2NhbGUoZG9tYWluW2xlbiAtIDFdKTtcbiAgaWYgKGZpcnN0IDwgbWluVmFsdWUgfHwgZmlyc3QgPiBtYXhWYWx1ZSB8fCBsYXN0IDwgbWluVmFsdWUgfHwgbGFzdCA+IG1heFZhbHVlKSB7XG4gICAgc2NhbGUuZG9tYWluKFtkb21haW5bMF0sIGRvbWFpbltsZW4gLSAxXV0pO1xuICB9XG59O1xuZXhwb3J0IHZhciBmaW5kUG9zaXRpb25PZkJhciA9IGZ1bmN0aW9uIGZpbmRQb3NpdGlvbk9mQmFyKGJhclBvc2l0aW9uLCBjaGlsZCkge1xuICBpZiAoIWJhclBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGJhclBvc2l0aW9uLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGJhclBvc2l0aW9uW2ldLml0ZW0gPT09IGNoaWxkKSB7XG4gICAgICByZXR1cm4gYmFyUG9zaXRpb25baV0ucG9zaXRpb247XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuLyoqXG4gKiBCb3RoIHZhbHVlIGFuZCBkb21haW4gYXJlIHR1cGxlcyBvZiB0d28gbnVtYmVyc1xuICogLSBidXQgdGhlIHR5cGUgc3RheXMgYXMgYXJyYXkgb2YgbnVtYmVycyB1bnRpbCB3ZSBoYXZlIGJldHRlciBzdXBwb3J0IGluIHJlc3Qgb2YgdGhlIGFwcFxuICogQHBhcmFtIHtBcnJheX0gdmFsdWUgaW5wdXQgdGhhdCB3aWxsIGJlIHRydW5jYXRlZFxuICogQHBhcmFtIHtBcnJheX0gZG9tYWluIGJvdW5kYXJpZXNcbiAqIEByZXR1cm5zIHtBcnJheX0gdHVwbGUgb2YgdHdvIG51bWJlcnNcbiAqL1xuZXhwb3J0IHZhciB0cnVuY2F0ZUJ5RG9tYWluID0gZnVuY3Rpb24gdHJ1bmNhdGVCeURvbWFpbih2YWx1ZSwgZG9tYWluKSB7XG4gIGlmICghZG9tYWluIHx8IGRvbWFpbi5sZW5ndGggIT09IDIgfHwgIWlzTnVtYmVyKGRvbWFpblswXSkgfHwgIWlzTnVtYmVyKGRvbWFpblsxXSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgdmFyIG1pblZhbHVlID0gTWF0aC5taW4oZG9tYWluWzBdLCBkb21haW5bMV0pO1xuICB2YXIgbWF4VmFsdWUgPSBNYXRoLm1heChkb21haW5bMF0sIGRvbWFpblsxXSk7XG4gIHZhciByZXN1bHQgPSBbdmFsdWVbMF0sIHZhbHVlWzFdXTtcbiAgaWYgKCFpc051bWJlcih2YWx1ZVswXSkgfHwgdmFsdWVbMF0gPCBtaW5WYWx1ZSkge1xuICAgIHJlc3VsdFswXSA9IG1pblZhbHVlO1xuICB9XG4gIGlmICghaXNOdW1iZXIodmFsdWVbMV0pIHx8IHZhbHVlWzFdID4gbWF4VmFsdWUpIHtcbiAgICByZXN1bHRbMV0gPSBtYXhWYWx1ZTtcbiAgfVxuICBpZiAocmVzdWx0WzBdID4gbWF4VmFsdWUpIHtcbiAgICByZXN1bHRbMF0gPSBtYXhWYWx1ZTtcbiAgfVxuICBpZiAocmVzdWx0WzFdIDwgbWluVmFsdWUpIHtcbiAgICByZXN1bHRbMV0gPSBtaW5WYWx1ZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBTdGFja3MgYWxsIHBvc2l0aXZlIG51bWJlcnMgYWJvdmUgemVybyBhbmQgYWxsIG5lZ2F0aXZlIG51bWJlcnMgYmVsb3cgemVyby5cbiAqXG4gKiBJZiBhbGwgdmFsdWVzIGluIHRoZSBzZXJpZXMgYXJlIHBvc2l0aXZlIHRoZW4gdGhpcyBiZWhhdmVzIHRoZSBzYW1lIGFzICdub25lJyBzdGFja2VyLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHNlcmllcyBmcm9tIGQzLXNoYXBlIFN0YWNrXG4gKiBAcmV0dXJuIHtBcnJheX0gc2VyaWVzIHdpdGggYXBwbGllZCBvZmZzZXRcbiAqL1xuZXhwb3J0IHZhciBvZmZzZXRTaWduID0gZnVuY3Rpb24gb2Zmc2V0U2lnbihzZXJpZXMpIHtcbiAgdmFyIG4gPSBzZXJpZXMubGVuZ3RoO1xuICBpZiAobiA8PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAodmFyIGogPSAwLCBtID0gc2VyaWVzWzBdLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIHZhciBwb3NpdGl2ZSA9IDA7XG4gICAgdmFyIG5lZ2F0aXZlID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIHZhbHVlID0gaXNOYW4oc2VyaWVzW2ldW2pdWzFdKSA/IHNlcmllc1tpXVtqXVswXSA6IHNlcmllc1tpXVtqXVsxXTtcblxuICAgICAgLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcsIG5vLXBhcmFtLXJlYXNzaWduICovXG4gICAgICBpZiAodmFsdWUgPj0gMCkge1xuICAgICAgICBzZXJpZXNbaV1bal1bMF0gPSBwb3NpdGl2ZTtcbiAgICAgICAgc2VyaWVzW2ldW2pdWzFdID0gcG9zaXRpdmUgKyB2YWx1ZTtcbiAgICAgICAgcG9zaXRpdmUgPSBzZXJpZXNbaV1bal1bMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXJpZXNbaV1bal1bMF0gPSBuZWdhdGl2ZTtcbiAgICAgICAgc2VyaWVzW2ldW2pdWzFdID0gbmVnYXRpdmUgKyB2YWx1ZTtcbiAgICAgICAgbmVnYXRpdmUgPSBzZXJpZXNbaV1bal1bMV07XG4gICAgICB9XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nLCBuby1wYXJhbS1yZWFzc2lnbiAqL1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBSZXBsYWNlcyBhbGwgbmVnYXRpdmUgdmFsdWVzIHdpdGggemVybyB3aGVuIHN0YWNraW5nIGRhdGEuXG4gKlxuICogSWYgYWxsIHZhbHVlcyBpbiB0aGUgc2VyaWVzIGFyZSBwb3NpdGl2ZSB0aGVuIHRoaXMgYmVoYXZlcyB0aGUgc2FtZSBhcyAnbm9uZScgc3RhY2tlci5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBzZXJpZXMgZnJvbSBkMy1zaGFwZSBTdGFja1xuICogQHJldHVybiB7QXJyYXl9IHNlcmllcyB3aXRoIGFwcGxpZWQgb2Zmc2V0XG4gKi9cbmV4cG9ydCB2YXIgb2Zmc2V0UG9zaXRpdmUgPSBmdW5jdGlvbiBvZmZzZXRQb3NpdGl2ZShzZXJpZXMpIHtcbiAgdmFyIG4gPSBzZXJpZXMubGVuZ3RoO1xuICBpZiAobiA8PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAodmFyIGogPSAwLCBtID0gc2VyaWVzWzBdLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIHZhciBwb3NpdGl2ZSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGlzTmFuKHNlcmllc1tpXVtqXVsxXSkgPyBzZXJpZXNbaV1bal1bMF0gOiBzZXJpZXNbaV1bal1bMV07XG5cbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nLCBuby1wYXJhbS1yZWFzc2lnbiAqL1xuICAgICAgaWYgKHZhbHVlID49IDApIHtcbiAgICAgICAgc2VyaWVzW2ldW2pdWzBdID0gcG9zaXRpdmU7XG4gICAgICAgIHNlcmllc1tpXVtqXVsxXSA9IHBvc2l0aXZlICsgdmFsdWU7XG4gICAgICAgIHBvc2l0aXZlID0gc2VyaWVzW2ldW2pdWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VyaWVzW2ldW2pdWzBdID0gMDtcbiAgICAgICAgc2VyaWVzW2ldW2pdWzFdID0gMDtcbiAgICAgIH1cbiAgICAgIC8qIGVzbGludC1lbmFibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcsIG5vLXBhcmFtLXJlYXNzaWduICovXG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHR5cGUgdG8gY29tcHV0ZSBvZmZzZXQgZm9yIHN0YWNrZWQgZGF0YS5cbiAqXG4gKiBkMy1zaGFwZSBoYXMgc29tZXRoaW5nIGZpc2h5IGdvaW5nIG9uIHdpdGggaXRzIHR5cGVzLlxuICogSW4gQGRlZmluaXRlbHl0eXBlZC9kMy1zaGFwZSwgdGhpcyBmdW5jdGlvbiAodGhlIG9mZnNldCBhY2Nlc3NvcikgaXMgdHlwZWQgYXMgU2VyaWVzPD4gPT4gdm9pZC5cbiAqIEhvd2V2ZXIhIFdoZW4gSSBhY3R1YWxseSBvcGVuIHRoZSBzdG9yeWJvb2sgSSBjYW4gc2VlIHRoYXQgdGhlIG9mZnNldCBhY2Nlc3NvciBhY3R1YWxseSByZWNlaXZlcyBBcnJheTxTZXJpZXM8Pj4uXG4gKiBUaGUgc2FtZSBJIGNhbiBzZWUgaW4gdGhlIHNvdXJjZSBjb2RlIGl0c2VsZjpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9EZWZpbml0ZWx5VHlwZWQvRGVmaW5pdGVseVR5cGVkL2Rpc2N1c3Npb25zLzY2MDQyXG4gKiBUaGF0IG9uZSB1bmZvcnR1bmF0ZWx5IGhhcyBubyB0eXBlcyBidXQgd2UgY2FuIHRlbGwgaXQgcGFzc2VzIHRocmVlLWRpbWVuc2lvbmFsIGFycmF5LlxuICpcbiAqIFdoaWNoIGxlYWRzIG1lIHRvIGJlbGlldmUgdGhhdCBkZWZpbml0ZWx5dHlwZWQgaXMgd3Jvbmcgb24gdGhpcyBvbmUuXG4gKiBUaGVyZSdzIG9wZW4gZGlzY3Vzc2lvbiBvbiB0aGlzIHRvcGljIHdpdGhvdXQgbXVjaCBhdHRlbnRpb246XG4gKiBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZC9kaXNjdXNzaW9ucy82NjA0MlxuICovXG5cbnZhciBTVEFDS19PRkZTRVRfTUFQID0ge1xuICBzaWduOiBvZmZzZXRTaWduLFxuICAvLyBAdHMtZXhwZWN0LWVycm9yIGRlZmluaXRlbHl0eXBlZCB0eXBlcyBhcmUgaW5jb3JyZWN0XG4gIGV4cGFuZDogc3RhY2tPZmZzZXRFeHBhbmQsXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgZGVmaW5pdGVseXR5cGVkIHR5cGVzIGFyZSBpbmNvcnJlY3RcbiAgbm9uZTogc3RhY2tPZmZzZXROb25lLFxuICAvLyBAdHMtZXhwZWN0LWVycm9yIGRlZmluaXRlbHl0eXBlZCB0eXBlcyBhcmUgaW5jb3JyZWN0XG4gIHNpbGhvdWV0dGU6IHN0YWNrT2Zmc2V0U2lsaG91ZXR0ZSxcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBkZWZpbml0ZWx5dHlwZWQgdHlwZXMgYXJlIGluY29ycmVjdFxuICB3aWdnbGU6IHN0YWNrT2Zmc2V0V2lnZ2xlLFxuICBwb3NpdGl2ZTogb2Zmc2V0UG9zaXRpdmVcbn07XG5leHBvcnQgdmFyIGdldFN0YWNrZWREYXRhID0gZnVuY3Rpb24gZ2V0U3RhY2tlZERhdGEoZGF0YSwgc3RhY2tJdGVtcywgb2Zmc2V0VHlwZSkge1xuICB2YXIgZGF0YUtleXMgPSBzdGFja0l0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiBpdGVtLnByb3BzLmRhdGFLZXk7XG4gIH0pO1xuICB2YXIgb2Zmc2V0QWNjZXNzb3IgPSBTVEFDS19PRkZTRVRfTUFQW29mZnNldFR5cGVdO1xuICB2YXIgc3RhY2sgPSBzaGFwZVN0YWNrKClcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBzdGFjay5rZXlzIHR5cGUgd2FudHMgYW4gYXJyYXkgb2Ygc3RyaW5ncywgYnV0IHdlIHByb3ZpZGUgYXJyYXkgb2YgRGF0YUtleXNcbiAgLmtleXMoZGF0YUtleXMpLnZhbHVlKGZ1bmN0aW9uIChkLCBrZXkpIHtcbiAgICByZXR1cm4gK2dldFZhbHVlQnlEYXRhS2V5KGQsIGtleSwgMCk7XG4gIH0pLm9yZGVyKHN0YWNrT3JkZXJOb25lKVxuICAvLyBAdHMtZXhwZWN0LWVycm9yIGRlZmluaXRlbHl0eXBlZCB0eXBlcyBhcmUgaW5jb3JyZWN0XG4gIC5vZmZzZXQob2Zmc2V0QWNjZXNzb3IpO1xuICByZXR1cm4gc3RhY2soZGF0YSk7XG59O1xuZXhwb3J0IHZhciBnZXRTdGFja0dyb3Vwc0J5QXhpc0lkID0gZnVuY3Rpb24gZ2V0U3RhY2tHcm91cHNCeUF4aXNJZChkYXRhLCBfaXRlbXMsIG51bWVyaWNBeGlzSWQsIGNhdGVBeGlzSWQsIG9mZnNldFR5cGUsIHJldmVyc2VTdGFja09yZGVyKSB7XG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gcmV2ZXJzaW5nIGl0ZW1zIHRvIGFmZmVjdCByZW5kZXIgb3JkZXIgKGZvciBsYXllcmluZylcbiAgdmFyIGl0ZW1zID0gcmV2ZXJzZVN0YWNrT3JkZXIgPyBfaXRlbXMucmV2ZXJzZSgpIDogX2l0ZW1zO1xuICB2YXIgcGFyZW50U3RhY2tHcm91cHNJbml0aWFsVmFsdWUgPSB7fTtcbiAgdmFyIHN0YWNrR3JvdXBzID0gaXRlbXMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGl0ZW0pIHtcbiAgICB2YXIgX2l0ZW0kdHlwZTI7XG4gICAgdmFyIGRlZmF1bHRlZFByb3BzID0gKF9pdGVtJHR5cGUyID0gaXRlbS50eXBlKSAhPT0gbnVsbCAmJiBfaXRlbSR0eXBlMiAhPT0gdm9pZCAwICYmIF9pdGVtJHR5cGUyLmRlZmF1bHRQcm9wcyA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbS50eXBlLmRlZmF1bHRQcm9wcyksIGl0ZW0ucHJvcHMpIDogaXRlbS5wcm9wcztcbiAgICB2YXIgc3RhY2tJZCA9IGRlZmF1bHRlZFByb3BzLnN0YWNrSWQsXG4gICAgICBoaWRlID0gZGVmYXVsdGVkUHJvcHMuaGlkZTtcbiAgICBpZiAoaGlkZSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgdmFyIGF4aXNJZCA9IGRlZmF1bHRlZFByb3BzW251bWVyaWNBeGlzSWRdO1xuICAgIHZhciBwYXJlbnRHcm91cCA9IHJlc3VsdFtheGlzSWRdIHx8IHtcbiAgICAgIGhhc1N0YWNrOiBmYWxzZSxcbiAgICAgIHN0YWNrR3JvdXBzOiB7fVxuICAgIH07XG4gICAgaWYgKGlzTnVtT3JTdHIoc3RhY2tJZCkpIHtcbiAgICAgIHZhciBjaGlsZEdyb3VwID0gcGFyZW50R3JvdXAuc3RhY2tHcm91cHNbc3RhY2tJZF0gfHwge1xuICAgICAgICBudW1lcmljQXhpc0lkOiBudW1lcmljQXhpc0lkLFxuICAgICAgICBjYXRlQXhpc0lkOiBjYXRlQXhpc0lkLFxuICAgICAgICBpdGVtczogW11cbiAgICAgIH07XG4gICAgICBjaGlsZEdyb3VwLml0ZW1zLnB1c2goaXRlbSk7XG4gICAgICBwYXJlbnRHcm91cC5oYXNTdGFjayA9IHRydWU7XG4gICAgICBwYXJlbnRHcm91cC5zdGFja0dyb3Vwc1tzdGFja0lkXSA9IGNoaWxkR3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmVudEdyb3VwLnN0YWNrR3JvdXBzW3VuaXF1ZUlkKCdfc3RhY2tJZF8nKV0gPSB7XG4gICAgICAgIG51bWVyaWNBeGlzSWQ6IG51bWVyaWNBeGlzSWQsXG4gICAgICAgIGNhdGVBeGlzSWQ6IGNhdGVBeGlzSWQsXG4gICAgICAgIGl0ZW1zOiBbaXRlbV1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3VsdCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIGF4aXNJZCwgcGFyZW50R3JvdXApKTtcbiAgfSwgcGFyZW50U3RhY2tHcm91cHNJbml0aWFsVmFsdWUpO1xuICB2YXIgYXhpc1N0YWNrR3JvdXBzSW5pdGlhbFZhbHVlID0ge307XG4gIHJldHVybiBPYmplY3Qua2V5cyhzdGFja0dyb3VwcykucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGF4aXNJZCkge1xuICAgIHZhciBncm91cCA9IHN0YWNrR3JvdXBzW2F4aXNJZF07XG4gICAgaWYgKGdyb3VwLmhhc1N0YWNrKSB7XG4gICAgICB2YXIgc3RhY2tHcm91cHNJbml0aWFsVmFsdWUgPSB7fTtcbiAgICAgIGdyb3VwLnN0YWNrR3JvdXBzID0gT2JqZWN0LmtleXMoZ3JvdXAuc3RhY2tHcm91cHMpLnJlZHVjZShmdW5jdGlvbiAocmVzLCBzdGFja0lkKSB7XG4gICAgICAgIHZhciBnID0gZ3JvdXAuc3RhY2tHcm91cHNbc3RhY2tJZF07XG4gICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlcyksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIHN0YWNrSWQsIHtcbiAgICAgICAgICBudW1lcmljQXhpc0lkOiBudW1lcmljQXhpc0lkLFxuICAgICAgICAgIGNhdGVBeGlzSWQ6IGNhdGVBeGlzSWQsXG4gICAgICAgICAgaXRlbXM6IGcuaXRlbXMsXG4gICAgICAgICAgc3RhY2tlZERhdGE6IGdldFN0YWNrZWREYXRhKGRhdGEsIGcuaXRlbXMsIG9mZnNldFR5cGUpXG4gICAgICAgIH0pKTtcbiAgICAgIH0sIHN0YWNrR3JvdXBzSW5pdGlhbFZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgYXhpc0lkLCBncm91cCkpO1xuICB9LCBheGlzU3RhY2tHcm91cHNJbml0aWFsVmFsdWUpO1xufTtcblxuLyoqXG4gKiBDb25maWd1cmUgdGhlIHNjYWxlIGZ1bmN0aW9uIG9mIGF4aXNcbiAqIEBwYXJhbSB7T2JqZWN0fSBzY2FsZSBUaGUgc2NhbGUgZnVuY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzICBUaGUgY29uZmlndXJhdGlvbiBvZiBheGlzXG4gKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgbnVsbFxuICovXG5leHBvcnQgdmFyIGdldFRpY2tzT2ZTY2FsZSA9IGZ1bmN0aW9uIGdldFRpY2tzT2ZTY2FsZShzY2FsZSwgb3B0cykge1xuICB2YXIgcmVhbFNjYWxlVHlwZSA9IG9wdHMucmVhbFNjYWxlVHlwZSxcbiAgICB0eXBlID0gb3B0cy50eXBlLFxuICAgIHRpY2tDb3VudCA9IG9wdHMudGlja0NvdW50LFxuICAgIG9yaWdpbmFsRG9tYWluID0gb3B0cy5vcmlnaW5hbERvbWFpbixcbiAgICBhbGxvd0RlY2ltYWxzID0gb3B0cy5hbGxvd0RlY2ltYWxzO1xuICB2YXIgc2NhbGVUeXBlID0gcmVhbFNjYWxlVHlwZSB8fCBvcHRzLnNjYWxlO1xuICBpZiAoc2NhbGVUeXBlICE9PSAnYXV0bycgJiYgc2NhbGVUeXBlICE9PSAnbGluZWFyJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICh0aWNrQ291bnQgJiYgdHlwZSA9PT0gJ251bWJlcicgJiYgb3JpZ2luYWxEb21haW4gJiYgKG9yaWdpbmFsRG9tYWluWzBdID09PSAnYXV0bycgfHwgb3JpZ2luYWxEb21haW5bMV0gPT09ICdhdXRvJykpIHtcbiAgICAvLyBDYWxjdWxhdGUgdGhlIHRpY2tzIGJ5IHRoZSBudW1iZXIgb2YgZ3JpZCB3aGVuIHRoZSBheGlzIGlzIGEgbnVtYmVyIGF4aXNcbiAgICB2YXIgZG9tYWluID0gc2NhbGUuZG9tYWluKCk7XG4gICAgaWYgKCFkb21haW4ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIHRpY2tWYWx1ZXMgPSBnZXROaWNlVGlja1ZhbHVlcyhkb21haW4sIHRpY2tDb3VudCwgYWxsb3dEZWNpbWFscyk7XG4gICAgc2NhbGUuZG9tYWluKFttaW4odGlja1ZhbHVlcyksIG1heCh0aWNrVmFsdWVzKV0pO1xuICAgIHJldHVybiB7XG4gICAgICBuaWNlVGlja3M6IHRpY2tWYWx1ZXNcbiAgICB9O1xuICB9XG4gIGlmICh0aWNrQ291bnQgJiYgdHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICB2YXIgX2RvbWFpbiA9IHNjYWxlLmRvbWFpbigpO1xuICAgIHZhciBfdGlja1ZhbHVlcyA9IGdldFRpY2tWYWx1ZXNGaXhlZERvbWFpbihfZG9tYWluLCB0aWNrQ291bnQsIGFsbG93RGVjaW1hbHMpO1xuICAgIHJldHVybiB7XG4gICAgICBuaWNlVGlja3M6IF90aWNrVmFsdWVzXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2F0ZUNvb3JkaW5hdGVPZkxpbmUoX3JlZjUpIHtcbiAgdmFyIGF4aXMgPSBfcmVmNS5heGlzLFxuICAgIHRpY2tzID0gX3JlZjUudGlja3MsXG4gICAgYmFuZFNpemUgPSBfcmVmNS5iYW5kU2l6ZSxcbiAgICBlbnRyeSA9IF9yZWY1LmVudHJ5LFxuICAgIGluZGV4ID0gX3JlZjUuaW5kZXgsXG4gICAgZGF0YUtleSA9IF9yZWY1LmRhdGFLZXk7XG4gIGlmIChheGlzLnR5cGUgPT09ICdjYXRlZ29yeScpIHtcbiAgICAvLyBmaW5kIGNvb3JkaW5hdGUgb2YgY2F0ZWdvcnkgYXhpcyBieSB0aGUgdmFsdWUgb2YgY2F0ZWdvcnlcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHdoeSBkb2VzIHRoaXMgdXNlIGRpcmVjdCBvYmplY3QgYWNjZXNzIGluc3RlYWQgb2YgZ2V0VmFsdWVCeURhdGFLZXk/XG4gICAgaWYgKCFheGlzLmFsbG93RHVwbGljYXRlZENhdGVnb3J5ICYmIGF4aXMuZGF0YUtleSAmJiAhaXNOaWwoZW50cnlbYXhpcy5kYXRhS2V5XSkpIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igd2h5IGRvZXMgdGhpcyB1c2UgZGlyZWN0IG9iamVjdCBhY2Nlc3MgaW5zdGVhZCBvZiBnZXRWYWx1ZUJ5RGF0YUtleT9cbiAgICAgIHZhciBtYXRjaGVkVGljayA9IGZpbmRFbnRyeUluQXJyYXkodGlja3MsICd2YWx1ZScsIGVudHJ5W2F4aXMuZGF0YUtleV0pO1xuICAgICAgaWYgKG1hdGNoZWRUaWNrKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVkVGljay5jb29yZGluYXRlICsgYmFuZFNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGlja3NbaW5kZXhdID8gdGlja3NbaW5kZXhdLmNvb3JkaW5hdGUgKyBiYW5kU2l6ZSAvIDIgOiBudWxsO1xuICB9XG4gIHZhciB2YWx1ZSA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCAhaXNOaWwoZGF0YUtleSkgPyBkYXRhS2V5IDogYXhpcy5kYXRhS2V5KTtcbiAgcmV0dXJuICFpc05pbCh2YWx1ZSkgPyBheGlzLnNjYWxlKHZhbHVlKSA6IG51bGw7XG59XG5leHBvcnQgdmFyIGdldENhdGVDb29yZGluYXRlT2ZCYXIgPSBmdW5jdGlvbiBnZXRDYXRlQ29vcmRpbmF0ZU9mQmFyKF9yZWY2KSB7XG4gIHZhciBheGlzID0gX3JlZjYuYXhpcyxcbiAgICB0aWNrcyA9IF9yZWY2LnRpY2tzLFxuICAgIG9mZnNldCA9IF9yZWY2Lm9mZnNldCxcbiAgICBiYW5kU2l6ZSA9IF9yZWY2LmJhbmRTaXplLFxuICAgIGVudHJ5ID0gX3JlZjYuZW50cnksXG4gICAgaW5kZXggPSBfcmVmNi5pbmRleDtcbiAgaWYgKGF4aXMudHlwZSA9PT0gJ2NhdGVnb3J5Jykge1xuICAgIHJldHVybiB0aWNrc1tpbmRleF0gPyB0aWNrc1tpbmRleF0uY29vcmRpbmF0ZSArIG9mZnNldCA6IG51bGw7XG4gIH1cbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWVCeURhdGFLZXkoZW50cnksIGF4aXMuZGF0YUtleSwgYXhpcy5kb21haW5baW5kZXhdKTtcbiAgcmV0dXJuICFpc05pbCh2YWx1ZSkgPyBheGlzLnNjYWxlKHZhbHVlKSAtIGJhbmRTaXplIC8gMiArIG9mZnNldCA6IG51bGw7XG59O1xuZXhwb3J0IHZhciBnZXRCYXNlVmFsdWVPZkJhciA9IGZ1bmN0aW9uIGdldEJhc2VWYWx1ZU9mQmFyKF9yZWY3KSB7XG4gIHZhciBudW1lcmljQXhpcyA9IF9yZWY3Lm51bWVyaWNBeGlzO1xuICB2YXIgZG9tYWluID0gbnVtZXJpY0F4aXMuc2NhbGUuZG9tYWluKCk7XG4gIGlmIChudW1lcmljQXhpcy50eXBlID09PSAnbnVtYmVyJykge1xuICAgIHZhciBtaW5WYWx1ZSA9IE1hdGgubWluKGRvbWFpblswXSwgZG9tYWluWzFdKTtcbiAgICB2YXIgbWF4VmFsdWUgPSBNYXRoLm1heChkb21haW5bMF0sIGRvbWFpblsxXSk7XG4gICAgaWYgKG1pblZhbHVlIDw9IDAgJiYgbWF4VmFsdWUgPj0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmIChtYXhWYWx1ZSA8IDApIHtcbiAgICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG1pblZhbHVlO1xuICB9XG4gIHJldHVybiBkb21haW5bMF07XG59O1xuZXhwb3J0IHZhciBnZXRTdGFja2VkRGF0YU9mSXRlbSA9IGZ1bmN0aW9uIGdldFN0YWNrZWREYXRhT2ZJdGVtKGl0ZW0sIHN0YWNrR3JvdXBzKSB7XG4gIHZhciBfaXRlbSR0eXBlMztcbiAgdmFyIGRlZmF1bHRlZFByb3BzID0gKF9pdGVtJHR5cGUzID0gaXRlbS50eXBlKSAhPT0gbnVsbCAmJiBfaXRlbSR0eXBlMyAhPT0gdm9pZCAwICYmIF9pdGVtJHR5cGUzLmRlZmF1bHRQcm9wcyA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbS50eXBlLmRlZmF1bHRQcm9wcyksIGl0ZW0ucHJvcHMpIDogaXRlbS5wcm9wcztcbiAgdmFyIHN0YWNrSWQgPSBkZWZhdWx0ZWRQcm9wcy5zdGFja0lkO1xuICBpZiAoaXNOdW1PclN0cihzdGFja0lkKSkge1xuICAgIHZhciBncm91cCA9IHN0YWNrR3JvdXBzW3N0YWNrSWRdO1xuICAgIGlmIChncm91cCkge1xuICAgICAgdmFyIGl0ZW1JbmRleCA9IGdyb3VwLml0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICByZXR1cm4gaXRlbUluZGV4ID49IDAgPyBncm91cC5zdGFja2VkRGF0YVtpdGVtSW5kZXhdIDogbnVsbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xudmFyIGdldERvbWFpbk9mU2luZ2xlID0gZnVuY3Rpb24gZ2V0RG9tYWluT2ZTaW5nbGUoZGF0YSkge1xuICByZXR1cm4gZGF0YS5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZW50cnkpIHtcbiAgICByZXR1cm4gW21pbihlbnRyeS5jb25jYXQoW3Jlc3VsdFswXV0pLmZpbHRlcihpc051bWJlcikpLCBtYXgoZW50cnkuY29uY2F0KFtyZXN1bHRbMV1dKS5maWx0ZXIoaXNOdW1iZXIpKV07XG4gIH0sIFtJbmZpbml0eSwgLUluZmluaXR5XSk7XG59O1xuZXhwb3J0IHZhciBnZXREb21haW5PZlN0YWNrR3JvdXBzID0gZnVuY3Rpb24gZ2V0RG9tYWluT2ZTdGFja0dyb3VwcyhzdGFja0dyb3Vwcywgc3RhcnRJbmRleCwgZW5kSW5kZXgpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHN0YWNrR3JvdXBzKS5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgc3RhY2tJZCkge1xuICAgIHZhciBncm91cCA9IHN0YWNrR3JvdXBzW3N0YWNrSWRdO1xuICAgIHZhciBzdGFja2VkRGF0YSA9IGdyb3VwLnN0YWNrZWREYXRhO1xuICAgIHZhciBkb21haW4gPSBzdGFja2VkRGF0YS5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgZW50cnkpIHtcbiAgICAgIHZhciBzID0gZ2V0RG9tYWluT2ZTaW5nbGUoZW50cnkuc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXggKyAxKSk7XG4gICAgICByZXR1cm4gW01hdGgubWluKHJlc1swXSwgc1swXSksIE1hdGgubWF4KHJlc1sxXSwgc1sxXSldO1xuICAgIH0sIFtJbmZpbml0eSwgLUluZmluaXR5XSk7XG4gICAgcmV0dXJuIFtNYXRoLm1pbihkb21haW5bMF0sIHJlc3VsdFswXSksIE1hdGgubWF4KGRvbWFpblsxXSwgcmVzdWx0WzFdKV07XG4gIH0sIFtJbmZpbml0eSwgLUluZmluaXR5XSkubWFwKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBJbmZpbml0eSB8fCByZXN1bHQgPT09IC1JbmZpbml0eSA/IDAgOiByZXN1bHQ7XG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgTUlOX1ZBTFVFX1JFRyA9IC9eZGF0YU1pbltcXHNdKi1bXFxzXSooWzAtOV0rKFsuXXsxfVswLTldKyl7MCwxfSkkLztcbmV4cG9ydCB2YXIgTUFYX1ZBTFVFX1JFRyA9IC9eZGF0YU1heFtcXHNdKlxcK1tcXHNdKihbMC05XSsoWy5dezF9WzAtOV0rKXswLDF9KSQvO1xuZXhwb3J0IHZhciBwYXJzZVNwZWNpZmllZERvbWFpbiA9IGZ1bmN0aW9uIHBhcnNlU3BlY2lmaWVkRG9tYWluKHNwZWNpZmllZERvbWFpbiwgZGF0YURvbWFpbiwgYWxsb3dEYXRhT3ZlcmZsb3cpIHtcbiAgaWYgKGlzRnVuY3Rpb24oc3BlY2lmaWVkRG9tYWluKSkge1xuICAgIHJldHVybiBzcGVjaWZpZWREb21haW4oZGF0YURvbWFpbiwgYWxsb3dEYXRhT3ZlcmZsb3cpO1xuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheShzcGVjaWZpZWREb21haW4pKSB7XG4gICAgcmV0dXJuIGRhdGFEb21haW47XG4gIH1cbiAgdmFyIGRvbWFpbiA9IFtdO1xuXG4gIC8qIGVzbGludC1kaXNhYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG4gIGlmIChpc051bWJlcihzcGVjaWZpZWREb21haW5bMF0pKSB7XG4gICAgZG9tYWluWzBdID0gYWxsb3dEYXRhT3ZlcmZsb3cgPyBzcGVjaWZpZWREb21haW5bMF0gOiBNYXRoLm1pbihzcGVjaWZpZWREb21haW5bMF0sIGRhdGFEb21haW5bMF0pO1xuICB9IGVsc2UgaWYgKE1JTl9WQUxVRV9SRUcudGVzdChzcGVjaWZpZWREb21haW5bMF0pKSB7XG4gICAgdmFyIHZhbHVlID0gK01JTl9WQUxVRV9SRUcuZXhlYyhzcGVjaWZpZWREb21haW5bMF0pWzFdO1xuICAgIGRvbWFpblswXSA9IGRhdGFEb21haW5bMF0gLSB2YWx1ZTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHNwZWNpZmllZERvbWFpblswXSkpIHtcbiAgICBkb21haW5bMF0gPSBzcGVjaWZpZWREb21haW5bMF0oZGF0YURvbWFpblswXSk7XG4gIH0gZWxzZSB7XG4gICAgZG9tYWluWzBdID0gZGF0YURvbWFpblswXTtcbiAgfVxuICBpZiAoaXNOdW1iZXIoc3BlY2lmaWVkRG9tYWluWzFdKSkge1xuICAgIGRvbWFpblsxXSA9IGFsbG93RGF0YU92ZXJmbG93ID8gc3BlY2lmaWVkRG9tYWluWzFdIDogTWF0aC5tYXgoc3BlY2lmaWVkRG9tYWluWzFdLCBkYXRhRG9tYWluWzFdKTtcbiAgfSBlbHNlIGlmIChNQVhfVkFMVUVfUkVHLnRlc3Qoc3BlY2lmaWVkRG9tYWluWzFdKSkge1xuICAgIHZhciBfdmFsdWUgPSArTUFYX1ZBTFVFX1JFRy5leGVjKHNwZWNpZmllZERvbWFpblsxXSlbMV07XG4gICAgZG9tYWluWzFdID0gZGF0YURvbWFpblsxXSArIF92YWx1ZTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHNwZWNpZmllZERvbWFpblsxXSkpIHtcbiAgICBkb21haW5bMV0gPSBzcGVjaWZpZWREb21haW5bMV0oZGF0YURvbWFpblsxXSk7XG4gIH0gZWxzZSB7XG4gICAgZG9tYWluWzFdID0gZGF0YURvbWFpblsxXTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG5cbiAgcmV0dXJuIGRvbWFpbjtcbn07XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBzaXplIGJldHdlZW4gdHdvIGNhdGVnb3J5XG4gKiBAcGFyYW0gIHtPYmplY3R9IGF4aXMgIFRoZSBvcHRpb25zIG9mIGF4aXNcbiAqIEBwYXJhbSAge0FycmF5fSAgdGlja3MgVGhlIHRpY2tzIG9mIGF4aXNcbiAqIEBwYXJhbSAge0Jvb2xlYW59IGlzQmFyIGlmIGl0ZW1zIGluIGF4aXMgYXJlIGJhcnNcbiAqIEByZXR1cm4ge051bWJlcn0gU2l6ZVxuICovXG5leHBvcnQgdmFyIGdldEJhbmRTaXplT2ZBeGlzID0gZnVuY3Rpb24gZ2V0QmFuZFNpemVPZkF4aXMoYXhpcywgdGlja3MsIGlzQmFyKSB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3Igd2UgbmVlZCB0byByZXRoaW5rIHNjYWxlIHR5cGVcbiAgaWYgKGF4aXMgJiYgYXhpcy5zY2FsZSAmJiBheGlzLnNjYWxlLmJhbmR3aWR0aCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igd2UgbmVlZCB0byByZXRoaW5rIHNjYWxlIHR5cGVcbiAgICB2YXIgYmFuZFdpZHRoID0gYXhpcy5zY2FsZS5iYW5kd2lkdGgoKTtcbiAgICBpZiAoIWlzQmFyIHx8IGJhbmRXaWR0aCA+IDApIHtcbiAgICAgIHJldHVybiBiYW5kV2lkdGg7XG4gICAgfVxuICB9XG4gIGlmIChheGlzICYmIHRpY2tzICYmIHRpY2tzLmxlbmd0aCA+PSAyKSB7XG4gICAgdmFyIG9yZGVyZWRUaWNrcyA9IHNvcnRCeSh0aWNrcywgZnVuY3Rpb24gKG8pIHtcbiAgICAgIHJldHVybiBvLmNvb3JkaW5hdGU7XG4gICAgfSk7XG4gICAgdmFyIGJhbmRTaXplID0gSW5maW5pdHk7XG4gICAgZm9yICh2YXIgaSA9IDEsIGxlbiA9IG9yZGVyZWRUaWNrcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGN1ciA9IG9yZGVyZWRUaWNrc1tpXTtcbiAgICAgIHZhciBwcmV2ID0gb3JkZXJlZFRpY2tzW2kgLSAxXTtcbiAgICAgIGJhbmRTaXplID0gTWF0aC5taW4oKGN1ci5jb29yZGluYXRlIHx8IDApIC0gKHByZXYuY29vcmRpbmF0ZSB8fCAwKSwgYmFuZFNpemUpO1xuICAgIH1cbiAgICByZXR1cm4gYmFuZFNpemUgPT09IEluZmluaXR5ID8gMCA6IGJhbmRTaXplO1xuICB9XG4gIHJldHVybiBpc0JhciA/IHVuZGVmaW5lZCA6IDA7XG59O1xuLyoqXG4gKiBwYXJzZSB0aGUgZG9tYWluIG9mIGEgY2F0ZWdvcnkgYXhpcyB3aGVuIGEgZG9tYWluIGlzIHNwZWNpZmllZFxuICogQHBhcmFtICAge0FycmF5fSAgICAgICAgc3BlY2lmaWVkRG9tYWluICBUaGUgZG9tYWluIHNwZWNpZmllZCBieSB1c2Vyc1xuICogQHBhcmFtICAge0FycmF5fSAgICAgICAgY2FsY3VsYXRlZERvbWFpbiBUaGUgZG9tYWluIGNhbGN1bGF0ZWQgYnkgZGF0ZUtleVxuICogQHBhcmFtICAge1JlYWN0RWxlbWVudH0gYXhpc0NoaWxkICAgICAgICBUaGUgYXhpcyBSZWFjdEVsZW1lbnRcbiAqIEByZXR1cm5zIHtBcnJheX0gICAgICAgIGRvbWFpbnNcbiAqL1xuZXhwb3J0IHZhciBwYXJzZURvbWFpbk9mQ2F0ZWdvcnlBeGlzID0gZnVuY3Rpb24gcGFyc2VEb21haW5PZkNhdGVnb3J5QXhpcyhzcGVjaWZpZWREb21haW4sIGNhbGN1bGF0ZWREb21haW4sIGF4aXNDaGlsZCkge1xuICBpZiAoIXNwZWNpZmllZERvbWFpbiB8fCAhc3BlY2lmaWVkRG9tYWluLmxlbmd0aCkge1xuICAgIHJldHVybiBjYWxjdWxhdGVkRG9tYWluO1xuICB9XG4gIGlmIChpc0VxdWFsKHNwZWNpZmllZERvbWFpbiwgZ2V0KGF4aXNDaGlsZCwgJ3R5cGUuZGVmYXVsdFByb3BzLmRvbWFpbicpKSkge1xuICAgIHJldHVybiBjYWxjdWxhdGVkRG9tYWluO1xuICB9XG4gIHJldHVybiBzcGVjaWZpZWREb21haW47XG59O1xuZXhwb3J0IHZhciBnZXRUb29sdGlwSXRlbSA9IGZ1bmN0aW9uIGdldFRvb2x0aXBJdGVtKGdyYXBoaWNhbEl0ZW0sIHBheWxvYWQpIHtcbiAgdmFyIGRlZmF1bHRlZFByb3BzID0gZ3JhcGhpY2FsSXRlbS50eXBlLmRlZmF1bHRQcm9wcyA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZ3JhcGhpY2FsSXRlbS50eXBlLmRlZmF1bHRQcm9wcyksIGdyYXBoaWNhbEl0ZW0ucHJvcHMpIDogZ3JhcGhpY2FsSXRlbS5wcm9wcztcbiAgdmFyIGRhdGFLZXkgPSBkZWZhdWx0ZWRQcm9wcy5kYXRhS2V5LFxuICAgIG5hbWUgPSBkZWZhdWx0ZWRQcm9wcy5uYW1lLFxuICAgIHVuaXQgPSBkZWZhdWx0ZWRQcm9wcy51bml0LFxuICAgIGZvcm1hdHRlciA9IGRlZmF1bHRlZFByb3BzLmZvcm1hdHRlcixcbiAgICB0b29sdGlwVHlwZSA9IGRlZmF1bHRlZFByb3BzLnRvb2x0aXBUeXBlLFxuICAgIGNoYXJ0VHlwZSA9IGRlZmF1bHRlZFByb3BzLmNoYXJ0VHlwZSxcbiAgICBoaWRlID0gZGVmYXVsdGVkUHJvcHMuaGlkZTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyUHJvcHMoZ3JhcGhpY2FsSXRlbSwgZmFsc2UpKSwge30sIHtcbiAgICBkYXRhS2V5OiBkYXRhS2V5LFxuICAgIHVuaXQ6IHVuaXQsXG4gICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIsXG4gICAgbmFtZTogbmFtZSB8fCBkYXRhS2V5LFxuICAgIGNvbG9yOiBnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtKGdyYXBoaWNhbEl0ZW0pLFxuICAgIHZhbHVlOiBnZXRWYWx1ZUJ5RGF0YUtleShwYXlsb2FkLCBkYXRhS2V5KSxcbiAgICB0eXBlOiB0b29sdGlwVHlwZSxcbiAgICBwYXlsb2FkOiBwYXlsb2FkLFxuICAgIGNoYXJ0VHlwZTogY2hhcnRUeXBlLFxuICAgIGhpZGU6IGhpZGVcbiAgfSk7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJpc0FycmF5IiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsImQzU2NhbGVzIiwic3RhY2siLCJzaGFwZVN0YWNrIiwic3RhY2tPZmZzZXRFeHBhbmQiLCJzdGFja09mZnNldE5vbmUiLCJzdGFja09mZnNldFNpbGhvdWV0dGUiLCJzdGFja09mZnNldFdpZ2dsZSIsInN0YWNrT3JkZXJOb25lIiwibWF4IiwibWluIiwiaXNOaWwiLCJpc0Z1bmN0aW9uIiwiaXNTdHJpbmciLCJnZXQiLCJmbGF0TWFwIiwiaXNOYW4iLCJ1cHBlckZpcnN0IiwiaXNFcXVhbCIsInNvcnRCeSIsImdldE5pY2VUaWNrVmFsdWVzIiwiZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluIiwiRXJyb3JCYXIiLCJmaW5kRW50cnlJbkFycmF5IiwiZ2V0UGVyY2VudFZhbHVlIiwiaXNOdW1iZXIiLCJpc051bU9yU3RyIiwibWF0aFNpZ24iLCJ1bmlxdWVJZCIsImZpbHRlclByb3BzIiwiZmluZEFsbEJ5VHlwZSIsImdldERpc3BsYXlOYW1lIiwiZ2V0TGVnZW5kUHJvcHMiLCJnZXRWYWx1ZUJ5RGF0YUtleSIsImRhdGFLZXkiLCJkZWZhdWx0VmFsdWUiLCJnZXREb21haW5PZkRhdGFCeUtleSIsImRhdGEiLCJ0eXBlIiwiZmlsdGVyTmlsIiwiZmxhdHRlbkRhdGEiLCJlbnRyeSIsImRvbWFpbiIsInBhcnNlRmxvYXQiLCJJbmZpbml0eSIsInZhbGlkYXRlRGF0YSIsIm1hcCIsIkRhdGUiLCJjYWxjdWxhdGVBY3RpdmVUaWNrSW5kZXgiLCJjb29yZGluYXRlIiwiX3RpY2tzJGxlbmd0aCIsInRpY2tzIiwidW5kZWZpbmVkIiwidW5zb3J0ZWRUaWNrcyIsImF4aXMiLCJpbmRleCIsImF4aXNUeXBlIiwiTWF0aCIsImFicyIsInJhbmdlIiwiYmVmb3JlIiwiY3VyIiwiYWZ0ZXIiLCJzYW1lRGlyZWN0aW9uQ29vcmQiLCJkaWZmSW50ZXJ2YWwiLCJjdXJJblJhbmdlIiwiYWZ0ZXJJblJhbmdlIiwic2FtZUludGVydmFsIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsIl9pIiwiZ2V0TWFpbkNvbG9yT2ZHcmFwaGljSXRlbSIsIml0ZW0iLCJfaXRlbSR0eXBlIiwiX3JlZiIsImRpc3BsYXlOYW1lIiwiZGVmYXVsdGVkUHJvcHMiLCJkZWZhdWx0UHJvcHMiLCJwcm9wcyIsInN0cm9rZSIsImZpbGwiLCJyZXN1bHQiLCJnZXRCYXJTaXplTGlzdCIsIl9yZWYyIiwiZ2xvYmFsU2l6ZSIsImJhclNpemUiLCJ0b3RhbFNpemUiLCJfcmVmMiRzdGFja0dyb3VwcyIsInN0YWNrR3JvdXBzIiwibnVtZXJpY0F4aXNJZHMiLCJzZ3MiLCJzdGFja0lkcyIsImoiLCJzTGVuIiwiX3NncyRzdGFja0lkcyRqIiwiaXRlbXMiLCJjYXRlQXhpc0lkIiwiYmFySXRlbXMiLCJpbmRleE9mIiwiYmFySXRlbURlZmF1bHRQcm9wcyIsImJhckl0ZW1Qcm9wcyIsInNlbGZTaXplIiwiY2F0ZUlkIiwic3RhY2tMaXN0IiwiZ2V0QmFyUG9zaXRpb24iLCJfcmVmMyIsImJhckdhcCIsImJhckNhdGVnb3J5R2FwIiwiYmFuZFNpemUiLCJfcmVmMyRzaXplTGlzdCIsInNpemVMaXN0IiwibWF4QmFyU2l6ZSIsInJlYWxCYXJHYXAiLCJpbml0aWFsVmFsdWUiLCJ1c2VGdWxsIiwiZnVsbEJhclNpemUiLCJzdW0iLCJyZWR1Y2UiLCJyZXMiLCJvZmZzZXQiLCJwcmV2Iiwic2l6ZSIsIm5ld1Bvc2l0aW9uIiwicG9zaXRpb24iLCJuZXdSZXMiLCJjb25jYXQiLCJfb2Zmc2V0Iiwib3JpZ2luYWxTaXplIiwiYXBwZW5kT2Zmc2V0T2ZMZWdlbmQiLCJfdW51c2VkIiwibGVnZW5kQm94IiwiY2hpbGRyZW4iLCJ3aWR0aCIsIm1hcmdpbiIsImxlZ2VuZFdpZHRoIiwibGVmdCIsInJpZ2h0IiwibGVnZW5kUHJvcHMiLCJfcmVmNCIsImJveFdpZHRoIiwiYm94SGVpZ2h0IiwiaGVpZ2h0IiwiYWxpZ24iLCJ2ZXJ0aWNhbEFsaWduIiwibGF5b3V0IiwiaXNFcnJvckJhclJlbGV2YW50Rm9yQXhpcyIsImRpcmVjdGlvbiIsImdldERvbWFpbk9mRXJyb3JCYXJzIiwiZXJyb3JCYXJzIiwiZXJyb3JCYXJDaGlsZCIsImVudHJ5VmFsdWUiLCJtYWluVmFsdWUiLCJlcnJvckRvbWFpbiIsInByZXZFcnJvckFyciIsImsiLCJlcnJvclZhbHVlIiwibG93ZXJWYWx1ZSIsInVwcGVyVmFsdWUiLCJwYXJzZUVycm9yQmFyc09mQXhpcyIsImRvbWFpbnMiLCJnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzIiwidGFnIiwiaXNDYXRlZ29yaWNhbEF4aXMiLCJnZXRDb29yZGluYXRlc09mR3JpZCIsInN5bmNXaXRoVGlja3MiLCJoYXNNaW4iLCJoYXNNYXgiLCJ2YWx1ZXMiLCJnZXRUaWNrc09mQXhpcyIsImlzR3JpZCIsImlzQWxsIiwic2NhbGUiLCJkdXBsaWNhdGVEb21haW4iLCJvZmZzZXRGb3JCYW5kIiwicmVhbFNjYWxlVHlwZSIsImJhbmR3aWR0aCIsIm5pY2VUaWNrcyIsInNjYWxlQ29udGVudCIsInJvdyIsImlzQ2F0ZWdvcmljYWwiLCJjYXRlZ29yaWNhbERvbWFpbiIsInRpY2tDb3VudCIsImhhbmRsZXJXZWFrTWFwIiwiV2Vha01hcCIsImNvbWJpbmVFdmVudEhhbmRsZXJzIiwiZGVmYXVsdEhhbmRsZXIiLCJjaGlsZEhhbmRsZXIiLCJoYXMiLCJzZXQiLCJjaGlsZFdlYWtNYXAiLCJjb21iaW5lSGFuZGxlciIsInBhcnNlU2NhbGUiLCJjaGFydFR5cGUiLCJoYXNCYXIiLCJzY2FsZUJhbmQiLCJzY2FsZUxpbmVhciIsInNjYWxlUG9pbnQiLCJFUFMiLCJjaGVja0RvbWFpbk9mU2NhbGUiLCJmaXJzdCIsImxhc3QiLCJmaW5kUG9zaXRpb25PZkJhciIsImJhclBvc2l0aW9uIiwiY2hpbGQiLCJ0cnVuY2F0ZUJ5RG9tYWluIiwib2Zmc2V0U2lnbiIsInNlcmllcyIsIm0iLCJwb3NpdGl2ZSIsIm5lZ2F0aXZlIiwib2Zmc2V0UG9zaXRpdmUiLCJTVEFDS19PRkZTRVRfTUFQIiwic2lnbiIsImV4cGFuZCIsIm5vbmUiLCJzaWxob3VldHRlIiwid2lnZ2xlIiwiZ2V0U3RhY2tlZERhdGEiLCJzdGFja0l0ZW1zIiwib2Zmc2V0VHlwZSIsImRhdGFLZXlzIiwib2Zmc2V0QWNjZXNzb3IiLCJkIiwib3JkZXIiLCJnZXRTdGFja0dyb3Vwc0J5QXhpc0lkIiwiX2l0ZW1zIiwibnVtZXJpY0F4aXNJZCIsInJldmVyc2VTdGFja09yZGVyIiwicmV2ZXJzZSIsInBhcmVudFN0YWNrR3JvdXBzSW5pdGlhbFZhbHVlIiwiX2l0ZW0kdHlwZTIiLCJzdGFja0lkIiwiaGlkZSIsImF4aXNJZCIsInBhcmVudEdyb3VwIiwiaGFzU3RhY2siLCJjaGlsZEdyb3VwIiwiYXhpc1N0YWNrR3JvdXBzSW5pdGlhbFZhbHVlIiwiZ3JvdXAiLCJzdGFja0dyb3Vwc0luaXRpYWxWYWx1ZSIsImciLCJzdGFja2VkRGF0YSIsImdldFRpY2tzT2ZTY2FsZSIsIm9wdHMiLCJvcmlnaW5hbERvbWFpbiIsImFsbG93RGVjaW1hbHMiLCJzY2FsZVR5cGUiLCJ0aWNrVmFsdWVzIiwiX2RvbWFpbiIsIl90aWNrVmFsdWVzIiwiZ2V0Q2F0ZUNvb3JkaW5hdGVPZkxpbmUiLCJfcmVmNSIsImFsbG93RHVwbGljYXRlZENhdGVnb3J5IiwibWF0Y2hlZFRpY2siLCJnZXRDYXRlQ29vcmRpbmF0ZU9mQmFyIiwiX3JlZjYiLCJnZXRCYXNlVmFsdWVPZkJhciIsIl9yZWY3IiwibnVtZXJpY0F4aXMiLCJnZXRTdGFja2VkRGF0YU9mSXRlbSIsIl9pdGVtJHR5cGUzIiwiaXRlbUluZGV4IiwiZ2V0RG9tYWluT2ZTaW5nbGUiLCJnZXREb21haW5PZlN0YWNrR3JvdXBzIiwic3RhcnRJbmRleCIsImVuZEluZGV4IiwicyIsIk1JTl9WQUxVRV9SRUciLCJNQVhfVkFMVUVfUkVHIiwicGFyc2VTcGVjaWZpZWREb21haW4iLCJzcGVjaWZpZWREb21haW4iLCJkYXRhRG9tYWluIiwiYWxsb3dEYXRhT3ZlcmZsb3ciLCJleGVjIiwiX3ZhbHVlIiwiZ2V0QmFuZFNpemVPZkF4aXMiLCJpc0JhciIsImJhbmRXaWR0aCIsIm9yZGVyZWRUaWNrcyIsInBhcnNlRG9tYWluT2ZDYXRlZ29yeUF4aXMiLCJjYWxjdWxhdGVkRG9tYWluIiwiYXhpc0NoaWxkIiwiZ2V0VG9vbHRpcEl0ZW0iLCJncmFwaGljYWxJdGVtIiwicGF5bG9hZCIsInVuaXQiLCJmb3JtYXR0ZXIiLCJ0b29sdGlwVHlwZSIsImNvbG9yIl0sInNvdXJjZVJvb3QiOiIifQ==\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQ3NzUHJlZml4VXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0QsRUFBRTtRQUFHLEtBQUtFLE9BQU9hLHlCQUF5QixHQUFHYixPQUFPYyxnQkFBZ0IsQ0FBQ2pCLEdBQUdHLE9BQU9hLHlCQUF5QixDQUFDZCxNQUFNSCxRQUFRSSxPQUFPRCxJQUFJWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJRSxPQUFPZSxjQUFjLENBQUNsQixHQUFHQyxHQUFHRSxPQUFPSSx3QkFBd0IsQ0FBQ0wsR0FBR0Q7UUFBSztJQUFJO0lBQUUsT0FBT0Q7QUFBRztBQUN0YixTQUFTZSxnQkFBZ0JJLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxLQUFLO0lBQUlELE1BQU1FLGVBQWVGO0lBQU0sSUFBSUEsT0FBT0QsS0FBSztRQUFFaEIsT0FBT2UsY0FBYyxDQUFDQyxLQUFLQyxLQUFLO1lBQUVDLE9BQU9BO1lBQU9iLFlBQVk7WUFBTWUsY0FBYztZQUFNQyxVQUFVO1FBQUs7SUFBSSxPQUFPO1FBQUVMLEdBQUcsQ0FBQ0MsSUFBSSxHQUFHQztJQUFPO0lBQUUsT0FBT0Y7QUFBSztBQUMzTyxTQUFTRyxlQUFlcEIsQ0FBQztJQUFJLElBQUl1QixJQUFJQyxhQUFheEIsR0FBRztJQUFXLE9BQU8sWUFBWVQsUUFBUWdDLEtBQUtBLElBQUlBLElBQUk7QUFBSTtBQUM1RyxTQUFTQyxhQUFheEIsQ0FBQyxFQUFFRCxDQUFDO0lBQUksSUFBSSxZQUFZUixRQUFRUyxNQUFNLENBQUNBLEdBQUcsT0FBT0E7SUFBRyxJQUFJRixJQUFJRSxDQUFDLENBQUNQLE9BQU9nQyxXQUFXLENBQUM7SUFBRSxJQUFJLEtBQUssTUFBTTNCLEdBQUc7UUFBRSxJQUFJeUIsSUFBSXpCLEVBQUU0QixJQUFJLENBQUMxQixHQUFHRCxLQUFLO1FBQVksSUFBSSxZQUFZUixRQUFRZ0MsSUFBSSxPQUFPQTtRQUFHLE1BQU0sSUFBSUksVUFBVTtJQUFpRDtJQUFFLE9BQU8sQ0FBQyxhQUFhNUIsSUFBSTZCLFNBQVNDLE1BQUssRUFBRzdCO0FBQUk7QUFDM1QsSUFBSThCLGNBQWM7SUFBQztJQUFVO0lBQU87SUFBSztDQUFLO0FBQ3ZDLElBQUlDLHNCQUFzQixTQUFTQSxvQkFBb0JDLElBQUksRUFBRWIsS0FBSztJQUN2RSxJQUFJLENBQUNhLE1BQU07UUFDVCxPQUFPO0lBQ1Q7SUFDQSxJQUFJQyxZQUFZRCxLQUFLRSxPQUFPLENBQUMsUUFBUSxTQUFVQyxDQUFDO1FBQzlDLE9BQU9BLEVBQUVDLFdBQVc7SUFDdEI7SUFDQSxJQUFJQyxTQUFTUCxZQUFZUSxNQUFNLENBQUMsU0FBVUMsR0FBRyxFQUFFQyxLQUFLO1FBQ2xELE9BQU8vQixjQUFjQSxjQUFjLENBQUMsR0FBRzhCLE1BQU0sQ0FBQyxHQUFHMUIsZ0JBQWdCLENBQUMsR0FBRzJCLFFBQVFQLFdBQVdkO0lBQzFGLEdBQUcsQ0FBQztJQUNKa0IsTUFBTSxDQUFDTCxLQUFLLEdBQUdiO0lBQ2YsT0FBT2tCO0FBQ1QsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9Dc3NQcmVmaXhVdGlscy5qcz8zZDYzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG52YXIgUFJFRklYX0xJU1QgPSBbJ1dlYmtpdCcsICdNb3onLCAnTycsICdtcyddO1xuZXhwb3J0IHZhciBnZW5lcmF0ZVByZWZpeFN0eWxlID0gZnVuY3Rpb24gZ2VuZXJhdGVQcmVmaXhTdHlsZShuYW1lLCB2YWx1ZSkge1xuICBpZiAoIW5hbWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgY2FtZWxOYW1lID0gbmFtZS5yZXBsYWNlKC8oXFx3KS8sIGZ1bmN0aW9uICh2KSB7XG4gICAgcmV0dXJuIHYudG9VcHBlckNhc2UoKTtcbiAgfSk7XG4gIHZhciByZXN1bHQgPSBQUkVGSVhfTElTVC5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgZW50cnkpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXMpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBlbnRyeSArIGNhbWVsTmFtZSwgdmFsdWUpKTtcbiAgfSwge30pO1xuICByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJQUkVGSVhfTElTVCIsImdlbmVyYXRlUHJlZml4U3R5bGUiLCJuYW1lIiwiY2FtZWxOYW1lIiwicmVwbGFjZSIsInYiLCJ0b1VwcGVyQ2FzZSIsInJlc3VsdCIsInJlZHVjZSIsInJlcyIsImVudHJ5Il0sInNvdXJjZVJvb3QiOiIifQ==\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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QkFBZ0JJLFlBQVksQ0FBQyxNQUFNakM7WUFDbkM2QixnQkFBZ0JJLFlBQVksQ0FBQyxlQUFlO1lBQzVDSCxTQUFTSSxJQUFJLENBQUNDLFdBQVcsQ0FBQ047UUFDNUI7UUFDQSwrRkFBK0Y7UUFDL0Ysd0RBQXdEO1FBQ3hELElBQUlPLHVCQUF1QjFGLGNBQWNBLGNBQWMsQ0FBQyxHQUFHNkMsYUFBYWtDO1FBQ3hFdkYsT0FBT21HLE1BQU0sQ0FBQ1IsZ0JBQWdCYixLQUFLLEVBQUVvQjtRQUNyQ1AsZ0JBQWdCUyxXQUFXLEdBQUcsR0FBR25DLE1BQU0sQ0FBQ0U7UUFDeEMsSUFBSWtDLE9BQU9WLGdCQUFnQlcscUJBQXFCO1FBQ2hELElBQUk5QixTQUFTO1lBQ1hhLE9BQU9nQixLQUFLaEIsS0FBSztZQUNqQkMsUUFBUWUsS0FBS2YsTUFBTTtRQUNyQjtRQUNBckMsWUFBWUMsVUFBVSxDQUFDc0MsU0FBUyxHQUFHaEI7UUFDbkMsSUFBSSxFQUFFdkIsWUFBWUUsVUFBVSxHQUFHQyxlQUFlO1lBQzVDSCxZQUFZRSxVQUFVLEdBQUc7WUFDekJGLFlBQVlDLFVBQVUsR0FBRyxDQUFDO1FBQzVCO1FBQ0EsT0FBT3NCO0lBQ1QsRUFBRSxPQUFPM0UsR0FBRztRQUNWLE9BQU87WUFDTHdGLE9BQU87WUFDUEMsUUFBUTtRQUNWO0lBQ0Y7QUFDRixFQUFFO0FBQ0ssSUFBSWlCLFlBQVksU0FBU0EsVUFBVUYsSUFBSTtJQUM1QyxPQUFPO1FBQ0w5QyxLQUFLOEMsS0FBSzlDLEdBQUcsR0FBR2lELE9BQU9DLE9BQU8sR0FBR2IsU0FBU2MsZUFBZSxDQUFDQyxTQUFTO1FBQ25FbkQsTUFBTTZDLEtBQUs3QyxJQUFJLEdBQUdnRCxPQUFPSSxPQUFPLEdBQUdoQixTQUFTYyxlQUFlLENBQUNHLFVBQVU7SUFDeEU7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0RPTVV0aWxzLmpzPzYxZjMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KGFycik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuL0dsb2JhbCc7XG52YXIgc3RyaW5nQ2FjaGUgPSB7XG4gIHdpZHRoQ2FjaGU6IHt9LFxuICBjYWNoZUNvdW50OiAwXG59O1xudmFyIE1BWF9DQUNIRV9OVU0gPSAyMDAwO1xudmFyIFNQQU5fU1RZTEUgPSB7XG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICB0b3A6ICctMjAwMDBweCcsXG4gIGxlZnQ6IDAsXG4gIHBhZGRpbmc6IDAsXG4gIG1hcmdpbjogMCxcbiAgYm9yZGVyOiAnbm9uZScsXG4gIHdoaXRlU3BhY2U6ICdwcmUnXG59O1xudmFyIFNUWUxFX0xJU1QgPSBbJ21pbldpZHRoJywgJ21heFdpZHRoJywgJ3dpZHRoJywgJ21pbkhlaWdodCcsICdtYXhIZWlnaHQnLCAnaGVpZ2h0JywgJ3RvcCcsICdsZWZ0JywgJ2ZvbnRTaXplJywgJ2xpbmVIZWlnaHQnLCAncGFkZGluZycsICdtYXJnaW4nLCAncGFkZGluZ0xlZnQnLCAncGFkZGluZ1JpZ2h0JywgJ3BhZGRpbmdUb3AnLCAncGFkZGluZ0JvdHRvbScsICdtYXJnaW5MZWZ0JywgJ21hcmdpblJpZ2h0JywgJ21hcmdpblRvcCcsICdtYXJnaW5Cb3R0b20nXTtcbnZhciBNRUFTVVJFTUVOVF9TUEFOX0lEID0gJ3JlY2hhcnRzX21lYXN1cmVtZW50X3NwYW4nO1xuZnVuY3Rpb24gYXV0b0NvbXBsZXRlU3R5bGUobmFtZSwgdmFsdWUpIHtcbiAgaWYgKFNUWUxFX0xJU1QuaW5kZXhPZihuYW1lKSA+PSAwICYmIHZhbHVlID09PSArdmFsdWUpIHtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQodmFsdWUsIFwicHhcIik7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gY2FtZWxUb01pZGRsZUxpbmUodGV4dCkge1xuICB2YXIgc3RycyA9IHRleHQuc3BsaXQoJycpO1xuICB2YXIgZm9ybWF0U3RycyA9IHN0cnMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGVudHJ5KSB7XG4gICAgaWYgKGVudHJ5ID09PSBlbnRyeS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXN1bHQpLCBbJy0nLCBlbnRyeS50b0xvd2VyQ2FzZSgpXSk7XG4gICAgfVxuICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlc3VsdCksIFtlbnRyeV0pO1xuICB9LCBbXSk7XG4gIHJldHVybiBmb3JtYXRTdHJzLmpvaW4oJycpO1xufVxuZXhwb3J0IHZhciBnZXRTdHlsZVN0cmluZyA9IGZ1bmN0aW9uIGdldFN0eWxlU3RyaW5nKHN0eWxlKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhzdHlsZSkucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIHMpIHtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQocmVzdWx0KS5jb25jYXQoY2FtZWxUb01pZGRsZUxpbmUocyksIFwiOlwiKS5jb25jYXQoYXV0b0NvbXBsZXRlU3R5bGUocywgc3R5bGVbc10pLCBcIjtcIik7XG4gIH0sICcnKTtcbn07XG5mdW5jdGlvbiByZW1vdmVJbnZhbGlkS2V5cyhvYmopIHtcbiAgdmFyIGNvcHlPYmogPSBfb2JqZWN0U3ByZWFkKHt9LCBvYmopO1xuICBPYmplY3Qua2V5cyhjb3B5T2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoIWNvcHlPYmpba2V5XSkge1xuICAgICAgZGVsZXRlIGNvcHlPYmpba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY29weU9iajtcbn1cbmV4cG9ydCB2YXIgZ2V0U3RyaW5nU2l6ZSA9IGZ1bmN0aW9uIGdldFN0cmluZ1NpemUodGV4dCkge1xuICB2YXIgc3R5bGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICBpZiAodGV4dCA9PT0gdW5kZWZpbmVkIHx8IHRleHQgPT09IG51bGwgfHwgR2xvYmFsLmlzU3NyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgfVxuICB2YXIgY29weVN0eWxlID0gcmVtb3ZlSW52YWxpZEtleXMoc3R5bGUpO1xuICB2YXIgY2FjaGVLZXkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgdGV4dDogdGV4dCxcbiAgICBjb3B5U3R5bGU6IGNvcHlTdHlsZVxuICB9KTtcbiAgaWYgKHN0cmluZ0NhY2hlLndpZHRoQ2FjaGVbY2FjaGVLZXldKSB7XG4gICAgcmV0dXJuIHN0cmluZ0NhY2hlLndpZHRoQ2FjaGVbY2FjaGVLZXldO1xuICB9XG4gIHRyeSB7XG4gICAgdmFyIG1lYXN1cmVtZW50U3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE1FQVNVUkVNRU5UX1NQQU5fSUQpO1xuICAgIGlmICghbWVhc3VyZW1lbnRTcGFuKSB7XG4gICAgICBtZWFzdXJlbWVudFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICBtZWFzdXJlbWVudFNwYW4uc2V0QXR0cmlidXRlKCdpZCcsIE1FQVNVUkVNRU5UX1NQQU5fSUQpO1xuICAgICAgbWVhc3VyZW1lbnRTcGFuLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtZWFzdXJlbWVudFNwYW4pO1xuICAgIH1cbiAgICAvLyBOZWVkIHRvIHVzZSBDU1MgT2JqZWN0IE1vZGVsIChDU1NPTSkgdG8gYmUgYWJsZSB0byBjb21wbHkgd2l0aCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKVxuICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnRlbnRfU2VjdXJpdHlfUG9saWN5XG4gICAgdmFyIG1lYXN1cmVtZW50U3BhblN0eWxlID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBTUEFOX1NUWUxFKSwgY29weVN0eWxlKTtcbiAgICBPYmplY3QuYXNzaWduKG1lYXN1cmVtZW50U3Bhbi5zdHlsZSwgbWVhc3VyZW1lbnRTcGFuU3R5bGUpO1xuICAgIG1lYXN1cmVtZW50U3Bhbi50ZXh0Q29udGVudCA9IFwiXCIuY29uY2F0KHRleHQpO1xuICAgIHZhciByZWN0ID0gbWVhc3VyZW1lbnRTcGFuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHZhciByZXN1bHQgPSB7XG4gICAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgICB9O1xuICAgIHN0cmluZ0NhY2hlLndpZHRoQ2FjaGVbY2FjaGVLZXldID0gcmVzdWx0O1xuICAgIGlmICgrK3N0cmluZ0NhY2hlLmNhY2hlQ291bnQgPiBNQVhfQ0FDSEVfTlVNKSB7XG4gICAgICBzdHJpbmdDYWNoZS5jYWNoZUNvdW50ID0gMDtcbiAgICAgIHN0cmluZ0NhY2hlLndpZHRoQ2FjaGUgPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gIH1cbn07XG5leHBvcnQgdmFyIGdldE9mZnNldCA9IGZ1bmN0aW9uIGdldE9mZnNldChyZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiByZWN0LnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFRvcCxcbiAgICBsZWZ0OiByZWN0LmxlZnQgKyB3aW5kb3cuc2Nyb2xsWCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRMZWZ0XG4gIH07XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJpc0FycmF5IiwibGVuIiwiYXJyMiIsIkdsb2JhbCIsInN0cmluZ0NhY2hlIiwid2lkdGhDYWNoZSIsImNhY2hlQ291bnQiLCJNQVhfQ0FDSEVfTlVNIiwiU1BBTl9TVFlMRSIsInBvc2l0aW9uIiwidG9wIiwibGVmdCIsInBhZGRpbmciLCJtYXJnaW4iLCJib3JkZXIiLCJ3aGl0ZVNwYWNlIiwiU1RZTEVfTElTVCIsIk1FQVNVUkVNRU5UX1NQQU5fSUQiLCJhdXRvQ29tcGxldGVTdHlsZSIsImluZGV4T2YiLCJjb25jYXQiLCJjYW1lbFRvTWlkZGxlTGluZSIsInRleHQiLCJzdHJzIiwic3BsaXQiLCJmb3JtYXRTdHJzIiwicmVkdWNlIiwicmVzdWx0IiwiZW50cnkiLCJ0b1VwcGVyQ2FzZSIsInRvTG93ZXJDYXNlIiwiam9pbiIsImdldFN0eWxlU3RyaW5nIiwic3R5bGUiLCJzIiwicmVtb3ZlSW52YWxpZEtleXMiLCJjb3B5T2JqIiwiZ2V0U3RyaW5nU2l6ZSIsInVuZGVmaW5lZCIsImlzU3NyIiwid2lkdGgiLCJoZWlnaHQiLCJjb3B5U3R5bGUiLCJjYWNoZUtleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtZWFzdXJlbWVudFNwYW4iLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIm1lYXN1cmVtZW50U3BhblN0eWxlIiwiYXNzaWduIiwidGV4dENvbnRlbnQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0T2Zmc2V0Iiwid2luZG93Iiwic2Nyb2xsWSIsImRvY3VtZW50RWxlbWVudCIsImNsaWVudFRvcCIsInNjcm9sbFgiLCJjbGllbnRMZWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==\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 */ 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\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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRGF0YVV0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXVDO0FBQ047QUFDSjtBQUNnQjtBQUN0QyxJQUFJSSxXQUFXLFNBQVNBLFNBQVNDLEtBQUs7SUFDM0MsSUFBSUEsVUFBVSxHQUFHO1FBQ2YsT0FBTztJQUNUO0lBQ0EsSUFBSUEsUUFBUSxHQUFHO1FBQ2IsT0FBTztJQUNUO0lBQ0EsT0FBTyxDQUFDO0FBQ1YsRUFBRTtBQUNLLElBQUlDLFlBQVksU0FBU0EsVUFBVUQsS0FBSztJQUM3QyxPQUFPTCxzREFBUUEsQ0FBQ0ssVUFBVUEsTUFBTUUsT0FBTyxDQUFDLFNBQVNGLE1BQU1HLE1BQU0sR0FBRztBQUNsRSxFQUFFO0FBQ0ssSUFBSUMsV0FBVyxTQUFTQSxTQUFTSixLQUFLO0lBQzNDLE9BQU9GLHNEQUFjQSxDQUFDRSxVQUFVLENBQUNKLG1EQUFLQSxDQUFDSTtBQUN6QyxFQUFFO0FBQ0ssSUFBSUssYUFBYSxTQUFTQSxXQUFXTCxLQUFLO0lBQy9DLE9BQU9JLFNBQVNKLFVBQVVMLHNEQUFRQSxDQUFDSztBQUNyQyxFQUFFO0FBQ0YsSUFBSU0sWUFBWTtBQUNULElBQUlDLFdBQVcsU0FBU0EsU0FBU0MsTUFBTTtJQUM1QyxJQUFJQyxLQUFLLEVBQUVIO0lBQ1gsT0FBTyxHQUFHSSxNQUFNLENBQUNGLFVBQVUsSUFBSUUsTUFBTSxDQUFDRDtBQUN4QyxFQUFFO0FBRUY7Ozs7Ozs7Q0FPQyxHQUNNLElBQUlFLGtCQUFrQixTQUFTQSxnQkFBZ0JDLE9BQU8sRUFBRUMsVUFBVTtJQUN2RSxJQUFJQyxlQUFlQyxVQUFVWixNQUFNLEdBQUcsS0FBS1ksU0FBUyxDQUFDLEVBQUUsS0FBS0MsWUFBWUQsU0FBUyxDQUFDLEVBQUUsR0FBRztJQUN2RixJQUFJRSxXQUFXRixVQUFVWixNQUFNLEdBQUcsS0FBS1ksU0FBUyxDQUFDLEVBQUUsS0FBS0MsWUFBWUQs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UUFDUk4sU0FBU0ssV0FBV0M7UUFDcEJMLFNBQVNJLFdBQVdBO1FBQ3BCSCxPQUFPTyxLQUFLQyxHQUFHLENBQUNSLE1BQU1HO1FBQ3RCRCxPQUFPSyxLQUFLRSxHQUFHLENBQUNQLE1BQU1DO0lBQ3hCO0lBQ0EsSUFBSU8sSUFBSTVCLE1BQU1pQixVQUFVSCxPQUFPQSxPQUFPLENBQUNkLE1BQU1nQixRQUFRRixPQUFPQyxJQUFHLElBQU1mLENBQUFBLE1BQU1pQixRQUFRSCxPQUFPQSxJQUFHLElBQUs7SUFDbEcsT0FBTztRQUNMSSxNQUFNQTtRQUNORSxNQUFNQTtRQUNOUSxHQUFHQTtRQUNIQyxHQUFHLENBQUNkLE9BQU9hLElBQUlkLElBQUcsSUFBS2Q7SUFDekI7QUFDRixFQUFFO0FBRUY7Ozs7Ozs7Ozs7Ozs7Q0FhQyxHQUNNLElBQUk4QixnQkFBZ0IsU0FBU0EsY0FBY0YsQ0FBQyxFQUFFQyxDQUFDO0lBQ3BELElBQUl0RCxTQUFTcUQsTUFBTXJELFNBQVNzRCxJQUFJO1FBQzlCLE9BQU9ELElBQUlDO0lBQ2I7SUFDQSxJQUFJL0Qsc0RBQVFBLENBQUM4RCxNQUFNOUQsc0RBQVFBLENBQUMrRCxJQUFJO1FBQzlCLE9BQU9ELEVBQUVHLGFBQWEsQ0FBQ0Y7SUFDekI7SUFDQSxJQUFJRCxhQUFhSSxRQUFRSCxhQUFhRyxNQUFNO1FBQzFDLE9BQU9KLEVBQUVLLE9BQU8sS0FBS0osRUFBRUksT0FBTztJQUNoQztJQUNBLE9BQU9DLE9BQU9OLEdBQUdHLGFBQWEsQ0FBQ0csT0FBT0w7QUFDeEMsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9EYXRhVXRpbHMuanM/ZjZlMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCBpc05hbiBmcm9tICdsb2Rhc2gvaXNOYU4nO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBsb2Rhc2hJc051bWJlciBmcm9tICdsb2Rhc2gvaXNOdW1iZXInO1xuZXhwb3J0IHZhciBtYXRoU2lnbiA9IGZ1bmN0aW9uIG1hdGhTaWduKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh2YWx1ZSA+IDApIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gLTE7XG59O1xuZXhwb3J0IHZhciBpc1BlcmNlbnQgPSBmdW5jdGlvbiBpc1BlcmNlbnQodmFsdWUpIHtcbiAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSAmJiB2YWx1ZS5pbmRleE9mKCclJykgPT09IHZhbHVlLmxlbmd0aCAtIDE7XG59O1xuZXhwb3J0IHZhciBpc051bWJlciA9IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiBsb2Rhc2hJc051bWJlcih2YWx1ZSkgJiYgIWlzTmFuKHZhbHVlKTtcbn07XG5leHBvcnQgdmFyIGlzTnVtT3JTdHIgPSBmdW5jdGlvbiBpc051bU9yU3RyKHZhbHVlKSB7XG4gIHJldHVybiBpc051bWJlcih2YWx1ZSkgfHwgaXNTdHJpbmcodmFsdWUpO1xufTtcbnZhciBpZENvdW50ZXIgPSAwO1xuZXhwb3J0IHZhciB1bmlxdWVJZCA9IGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICB2YXIgaWQgPSArK2lkQ291bnRlcjtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KHByZWZpeCB8fCAnJykuY29uY2F0KGlkKTtcbn07XG5cbi8qKlxuICogR2V0IHBlcmNlbnQgdmFsdWUgb2YgYSB0b3RhbCB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBwZXJjZW50IEEgcGVyY2VudFxuICogQHBhcmFtIHtudW1iZXJ9IHRvdGFsVmFsdWUgICAgIFRvdGFsIHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gZGVmYXVsdFZhbHVlICAgVGhlIHZhbHVlIHJldHVybmVkIHdoZW4gcGVyY2VudCBpcyB1bmRlZmluZWQgb3IgaW52YWxpZFxuICogQHBhcmFtIHtib29sZWFufSB2YWxpZGF0ZSAgICAgIElmIHNldCB0byBiZSB0cnVlLCB0aGUgcmVzdWx0IHdpbGwgYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHZhbHVlXG4gKi9cbmV4cG9ydCB2YXIgZ2V0UGVyY2VudFZhbHVlID0gZnVuY3Rpb24gZ2V0UGVyY2VudFZhbHVlKHBlcmNlbnQsIHRvdGFsVmFsdWUpIHtcbiAgdmFyIGRlZmF1bHRWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMDtcbiAgdmFyIHZhbGlkYXRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBmYWxzZTtcbiAgaWYgKCFpc051bWJlcihwZXJjZW50KSAmJiAhaXNTdHJpbmcocGVyY2VudCkpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG4gIHZhciB2YWx1ZTtcbiAgaWYgKGlzUGVyY2VudChwZXJjZW50KSkge1xuICAgIHZhciBpbmRleCA9IHBlcmNlbnQuaW5kZXhPZignJScpO1xuICAgIHZhbHVlID0gdG90YWxWYWx1ZSAqIHBhcnNlRmxvYXQocGVyY2VudC5zbGljZSgwLCBpbmRleCkpIC8gMTAwO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gK3BlcmNlbnQ7XG4gIH1cbiAgaWYgKGlzTmFuKHZhbHVlKSkge1xuICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICB9XG4gIGlmICh2YWxpZGF0ZSAmJiB2YWx1ZSA+IHRvdGFsVmFsdWUpIHtcbiAgICB2YWx1ZSA9IHRvdGFsVmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcbmV4cG9ydCB2YXIgZ2V0QW55RWxlbWVudE9mT2JqZWN0ID0gZnVuY3Rpb24gZ2V0QW55RWxlbWVudE9mT2JqZWN0KG9iaikge1xuICBpZiAoIW9iaikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgaWYgKGtleXMgJiYga2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gb2JqW2tleXNbMF1dO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmV4cG9ydCB2YXIgaGFzRHVwbGljYXRlID0gZnVuY3Rpb24gaGFzRHVwbGljYXRlKGFyeSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJ5KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGVuID0gYXJ5Lmxlbmd0aDtcbiAgdmFyIGNhY2hlID0ge307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoIWNhY2hlW2FyeVtpXV0pIHtcbiAgICAgIGNhY2hlW2FyeVtpXV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyogQHRvZG8gY29uc2lkZXIgdG8gcmVuYW1lIHRoaXMgZnVuY3Rpb24gaW50byBgZ2V0SW50ZXJwb2xhdG9yYCAqL1xuZXhwb3J0IHZhciBpbnRlcnBvbGF0ZU51bWJlciA9IGZ1bmN0aW9uIGludGVycG9sYXRlTnVtYmVyKG51bWJlckEsIG51bWJlckIpIHtcbiAgaWYgKGlzTnVtYmVyKG51bWJlckEpICYmIGlzTnVtYmVyKG51bWJlckIpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0KSB7XG4gICAgICByZXR1cm4gbnVtYmVyQSArIHQgKiAobnVtYmVyQiAtIG51bWJlckEpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbnVtYmVyQjtcbiAgfTtcbn07XG5leHBvcnQgZnVuY3Rpb24gZmluZEVudHJ5SW5BcnJheShhcnksIHNwZWNpZmllZEtleSwgc3BlY2lmaWVkVmFsdWUpIHtcbiAgaWYgKCFhcnkgfHwgIWFyeS5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gYXJ5LmZpbmQoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIGVudHJ5ICYmICh0eXBlb2Ygc3BlY2lmaWVkS2V5ID09PSAnZnVuY3Rpb24nID8gc3BlY2lmaWVkS2V5KGVudHJ5KSA6IGdldChlbnRyeSwgc3BlY2lmaWVkS2V5KSkgPT09IHNwZWNpZmllZFZhbHVlO1xuICB9KTtcbn1cblxuLyoqXG4gKiBUaGUgbGVhc3Qgc3F1YXJlIGxpbmVhciByZWdyZXNzaW9uXG4gKiBAcGFyYW0ge0FycmF5fSBkYXRhIFRoZSBhcnJheSBvZiBwb2ludHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBkb21haW4gb2YgeCwgYW5kIHRoZSBwYXJhbWV0ZXIgb2YgbGluZWFyIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCB2YXIgZ2V0TGluZWFyUmVncmVzc2lvbiA9IGZ1bmN0aW9uIGdldExpbmVhclJlZ3Jlc3Npb24oZGF0YSkge1xuICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoO1xuICB2YXIgeHN1bSA9IDA7XG4gIHZhciB5c3VtID0gMDtcbiAgdmFyIHh5c3VtID0gMDtcbiAgdmFyIHh4c3VtID0gMDtcbiAgdmFyIHhtaW4gPSBJbmZpbml0eTtcbiAgdmFyIHhtYXggPSAtSW5maW5pdHk7XG4gIHZhciB4Y3VycmVudCA9IDA7XG4gIHZhciB5Y3VycmVudCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB4Y3VycmVudCA9IGRhdGFbaV0uY3ggfHwgMDtcbiAgICB5Y3VycmVudCA9IGRhdGFbaV0uY3kgfHwgMDtcbiAgICB4c3VtICs9IHhjdXJyZW50O1xuICAgIHlzdW0gKz0geWN1cnJlbnQ7XG4gICAgeHlzdW0gKz0geGN1cnJlbnQgKiB5Y3VycmVudDtcbiAgICB4eHN1bSArPSB4Y3VycmVudCAqIHhjdXJyZW50O1xuICAgIHhtaW4gPSBNYXRoLm1pbih4bWluLCB4Y3VycmVudCk7XG4gICAgeG1heCA9IE1hdGgubWF4KHhtYXgsIHhjdXJyZW50KTtcbiAgfVxuICB2YXIgYSA9IGxlbiAqIHh4c3VtICE9PSB4c3VtICogeHN1bSA/IChsZW4gKiB4eXN1bSAtIHhzdW0gKiB5c3VtKSAvIChsZW4gKiB4eHN1bSAtIHhzdW0gKiB4c3VtKSA6IDA7XG4gIHJldHVybiB7XG4gICAgeG1pbjogeG1pbixcbiAgICB4bWF4OiB4bWF4LFxuICAgIGE6IGEsXG4gICAgYjogKHlzdW0gLSBhICogeHN1bSkgLyBsZW5cbiAgfTtcbn07XG5cbi8qKlxuICogQ29tcGFyZSB2YWx1ZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBwYXNzZWQgdG8gYEFycmF5LnByb3RvdHlwZS5zb3J0KClgLiBJdCBwcm9wZXJseSBjb21wYXJlcyBnZW5lcmljIGhvbW9nZW5lb3VzIGFycmF5cyB0aGF0IGFyZSBlaXRoZXIgYHN0cmluZ1tdYCxcbiAqIGBudW1iZXJbXWAsIG9yIGBEYXRlW11gLiBXaGVuIGNvbXBhcmluZyBoZXRlcm9nZW5lb3VzIGFycmF5cyBvciBob21vZ2VuZW91cyBhcnJheXMgb2Ygb3RoZXIgdHlwZXMsIGl0IHdpbGwgYXR0ZW1wdCB0byBjb21wYXJlIGl0ZW1zIHByb3Blcmx5IGJ1dFxuICogd2lsbCBmYWxsIGJhY2sgdG8gc3RyaW5nIGNvbXBhcmlzb24gZm9yIG1pc21hdGNoZWQgb3IgdW5zdXBwb3J0ZWQgdHlwZXMuXG4gKlxuICogRm9yIHNvbWUgYmFja2dyb3VuZCwgYEFycmF5LnByb3RvdHlwZS5zb3J0KClgJ3MgZGVmYXVsdCBjb21wYXJhdG9yIGNvZXJjZXMgZWFjaCBvZiB0aGUgYXJyYXkncyBpdGVtcyBpbnRvIGEgc3RyaW5nIGFuZCBjb21wYXJlcyB0aGUgc3RyaW5ncy4gVGhpc1xuICogb2Z0ZW4gbGVhZHMgdG8gdW5kZXNpcmFibGUgYmVoYXZpb3IsIGVzcGVjaWFsbHkgd2l0aCBudW1lcmljYWwgaXRlbXMuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSBhIFRoZSBmaXJzdCBpdGVtIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSB7dW5rbm93bn0gYiBUaGUgc2Vjb25kIGl0ZW0gdG8gY29tcGFyZVxuICogQHJldHVybiB7bnVtYmVyfSBBIG5lZ2F0aXZlIG51bWJlciBpZiBhIDwgYiwgYSBwb3NpdGl2ZSBudW1iZXIgaWYgYSA+IGIsIDAgaWYgZXF1YWxcbiAqL1xuZXhwb3J0IHZhciBjb21wYXJlVmFsdWVzID0gZnVuY3Rpb24gY29tcGFyZVZhbHVlcyhhLCBiKSB7XG4gIGlmIChpc051bWJlcihhKSAmJiBpc051bWJlcihiKSkge1xuICAgIHJldHVybiBhIC0gYjtcbiAgfVxuICBpZiAoaXNTdHJpbmcoYSkgJiYgaXNTdHJpbmcoYikpIHtcbiAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpO1xuICB9XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBhLmdldFRpbWUoKSAtIGIuZ2V0VGltZSgpO1xuICB9XG4gIHJldHVybiBTdHJpbmcoYSkubG9jYWxlQ29tcGFyZShTdHJpbmcoYikpO1xufTsiXSwibmFtZXMiOlsiaXNTdHJpbmciLCJpc05hbiIsImdldCIsImxvZGFzaElzTnVtYmVyIiwibWF0aFNpZ24iLCJ2YWx1ZSIsImlzUGVyY2VudCIsImluZGV4T2YiLCJsZW5ndGgiLCJpc051bWJlciIsImlzTnVtT3JTdHIiLCJpZENvdW50ZXIiLCJ1bmlxdWVJZCIsInByZWZpeCIsImlkIiwiY29uY2F0IiwiZ2V0UGVyY2VudFZhbHVlIiwicGVyY2VudCIsInRvdGFsVmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJ2YWxpZGF0ZSIsImluZGV4IiwicGFyc2VGbG9hdCIsInNsaWNlIiwiZ2V0QW55RWxlbWVudE9mT2JqZWN0Iiwib2JqIiwia2V5cyIsIk9iamVjdCIsImhhc0R1cGxpY2F0ZSIsImFyeSIsIkFycmF5IiwiaXNBcnJheSIsImxlbiIsImNhY2hlIiwiaSIsImludGVycG9sYXRlTnVtYmVyIiwibnVtYmVyQSIsIm51bWJlckIiLCJ0IiwiZmluZEVudHJ5SW5BcnJheSIsInNwZWNpZmllZEtleSIsInNwZWNpZmllZFZhbHVlIiwiZmluZCIsImVudHJ5IiwiZ2V0TGluZWFyUmVncmVzc2lvbiIsImRhdGEiLCJ4c3VtIiwieXN1bSIsInh5c3VtIiwieHhzdW0iLCJ4bWluIiwiSW5maW5pdHkiLCJ4bWF4IiwieGN1cnJlbnQiLCJ5Y3VycmVudCIsImN4IiwiY3kiLCJNYXRoIiwibWluIiwibWF4IiwiYSIsImIiLCJjb21wYXJlVmFsdWVzIiwibG9jYWxlQ29tcGFyZSIsIkRhdGUiLCJnZXRUaW1lIiwiU3RyaW5nIl0sInNvdXJjZVJvb3QiOiIifQ==\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLFNBQVNBLG1CQUFtQkMsR0FBRztJQUFJLE9BQU9DLG1CQUFtQkQsUUFBUUUsaUJBQWlCRixRQUFRRyw0QkFBNEJILFFBQVFJO0FBQXNCO0FBQ3hKLFNBQVNBO0lBQXVCLE1BQU0sSUFBSUMsVUFBVTtBQUF5STtBQUM3TCxTQUFTRiw0QkFBNEJHLENBQUMsRUFBRUMsTUFBTTtJQUFJLElBQUksQ0FBQ0QsR0FBRztJQUFRLElBQUksT0FBT0EsTUFBTSxVQUFVLE9BQU9FLGtCQUFrQkYsR0FBR0M7SUFBUyxJQUFJRSxJQUFJQyxPQUFPQyxTQUFTLENBQUNDLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDUCxHQUFHUSxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQUksSUFBSUwsTUFBTSxZQUFZSCxFQUFFUyxXQUFXLEVBQUVOLElBQUlILEVBQUVTLFdBQVcsQ0FBQ0MsSUFBSTtJQUFFLElBQUlQLE1BQU0sU0FBU0EsTUFBTSxPQUFPLE9BQU9RLE1BQU1DLElBQUksQ0FBQ1o7SUFBSSxJQUFJRyxNQUFNLGVBQWUsMkNBQTJDVSxJQUFJLENBQUNWLElBQUksT0FBT0Qsa0JBQWtCRixHQUFHQztBQUFTO0FBQy9aLFNBQVNMLGlCQUFpQmtCLElBQUk7SUFBSSxJQUFJLE9BQU9DLFdBQVcsZUFBZUQsSUFBSSxDQUFDQyxPQUFPQyxRQUFRLENBQUMsSUFBSSxRQUFRRixJQUFJLENBQUMsYUFBYSxJQUFJLE1BQU0sT0FBT0gsTUFBTUMsSUFBSSxDQUFDRTtBQUFPO0FBQzdKLFNBQVNuQixtQkFBbUJELEdBQUc7SUFBSSxJQUFJaUIsTUFBTU0sT0FBTyxDQUFDdkIsTUFBTSxPQUFPUSxrQkFBa0JSO0FBQU07QUFDMUYsU0FBU1Esa0JBQWtCUixHQUFHLEVBQUV3QixHQUFHO0lBQUksSUFBSUEsT0FBTyxRQUFRQSxN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Iiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0RldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluLmpzP2Y3OTYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkoYXJyKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmltcG9ydCB7IFJlZmVyZW5jZURvdCB9IGZyb20gJy4uL2NhcnRlc2lhbi9SZWZlcmVuY2VEb3QnO1xuaW1wb3J0IHsgUmVmZXJlbmNlTGluZSB9IGZyb20gJy4uL2NhcnRlc2lhbi9SZWZlcmVuY2VMaW5lJztcbmltcG9ydCB7IFJlZmVyZW5jZUFyZWEgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vUmVmZXJlbmNlQXJlYSc7XG5pbXBvcnQgeyBpZk92ZXJmbG93TWF0Y2hlcyB9IGZyb20gJy4vSWZPdmVyZmxvd01hdGNoZXMnO1xuaW1wb3J0IHsgZmluZEFsbEJ5VHlwZSB9IGZyb20gJy4vUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4vRGF0YVV0aWxzJztcbmV4cG9ydCB2YXIgZGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4gPSBmdW5jdGlvbiBkZXRlY3RSZWZlcmVuY2VFbGVtZW50c0RvbWFpbihjaGlsZHJlbiwgZG9tYWluLCBheGlzSWQsIGF4aXNUeXBlLCBzcGVjaWZpZWRUaWNrcykge1xuICB2YXIgbGluZXMgPSBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCBSZWZlcmVuY2VMaW5lKTtcbiAgdmFyIGRvdHMgPSBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCBSZWZlcmVuY2VEb3QpO1xuICB2YXIgZWxlbWVudHMgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGxpbmVzKSwgX3RvQ29uc3VtYWJsZUFycmF5KGRvdHMpKTtcbiAgdmFyIGFyZWFzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgUmVmZXJlbmNlQXJlYSk7XG4gIHZhciBpZEtleSA9IFwiXCIuY29uY2F0KGF4aXNUeXBlLCBcIklkXCIpO1xuICB2YXIgdmFsdWVLZXkgPSBheGlzVHlwZVswXTtcbiAgdmFyIGZpbmFsRG9tYWluID0gZG9tYWluO1xuICBpZiAoZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgZmluYWxEb21haW4gPSBlbGVtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZWwpIHtcbiAgICAgIGlmIChlbC5wcm9wc1tpZEtleV0gPT09IGF4aXNJZCAmJiBpZk92ZXJmbG93TWF0Y2hlcyhlbC5wcm9wcywgJ2V4dGVuZERvbWFpbicpICYmIGlzTnVtYmVyKGVsLnByb3BzW3ZhbHVlS2V5XSkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gZWwucHJvcHNbdmFsdWVLZXldO1xuICAgICAgICByZXR1cm4gW01hdGgubWluKHJlc3VsdFswXSwgdmFsdWUpLCBNYXRoLm1heChyZXN1bHRbMV0sIHZhbHVlKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIGZpbmFsRG9tYWluKTtcbiAgfVxuICBpZiAoYXJlYXMubGVuZ3RoKSB7XG4gICAgdmFyIGtleTEgPSBcIlwiLmNvbmNhdCh2YWx1ZUtleSwgXCIxXCIpO1xuICAgIHZhciBrZXkyID0gXCJcIi5jb25jYXQodmFsdWVLZXksIFwiMlwiKTtcbiAgICBmaW5hbERvbWFpbiA9IGFyZWFzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbCkge1xuICAgICAgaWYgKGVsLnByb3BzW2lkS2V5XSA9PT0gYXhpc0lkICYmIGlmT3ZlcmZsb3dNYXRjaGVzKGVsLnByb3BzLCAnZXh0ZW5kRG9tYWluJykgJiYgaXNOdW1iZXIoZWwucHJvcHNba2V5MV0pICYmIGlzTnVtYmVyKGVsLnByb3BzW2tleTJdKSkge1xuICAgICAgICB2YXIgdmFsdWUxID0gZWwucHJvcHNba2V5MV07XG4gICAgICAgIHZhciB2YWx1ZTIgPSBlbC5wcm9wc1trZXkyXTtcbiAgICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXN1bHRbMF0sIHZhbHVlMSwgdmFsdWUyKSwgTWF0aC5tYXgocmVzdWx0WzFdLCB2YWx1ZTEsIHZhbHVlMildO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBmaW5hbERvbWFpbik7XG4gIH1cbiAgaWYgKHNwZWNpZmllZFRpY2tzICYmIHNwZWNpZmllZFRpY2tzLmxlbmd0aCkge1xuICAgIGZpbmFsRG9tYWluID0gc3BlY2lmaWVkVGlja3MucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIHRpY2spIHtcbiAgICAgIGlmIChpc051bWJlcih0aWNrKSkge1xuICAgICAgICByZXR1cm4gW01hdGgubWluKHJlc3VsdFswXSwgdGljayksIE1hdGgubWF4KHJlc3VsdFsxXSwgdGljayldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBmaW5hbERvbWFpbik7XG4gIH1cbiAgcmV0dXJuIGZpbmFsRG9tYWluO1xufTsiXSwibmFtZXMiOlsiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIm8iLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpdGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJpc0FycmF5IiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJSZWZlcmVuY2VEb3QiLCJSZWZlcmVuY2VMaW5lIiwiUmVmZXJlbmNlQXJlYSIsImlmT3ZlcmZsb3dNYXRjaGVzIiwiZmluZEFsbEJ5VHlwZSIsImlzTnVtYmVyIiwiZGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4iLCJjaGlsZHJlbiIsImRvbWFpbiIsImF4aXNJZCIsImF4aXNUeXBlIiwic3BlY2lmaWVkVGlja3MiLCJsaW5lcyIsImRvdHMiLCJlbGVtZW50cyIsImNvbmNhdCIsImFyZWFzIiwiaWRLZXkiLCJ2YWx1ZUtleSIsImZpbmFsRG9tYWluIiwicmVkdWNlIiwicmVzdWx0IiwiZWwiLCJwcm9wcyIsInZhbHVlIiwiTWF0aCIsIm1pbiIsIm1heCIsImtleTEiLCJrZXkyIiwidmFsdWUxIiwidmFsdWUyIiwidGljayJdLCJzb3VyY2VSb290IjoiIn0=\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRXZlbnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBeUM7QUFDekMsSUFBSUMsY0FBYyxJQUFJRCxzREFBWUE7QUFDWDtBQUNoQixJQUFJRSxhQUFhLDJCQUEyQiIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9FdmVudHMuanM/MTYwMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gJ2V2ZW50ZW1pdHRlcjMnO1xudmFyIGV2ZW50Q2VudGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuZXhwb3J0IHsgZXZlbnRDZW50ZXIgfTtcbmV4cG9ydCB2YXIgU1lOQ19FVkVOVCA9ICdyZWNoYXJ0cy5zeW5jTW91c2VFdmVudHMnOyJdLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJldmVudENlbnRlciIsIlNZTkNfRVZFTlQiXSwic291cmNlUm9vdCI6IiJ9\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvR2xvYmFsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFJQSxzQkFBc0IsU0FBU0E7SUFDakMsT0FBTyxDQUFFLE9BQWlGLElBQUlDLENBQWlCO0FBQ2pIO0FBQ08sSUFBSUksU0FBUztJQUNsQkMsT0FBT047SUFDUE8sS0FBSyxTQUFTQSxJQUFJQyxHQUFHO1FBQ25CLE9BQU9ILE1BQU0sQ0FBQ0csSUFBSTtJQUNwQjtJQUNBQyxLQUFLLFNBQVNBLElBQUlELEdBQUcsRUFBRUUsS0FBSztRQUMxQixJQUFJLE9BQU9GLFFBQVEsVUFBVTtZQUMzQkgsTUFBTSxDQUFDRyxJQUFJLEdBQUdFO1FBQ2hCLE9BQU87WUFDTCxJQUFJQyxPQUFPQyxPQUFPRCxJQUFJLENBQUNIO1lBQ3ZCLElBQUlHLFFBQVFBLEtBQUtFLE1BQU0sRUFBRTtnQkFDdkJGLEtBQUtHLE9BQU8sQ0FBQyxTQUFVQyxDQUFDO29CQUN0QlYsTUFBTSxDQUFDVSxFQUFFLEdBQUdQLEdBQUcsQ0FBQ08sRUFBRTtnQkFDcEI7WUFDRjtRQUNGO0lBQ0Y7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0dsb2JhbC5qcz9iN2Y4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBwYXJzZUlzU3NyQnlEZWZhdWx0ID0gZnVuY3Rpb24gcGFyc2VJc1NzckJ5RGVmYXVsdCgpIHtcbiAgcmV0dXJuICEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50ICYmIHdpbmRvdy5zZXRUaW1lb3V0KTtcbn07XG5leHBvcnQgdmFyIEdsb2JhbCA9IHtcbiAgaXNTc3I6IHBhcnNlSXNTc3JCeURlZmF1bHQoKSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgcmV0dXJuIEdsb2JhbFtrZXldO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICBHbG9iYWxba2V5XSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGtleSk7XG4gICAgICBpZiAoa2V5cyAmJiBrZXlzLmxlbmd0aCkge1xuICAgICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICBHbG9iYWxba10gPSBrZXlba107XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTsiXSwibmFtZXMiOlsicGFyc2VJc1NzckJ5RGVmYXVsdCIsIndpbmRvdyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldFRpbWVvdXQiLCJHbG9iYWwiLCJpc1NzciIsImdldCIsImtleSIsInNldCIsInZhbHVlIiwia2V5cyIsIk9iamVjdCIsImxlbmd0aCIsImZvckVhY2giLCJrIl0sInNvdXJjZVJvb3QiOiIifQ==\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvSWZPdmVyZmxvd01hdGNoZXMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLElBQUlBLG9CQUFvQixTQUFTQSxrQkFBa0JDLEtBQUssRUFBRUMsS0FBSztJQUNwRSxJQUFJQyxhQUFhRixNQUFNRSxVQUFVO0lBQ2pDLElBQUlDLGFBQWFILE1BQU1HLFVBQVU7SUFDakMsSUFBSUQsWUFBWTtRQUNkQyxhQUFhO0lBQ2Y7SUFDQSxPQUFPQSxlQUFlRjtBQUN4QixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0lmT3ZlcmZsb3dNYXRjaGVzLmpzPzBjYWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBpZk92ZXJmbG93TWF0Y2hlcyA9IGZ1bmN0aW9uIGlmT3ZlcmZsb3dNYXRjaGVzKHByb3BzLCB2YWx1ZSkge1xuICB2YXIgYWx3YXlzU2hvdyA9IHByb3BzLmFsd2F5c1Nob3c7XG4gIHZhciBpZk92ZXJmbG93ID0gcHJvcHMuaWZPdmVyZmxvdztcbiAgaWYgKGFsd2F5c1Nob3cpIHtcbiAgICBpZk92ZXJmbG93ID0gJ2V4dGVuZERvbWFpbic7XG4gIH1cbiAgcmV0dXJuIGlmT3ZlcmZsb3cgPT09IHZhbHVlO1xufTsiXSwibmFtZXMiOlsiaWZPdmVyZmxvd01hdGNoZXMiLCJwcm9wcyIsInZhbHVlIiwiYWx3YXlzU2hvdyIsImlmT3ZlcmZsb3ciXSwic291cmNlUm9vdCI6IiJ9\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvTG9nVXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHdCQUF3QixHQUN4QixJQUFJQSxRQUFRQyxrQkFBeUI7QUFDOUIsSUFBSUMsT0FBTyxTQUFTQSxLQUFLQyxTQUFTLEVBQUVDLE1BQU07SUFDL0MsSUFBSyxJQUFJQyxPQUFPQyxVQUFVQyxNQUFNLEVBQUVDLE9BQU8sSUFBSUMsTUFBTUosT0FBTyxJQUFJQSxPQUFPLElBQUksSUFBSUssT0FBTyxHQUFHQSxPQUFPTCxNQUFNSyxPQUFRO1FBQzFHRixJQUFJLENBQUNFLE9BQU8sRUFBRSxHQUFHSixTQUFTLENBQUNJLEtBQUs7SUFDbEM7SUFDQSxJQUFJVixTQUFTLE9BQU9XLFlBQVksZUFBZUEsUUFBUVQsSUFBSSxFQUFFO1FBQzNELElBQUlFLFdBQVdRLFdBQVc7WUFDeEJELFFBQVFULElBQUksQ0FBQztRQUNmO1FBQ0EsSUFBSSxDQUFDQyxXQUFXO1lBQ2QsSUFBSUMsV0FBV1EsV0FBVztnQkFDeEJELFFBQVFULElBQUksQ0FBQyx1RUFBdUU7WUFDdEYsT0FBTztnQkFDTCxJQUFJVyxXQUFXO2dCQUNmRixRQUFRVCxJQUFJLENBQUNFLE9BQU9VLE9BQU8sQ0FBQyxPQUFPO29CQUNqQyxPQUFPTixJQUFJLENBQUNLLFdBQVc7Z0JBQ3pCO1lBQ0Y7UUFDRjtJQUNGO0FBQ0YsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9Mb2dVdGlscy5qcz8wZGYxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby1jb25zb2xlOiAwICovXG52YXIgaXNEZXYgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nO1xuZXhwb3J0IHZhciB3YXJuID0gZnVuY3Rpb24gd2Fybihjb25kaXRpb24sIGZvcm1hdCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMiA/IF9sZW4gLSAyIDogMCksIF9rZXkgPSAyOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5IC0gMl0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cbiAgaWYgKGlzRGV2ICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlLndhcm4pIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignTG9nVXRpbHMgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArICdmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgICAgY29uc29sZS53YXJuKGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07Il0sIm5hbWVzIjpbImlzRGV2IiwicHJvY2VzcyIsIndhcm4iLCJjb25kaXRpb24iLCJmb3JtYXQiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbnNvbGUiLCJ1bmRlZmluZWQiLCJhcmdJbmRleCIsInJlcGxhY2UiXSwic291cmNlUm9vdCI6IiJ9\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/future/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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LElBQUlLLG1CQUFtQixTQUFTQSxpQkFBaUJDLElBQUk7SUFDMUQsT0FBTyxDQUFFLFdBQVcsR0FBRXJGLHFEQUFjQSxDQUFDcUYsU0FBUyxDQUFDcEYsd0RBQVVBLENBQUNvRixTQUFTLE9BQU9BLFNBQVMsWUFBWUEsS0FBS0MsU0FBUyxHQUFHO0FBQ2xILEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvUG9sYXJVdGlscy5qcz8xMDAyIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHsgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTsgaWYgKG51bGwgIT0gdCkgeyB2YXIgZSwgbiwgaSwgdSwgYSA9IFtdLCBmID0gITAsIG8gPSAhMTsgdHJ5IHsgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkgeyBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47IGYgPSAhMTsgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApOyB9IGNhdGNoIChyKSB7IG8gPSAhMCwgbiA9IHI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjsgfSBmaW5hbGx5IHsgaWYgKG8pIHRocm93IG47IH0gfSByZXR1cm4gYTsgfSB9XG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cbmltcG9ydCBpc05pbCBmcm9tICdsb2Rhc2gvaXNOaWwnO1xuaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgeyBnZXRQZXJjZW50VmFsdWUgfSBmcm9tICcuL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBwYXJzZVNjYWxlLCBjaGVja0RvbWFpbk9mU2NhbGUsIGdldFRpY2tzT2ZTY2FsZSB9IGZyb20gJy4vQ2hhcnRVdGlscyc7XG5leHBvcnQgdmFyIFJBRElBTiA9IE1hdGguUEkgLyAxODA7XG5leHBvcnQgdmFyIGRlZ3JlZVRvUmFkaWFuID0gZnVuY3Rpb24gZGVncmVlVG9SYWRpYW4oYW5nbGUpIHtcbiAgcmV0dXJuIGFuZ2xlICogTWF0aC5QSSAvIDE4MDtcbn07XG5leHBvcnQgdmFyIHJhZGlhblRvRGVncmVlID0gZnVuY3Rpb24gcmFkaWFuVG9EZWdyZWUoYW5nbGVJblJhZGlhbikge1xuICByZXR1cm4gYW5nbGVJblJhZGlhbiAqIDE4MCAvIE1hdGguUEk7XG59O1xuZXhwb3J0IHZhciBwb2xhclRvQ2FydGVzaWFuID0gZnVuY3Rpb24gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHJhZGl1cywgYW5nbGUpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiBjeCArIE1hdGguY29zKC1SQURJQU4gKiBhbmdsZSkgKiByYWRpdXMsXG4gICAgeTogY3kgKyBNYXRoLnNpbigtUkFESUFOICogYW5nbGUpICogcmFkaXVzXG4gIH07XG59O1xuZXhwb3J0IHZhciBnZXRNYXhSYWRpdXMgPSBmdW5jdGlvbiBnZXRNYXhSYWRpdXMod2lkdGgsIGhlaWdodCkge1xuICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLmFicyh3aWR0aCAtIChvZmZzZXQubGVmdCB8fCAwKSAtIChvZmZzZXQucmlnaHQgfHwgMCkpLCBNYXRoLmFicyhoZWlnaHQgLSAob2Zmc2V0LnRvcCB8fCAwKSAtIChvZmZzZXQuYm90dG9tIHx8IDApKSkgLyAyO1xufTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHNjYWxlIGZ1bmN0aW9uLCBwb3NpdGlvbiwgd2lkdGgsIGhlaWdodCBvZiBheGVzXG4gKiBAcGFyYW0gIHtPYmplY3R9IHByb3BzICAgICBMYXRlc3QgcHJvcHNcbiAqIEBwYXJhbSAge09iamVjdH0gYXhpc01hcCAgIFRoZSBjb25maWd1cmF0aW9uIG9mIGF4ZXNcbiAqIEBwYXJhbSAge09iamVjdH0gb2Zmc2V0ICAgIFRoZSBvZmZzZXQgb2YgbWFpbiBwYXJ0IGluIHRoZSBzdmcgZWxlbWVudFxuICogQHBhcmFtICB7T2JqZWN0fSBheGlzVHlwZSAgVGhlIHR5cGUgb2YgYXhlcywgcmFkaXVzLWF4aXMgb3IgYW5nbGUtYXhpc1xuICogQHBhcmFtICB7U3RyaW5nfSBjaGFydE5hbWUgVGhlIG5hbWUgb2YgY2hhcnRcbiAqIEByZXR1cm4ge09iamVjdH0gQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgdmFyIGZvcm1hdEF4aXNNYXAgPSBmdW5jdGlvbiBmb3JtYXRBeGlzTWFwKHByb3BzLCBheGlzTWFwLCBvZmZzZXQsIGF4aXNUeXBlLCBjaGFydE5hbWUpIHtcbiAgdmFyIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0O1xuICB2YXIgc3RhcnRBbmdsZSA9IHByb3BzLnN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGUgPSBwcm9wcy5lbmRBbmdsZTtcbiAgdmFyIGN4ID0gZ2V0UGVyY2VudFZhbHVlKHByb3BzLmN4LCB3aWR0aCwgd2lkdGggLyAyKTtcbiAgdmFyIGN5ID0gZ2V0UGVyY2VudFZhbHVlKHByb3BzLmN5LCBoZWlnaHQsIGhlaWdodCAvIDIpO1xuICB2YXIgbWF4UmFkaXVzID0gZ2V0TWF4UmFkaXVzKHdpZHRoLCBoZWlnaHQsIG9mZnNldCk7XG4gIHZhciBpbm5lclJhZGl1cyA9IGdldFBlcmNlbnRWYWx1ZShwcm9wcy5pbm5lclJhZGl1cywgbWF4UmFkaXVzLCAwKTtcbiAgdmFyIG91dGVyUmFkaXVzID0gZ2V0UGVyY2VudFZhbHVlKHByb3BzLm91dGVyUmFkaXVzLCBtYXhSYWRpdXMsIG1heFJhZGl1cyAqIDAuOCk7XG4gIHZhciBpZHMgPSBPYmplY3Qua2V5cyhheGlzTWFwKTtcbiAgcmV0dXJuIGlkcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgaWQpIHtcbiAgICB2YXIgYXhpcyA9IGF4aXNNYXBbaWRdO1xuICAgIHZhciBkb21haW4gPSBheGlzLmRvbWFpbixcbiAgICAgIHJldmVyc2VkID0gYXhpcy5yZXZlcnNlZDtcbiAgICB2YXIgcmFuZ2U7XG4gICAgaWYgKGlzTmlsKGF4aXMucmFuZ2UpKSB7XG4gICAgICBpZiAoYXhpc1R5cGUgPT09ICdhbmdsZUF4aXMnKSB7XG4gICAgICAgIHJhbmdlID0gW3N0YXJ0QW5nbGUsIGVuZEFuZ2xlXTtcbiAgICAgIH0gZWxzZSBpZiAoYXhpc1R5cGUgPT09ICdyYWRpdXNBeGlzJykge1xuICAgICAgICByYW5nZSA9IFtpbm5lclJhZGl1cywgb3V0ZXJSYWRpdXNdO1xuICAgICAgfVxuICAgICAgaWYgKHJldmVyc2VkKSB7XG4gICAgICAgIHJhbmdlID0gW3JhbmdlWzFdLCByYW5nZVswXV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhbmdlID0gYXhpcy5yYW5nZTtcbiAgICAgIHZhciBfcmFuZ2UgPSByYW5nZTtcbiAgICAgIHZhciBfcmFuZ2UyID0gX3NsaWNlZFRvQXJyYXkoX3JhbmdlLCAyKTtcbiAgICAgIHN0YXJ0QW5nbGUgPSBfcmFuZ2UyWzBdO1xuICAgICAgZW5kQW5nbGUgPSBfcmFuZ2UyWzFdO1xuICAgIH1cbiAgICB2YXIgX3BhcnNlU2NhbGUgPSBwYXJzZVNjYWxlKGF4aXMsIGNoYXJ0TmFtZSksXG4gICAgICByZWFsU2NhbGVUeXBlID0gX3BhcnNlU2NhbGUucmVhbFNjYWxlVHlwZSxcbiAgICAgIHNjYWxlID0gX3BhcnNlU2NhbGUuc2NhbGU7XG4gICAgc2NhbGUuZG9tYWluKGRvbWFpbikucmFuZ2UocmFuZ2UpO1xuICAgIGNoZWNrRG9tYWluT2ZTY2FsZShzY2FsZSk7XG4gICAgdmFyIHRpY2tzID0gZ2V0VGlja3NPZlNjYWxlKHNjYWxlLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXMpLCB7fSwge1xuICAgICAgcmVhbFNjYWxlVHlwZTogcmVhbFNjYWxlVHlwZVxuICAgIH0pKTtcbiAgICB2YXIgZmluYWxBeGlzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXMpLCB0aWNrcyksIHt9LCB7XG4gICAgICByYW5nZTogcmFuZ2UsXG4gICAgICByYWRpdXM6IG91dGVyUmFkaXVzLFxuICAgICAgcmVhbFNjYWxlVHlwZTogcmVhbFNjYWxlVHlwZSxcbiAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgIGN4OiBjeCxcbiAgICAgIGN5OiBjeSxcbiAgICAgIGlubmVyUmFkaXVzOiBpbm5lclJhZGl1cyxcbiAgICAgIG91dGVyUmFkaXVzOiBvdXRlclJhZGl1cyxcbiAgICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUsXG4gICAgICBlbmRBbmdsZTogZW5kQW5nbGVcbiAgICB9KTtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBpZCwgZmluYWxBeGlzKSk7XG4gIH0sIHt9KTtcbn07XG5leHBvcnQgdmFyIGRpc3RhbmNlQmV0d2VlblBvaW50cyA9IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50cyhwb2ludCwgYW5vdGhlclBvaW50KSB7XG4gIHZhciB4MSA9IHBvaW50LngsXG4gICAgeTEgPSBwb2ludC55O1xuICB2YXIgeDIgPSBhbm90aGVyUG9pbnQueCxcbiAgICB5MiA9IGFub3RoZXJQb2ludC55O1xuICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHgxIC0geDIsIDIpICsgTWF0aC5wb3coeTEgLSB5MiwgMikpO1xufTtcbmV4cG9ydCB2YXIgZ2V0QW5nbGVPZlBvaW50ID0gZnVuY3Rpb24gZ2V0QW5nbGVPZlBvaW50KF9yZWYsIF9yZWYyKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgIHkgPSBfcmVmLnk7XG4gIHZhciBjeCA9IF9yZWYyLmN4LFxuICAgIGN5ID0gX3JlZjIuY3k7XG4gIHZhciByYWRpdXMgPSBkaXN0YW5jZUJldHdlZW5Qb2ludHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9LCB7XG4gICAgeDogY3gsXG4gICAgeTogY3lcbiAgfSk7XG4gIGlmIChyYWRpdXMgPD0gMCkge1xuICAgIHJldHVybiB7XG4gICAgICByYWRpdXM6IHJhZGl1c1xuICAgIH07XG4gIH1cbiAgdmFyIGNvcyA9ICh4IC0gY3gpIC8gcmFkaXVzO1xuICB2YXIgYW5nbGVJblJhZGlhbiA9IE1hdGguYWNvcyhjb3MpO1xuICBpZiAoeSA+IGN5KSB7XG4gICAgYW5nbGVJblJhZGlhbiA9IDIgKiBNYXRoLlBJIC0gYW5nbGVJblJhZGlhbjtcbiAgfVxuICByZXR1cm4ge1xuICAgIHJhZGl1czogcmFkaXVzLFxuICAgIGFuZ2xlOiByYWRpYW5Ub0RlZ3JlZShhbmdsZUluUmFkaWFuKSxcbiAgICBhbmdsZUluUmFkaWFuOiBhbmdsZUluUmFkaWFuXG4gIH07XG59O1xuZXhwb3J0IHZhciBmb3JtYXRBbmdsZU9mU2VjdG9yID0gZnVuY3Rpb24gZm9ybWF0QW5nbGVPZlNlY3RvcihfcmVmMykge1xuICB2YXIgc3RhcnRBbmdsZSA9IF9yZWYzLnN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGUgPSBfcmVmMy5lbmRBbmdsZTtcbiAgdmFyIHN0YXJ0Q250ID0gTWF0aC5mbG9vcihzdGFydEFuZ2xlIC8gMzYwKTtcbiAgdmFyIGVuZENudCA9IE1hdGguZmxvb3IoZW5kQW5nbGUgLyAzNjApO1xuICB2YXIgbWluID0gTWF0aC5taW4oc3RhcnRDbnQsIGVuZENudCk7XG4gIHJldHVybiB7XG4gICAgc3RhcnRBbmdsZTogc3RhcnRBbmdsZSAtIG1pbiAqIDM2MCxcbiAgICBlbmRBbmdsZTogZW5kQW5nbGUgLSBtaW4gKiAzNjBcbiAgfTtcbn07XG52YXIgcmV2ZXJzZUZvcm1hdEFuZ2xlT2ZTZXRvciA9IGZ1bmN0aW9uIHJldmVyc2VGb3JtYXRBbmdsZU9mU2V0b3IoYW5nbGUsIF9yZWY0KSB7XG4gIHZhciBzdGFydEFuZ2xlID0gX3JlZjQuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IF9yZWY0LmVuZEFuZ2xlO1xuICB2YXIgc3RhcnRDbnQgPSBNYXRoLmZsb29yKHN0YXJ0QW5nbGUgLyAzNjApO1xuICB2YXIgZW5kQ250ID0gTWF0aC5mbG9vcihlbmRBbmdsZSAvIDM2MCk7XG4gIHZhciBtaW4gPSBNYXRoLm1pbihzdGFydENudCwgZW5kQ250KTtcbiAgcmV0dXJuIGFuZ2xlICsgbWluICogMzYwO1xufTtcbmV4cG9ydCB2YXIgaW5SYW5nZU9mU2VjdG9yID0gZnVuY3Rpb24gaW5SYW5nZU9mU2VjdG9yKF9yZWY1LCBzZWN0b3IpIHtcbiAgdmFyIHggPSBfcmVmNS54LFxuICAgIHkgPSBfcmVmNS55O1xuICB2YXIgX2dldEFuZ2xlT2ZQb2ludCA9IGdldEFuZ2xlT2ZQb2ludCh7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH0sIHNlY3RvciksXG4gICAgcmFkaXVzID0gX2dldEFuZ2xlT2ZQb2ludC5yYWRpdXMsXG4gICAgYW5nbGUgPSBfZ2V0QW5nbGVPZlBvaW50LmFuZ2xlO1xuICB2YXIgaW5uZXJSYWRpdXMgPSBzZWN0b3IuaW5uZXJSYWRpdXMsXG4gICAgb3V0ZXJSYWRpdXMgPSBzZWN0b3Iub3V0ZXJSYWRpdXM7XG4gIGlmIChyYWRpdXMgPCBpbm5lclJhZGl1cyB8fCByYWRpdXMgPiBvdXRlclJhZGl1cykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAocmFkaXVzID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIF9mb3JtYXRBbmdsZU9mU2VjdG9yID0gZm9ybWF0QW5nbGVPZlNlY3RvcihzZWN0b3IpLFxuICAgIHN0YXJ0QW5nbGUgPSBfZm9ybWF0QW5nbGVPZlNlY3Rvci5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gX2Zvcm1hdEFuZ2xlT2ZTZWN0b3IuZW5kQW5nbGU7XG4gIHZhciBmb3JtYXRBbmdsZSA9IGFuZ2xlO1xuICB2YXIgaW5SYW5nZTtcbiAgaWYgKHN0YXJ0QW5nbGUgPD0gZW5kQW5nbGUpIHtcbiAgICB3aGlsZSAoZm9ybWF0QW5nbGUgPiBlbmRBbmdsZSkge1xuICAgICAgZm9ybWF0QW5nbGUgLT0gMzYwO1xuICAgIH1cbiAgICB3aGlsZSAoZm9ybWF0QW5nbGUgPCBzdGFydEFuZ2xlKSB7XG4gICAgICBmb3JtYXRBbmdsZSArPSAzNjA7XG4gICAgfVxuICAgIGluUmFuZ2UgPSBmb3JtYXRBbmdsZSA+PSBzdGFydEFuZ2xlICYmIGZvcm1hdEFuZ2xlIDw9IGVuZEFuZ2xlO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChmb3JtYXRBbmdsZSA+IHN0YXJ0QW5nbGUpIHtcbiAgICAgIGZvcm1hdEFuZ2xlIC09IDM2MDtcbiAgICB9XG4gICAgd2hpbGUgKGZvcm1hdEFuZ2xlIDwgZW5kQW5nbGUpIHtcbiAgICAgIGZvcm1hdEFuZ2xlICs9IDM2MDtcbiAgICB9XG4gICAgaW5SYW5nZSA9IGZvcm1hdEFuZ2xlID49IGVuZEFuZ2xlICYmIGZvcm1hdEFuZ2xlIDw9IHN0YXJ0QW5nbGU7XG4gIH1cbiAgaWYgKGluUmFuZ2UpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzZWN0b3IpLCB7fSwge1xuICAgICAgcmFkaXVzOiByYWRpdXMsXG4gICAgICBhbmdsZTogcmV2ZXJzZUZvcm1hdEFuZ2xlT2ZTZXRvcihmb3JtYXRBbmdsZSwgc2VjdG9yKVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmV4cG9ydCB2YXIgZ2V0VGlja0NsYXNzTmFtZSA9IGZ1bmN0aW9uIGdldFRpY2tDbGFzc05hbWUodGljaykge1xuICByZXR1cm4gISAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQodGljaykgJiYgIWlzRnVuY3Rpb24odGljaykgJiYgdHlwZW9mIHRpY2sgIT09ICdib29sZWFuJyA/IHRpY2suY2xhc3NOYW1lIDogJyc7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImwiLCJ1IiwiYSIsImYiLCJuZXh0IiwiZG9uZSIsImlzQXJyYXkiLCJpc05pbCIsImlzVmFsaWRFbGVtZW50IiwiaXNGdW5jdGlvbiIsImdldFBlcmNlbnRWYWx1ZSIsInBhcnNlU2NhbGUiLCJjaGVja0RvbWFpbk9mU2NhbGUiLCJnZXRUaWNrc09mU2NhbGUiLCJSQURJQU4iLCJNYXRoIiwiUEkiLCJkZWdyZWVUb1JhZGlhbiIsImFuZ2xlIiwicmFkaWFuVG9EZWdyZWUiLCJhbmdsZUluUmFkaWFuIiwicG9sYXJUb0NhcnRlc2lhbiIsImN4IiwiY3kiLCJyYWRpdXMiLCJ4IiwiY29zIiwieSIsInNpbiIsImdldE1heFJhZGl1cyIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwidW5kZWZpbmVkIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwibWluIiwiYWJzIiwiZm9ybWF0QXhpc01hcCIsInByb3BzIiwiYXhpc01hcCIsImF4aXNUeXBlIiwiY2hhcnROYW1lIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwibWF4UmFkaXVzIiwiaW5uZXJSYWRpdXMiLCJvdXRlclJhZGl1cyIsImlkcyIsInJlZHVjZSIsInJlc3VsdCIsImlkIiwiYXhpcyIsImRvbWFpbiIsInJldmVyc2VkIiwicmFuZ2UiLCJfcmFuZ2UiLCJfcmFuZ2UyIiwiX3BhcnNlU2NhbGUiLCJyZWFsU2NhbGVUeXBlIiwic2NhbGUiLCJ0aWNrcyIsImZpbmFsQXhpcyIsImRpc3RhbmNlQmV0d2VlblBvaW50cyIsInBvaW50IiwiYW5vdGhlclBvaW50IiwieDEiLCJ5MSIsIngyIiwieTIiLCJzcXJ0IiwicG93IiwiZ2V0QW5nbGVPZlBvaW50IiwiX3JlZiIsIl9yZWYyIiwiYWNvcyIsImZvcm1hdEFuZ2xlT2ZTZWN0b3IiLCJfcmVmMyIsInN0YXJ0Q250IiwiZmxvb3IiLCJlbmRDbnQiLCJyZXZlcnNlRm9ybWF0QW5nbGVPZlNldG9yIiwiX3JlZjQiLCJpblJhbmdlT2ZTZWN0b3IiLCJfcmVmNSIsInNlY3RvciIsIl9nZXRBbmdsZU9mUG9pbnQiLCJfZm9ybWF0QW5nbGVPZlNlY3RvciIsImZvcm1hdEFuZ2xlIiwiaW5SYW5nZSIsImdldFRpY2tDbGFzc05hbWUiLCJ0aWNrIiwiY2xhc3NOYW1lIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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 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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O1lBQ3hCO1FBQ0Y7SUFDRjtJQUNBLE9BQU82RDtBQUNULEVBQUU7QUFDSyxJQUFJTyxzQkFBc0IsU0FBU0Esb0JBQW9CQyxDQUFDO0lBQzdELElBQUl0RCxPQUFPc0QsS0FBS0EsRUFBRXRELElBQUk7SUFDdEIsSUFBSUEsUUFBUW5DLHVCQUF1QixDQUFDbUMsS0FBSyxFQUFFO1FBQ3pDLE9BQU9uQyx1QkFBdUIsQ0FBQ21DLEtBQUs7SUFDdEM7SUFDQSxPQUFPO0FBQ1QsRUFBRTtBQUNLLElBQUl1RCxrQkFBa0IsU0FBU0EsZ0JBQWdCNUQsS0FBSyxFQUFFTCxRQUFRO0lBQ25FLE9BQU9ELFFBQVFDLFVBQVVoRCxPQUFPLENBQUNxRDtBQUNuQyxFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL1JlYWN0VXRpbHMuanM/NmM0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJjaGlsZHJlblwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuaW1wb3J0IHsgQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaXNGcmFnbWVudCB9IGZyb20gJ3JlYWN0LWlzJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsIH0gZnJvbSAnLi9TaGFsbG93RXF1YWwnO1xuaW1wb3J0IHsgRmlsdGVyZWRFbGVtZW50S2V5TWFwLCBTVkdFbGVtZW50UHJvcEtleXMsIEV2ZW50S2V5cyB9IGZyb20gJy4vdHlwZXMnO1xudmFyIFJFQUNUX0JST1dTRVJfRVZFTlRfTUFQID0ge1xuICBjbGljazogJ29uQ2xpY2snLFxuICBtb3VzZWRvd246ICdvbk1vdXNlRG93bicsXG4gIG1vdXNldXA6ICdvbk1vdXNlVXAnLFxuICBtb3VzZW92ZXI6ICdvbk1vdXNlT3ZlcicsXG4gIG1vdXNlbW92ZTogJ29uTW91c2VNb3ZlJyxcbiAgbW91c2VvdXQ6ICdvbk1vdXNlT3V0JyxcbiAgbW91c2VlbnRlcjogJ29uTW91c2VFbnRlcicsXG4gIG1vdXNlbGVhdmU6ICdvbk1vdXNlTGVhdmUnLFxuICB0b3VjaGNhbmNlbDogJ29uVG91Y2hDYW5jZWwnLFxuICB0b3VjaGVuZDogJ29uVG91Y2hFbmQnLFxuICB0b3VjaG1vdmU6ICdvblRvdWNoTW92ZScsXG4gIHRvdWNoc3RhcnQ6ICdvblRvdWNoU3RhcnQnLFxuICBjb250ZXh0bWVudTogJ29uQ29udGV4dE1lbnUnLFxuICBkYmxjbGljazogJ29uRG91YmxlQ2xpY2snXG59O1xuZXhwb3J0IHZhciBTQ0FMRV9UWVBFUyA9IFsnYXV0bycsICdsaW5lYXInLCAncG93JywgJ3NxcnQnLCAnbG9nJywgJ2lkZW50aXR5JywgJ3RpbWUnLCAnYmFuZCcsICdwb2ludCcsICdvcmRpbmFsJywgJ3F1YW50aWxlJywgJ3F1YW50aXplJywgJ3V0YycsICdzZXF1ZW50aWFsJywgJ3RocmVzaG9sZCddO1xuZXhwb3J0IHZhciBMRUdFTkRfVFlQRVMgPSBbJ3BsYWlubGluZScsICdsaW5lJywgJ3NxdWFyZScsICdyZWN0JywgJ2NpcmNsZScsICdjcm9zcycsICdkaWFtb25kJywgJ3N0YXInLCAndHJpYW5nbGUnLCAnd3llJywgJ25vbmUnXTtcbmV4cG9ydCB2YXIgVE9PTFRJUF9UWVBFUyA9IFsnbm9uZSddO1xuXG4vKipcbiAqIEdldCB0aGUgZGlzcGxheSBuYW1lIG9mIGEgY29tcG9uZW50XG4gKiBAcGFyYW0gIHtPYmplY3R9IENvbXAgU3BlY2lmaWVkIENvbXBvbmVudFxuICogQHJldHVybiB7U3RyaW5nfSAgICAgIERpc3BsYXkgbmFtZSBvZiBDb21wb25lbnRcbiAqL1xuZXhwb3J0IHZhciBnZXREaXNwbGF5TmFtZSA9IGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKENvbXApIHtcbiAgaWYgKHR5cGVvZiBDb21wID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBDb21wO1xuICB9XG4gIGlmICghQ29tcCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gQ29tcC5kaXNwbGF5TmFtZSB8fCBDb21wLm5hbWUgfHwgJ0NvbXBvbmVudCc7XG59O1xuXG4vLyBgdG9BcnJheWAgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgZHVyaW5nIHRoZSByZW5kZXJcbi8vIHNvIHdlIGNhbiBtZW1vaXplIGxhc3QgaW52b2NhdGlvbiAoc2luY2UgcmVmZXJlbmNlIHRvIGBjaGlsZHJlbmAgaXMgdGhlIHNhbWUpXG52YXIgbGFzdENoaWxkcmVuID0gbnVsbDtcbnZhciBsYXN0UmVzdWx0ID0gbnVsbDtcbmV4cG9ydCB2YXIgdG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkoY2hpbGRyZW4pIHtcbiAgaWYgKGNoaWxkcmVuID09PSBsYXN0Q2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShsYXN0UmVzdWx0KSkge1xuICAgIHJldHVybiBsYXN0UmVzdWx0O1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgaWYgKGlzTmlsKGNoaWxkKSkgcmV0dXJuO1xuICAgIGlmIChpc0ZyYWdtZW50KGNoaWxkKSkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0b0FycmF5KGNoaWxkLnByb3BzLmNoaWxkcmVuKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdGhpcyBjb3VsZCBzdGlsbCBiZSBJdGVyYWJsZTxSZWFjdE5vZGU+IGFuZCBUUyBkb2VzIG5vdCBsaWtlIHRoYXRcbiAgICAgIHJlc3VsdC5wdXNoKGNoaWxkKTtcbiAgICB9XG4gIH0pO1xuICBsYXN0UmVzdWx0ID0gcmVzdWx0O1xuICBsYXN0Q2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qXG4gKiBGaW5kIGFuZCByZXR1cm4gYWxsIG1hdGNoZWQgY2hpbGRyZW4gYnkgdHlwZS5cbiAqIGB0eXBlYCBtdXN0IGJlIGEgUmVhY3QuQ29tcG9uZW50VHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgdHlwZSkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciB0eXBlcyA9IFtdO1xuICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgIHR5cGVzID0gdHlwZS5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgIHJldHVybiBnZXREaXNwbGF5TmFtZSh0KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0eXBlcyA9IFtnZXREaXNwbGF5TmFtZSh0eXBlKV07XG4gIH1cbiAgdG9BcnJheShjaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICB2YXIgY2hpbGRUeXBlID0gZ2V0KGNoaWxkLCAndHlwZS5kaXNwbGF5TmFtZScpIHx8IGdldChjaGlsZCwgJ3R5cGUubmFtZScpO1xuICAgIGlmICh0eXBlcy5pbmRleE9mKGNoaWxkVHlwZSkgIT09IC0xKSB7XG4gICAgICByZXN1bHQucHVzaChjaGlsZCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLypcbiAqIFJldHVybiB0aGUgZmlyc3QgbWF0Y2hlZCBjaGlsZCBieSB0eXBlLCByZXR1cm4gbnVsbCBvdGhlcndpc2UuXG4gKiBgdHlwZWAgbXVzdCBiZSBhIFJlYWN0LkNvbXBvbmVudFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgdHlwZSkge1xuICB2YXIgcmVzdWx0ID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgdHlwZSk7XG4gIHJldHVybiByZXN1bHQgJiYgcmVzdWx0WzBdO1xufVxuXG4vKlxuICogQ3JlYXRlIGEgbmV3IGFycmF5IG9mIGNoaWxkcmVuIGV4Y2x1ZGluZyB0aGUgb25lcyBtYXRjaGVkIHRoZSB0eXBlXG4gKi9cbmV4cG9ydCB2YXIgd2l0aG91dFR5cGUgPSBmdW5jdGlvbiB3aXRob3V0VHlwZShjaGlsZHJlbiwgdHlwZSkge1xuICB2YXIgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgdmFyIHR5cGVzO1xuICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgIHR5cGVzID0gdHlwZS5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgIHJldHVybiBnZXREaXNwbGF5TmFtZSh0KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0eXBlcyA9IFtnZXREaXNwbGF5TmFtZSh0eXBlKV07XG4gIH1cbiAgdG9BcnJheShjaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICB2YXIgZGlzcGxheU5hbWUgPSBnZXQoY2hpbGQsICd0eXBlLmRpc3BsYXlOYW1lJyk7XG4gICAgaWYgKGRpc3BsYXlOYW1lICYmIHR5cGVzLmluZGV4T2YoZGlzcGxheU5hbWUpICE9PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBuZXdDaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgfSk7XG4gIHJldHVybiBuZXdDaGlsZHJlbjtcbn07XG5cbi8qKlxuICogdmFsaWRhdGUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgcHJvcHMgb2YgYSBjaGFydCBlbGVtZW50XG4gKiBAcGFyYW0gIHtPYmplY3R9IGVsIEEgY2hhcnQgZWxlbWVudFxuICogQHJldHVybiB7Qm9vbGVhbn0gICB0cnVlIElmIHRoZSBwcm9wcyB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBudW1iZXIsIGFuZCBncmVhdGVyIHRoYW4gMFxuICovXG5leHBvcnQgdmFyIHZhbGlkYXRlV2lkdGhIZWlnaHQgPSBmdW5jdGlvbiB2YWxpZGF0ZVdpZHRoSGVpZ2h0KGVsKSB7XG4gIGlmICghZWwgfHwgIWVsLnByb3BzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBfZWwkcHJvcHMgPSBlbC5wcm9wcyxcbiAgICB3aWR0aCA9IF9lbCRwcm9wcy53aWR0aCxcbiAgICBoZWlnaHQgPSBfZWwkcHJvcHMuaGVpZ2h0O1xuICBpZiAoIWlzTnVtYmVyKHdpZHRoKSB8fCB3aWR0aCA8PSAwIHx8ICFpc051bWJlcihoZWlnaHQpIHx8IGhlaWdodCA8PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBTVkdfVEFHUyA9IFsnYScsICdhbHRHbHlwaCcsICdhbHRHbHlwaERlZicsICdhbHRHbHlwaEl0ZW0nLCAnYW5pbWF0ZScsICdhbmltYXRlQ29sb3InLCAnYW5pbWF0ZU1vdGlvbicsICdhbmltYXRlVHJhbnNmb3JtJywgJ2NpcmNsZScsICdjbGlwUGF0aCcsICdjb2xvci1wcm9maWxlJywgJ2N1cnNvcicsICdkZWZzJywgJ2Rlc2MnLCAnZWxsaXBzZScsICdmZUJsZW5kJywgJ2ZlQ29sb3JtYXRyaXgnLCAnZmVDb21wb25lbnRUcmFuc2ZlcicsICdmZUNvbXBvc2l0ZScsICdmZUNvbnZvbHZlTWF0cml4JywgJ2ZlRGlmZnVzZUxpZ2h0aW5nJywgJ2ZlRGlzcGxhY2VtZW50TWFwJywgJ2ZlRGlzdGFudExpZ2h0JywgJ2ZlRmxvb2QnLCAnZmVGdW5jQScsICdmZUZ1bmNCJywgJ2ZlRnVuY0cnLCAnZmVGdW5jUicsICdmZUdhdXNzaWFuQmx1cicsICdmZUltYWdlJywgJ2ZlTWVyZ2UnLCAnZmVNZXJnZU5vZGUnLCAnZmVNb3JwaG9sb2d5JywgJ2ZlT2Zmc2V0JywgJ2ZlUG9pbnRMaWdodCcsICdmZVNwZWN1bGFyTGlnaHRpbmcnLCAnZmVTcG90TGlnaHQnLCAnZmVUaWxlJywgJ2ZlVHVyYnVsZW5jZScsICdmaWx0ZXInLCAnZm9udCcsICdmb250LWZhY2UnLCAnZm9udC1mYWNlLWZvcm1hdCcsICdmb250LWZhY2UtbmFtZScsICdmb250LWZhY2UtdXJsJywgJ2ZvcmVpZ25PYmplY3QnLCAnZycsICdnbHlwaCcsICdnbHlwaFJlZicsICdoa2VybicsICdpbWFnZScsICdsaW5lJywgJ2xpbmVHcmFkaWVudCcsICdtYXJrZXInLCAnbWFzaycsICdtZXRhZGF0YScsICdtaXNzaW5nLWdseXBoJywgJ21wYXRoJywgJ3BhdGgnLCAncGF0dGVybicsICdwb2x5Z29uJywgJ3BvbHlsaW5lJywgJ3JhZGlhbEdyYWRpZW50JywgJ3JlY3QnLCAnc2NyaXB0JywgJ3NldCcsICdzdG9wJywgJ3N0eWxlJywgJ3N2ZycsICdzd2l0Y2gnLCAnc3ltYm9sJywgJ3RleHQnLCAndGV4dFBhdGgnLCAndGl0bGUnLCAndHJlZicsICd0c3BhbicsICd1c2UnLCAndmlldycsICd2a2VybiddO1xudmFyIGlzU3ZnRWxlbWVudCA9IGZ1bmN0aW9uIGlzU3ZnRWxlbWVudChjaGlsZCkge1xuICByZXR1cm4gY2hpbGQgJiYgY2hpbGQudHlwZSAmJiBpc1N0cmluZyhjaGlsZC50eXBlKSAmJiBTVkdfVEFHUy5pbmRleE9mKGNoaWxkLnR5cGUpID49IDA7XG59O1xuZXhwb3J0IHZhciBoYXNDbGlwRG90ID0gZnVuY3Rpb24gaGFzQ2xpcERvdChkb3QpIHtcbiAgcmV0dXJuIGRvdCAmJiBfdHlwZW9mKGRvdCkgPT09ICdvYmplY3QnICYmICdjbGlwRG90JyBpbiBkb3Q7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgcHJvcGVydHkgaXMgdmFsaWQgdG8gc3ByZWFkIG9udG8gYW4gU1ZHIGVsZW1lbnQgb3Igb250byBhIHNwZWNpZmljIGNvbXBvbmVudFxuICogQHBhcmFtIHt1bmtub3dufSBwcm9wZXJ0eSBwcm9wZXJ0eSB2YWx1ZSBjdXJyZW50bHkgYmVpbmcgY29tcGFyZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgcHJvcGVydHkga2V5IGN1cnJlbnRseSBiZWluZyBjb21wYXJlZFxuICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlRXZlbnRzIGlmIGV2ZW50cyBhcmUgaW5jbHVkZWQgaW4gc3ByZWFkYWJsZSBwcm9wc1xuICogQHBhcmFtIHtib29sZWFufSBzdmdFbGVtZW50VHlwZSBjaGVja3MgYWdhaW5zdCBtYXAgb2YgU1ZHIGVsZW1lbnQgdHlwZXMgdG8gYXR0cmlidXRlc1xuICogQHJldHVybnMge2Jvb2xlYW59IGlzIHByb3AgdmFsaWRcbiAqL1xuZXhwb3J0IHZhciBpc1ZhbGlkU3ByZWFkYWJsZVByb3AgPSBmdW5jdGlvbiBpc1ZhbGlkU3ByZWFkYWJsZVByb3AocHJvcGVydHksIGtleSwgaW5jbHVkZUV2ZW50cywgc3ZnRWxlbWVudFR5cGUpIHtcbiAgdmFyIF9GaWx0ZXJlZEVsZW1lbnRLZXlNYTtcbiAgLyoqXG4gICAqIElmIHRoZSBzdmcgZWxlbWVudCB0eXBlIGlzIGV4cGxpY2l0bHkgaW5jbHVkZWQsIGNoZWNrIGFnYWluc3QgdGhlIGZpbHRlcmVkIGVsZW1lbnQga2V5IG1hcFxuICAgKiB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgb25seSBleGlzdCBvbiB0aGF0IGVsZW1lbnQgdHlwZS5cbiAgICogQHRvZG8gQWRkIGFuIGludGVybmFsIGNqcyB2ZXJzaW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS93b29vcm0vc3ZnLWVsZW1lbnQtYXR0cmlidXRlcyBmb3IgZnVsbCBjb3ZlcmFnZS5cbiAgICovXG4gIHZhciBtYXRjaGluZ0VsZW1lbnRUeXBlS2V5cyA9IChfRmlsdGVyZWRFbGVtZW50S2V5TWEgPSBGaWx0ZXJlZEVsZW1lbnRLZXlNYXAgPT09IG51bGwgfHwgRmlsdGVyZWRFbGVtZW50S2V5TWFwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBGaWx0ZXJlZEVsZW1lbnRLZXlNYXBbc3ZnRWxlbWVudFR5cGVdKSAhPT0gbnVsbCAmJiBfRmlsdGVyZWRFbGVtZW50S2V5TWEgIT09IHZvaWQgMCA/IF9GaWx0ZXJlZEVsZW1lbnRLZXlNYSA6IFtdO1xuICByZXR1cm4ga2V5LnN0YXJ0c1dpdGgoJ2RhdGEtJykgfHwgIWlzRnVuY3Rpb24ocHJvcGVydHkpICYmIChzdmdFbGVtZW50VHlwZSAmJiBtYXRjaGluZ0VsZW1lbnRUeXBlS2V5cy5pbmNsdWRlcyhrZXkpIHx8IFNWR0VsZW1lbnRQcm9wS2V5cy5pbmNsdWRlcyhrZXkpKSB8fCBpbmNsdWRlRXZlbnRzICYmIEV2ZW50S2V5cy5pbmNsdWRlcyhrZXkpO1xufTtcblxuLyoqXG4gKiBGaWx0ZXIgYWxsIHRoZSBzdmcgZWxlbWVudHMgb2YgY2hpbGRyZW5cbiAqIEBwYXJhbSAge0FycmF5fSBjaGlsZHJlbiBUaGUgY2hpbGRyZW4gb2YgYSByZWFjdCBlbGVtZW50XG4gKiBAcmV0dXJuIHtBcnJheX0gICAgICAgICAgQWxsIHRoZSBzdmcgZWxlbWVudHNcbiAqL1xuZXhwb3J0IHZhciBmaWx0ZXJTdmdFbGVtZW50cyA9IGZ1bmN0aW9uIGZpbHRlclN2Z0VsZW1lbnRzKGNoaWxkcmVuKSB7XG4gIHZhciBzdmdFbGVtZW50cyA9IFtdO1xuICB0b0FycmF5KGNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGlmIChpc1N2Z0VsZW1lbnQoZW50cnkpKSB7XG4gICAgICBzdmdFbGVtZW50cy5wdXNoKGVudHJ5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3ZnRWxlbWVudHM7XG59O1xuZXhwb3J0IHZhciBmaWx0ZXJQcm9wcyA9IGZ1bmN0aW9uIGZpbHRlclByb3BzKHByb3BzLCBpbmNsdWRlRXZlbnRzLCBzdmdFbGVtZW50VHlwZSkge1xuICBpZiAoIXByb3BzIHx8IHR5cGVvZiBwcm9wcyA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgcHJvcHMgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBpbnB1dFByb3BzID0gcHJvcHM7XG4gIGlmICggLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KHByb3BzKSkge1xuICAgIGlucHV0UHJvcHMgPSBwcm9wcy5wcm9wcztcbiAgfVxuICBpZiAoIWlzT2JqZWN0KGlucHV0UHJvcHMpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIG91dCA9IHt9O1xuXG4gIC8qKlxuICAgKiBQcm9wcyBhcmUgYmxpbmRseSBzcHJlYWQgb250byBTVkcgZWxlbWVudHMuIFRoaXMgbG9vcCBmaWx0ZXJzIG91dCBwcm9wZXJ0aWVzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBzcHJlYWQuXG4gICAqIEl0ZW1zIGZpbHRlcmVkIG91dCBhcmUgYXMgZm9sbG93czpcbiAgICogICAtIGZ1bmN0aW9ucyBpbiBwcm9wZXJ0aWVzIHRoYXQgYXJlIFNWRyBhdHRyaWJ1dGVzIChmdW5jdGlvbnMgYXJlIGluY2x1ZGVkIHdoZW4gaW5jbHVkZUV2ZW50cyBpcyB0cnVlKVxuICAgKiAgIC0gcHJvcHMgdGhhdCBhcmUgU1ZHIGF0dHJpYnV0ZXMgYnV0IGRvbid0IG1hdGNoZWQgdGhlIHBhc3NlZCBzdmdFbGVtZW50VHlwZVxuICAgKiAgIC0gYW55IHByb3AgdGhhdCBpcyBub3QgaW4gU1ZHRWxlbWVudFByb3BLZXlzIChvciBpbiBFdmVudEtleXMgaWYgaW5jbHVkZUV2ZW50cyBpcyB0cnVlKVxuICAgKi9cbiAgT2JqZWN0LmtleXMoaW5wdXRQcm9wcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIF9pbnB1dFByb3BzO1xuICAgIGlmIChpc1ZhbGlkU3ByZWFkYWJsZVByb3AoKF9pbnB1dFByb3BzID0gaW5wdXRQcm9wcykgPT09IG51bGwgfHwgX2lucHV0UHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9pbnB1dFByb3BzW2tleV0sIGtleSwgaW5jbHVkZUV2ZW50cywgc3ZnRWxlbWVudFR5cGUpKSB7XG4gICAgICBvdXRba2V5XSA9IGlucHV0UHJvcHNba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufTtcblxuLyoqXG4gKiBXZXRoZXIgcHJvcHMgb2YgY2hpbGRyZW4gY2hhbmdlZFxuICogQHBhcmFtICB7T2JqZWN0fSBuZXh0Q2hpbGRyZW4gVGhlIGxhdGVzdCBjaGlsZHJlblxuICogQHBhcmFtICB7T2JqZWN0fSBwcmV2Q2hpbGRyZW4gVGhlIHByZXYgY2hpbGRyZW5cbiAqIEByZXR1cm4ge0Jvb2xlYW59ICAgICAgICAgICAgIGVxdWFsIG9yIG5vdFxuICovXG5leHBvcnQgdmFyIGlzQ2hpbGRyZW5FcXVhbCA9IGZ1bmN0aW9uIGlzQ2hpbGRyZW5FcXVhbChuZXh0Q2hpbGRyZW4sIHByZXZDaGlsZHJlbikge1xuICBpZiAobmV4dENoaWxkcmVuID09PSBwcmV2Q2hpbGRyZW4pIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgY291bnQgPSBDaGlsZHJlbi5jb3VudChuZXh0Q2hpbGRyZW4pO1xuICBpZiAoY291bnQgIT09IENoaWxkcmVuLmNvdW50KHByZXZDaGlsZHJlbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGNvdW50ID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHJldHVybiBpc1NpbmdsZUNoaWxkRXF1YWwoQXJyYXkuaXNBcnJheShuZXh0Q2hpbGRyZW4pID8gbmV4dENoaWxkcmVuWzBdIDogbmV4dENoaWxkcmVuLCBBcnJheS5pc0FycmF5KHByZXZDaGlsZHJlbikgPyBwcmV2Q2hpbGRyZW5bMF0gOiBwcmV2Q2hpbGRyZW4pO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgIHZhciBuZXh0Q2hpbGQgPSBuZXh0Q2hpbGRyZW5baV07XG4gICAgdmFyIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbltpXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXh0Q2hpbGQpIHx8IEFycmF5LmlzQXJyYXkocHJldkNoaWxkKSkge1xuICAgICAgaWYgKCFpc0NoaWxkcmVuRXF1YWwobmV4dENoaWxkLCBwcmV2Q2hpbGQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICB9IGVsc2UgaWYgKCFpc1NpbmdsZUNoaWxkRXF1YWwobmV4dENoaWxkLCBwcmV2Q2hpbGQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbmV4cG9ydCB2YXIgaXNTaW5nbGVDaGlsZEVxdWFsID0gZnVuY3Rpb24gaXNTaW5nbGVDaGlsZEVxdWFsKG5leHRDaGlsZCwgcHJldkNoaWxkKSB7XG4gIGlmIChpc05pbChuZXh0Q2hpbGQpICYmIGlzTmlsKHByZXZDaGlsZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoIWlzTmlsKG5leHRDaGlsZCkgJiYgIWlzTmlsKHByZXZDaGlsZCkpIHtcbiAgICB2YXIgX3JlZiA9IG5leHRDaGlsZC5wcm9wcyB8fCB7fSxcbiAgICAgIG5leHRDaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICBuZXh0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgICB2YXIgX3JlZjIgPSBwcmV2Q2hpbGQucHJvcHMgfHwge30sXG4gICAgICBwcmV2Q2hpbGRyZW4gPSBfcmVmMi5jaGlsZHJlbixcbiAgICAgIHByZXZQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwgX2V4Y2x1ZGVkMik7XG4gICAgaWYgKG5leHRDaGlsZHJlbiAmJiBwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBzaGFsbG93RXF1YWwobmV4dFByb3BzLCBwcmV2UHJvcHMpICYmIGlzQ2hpbGRyZW5FcXVhbChuZXh0Q2hpbGRyZW4sIHByZXZDaGlsZHJlbik7XG4gICAgfVxuICAgIGlmICghbmV4dENoaWxkcmVuICYmICFwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBzaGFsbG93RXF1YWwobmV4dFByb3BzLCBwcmV2UHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbmV4cG9ydCB2YXIgcmVuZGVyQnlPcmRlciA9IGZ1bmN0aW9uIHJlbmRlckJ5T3JkZXIoY2hpbGRyZW4sIHJlbmRlck1hcCkge1xuICB2YXIgZWxlbWVudHMgPSBbXTtcbiAgdmFyIHJlY29yZCA9IHt9O1xuICB0b0FycmF5KGNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCwgaW5kZXgpIHtcbiAgICBpZiAoaXNTdmdFbGVtZW50KGNoaWxkKSkge1xuICAgICAgZWxlbWVudHMucHVzaChjaGlsZCk7XG4gICAgfSBlbHNlIGlmIChjaGlsZCkge1xuICAgICAgdmFyIGRpc3BsYXlOYW1lID0gZ2V0RGlzcGxheU5hbWUoY2hpbGQudHlwZSk7XG4gICAgICB2YXIgX3JlZjMgPSByZW5kZXJNYXBbZGlzcGxheU5hbWVdIHx8IHt9LFxuICAgICAgICBoYW5kbGVyID0gX3JlZjMuaGFuZGxlcixcbiAgICAgICAgb25jZSA9IF9yZWYzLm9uY2U7XG4gICAgICBpZiAoaGFuZGxlciAmJiAoIW9uY2UgfHwgIXJlY29yZFtkaXNwbGF5TmFtZV0pKSB7XG4gICAgICAgIHZhciByZXN1bHRzID0gaGFuZGxlcihjaGlsZCwgZGlzcGxheU5hbWUsIGluZGV4KTtcbiAgICAgICAgZWxlbWVudHMucHVzaChyZXN1bHRzKTtcbiAgICAgICAgcmVjb3JkW2Rpc3BsYXlOYW1lXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGVsZW1lbnRzO1xufTtcbmV4cG9ydCB2YXIgZ2V0UmVhY3RFdmVudEJ5VHlwZSA9IGZ1bmN0aW9uIGdldFJlYWN0RXZlbnRCeVR5cGUoZSkge1xuICB2YXIgdHlwZSA9IGUgJiYgZS50eXBlO1xuICBpZiAodHlwZSAmJiBSRUFDVF9CUk9XU0VSX0VWRU5UX01BUFt0eXBlXSkge1xuICAgIHJldHVybiBSRUFDVF9CUk9XU0VSX0VWRU5UX01BUFt0eXBlXTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5leHBvcnQgdmFyIHBhcnNlQ2hpbGRJbmRleCA9IGZ1bmN0aW9uIHBhcnNlQ2hpbGRJbmRleChjaGlsZCwgY2hpbGRyZW4pIHtcbiAgcmV0dXJuIHRvQXJyYXkoY2hpbGRyZW4pLmluZGV4T2YoY2hpbGQpO1xufTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsInNvdXJjZSIsImV4Y2x1ZGVkIiwidGFyZ2V0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJrZXkiLCJpIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsImxlbmd0aCIsImluZGV4T2YiLCJwcm90b3R5cGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImNhbGwiLCJoYXNPd25Qcm9wZXJ0eSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsImdldCIsImlzTmlsIiwiaXNTdHJpbmciLCJpc0Z1bmN0aW9uIiwiaXNPYmplY3QiLCJDaGlsZHJlbiIsImlzVmFsaWRFbGVtZW50IiwiaXNGcmFnbWVudCIsImlzTnVtYmVyIiwic2hhbGxvd0VxdWFsIiwiRmlsdGVyZWRFbGVtZW50S2V5TWFwIiwiU1ZHRWxlbWVudFByb3BLZXlzIiwiRXZlbnRLZXlzIiwiUkVBQ1RfQlJPV1NFUl9FVkVOVF9NQVAiLCJjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwidG91Y2hjYW5jZWwiLCJ0b3VjaGVuZCIsInRvdWNobW92ZSIsInRvdWNoc3RhcnQiLCJjb250ZXh0bWVudSIsImRibGNsaWNrIiwiU0NBTEVfVFlQRVMiLCJMRUdFTkRfVFlQRVMiLCJUT09MVElQX1RZUEVTIiwiZ2V0RGlzcGxheU5hbWUiLCJDb21wIiwiZGlzcGxheU5hbWUiLCJuYW1lIiwibGFzdENoaWxkcmVuIiwibGFzdFJlc3VsdCIsInRvQXJyYXkiLCJjaGlsZHJlbiIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImZvckVhY2giLCJjaGlsZCIsImNvbmNhdCIsInByb3BzIiwicHVzaCIsImZpbmRBbGxCeVR5cGUiLCJ0eXBlIiwidHlwZXMiLCJtYXAiLCJ0IiwiY2hpbGRUeXBlIiwiZmluZENoaWxkQnlUeXBlIiwid2l0aG91dFR5cGUiLCJuZXdDaGlsZHJlbiIsInZhbGlkYXRlV2lkdGhIZWlnaHQiLCJlbCIsIl9lbCRwcm9wcyIsIndpZHRoIiwiaGVpZ2h0IiwiU1ZHX1RBR1MiLCJpc1N2Z0VsZW1lbnQiLCJoYXNDbGlwRG90IiwiZG90IiwiaXNWYWxpZFNwcmVhZGFibGVQcm9wIiwicHJvcGVydHkiLCJpbmNsdWRlRXZlbnRzIiwic3ZnRWxlbWVudFR5cGUiLCJfRmlsdGVyZWRFbGVtZW50S2V5TWEiLCJtYXRjaGluZ0VsZW1lbnRUeXBlS2V5cyIsInN0YXJ0c1dpdGgiLCJpbmNsdWRlcyIsImZpbHRlclN2Z0VsZW1lbnRzIiwic3ZnRWxlbWVudHMiLCJlbnRyeSIsImZpbHRlclByb3BzIiwiaW5wdXRQcm9wcyIsIm91dCIsImtleXMiLCJfaW5wdXRQcm9wcyIsImlzQ2hpbGRyZW5FcXVhbCIsIm5leHRDaGlsZHJlbiIsInByZXZDaGlsZHJlbiIsImNvdW50IiwiaXNTaW5nbGVDaGlsZEVxdWFsIiwibmV4dENoaWxkIiwicHJldkNoaWxkIiwiX3JlZiIsIm5leHRQcm9wcyIsIl9yZWYyIiwicHJldlByb3BzIiwicmVuZGVyQnlPcmRlciIsInJlbmRlck1hcCIsImVsZW1lbnRzIiwicmVjb3JkIiwiaW5kZXgiLCJfcmVmMyIsImhhbmRsZXIiLCJvbmNlIiwicmVzdWx0cyIsImdldFJlYWN0RXZlbnRCeVR5cGUiLCJlIiwicGFyc2VDaGlsZEluZGV4Il0sInNvdXJjZVJvb3QiOiIifQ==\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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QUNUO0FBQ0Y7QUFDTyxTQUFTb0QsY0FBY0YsVUFBVTtJQUN0QyxJQUFJakIsU0FBU2tCLHVCQUF1QkQsV0FBV3ZHLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDekQsSUFBSXNGLFdBQVdqQyxTQUFTO1FBQ3RCLGtCQUFrQjtRQUNsQixPQUFPO0lBQ1Q7SUFDQSxPQUFPaUM7QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9SZWR1Y2VDU1NDYWxjLmpzPzZlYzkiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7IHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07IGlmIChudWxsICE9IHQpIHsgdmFyIGUsIG4sIGksIHUsIGEgPSBbXSwgZiA9ICEwLCBvID0gITE7IHRyeSB7IGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHsgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuOyBmID0gITE7IH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTsgfSBjYXRjaCAocikgeyBvID0gITAsIG4gPSByOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47IH0gZmluYWxseSB7IGlmIChvKSB0aHJvdyBuOyB9IH0gcmV0dXJuIGE7IH0gfVxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxudmFyIE1VTFRJUExZX09SX0RJVklERV9SRUdFWCA9IC8oLT9cXGQrKD86XFwuXFxkKyk/W2EtekEtWiVdKikoWyovXSkoLT9cXGQrKD86XFwuXFxkKyk/W2EtekEtWiVdKikvO1xudmFyIEFERF9PUl9TVUJUUkFDVF9SRUdFWCA9IC8oLT9cXGQrKD86XFwuXFxkKyk/W2EtekEtWiVdKikoWystXSkoLT9cXGQrKD86XFwuXFxkKyk/W2EtekEtWiVdKikvO1xudmFyIENTU19MRU5HVEhfVU5JVF9SRUdFWCA9IC9ecHh8Y218dmh8dnd8ZW18cmVtfCV8bW18aW58cHR8cGN8ZXh8Y2h8dm1pbnx2bWF4fFEkLztcbnZhciBOVU1fU1BMSVRfUkVHRVggPSAvKC0/XFxkKyg/OlxcLlxcZCspPykoW2EtekEtWiVdKyk/LztcbnZhciBDT05WRVJTSU9OX1JBVEVTID0ge1xuICBjbTogOTYgLyAyLjU0LFxuICBtbTogOTYgLyAyNS40LFxuICBwdDogOTYgLyA3MixcbiAgcGM6IDk2IC8gNixcbiAgXCJpblwiOiA5NixcbiAgUTogOTYgLyAoMi41NCAqIDQwKSxcbiAgcHg6IDFcbn07XG52YXIgRklYRURfQ1NTX0xFTkdUSF9VTklUUyA9IE9iamVjdC5rZXlzKENPTlZFUlNJT05fUkFURVMpO1xudmFyIFNUUl9OQU4gPSAnTmFOJztcbmZ1bmN0aW9uIGNvbnZlcnRUb1B4KHZhbHVlLCB1bml0KSB7XG4gIHJldHVybiB2YWx1ZSAqIENPTlZFUlNJT05fUkFURVNbdW5pdF07XG59XG52YXIgRGVjaW1hbENTUyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIERlY2ltYWxDU1MobnVtLCB1bml0KSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERlY2ltYWxDU1MpO1xuICAgIHRoaXMubnVtID0gbnVtO1xuICAgIHRoaXMudW5pdCA9IHVuaXQ7XG4gICAgdGhpcy5udW0gPSBudW07XG4gICAgdGhpcy51bml0ID0gdW5pdDtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKG51bSkpIHtcbiAgICAgIHRoaXMudW5pdCA9ICcnO1xuICAgIH1cbiAgICBpZiAodW5pdCAhPT0gJycgJiYgIUNTU19MRU5HVEhfVU5JVF9SRUdFWC50ZXN0KHVuaXQpKSB7XG4gICAgICB0aGlzLm51bSA9IE5hTjtcbiAgICAgIHRoaXMudW5pdCA9ICcnO1xuICAgIH1cbiAgICBpZiAoRklYRURfQ1NTX0xFTkdUSF9VTklUUy5pbmNsdWRlcyh1bml0KSkge1xuICAgICAgdGhpcy5udW0gPSBjb252ZXJ0VG9QeChudW0sIHVuaXQpO1xuICAgICAgdGhpcy51bml0ID0gJ3B4JztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIF9jcmVhdGVDbGFzcyhEZWNpbWFsQ1NTLCBbe1xuICAgIGtleTogXCJhZGRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkKG90aGVyKSB7XG4gICAgICBpZiAodGhpcy51bml0ICE9PSBvdGhlci51bml0KSB7XG4gICAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyhOYU4sICcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyh0aGlzLm51bSArIG90aGVyLm51bSwgdGhpcy51bml0KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3VidHJhY3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3VidHJhY3Qob3RoZXIpIHtcbiAgICAgIGlmICh0aGlzLnVuaXQgIT09IG90aGVyLnVuaXQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEZWNpbWFsQ1NTKE5hTiwgJycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBEZWNpbWFsQ1NTKHRoaXMubnVtIC0gb3RoZXIubnVtLCB0aGlzLnVuaXQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJtdWx0aXBseVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtdWx0aXBseShvdGhlcikge1xuICAgICAgaWYgKHRoaXMudW5pdCAhPT0gJycgJiYgb3RoZXIudW5pdCAhPT0gJycgJiYgdGhpcy51bml0ICE9PSBvdGhlci51bml0KSB7XG4gICAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyhOYU4sICcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyh0aGlzLm51bSAqIG90aGVyLm51bSwgdGhpcy51bml0IHx8IG90aGVyLnVuaXQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkaXZpZGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGl2aWRlKG90aGVyKSB7XG4gICAgICBpZiAodGhpcy51bml0ICE9PSAnJyAmJiBvdGhlci51bml0ICE9PSAnJyAmJiB0aGlzLnVuaXQgIT09IG90aGVyLnVuaXQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEZWNpbWFsQ1NTKE5hTiwgJycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBEZWNpbWFsQ1NTKHRoaXMubnVtIC8gb3RoZXIubnVtLCB0aGlzLnVuaXQgfHwgb3RoZXIudW5pdCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHRoaXMubnVtKS5jb25jYXQodGhpcy51bml0KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNOYU5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNOYU4oKSB7XG4gICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKHRoaXMubnVtKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShzdHIpIHtcbiAgICAgIHZhciBfTlVNX1NQTElUX1JFR0VYJGV4ZWM7XG4gICAgICB2YXIgX3JlZiA9IChfTlVNX1NQTElUX1JFR0VYJGV4ZWMgPSBOVU1fU1BMSVRfUkVHRVguZXhlYyhzdHIpKSAhPT0gbnVsbCAmJiBfTlVNX1NQTElUX1JFR0VYJGV4ZWMgIT09IHZvaWQgMCA/IF9OVU1fU1BMSVRfUkVHRVgkZXhlYyA6IFtdLFxuICAgICAgICBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDMpLFxuICAgICAgICBudW1TdHIgPSBfcmVmMlsxXSxcbiAgICAgICAgdW5pdCA9IF9yZWYyWzJdO1xuICAgICAgcmV0dXJuIG5ldyBEZWNpbWFsQ1NTKHBhcnNlRmxvYXQobnVtU3RyKSwgdW5pdCAhPT0gbnVsbCAmJiB1bml0ICE9PSB2b2lkIDAgPyB1bml0IDogJycpO1xuICAgIH1cbiAgfV0pO1xufSgpO1xuZnVuY3Rpb24gY2FsY3VsYXRlQXJpdGhtZXRpYyhleHByKSB7XG4gIGlmIChleHByLmluY2x1ZGVzKFNUUl9OQU4pKSB7XG4gICAgcmV0dXJuIFNUUl9OQU47XG4gIH1cbiAgdmFyIG5ld0V4cHIgPSBleHByO1xuICB3aGlsZSAobmV3RXhwci5pbmNsdWRlcygnKicpIHx8IG5ld0V4cHIuaW5jbHVkZXMoJy8nKSkge1xuICAgIHZhciBfTVVMVElQTFlfT1JfRElWSURFX1I7XG4gICAgdmFyIF9yZWYzID0gKF9NVUxUSVBMWV9PUl9ESVZJREVfUiA9IE1VTFRJUExZX09SX0RJVklERV9SRUdFWC5leGVjKG5ld0V4cHIpKSAhPT0gbnVsbCAmJiBfTVVMVElQTFlfT1JfRElWSURFX1IgIT09IHZvaWQgMCA/IF9NVUxUSVBMWV9PUl9ESVZJREVfUiA6IFtdLFxuICAgICAgX3JlZjQgPSBfc2xpY2VkVG9BcnJheShfcmVmMywgNCksXG4gICAgICBsZWZ0T3BlcmFuZCA9IF9yZWY0WzFdLFxuICAgICAgb3BlcmF0b3IgPSBfcmVmNFsyXSxcbiAgICAgIHJpZ2h0T3BlcmFuZCA9IF9yZWY0WzNdO1xuICAgIHZhciBsVHMgPSBEZWNpbWFsQ1NTLnBhcnNlKGxlZnRPcGVyYW5kICE9PSBudWxsICYmIGxlZnRPcGVyYW5kICE9PSB2b2lkIDAgPyBsZWZ0T3BlcmFuZCA6ICcnKTtcbiAgICB2YXIgclRzID0gRGVjaW1hbENTUy5wYXJzZShyaWdodE9wZXJhbmQgIT09IG51bGwgJiYgcmlnaHRPcGVyYW5kICE9PSB2b2lkIDAgPyByaWdodE9wZXJhbmQgOiAnJyk7XG4gICAgdmFyIHJlc3VsdCA9IG9wZXJhdG9yID09PSAnKicgPyBsVHMubXVsdGlwbHkoclRzKSA6IGxUcy5kaXZpZGUoclRzKTtcbiAgICBpZiAocmVzdWx0LmlzTmFOKCkpIHtcbiAgICAgIHJldHVybiBTVFJfTkFOO1xuICAgIH1cbiAgICBuZXdFeHByID0gbmV3RXhwci5yZXBsYWNlKE1VTFRJUExZX09SX0RJVklERV9SRUdFWCwgcmVzdWx0LnRvU3RyaW5nKCkpO1xuICB9XG4gIHdoaWxlIChuZXdFeHByLmluY2x1ZGVzKCcrJykgfHwgLy4tXFxkKyg/OlxcLlxcZCspPy8udGVzdChuZXdFeHByKSkge1xuICAgIHZhciBfQUREX09SX1NVQlRSQUNUX1JFR0U7XG4gICAgdmFyIF9yZWY1ID0gKF9BRERfT1JfU1VCVFJBQ1RfUkVHRSA9IEFERF9PUl9TVUJUUkFDVF9SRUdFWC5leGVjKG5ld0V4cHIpKSAhPT0gbnVsbCAmJiBfQUREX09SX1NVQlRSQUNUX1JFR0UgIT09IHZvaWQgMCA/IF9BRERfT1JfU1VCVFJBQ1RfUkVHRSA6IFtdLFxuICAgICAgX3JlZjYgPSBfc2xpY2VkVG9BcnJheShfcmVmNSwgNCksXG4gICAgICBfbGVmdE9wZXJhbmQgPSBfcmVmNlsxXSxcbiAgICAgIF9vcGVyYXRvciA9IF9yZWY2WzJdLFxuICAgICAgX3JpZ2h0T3BlcmFuZCA9IF9yZWY2WzNdO1xuICAgIHZhciBfbFRzID0gRGVjaW1hbENTUy5wYXJzZShfbGVmdE9wZXJhbmQgIT09IG51bGwgJiYgX2xlZnRPcGVyYW5kICE9PSB2b2lkIDAgPyBfbGVmdE9wZXJhbmQgOiAnJyk7XG4gICAgdmFyIF9yVHMgPSBEZWNpbWFsQ1NTLnBhcnNlKF9yaWdodE9wZXJhbmQgIT09IG51bGwgJiYgX3JpZ2h0T3BlcmFuZCAhPT0gdm9pZCAwID8gX3JpZ2h0T3BlcmFuZCA6ICcnKTtcbiAgICB2YXIgX3Jlc3VsdCA9IF9vcGVyYXRvciA9PT0gJysnID8gX2xUcy5hZGQoX3JUcykgOiBfbFRzLnN1YnRyYWN0KF9yVHMpO1xuICAgIGlmIChfcmVzdWx0LmlzTmFOKCkpIHtcbiAgICAgIHJldHVybiBTVFJfTkFOO1xuICAgIH1cbiAgICBuZXdFeHByID0gbmV3RXhwci5yZXBsYWNlKEFERF9PUl9TVUJUUkFDVF9SRUdFWCwgX3Jlc3VsdC50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gbmV3RXhwcjtcbn1cbnZhciBQQVJFTlRIRVNFU19SRUdFWCA9IC9cXCgoW14oKV0qKVxcKS87XG5mdW5jdGlvbiBjYWxjdWxhdGVQYXJlbnRoZXNlcyhleHByKSB7XG4gIHZhciBuZXdFeHByID0gZXhwcjtcbiAgd2hpbGUgKG5ld0V4cHIuaW5jbHVkZXMoJygnKSkge1xuICAgIHZhciBfUEFSRU5USEVTRVNfUkVHRVgkZXggPSBQQVJFTlRIRVNFU19SRUdFWC5leGVjKG5ld0V4cHIpLFxuICAgICAgX1BBUkVOVEhFU0VTX1JFR0VYJGV4MiA9IF9zbGljZWRUb0FycmF5KF9QQVJFTlRIRVNFU19SRUdFWCRleCwgMiksXG4gICAgICBwYXJlbnRoZXRpY2FsRXhwcmVzc2lvbiA9IF9QQVJFTlRIRVNFU19SRUdFWCRleDJbMV07XG4gICAgbmV3RXhwciA9IG5ld0V4cHIucmVwbGFjZShQQVJFTlRIRVNFU19SRUdFWCwgY2FsY3VsYXRlQXJpdGhtZXRpYyhwYXJlbnRoZXRpY2FsRXhwcmVzc2lvbikpO1xuICB9XG4gIHJldHVybiBuZXdFeHByO1xufVxuZnVuY3Rpb24gZXZhbHVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24pIHtcbiAgdmFyIG5ld0V4cHIgPSBleHByZXNzaW9uLnJlcGxhY2UoL1xccysvZywgJycpO1xuICBuZXdFeHByID0gY2FsY3VsYXRlUGFyZW50aGVzZXMobmV3RXhwcik7XG4gIG5ld0V4cHIgPSBjYWxjdWxhdGVBcml0aG1ldGljKG5ld0V4cHIpO1xuICByZXR1cm4gbmV3RXhwcjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzYWZlRXZhbHVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24pIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXZhbHVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gU1RSX05BTjtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZUNTU0NhbGMoZXhwcmVzc2lvbikge1xuICB2YXIgcmVzdWx0ID0gc2FmZUV2YWx1YXRlRXhwcmVzc2lvbihleHByZXNzaW9uLnNsaWNlKDUsIC0xKSk7XG4gIGlmIChyZXN1bHQgPT09IFNUUl9OQU4pIHtcbiAgICAvLyBub3RpZnkgdGhlIHVzZXJcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0iXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJpIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIlR5cGVFcnJvciIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsIk9iamVjdCIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJsZW5ndGgiLCJhcnIyIiwiciIsImwiLCJ0IiwiZSIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiaXNBcnJheSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIk1VTFRJUExZX09SX0RJVklERV9SRUdFWCIsIkFERF9PUl9TVUJUUkFDVF9SRUdFWCIsIkNTU19MRU5HVEhfVU5JVF9SRUdFWCIsIk5VTV9TUExJVF9SRUdFWCIsIkNPTlZFUlNJT05fUkFURVMiLCJjbSIsIm1tIiwicHQiLCJwYyIsIlEiLCJweCIsIkZJWEVEX0NTU19MRU5HVEhfVU5JVFMiLCJrZXlzIiwiU1RSX05BTiIsImNvbnZlcnRUb1B4IiwidW5pdCIsIkRlY2ltYWxDU1MiLCJudW0iLCJpc05hTiIsIk5hTiIsImluY2x1ZGVzIiwiYWRkIiwib3RoZXIiLCJzdWJ0cmFjdCIsIm11bHRpcGx5IiwiZGl2aWRlIiwiY29uY2F0IiwicGFyc2UiLCJzdHIiLCJfTlVNX1NQTElUX1JFR0VYJGV4ZWMiLCJfcmVmIiwiZXhlYyIsIl9yZWYyIiwibnVtU3RyIiwicGFyc2VGbG9hdCIsImNhbGN1bGF0ZUFyaXRobWV0aWMiLCJleHByIiwibmV3RXhwciIsIl9NVUxUSVBMWV9PUl9ESVZJREVfUiIsIl9yZWYzIiwiX3JlZjQiLCJsZWZ0T3BlcmFuZCIsIm9wZXJhdG9yIiwicmlnaHRPcGVyYW5kIiwibFRzIiwiclRzIiwicmVzdWx0IiwicmVwbGFjZSIsIl9BRERfT1JfU1VCVFJBQ1RfUkVHRSIsIl9yZWY1IiwiX3JlZjYiLCJfbGVmdE9wZXJhbmQiLCJfb3BlcmF0b3IiLCJfcmlnaHRPcGVyYW5kIiwiX2xUcyIsIl9yVHMiLCJfcmVzdWx0IiwiUEFSRU5USEVTRVNfUkVHRVgiLCJjYWxjdWxhdGVQYXJlbnRoZXNlcyIsIl9QQVJFTlRIRVNFU19SRUdFWCRleCIsIl9QQVJFTlRIRVNFU19SRUdFWCRleDIiLCJwYXJlbnRoZXRpY2FsRXhwcmVzc2lvbiIsImV2YWx1YXRlRXhwcmVzc2lvbiIsImV4cHJlc3Npb24iLCJzYWZlRXZhbHVhdGVFeHByZXNzaW9uIiwicmVkdWNlQ1NTQ2FsYyJdLCJzb3VyY2VSb290IjoiIn0=\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvU2hhbGxvd0VxdWFsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxTQUFTQSxhQUFhQyxDQUFDLEVBQUVDLENBQUM7SUFDL0IsdUNBQXVDLEdBQ3ZDLElBQUssSUFBSUMsT0FBT0YsRUFBRztRQUNqQixJQUFJLEVBQUMsR0FBRUcsY0FBYyxDQUFDQyxJQUFJLENBQUNKLEdBQUdFLFFBQVMsRUFBQyxFQUFDLEdBQUVDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxHQUFHQyxRQUFRRixDQUFDLENBQUNFLElBQUksS0FBS0QsQ0FBQyxDQUFDQyxJQUFJLEdBQUc7WUFDNUYsT0FBTztRQUNUO0lBQ0Y7SUFDQSxJQUFLLElBQUlHLFFBQVFKLEVBQUc7UUFDbEIsSUFBSSxFQUFDLEdBQUVFLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxHQUFHSSxTQUFTLENBQUMsRUFBQyxHQUFFRixjQUFjLENBQUNDLElBQUksQ0FBQ0osR0FBR0ssT0FBTztZQUN2RSxPQUFPO1FBQ1Q7SUFDRjtJQUNBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9TaGFsbG93RXF1YWwuanM/ZWI1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gc2hhbGxvd0VxdWFsKGEsIGIpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbiAgZm9yICh2YXIga2V5IGluIGEpIHtcbiAgICBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChhLCBrZXkpICYmICghe30uaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXkpIHx8IGFba2V5XSAhPT0gYltrZXldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBfa2V5IGluIGIpIHtcbiAgICBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChiLCBfa2V5KSAmJiAhe30uaGFzT3duUHJvcGVydHkuY2FsbChhLCBfa2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn0iXSwibmFtZXMiOlsic2hhbGxvd0VxdWFsIiwiYSIsImIiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfa2V5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ShallowEqual.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY2FsY3VsYXRlVmlld0JveC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBcUM7QUFDckM7Ozs7OztDQU1DLEdBQ00sSUFBSUMsbUJBQW1CRCxxREFBT0EsQ0FBQyxTQUFVRSxNQUFNO0lBQ3BELE9BQU87UUFDTEMsR0FBR0QsT0FBT0UsSUFBSTtRQUNkQyxHQUFHSCxPQUFPSSxHQUFHO1FBQ2JDLE9BQU9MLE9BQU9LLEtBQUs7UUFDbkJDLFFBQVFOLE9BQU9NLE1BQU07SUFDdkI7QUFDRixHQUFHLFNBQVVOLE1BQU07SUFDakIsT0FBTztRQUFDO1FBQUtBLE9BQU9FLElBQUk7UUFBRTtRQUFLRixPQUFPSSxHQUFHO1FBQUU7UUFBS0osT0FBT0ssS0FBSztRQUFFO1FBQUtMLE9BQU9NLE1BQU07S0FBQyxDQUFDQyxJQUFJLENBQUM7QUFDekYsR0FBRyIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9jYWxjdWxhdGVWaWV3Qm94LmpzPzg1MDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoL21lbW9pemUnO1xuLyoqXG4gKiBUaGlzIGlzIG1lbW9pemVkIGJlY2F1c2UgdGhlIHZpZXdCb3ggaXMgdW5saWtlbHkgdG8gY2hhbmdlIG9mdGVuXG4gKiAtIGJ1dCBiZWNhdXNlIGl0IGlzIGNvbXB1dGVkIGZyb20gb2Zmc2V0LCBhbnkgY2hhbmdlIHRvIGl0IHdvdWxkIHJlLXJlbmRlciBhbGwgY2hpbGRyZW4uXG4gKlxuICogQW5kIGJlY2F1c2Ugd2UgaGF2ZSBtYW55IHJlYWRlcnMgb2YgdGhlIHZpZXdCb3gsIGFuZCB1cGRhdGUgaXQgb25seSByYXJlbHksXG4gKiB0aGVuIGxldCdzIG9wdGltaXplIHdpdGggbWVtb2l6YXRpb24uXG4gKi9cbmV4cG9ydCB2YXIgY2FsY3VsYXRlVmlld0JveCA9IG1lbW9pemUoZnVuY3Rpb24gKG9mZnNldCkge1xuICByZXR1cm4ge1xuICAgIHg6IG9mZnNldC5sZWZ0LFxuICAgIHk6IG9mZnNldC50b3AsXG4gICAgd2lkdGg6IG9mZnNldC53aWR0aCxcbiAgICBoZWlnaHQ6IG9mZnNldC5oZWlnaHRcbiAgfTtcbn0sIGZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgcmV0dXJuIFsnbCcsIG9mZnNldC5sZWZ0LCAndCcsIG9mZnNldC50b3AsICd3Jywgb2Zmc2V0LndpZHRoLCAnaCcsIG9mZnNldC5oZWlnaHRdLmpvaW4oJycpO1xufSk7Il0sIm5hbWVzIjpbIm1lbW9pemUiLCJjYWxjdWxhdGVWaWV3Qm94Iiwib2Zmc2V0IiwieCIsImxlZnQiLCJ5IiwidG9wIiwid2lkdGgiLCJoZWlnaHQiLCJqb2luIl0sInNvdXJjZVJvb3QiOiIifQ==\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldEN1cnNvclBvaW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBaUQ7QUFDZTtBQUN6RCxTQUFTRSxnQkFBZ0JDLE1BQU0sRUFBRUMsZ0JBQWdCLEVBQUVDLE1BQU07SUFDOUQsSUFBSUMsSUFBSUMsSUFBSUMsSUFBSUM7SUFDaEIsSUFBSU4sV0FBVyxjQUFjO1FBQzNCRyxLQUFLRixpQkFBaUJNLENBQUM7UUFDdkJGLEtBQUtGO1FBQ0xDLEtBQUtGLE9BQU9NLEdBQUc7UUFDZkYsS0FBS0osT0FBT00sR0FBRyxHQUFHTixPQUFPTyxNQUFNO0lBQ2pDLE9BQU8sSUFBSVQsV0FBVyxZQUFZO1FBQ2hDSSxLQUFLSCxpQkFBaUJTLENBQUM7UUFDdkJKLEtBQUtGO1FBQ0xELEtBQUtELE9BQU9TLElBQUk7UUFDaEJOLEtBQUtILE9BQU9TLElBQUksR0FBR1QsT0FBT1UsS0FBSztJQUNqQyxPQUFPLElBQUlYLGlCQUFpQlksRUFBRSxJQUFJLFFBQVFaLGlCQUFpQmEsRUFBRSxJQUFJLE1BQU07UUFDckUsSUFBSWQsV0FBVyxXQUFXO1lBQ3hCLElBQUlhLEtBQUtaLGlCQUFpQlksRUFBRSxFQUMxQkMsS0FBS2IsaUJBQWlCYSxFQUFFLEVBQ3hCQyxjQUFjZCxpQkFBaUJjLFdBQVcsRUFDMUNDLGNBQWNmLGlCQUFpQmUsV0FBVyxFQUMxQ0MsUUFBUWhCLGlCQUFpQmdCLEtBQUs7WUFDaEMsSUFBSUMsYUFBYXJCLDZEQUFnQkEsQ0FBQ2dCLElBQUlDLElBQUlDLGFBQWFFO1lBQ3ZELElBQUlFLGFBQWF0Qiw2REFBZ0JBLENBQUNnQixJQUFJQyxJQUFJRSxhQUFhQztZQUN2RGQsS0FBS2UsV0FBV1gsQ0FBQztZQUNqQkgsS0FBS2MsV0FBV1IsQ0FBQztZQUNqQkwsS0FBS2MsV0FBV1osQ0FBQztZQUNqQkQsS0FBS2EsV0FBV1QsQ0FBQztRQUNuQixPQUFPO1lBQ0wsT0FBT1osNkVBQXFCQSxDQUFDRztRQUMvQjtJQUNGO0lBQ0EsT0FBTztRQUFDO1lBQ05NLEdBQUdKO1lBQ0hPLEdBQUdOO1FBQ0w7UUFBRztZQUNERyxHQUFHRjtZQUNISyxHQUFHSjtRQUNMO0tBQUU7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9jdXJzb3IvZ2V0Q3Vyc29yUG9pbnRzLmpzP2QxNWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9sYXJUb0NhcnRlc2lhbiB9IGZyb20gJy4uL1BvbGFyVXRpbHMnO1xuaW1wb3J0IHsgZ2V0UmFkaWFsQ3Vyc29yUG9pbnRzIH0gZnJvbSAnLi9nZXRSYWRpYWxDdXJzb3JQb2ludHMnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnNvclBvaW50cyhsYXlvdXQsIGFjdGl2ZUNvb3JkaW5hdGUsIG9mZnNldCkge1xuICB2YXIgeDEsIHkxLCB4MiwgeTI7XG4gIGlmIChsYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgIHgxID0gYWN0aXZlQ29vcmRpbmF0ZS54O1xuICAgIHgyID0geDE7XG4gICAgeTEgPSBvZmZzZXQudG9wO1xuICAgIHkyID0gb2Zmc2V0LnRvcCArIG9mZnNldC5oZWlnaHQ7XG4gIH0gZWxzZSBpZiAobGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgeTEgPSBhY3RpdmVDb29yZGluYXRlLnk7XG4gICAgeTIgPSB5MTtcbiAgICB4MSA9IG9mZnNldC5sZWZ0O1xuICAgIHgyID0gb2Zmc2V0LmxlZnQgKyBvZmZzZXQud2lkdGg7XG4gIH0gZWxzZSBpZiAoYWN0aXZlQ29vcmRpbmF0ZS5jeCAhPSBudWxsICYmIGFjdGl2ZUNvb3JkaW5hdGUuY3kgIT0gbnVsbCkge1xuICAgIGlmIChsYXlvdXQgPT09ICdjZW50cmljJykge1xuICAgICAgdmFyIGN4ID0gYWN0aXZlQ29vcmRpbmF0ZS5jeCxcbiAgICAgICAgY3kgPSBhY3RpdmVDb29yZGluYXRlLmN5LFxuICAgICAgICBpbm5lclJhZGl1cyA9IGFjdGl2ZUNvb3JkaW5hdGUuaW5uZXJSYWRpdXMsXG4gICAgICAgIG91dGVyUmFkaXVzID0gYWN0aXZlQ29vcmRpbmF0ZS5vdXRlclJhZGl1cyxcbiAgICAgICAgYW5nbGUgPSBhY3RpdmVDb29yZGluYXRlLmFuZ2xlO1xuICAgICAgdmFyIGlubmVyUG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgaW5uZXJSYWRpdXMsIGFuZ2xlKTtcbiAgICAgIHZhciBvdXRlclBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIG91dGVyUmFkaXVzLCBhbmdsZSk7XG4gICAgICB4MSA9IGlubmVyUG9pbnQueDtcbiAgICAgIHkxID0gaW5uZXJQb2ludC55O1xuICAgICAgeDIgPSBvdXRlclBvaW50Lng7XG4gICAgICB5MiA9IG91dGVyUG9pbnQueTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdldFJhZGlhbEN1cnNvclBvaW50cyhhY3RpdmVDb29yZGluYXRlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFt7XG4gICAgeDogeDEsXG4gICAgeTogeTFcbiAgfSwge1xuICAgIHg6IHgyLFxuICAgIHk6IHkyXG4gIH1dO1xufSJdLCJuYW1lcyI6WyJwb2xhclRvQ2FydGVzaWFuIiwiZ2V0UmFkaWFsQ3Vyc29yUG9pbnRzIiwiZ2V0Q3Vyc29yUG9pbnRzIiwibGF5b3V0IiwiYWN0aXZlQ29vcmRpbmF0ZSIsIm9mZnNldCIsIngxIiwieTEiLCJ4MiIsInkyIiwieCIsInRvcCIsImhlaWdodCIsInkiLCJsZWZ0Iiwid2lkdGgiLCJjeCIsImN5IiwiaW5uZXJSYWRpdXMiLCJvdXRlclJhZGl1cyIsImFuZ2xlIiwiaW5uZXJQb2ludCIsIm91dGVyUG9pbnQiXSwic291cmNlUm9vdCI6IiJ9\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldEN1cnNvclJlY3RhbmdsZS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sU0FBU0EsbUJBQW1CQyxNQUFNLEVBQUVDLGdCQUFnQixFQUFFQyxNQUFNLEVBQUVDLG1CQUFtQjtJQUN0RixJQUFJQyxXQUFXRCxzQkFBc0I7SUFDckMsT0FBTztRQUNMRSxRQUFRO1FBQ1JDLE1BQU07UUFDTkMsR0FBR1AsV0FBVyxlQUFlQyxpQkFBaUJNLENBQUMsR0FBR0gsV0FBV0YsT0FBT00sSUFBSSxHQUFHO1FBQzNFQyxHQUFHVCxXQUFXLGVBQWVFLE9BQU9RLEdBQUcsR0FBRyxNQUFNVCxpQkFBaUJRLENBQUMsR0FBR0w7UUFDckVPLE9BQU9YLFdBQVcsZUFBZUcsc0JBQXNCRCxPQUFPUyxLQUFLLEdBQUc7UUFDdEVDLFFBQVFaLFdBQVcsZUFBZUUsT0FBT1UsTUFBTSxHQUFHLElBQUlUO0lBQ3hEO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldEN1cnNvclJlY3RhbmdsZS5qcz82NmUxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRDdXJzb3JSZWN0YW5nbGUobGF5b3V0LCBhY3RpdmVDb29yZGluYXRlLCBvZmZzZXQsIHRvb2x0aXBBeGlzQmFuZFNpemUpIHtcbiAgdmFyIGhhbGZTaXplID0gdG9vbHRpcEF4aXNCYW5kU2l6ZSAvIDI7XG4gIHJldHVybiB7XG4gICAgc3Ryb2tlOiAnbm9uZScsXG4gICAgZmlsbDogJyNjY2MnLFxuICAgIHg6IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gYWN0aXZlQ29vcmRpbmF0ZS54IC0gaGFsZlNpemUgOiBvZmZzZXQubGVmdCArIDAuNSxcbiAgICB5OiBsYXlvdXQgPT09ICdob3Jpem9udGFsJyA/IG9mZnNldC50b3AgKyAwLjUgOiBhY3RpdmVDb29yZGluYXRlLnkgLSBoYWxmU2l6ZSxcbiAgICB3aWR0aDogbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgPyB0b29sdGlwQXhpc0JhbmRTaXplIDogb2Zmc2V0LndpZHRoIC0gMSxcbiAgICBoZWlnaHQ6IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gb2Zmc2V0LmhlaWdodCAtIDEgOiB0b29sdGlwQXhpc0JhbmRTaXplXG4gIH07XG59Il0sIm5hbWVzIjpbImdldEN1cnNvclJlY3RhbmdsZSIsImxheW91dCIsImFjdGl2ZUNvb3JkaW5hdGUiLCJvZmZzZXQiLCJ0b29sdGlwQXhpc0JhbmRTaXplIiwiaGFsZlNpemUiLCJzdHJva2UiLCJmaWxsIiwieCIsImxlZnQiLCJ5IiwidG9wIiwid2lkdGgiLCJoZWlnaHQiXSwic291cmNlUm9vdCI6IiJ9\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldFJhZGlhbEN1cnNvclBvaW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFpRDtBQUNqRDs7OztDQUlDLEdBQ00sU0FBU0Msc0JBQXNCQyxnQkFBZ0I7SUFDcEQsSUFBSUMsS0FBS0QsaUJBQWlCQyxFQUFFLEVBQzFCQyxLQUFLRixpQkFBaUJFLEVBQUUsRUFDeEJDLFNBQVNILGlCQUFpQkcsTUFBTSxFQUNoQ0MsYUFBYUosaUJBQWlCSSxVQUFVLEVBQ3hDQyxXQUFXTCxpQkFBaUJLLFFBQVE7SUFDdEMsSUFBSUMsYUFBYVIsNkRBQWdCQSxDQUFDRyxJQUFJQyxJQUFJQyxRQUFRQztJQUNsRCxJQUFJRyxXQUFXVCw2REFBZ0JBLENBQUNHLElBQUlDLElBQUlDLFFBQVFFO0lBQ2hELE9BQU87UUFDTEcsUUFBUTtZQUFDRjtZQUFZQztTQUFTO1FBQzlCTixJQUFJQTtRQUNKQyxJQUFJQTtRQUNKQyxRQUFRQTtRQUNSQyxZQUFZQTtRQUNaQyxVQUFVQTtJQUNaO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldFJhZGlhbEN1cnNvclBvaW50cy5qcz8yMTMzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvbGFyVG9DYXJ0ZXNpYW4gfSBmcm9tICcuLi9Qb2xhclV0aWxzJztcbi8qKlxuICogT25seSBhcHBsaWNhYmxlIGZvciByYWRpYWwgbGF5b3V0c1xuICogQHBhcmFtIHtPYmplY3R9IGFjdGl2ZUNvb3JkaW5hdGUgQ2hhcnRDb29yZGluYXRlXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSYWRpYWxDdXJzb3JQb2ludHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJhZGlhbEN1cnNvclBvaW50cyhhY3RpdmVDb29yZGluYXRlKSB7XG4gIHZhciBjeCA9IGFjdGl2ZUNvb3JkaW5hdGUuY3gsXG4gICAgY3kgPSBhY3RpdmVDb29yZGluYXRlLmN5LFxuICAgIHJhZGl1cyA9IGFjdGl2ZUNvb3JkaW5hdGUucmFkaXVzLFxuICAgIHN0YXJ0QW5nbGUgPSBhY3RpdmVDb29yZGluYXRlLnN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGUgPSBhY3RpdmVDb29yZGluYXRlLmVuZEFuZ2xlO1xuICB2YXIgc3RhcnRQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByYWRpdXMsIHN0YXJ0QW5nbGUpO1xuICB2YXIgZW5kUG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgcmFkaXVzLCBlbmRBbmdsZSk7XG4gIHJldHVybiB7XG4gICAgcG9pbnRzOiBbc3RhcnRQb2ludCwgZW5kUG9pbnRdLFxuICAgIGN4OiBjeCxcbiAgICBjeTogY3ksXG4gICAgcmFkaXVzOiByYWRpdXMsXG4gICAgc3RhcnRBbmdsZTogc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZTogZW5kQW5nbGVcbiAgfTtcbn0iXSwibmFtZXMiOlsicG9sYXJUb0NhcnRlc2lhbiIsImdldFJhZGlhbEN1cnNvclBvaW50cyIsImFjdGl2ZUNvb3JkaW5hdGUiLCJjeCIsImN5IiwicmFkaXVzIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwic3RhcnRQb2ludCIsImVuZFBvaW50IiwicG9pbnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.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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QUUsRUFBRWtCLEdBQUcsQ0FBQyxTQUFVUSxLQUFLO1lBQzlELElBQUlaLE9BQU9ZLE1BQU1aLElBQUk7WUFDckIsSUFBSWEsbUJBQW1CYixLQUFLTSxJQUFJLENBQUNmLFlBQVk7WUFDN0MsSUFBSXVCLFlBQVlELHFCQUFxQnBCLFlBQVlsQyxjQUFjQSxjQUFjLENBQUMsR0FBR3NELG1CQUFtQmIsS0FBS04sS0FBSyxJQUFJLENBQUM7WUFDbkgsSUFBSXFCLFVBQVVELFVBQVVDLE9BQU8sRUFDN0JOLE9BQU9LLFVBQVVMLElBQUksRUFDckJELGFBQWFNLFVBQVVOLFVBQVUsRUFDakNRLE9BQU9GLFVBQVVFLElBQUk7WUFDdkIsT0FBTztnQkFDTEMsVUFBVUQ7Z0JBQ1ZELFNBQVNBO2dCQUNUVCxNQUFNZCxZQUFZZSxRQUFRLElBQUlDLGNBQWM7Z0JBQzVDRSxPQUFPN0Isc0VBQXlCQSxDQUFDbUI7Z0JBQ2pDL0IsT0FBT3dDLFFBQVFNO2dCQUNmLHlGQUF5RjtnQkFDekZuQixTQUFTa0I7WUFDWDtRQUNGO0lBQ0Y7SUFDQSxPQUFPdkQsY0FBY0EsY0FBY0EsY0FBYyxDQUFDLEdBQUdpQyxjQUFjWixxREFBTUEsQ0FBQ3NDLGFBQWEsQ0FBQzdCLFlBQVlGLGVBQWUsQ0FBQyxHQUFHO1FBQ3JIUyxTQUFTRDtRQUNUSyxNQUFNWDtJQUNSO0FBQ0YsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9nZXRMZWdlbmRQcm9wcy5qcz9hNzY2Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgeyBMZWdlbmQgfSBmcm9tICcuLi9jb21wb25lbnQvTGVnZW5kJztcbmltcG9ydCB7IGdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0gfSBmcm9tICcuL0NoYXJ0VXRpbHMnO1xuaW1wb3J0IHsgZmluZENoaWxkQnlUeXBlIH0gZnJvbSAnLi9SZWFjdFV0aWxzJztcbmV4cG9ydCB2YXIgZ2V0TGVnZW5kUHJvcHMgPSBmdW5jdGlvbiBnZXRMZWdlbmRQcm9wcyhfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgPSBfcmVmLmZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLFxuICAgIGxlZ2VuZFdpZHRoID0gX3JlZi5sZWdlbmRXaWR0aCxcbiAgICBsZWdlbmRDb250ZW50ID0gX3JlZi5sZWdlbmRDb250ZW50O1xuICB2YXIgbGVnZW5kSXRlbSA9IGZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgTGVnZW5kKTtcbiAgaWYgKCFsZWdlbmRJdGVtKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGxlZ2VuZERlZmF1bHRQcm9wcyA9IExlZ2VuZC5kZWZhdWx0UHJvcHM7XG4gIHZhciBsZWdlbmRQcm9wcyA9IGxlZ2VuZERlZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkID8gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBsZWdlbmREZWZhdWx0UHJvcHMpLCBsZWdlbmRJdGVtLnByb3BzKSA6IHt9O1xuICB2YXIgbGVnZW5kRGF0YTtcbiAgaWYgKGxlZ2VuZEl0ZW0ucHJvcHMgJiYgbGVnZW5kSXRlbS5wcm9wcy5wYXlsb2FkKSB7XG4gICAgbGVnZW5kRGF0YSA9IGxlZ2VuZEl0ZW0ucHJvcHMgJiYgbGVnZW5kSXRlbS5wcm9wcy5wYXlsb2FkO1xuICB9IGVsc2UgaWYgKGxlZ2VuZENvbnRlbnQgPT09ICdjaGlsZHJlbicpIHtcbiAgICBsZWdlbmREYXRhID0gKGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zIHx8IFtdKS5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgX3JlZjIpIHtcbiAgICAgIHZhciBpdGVtID0gX3JlZjIuaXRlbSxcbiAgICAgICAgcHJvcHMgPSBfcmVmMi5wcm9wcztcbiAgICAgIHZhciBkYXRhID0gcHJvcHMuc2VjdG9ycyB8fCBwcm9wcy5kYXRhIHx8IFtdO1xuICAgICAgcmV0dXJuIHJlc3VsdC5jb25jYXQoZGF0YS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogbGVnZW5kSXRlbS5wcm9wcy5pY29uVHlwZSB8fCBpdGVtLnByb3BzLmxlZ2VuZFR5cGUsXG4gICAgICAgICAgdmFsdWU6IGVudHJ5Lm5hbWUsXG4gICAgICAgICAgY29sb3I6IGVudHJ5LmZpbGwsXG4gICAgICAgICAgcGF5bG9hZDogZW50cnlcbiAgICAgICAgfTtcbiAgICAgIH0pKTtcbiAgICB9LCBbXSk7XG4gIH0gZWxzZSB7XG4gICAgbGVnZW5kRGF0YSA9IChmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyB8fCBbXSkubWFwKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgdmFyIGl0ZW0gPSBfcmVmMy5pdGVtO1xuICAgICAgdmFyIGl0ZW1EZWZhdWx0UHJvcHMgPSBpdGVtLnR5cGUuZGVmYXVsdFByb3BzO1xuICAgICAgdmFyIGl0ZW1Qcm9wcyA9IGl0ZW1EZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbURlZmF1bHRQcm9wcyksIGl0ZW0ucHJvcHMpIDoge307XG4gICAgICB2YXIgZGF0YUtleSA9IGl0ZW1Qcm9wcy5kYXRhS2V5LFxuICAgICAgICBuYW1lID0gaXRlbVByb3BzLm5hbWUsXG4gICAgICAgIGxlZ2VuZFR5cGUgPSBpdGVtUHJvcHMubGVnZW5kVHlwZSxcbiAgICAgICAgaGlkZSA9IGl0ZW1Qcm9wcy5oaWRlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5hY3RpdmU6IGhpZGUsXG4gICAgICAgIGRhdGFLZXk6IGRhdGFLZXksXG4gICAgICAgIHR5cGU6IGxlZ2VuZFByb3BzLmljb25UeXBlIHx8IGxlZ2VuZFR5cGUgfHwgJ3NxdWFyZScsXG4gICAgICAgIGNvbG9yOiBnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtKGl0ZW0pLFxuICAgICAgICB2YWx1ZTogbmFtZSB8fCBkYXRhS2V5LFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHByb3BlcnR5IHN0cm9rZURhc2hhcnJheSBpcyByZXF1aXJlZCBpbiBQYXlsb2FkIGJ1dCBvcHRpb25hbCBpbiBwcm9wc1xuICAgICAgICBwYXlsb2FkOiBpdGVtUHJvcHNcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBsZWdlbmRQcm9wcyksIExlZ2VuZC5nZXRXaXRoSGVpZ2h0KGxlZ2VuZEl0ZW0sIGxlZ2VuZFdpZHRoKSksIHt9LCB7XG4gICAgcGF5bG9hZDogbGVnZW5kRGF0YSxcbiAgICBpdGVtOiBsZWdlbmRJdGVtXG4gIH0pO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIkxlZ2VuZCIsImdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0iLCJmaW5kQ2hpbGRCeVR5cGUiLCJnZXRMZWdlbmRQcm9wcyIsIl9yZWYiLCJjaGlsZHJlbiIsImZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zIiwibGVnZW5kV2lkdGgiLCJsZWdlbmRDb250ZW50IiwibGVnZW5kSXRlbSIsImxlZ2VuZERlZmF1bHRQcm9wcyIsImRlZmF1bHRQcm9wcyIsImxlZ2VuZFByb3BzIiwidW5kZWZpbmVkIiwicHJvcHMiLCJsZWdlbmREYXRhIiwicGF5bG9hZCIsInJlZHVjZSIsInJlc3VsdCIsIl9yZWYyIiwiaXRlbSIsImRhdGEiLCJzZWN0b3JzIiwiY29uY2F0IiwibWFwIiwiZW50cnkiLCJ0eXBlIiwiaWNvblR5cGUiLCJsZWdlbmRUeXBlIiwibmFtZSIsImNvbG9yIiwiZmlsbCIsIl9yZWYzIiwiaXRlbURlZmF1bHRQcm9wcyIsIml0ZW1Qcm9wcyIsImRhdGFLZXkiLCJoaWRlIiwiaW5hY3RpdmUiLCJnZXRXaXRoSGVpZ2h0Il0sInNvdXJjZVJvb3QiOiIifQ==\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvaXNEb21haW5TcGVjaWZpZWRCeVVzZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBdUM7QUFDdkM7Ozs7OztDQU1DLEdBQ00sU0FBU0Msd0JBQXdCQyxNQUFNLEVBQUVDLGlCQUFpQixFQUFFQyxRQUFRO0lBQ3pFLElBQUlBLGFBQWEsWUFBWUQsc0JBQXNCLFFBQVFFLE1BQU1DLE9BQU8sQ0FBQ0osU0FBUztRQUNoRixJQUFJSyxjQUFjTCxXQUFXLFFBQVFBLFdBQVcsS0FBSyxJQUFJLEtBQUssSUFBSUEsTUFBTSxDQUFDLEVBQUU7UUFDM0UsSUFBSU0sWUFBWU4sV0FBVyxRQUFRQSxXQUFXLEtBQUssSUFBSSxLQUFLLElBQUlBLE1BQU0sQ0FBQyxFQUFFO1FBRXpFOzs7S0FHQyxHQUNELElBQUksQ0FBQyxDQUFDSyxlQUFlLENBQUMsQ0FBQ0MsYUFBYVIsb0RBQVFBLENBQUNPLGdCQUFnQlAsb0RBQVFBLENBQUNRLFlBQVk7WUFDaEYsT0FBTztRQUNUO0lBQ0Y7SUFDQSxPQUFPO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvaXNEb21haW5TcGVjaWZpZWRCeVVzZXIuanM/NjdmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4vRGF0YVV0aWxzJztcbi8qKlxuICogVGFrZXMgYSBkb21haW4gYW5kIHVzZXIgcHJvcHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaGUgcHJvdmlkZWQgdGhlIGRvbWFpbiB2aWEgcHJvcHMgb3IgaWYgd2UgbmVlZCB0byBjYWxjdWxhdGUgaXQuXG4gKiBAcGFyYW0gICB7QXhpc0RvbWFpbn0gIGRvbWFpbiAgICAgICAgICAgICAgVGhlIHBvdGVudGlhbCBkb21haW4gZnJvbSBwcm9wc1xuICogQHBhcmFtICAge0Jvb2xlYW59ICAgICBhbGxvd0RhdGFPdmVyZmxvdyAgIGZyb20gcHJvcHNcbiAqIEBwYXJhbSAgIHtTdHJpbmd9ICAgICAgYXhpc1R5cGUgICAgICAgICAgICBmcm9tIHByb3BzXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gICAgICAgICAgICAgICAgICAgICAgICAgYHRydWVgIGlmIGRvbWFpbiBpcyBzcGVjaWZpZWQgYnkgdXNlclxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEb21haW5TcGVjaWZpZWRCeVVzZXIoZG9tYWluLCBhbGxvd0RhdGFPdmVyZmxvdywgYXhpc1R5cGUpIHtcbiAgaWYgKGF4aXNUeXBlID09PSAnbnVtYmVyJyAmJiBhbGxvd0RhdGFPdmVyZmxvdyA9PT0gdHJ1ZSAmJiBBcnJheS5pc0FycmF5KGRvbWFpbikpIHtcbiAgICB2YXIgZG9tYWluU3RhcnQgPSBkb21haW4gPT09IG51bGwgfHwgZG9tYWluID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkb21haW5bMF07XG4gICAgdmFyIGRvbWFpbkVuZCA9IGRvbWFpbiA9PT0gbnVsbCB8fCBkb21haW4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRvbWFpblsxXTtcblxuICAgIC8qXG4gICAgICogVGhlIGBpc051bWJlcmAgY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIHVzZXIgY291bGQgYWxzbyBwcm92aWRlIHN0cmluZ3MgbGlrZSBcImRhdGFNaW5cIiB2aWEgdGhlIGRvbWFpbiBwcm9wcy5cbiAgICAgKiBJbiBzdWNoIGNhc2UsIHdlIGhhdmUgdG8gY29tcHV0ZSB0aGUgZG9tYWluIGZyb20gdGhlIGRhdGEuXG4gICAgICovXG4gICAgaWYgKCEhZG9tYWluU3RhcnQgJiYgISFkb21haW5FbmQgJiYgaXNOdW1iZXIoZG9tYWluU3RhcnQpICYmIGlzTnVtYmVyKGRvbWFpbkVuZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59Il0sIm5hbWVzIjpbImlzTnVtYmVyIiwiaXNEb21haW5TcGVjaWZpZWRCeVVzZXIiLCJkb21haW4iLCJhbGxvd0RhdGFPdmVyZmxvdyIsImF4aXNUeXBlIiwiQXJyYXkiLCJpc0FycmF5IiwiZG9tYWluU3RhcnQiLCJkb21haW5FbmQiXSwic291cmNlUm9vdCI6IiJ9\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvcGF5bG9hZC9nZXRVbmlxUGF5bG9hZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFtQztBQUNRO0FBRTNDOzs7Ozs7Q0FNQyxHQUVNLFNBQVNFLGVBQWVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxhQUFhO0lBQzNELElBQUlELFdBQVcsTUFBTTtRQUNuQixPQUFPSixvREFBTUEsQ0FBQ0csU0FBU0U7SUFDekI7SUFDQSxJQUFJSix3REFBVUEsQ0FBQ0csU0FBUztRQUN0QixPQUFPSixvREFBTUEsQ0FBQ0csU0FBU0M7SUFDekI7SUFDQSxPQUFPRDtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL3BheWxvYWQvZ2V0VW5pcVBheWxvYWQuanM/ZTYxOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC91bmlxQnknO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuXG4vKipcbiAqIFRoaXMgaXMgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBkZWNpZGVzIGhvdyB0byBmaWx0ZXIgZm9yIHVuaXF1ZSB2YWx1ZXMgb25seTpcbiAqXG4gKiAtIGBmYWxzZWAgbWVhbnMgXCJubyBmaWx0ZXJcIlxuICogLSBgdHJ1ZWAgbWVhbnMgXCJ1c2UgcmVjaGFydHMgZGVmYXVsdCBmaWx0ZXJcIlxuICogLSBmdW5jdGlvbiBtZWFucyBcInVzZSByZXR1cm4gb2YgdGhpcyBmdW5jdGlvbiBhcyB0aGUgZGVmYXVsdCBrZXlcIlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmlxUGF5bG9hZChwYXlsb2FkLCBvcHRpb24sIGRlZmF1bHRVbmlxQnkpIHtcbiAgaWYgKG9wdGlvbiA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiB1bmlxQnkocGF5bG9hZCwgZGVmYXVsdFVuaXFCeSk7XG4gIH1cbiAgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgIHJldHVybiB1bmlxQnkocGF5bG9hZCwgb3B0aW9uKTtcbiAgfVxuICByZXR1cm4gcGF5bG9hZDtcbn0iXSwibmFtZXMiOlsidW5pcUJ5IiwiaXNGdW5jdGlvbiIsImdldFVuaXFQYXlsb2FkIiwicGF5bG9hZCIsIm9wdGlvbiIsImRlZmF1bHRVbmlxQnkiXSwic291cmNlUm9vdCI6IiJ9\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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WUE7WUFDWkMsWUFBWUE7WUFDWnVCLGdCQUFnQkE7UUFDbEI7SUFDRixPQUFPO1FBQ0xLLGdCQUFnQmxDO0lBQ2xCO0lBQ0EsT0FBTztRQUNMa0MsZUFBZUE7UUFDZkcsWUFBWW5DLHVCQUF1QjtZQUNqQ0csWUFBWUE7WUFDWkMsWUFBWUE7WUFDWkYsWUFBWUE7UUFDZDtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYW1hZC1hcHAvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvdG9vbHRpcC90cmFuc2xhdGUuanM/OGU4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi9EYXRhVXRpbHMnO1xudmFyIENTU19DTEFTU19QUkVGSVggPSAncmVjaGFydHMtdG9vbHRpcC13cmFwcGVyJztcbnZhciBUT09MVElQX0hJRERFTiA9IHtcbiAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbn07XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcENTU0NsYXNzTmFtZShfcmVmKSB7XG4gIHZhciBjb29yZGluYXRlID0gX3JlZi5jb29yZGluYXRlLFxuICAgIHRyYW5zbGF0ZVggPSBfcmVmLnRyYW5zbGF0ZVgsXG4gICAgdHJhbnNsYXRlWSA9IF9yZWYudHJhbnNsYXRlWTtcbiAgcmV0dXJuIGNsc3goQ1NTX0NMQVNTX1BSRUZJWCwgX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChDU1NfQ0xBU1NfUFJFRklYLCBcIi1yaWdodFwiKSwgaXNOdW1iZXIodHJhbnNsYXRlWCkgJiYgY29vcmRpbmF0ZSAmJiBpc051bWJlcihjb29yZGluYXRlLngpICYmIHRyYW5zbGF0ZVggPj0gY29vcmRpbmF0ZS54KSwgXCJcIi5jb25jYXQoQ1NTX0NMQVNTX1BSRUZJWCwgXCItbGVmdFwiKSwgaXNOdW1iZXIodHJhbnNsYXRlWCkgJiYgY29vcmRpbmF0ZSAmJiBpc051bWJlcihjb29yZGluYXRlLngpICYmIHRyYW5zbGF0ZVggPCBjb29yZGluYXRlLngpLCBcIlwiLmNvbmNhdChDU1NfQ0xBU1NfUFJFRklYLCBcIi1ib3R0b21cIiksIGlzTnVtYmVyKHRyYW5zbGF0ZVkpICYmIGNvb3JkaW5hdGUgJiYgaXNOdW1iZXIoY29vcmRpbmF0ZS55KSAmJiB0cmFuc2xhdGVZID49IGNvb3JkaW5hdGUueSksIFwiXCIuY29uY2F0KENTU19DTEFTU19QUkVGSVgsIFwiLXRvcFwiKSwgaXNOdW1iZXIodHJhbnNsYXRlWSkgJiYgY29vcmRpbmF0ZSAmJiBpc051bWJlcihjb29yZGluYXRlLnkpICYmIHRyYW5zbGF0ZVkgPCBjb29yZGluYXRlLnkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwVHJhbnNsYXRlWFkoX3JlZjIpIHtcbiAgdmFyIGFsbG93RXNjYXBlVmlld0JveCA9IF9yZWYyLmFsbG93RXNjYXBlVmlld0JveCxcbiAgICBjb29yZGluYXRlID0gX3JlZjIuY29vcmRpbmF0ZSxcbiAgICBrZXkgPSBfcmVmMi5rZXksXG4gICAgb2Zmc2V0VG9wTGVmdCA9IF9yZWYyLm9mZnNldFRvcExlZnQsXG4gICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICByZXZlcnNlRGlyZWN0aW9uID0gX3JlZjIucmV2ZXJzZURpcmVjdGlvbixcbiAgICB0b29sdGlwRGltZW5zaW9uID0gX3JlZjIudG9vbHRpcERpbWVuc2lvbixcbiAgICB2aWV3Qm94ID0gX3JlZjIudmlld0JveCxcbiAgICB2aWV3Qm94RGltZW5zaW9uID0gX3JlZjIudmlld0JveERpbWVuc2lvbjtcbiAgaWYgKHBvc2l0aW9uICYmIGlzTnVtYmVyKHBvc2l0aW9uW2tleV0pKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uW2tleV07XG4gIH1cbiAgdmFyIG5lZ2F0aXZlID0gY29vcmRpbmF0ZVtrZXldIC0gdG9vbHRpcERpbWVuc2lvbiAtIG9mZnNldFRvcExlZnQ7XG4gIHZhciBwb3NpdGl2ZSA9IGNvb3JkaW5hdGVba2V5XSArIG9mZnNldFRvcExlZnQ7XG4gIGlmIChhbGxvd0VzY2FwZVZpZXdCb3hba2V5XSkge1xuICAgIHJldHVybiByZXZlcnNlRGlyZWN0aW9uW2tleV0gPyBuZWdhdGl2ZSA6IHBvc2l0aXZlO1xuICB9XG4gIGlmIChyZXZlcnNlRGlyZWN0aW9uW2tleV0pIHtcbiAgICB2YXIgX3Rvb2x0aXBCb3VuZGFyeSA9IG5lZ2F0aXZlO1xuICAgIHZhciBfdmlld0JveEJvdW5kYXJ5ID0gdmlld0JveFtrZXldO1xuICAgIGlmIChfdG9vbHRpcEJvdW5kYXJ5IDwgX3ZpZXdCb3hCb3VuZGFyeSkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KHBvc2l0aXZlLCB2aWV3Qm94W2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5tYXgobmVnYXRpdmUsIHZpZXdCb3hba2V5XSk7XG4gIH1cbiAgdmFyIHRvb2x0aXBCb3VuZGFyeSA9IHBvc2l0aXZlICsgdG9vbHRpcERpbWVuc2lvbjtcbiAgdmFyIHZpZXdCb3hCb3VuZGFyeSA9IHZpZXdCb3hba2V5XSArIHZpZXdCb3hEaW1lbnNpb247XG4gIGlmICh0b29sdGlwQm91bmRhcnkgPiB2aWV3Qm94Qm91bmRhcnkpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgobmVnYXRpdmUsIHZpZXdCb3hba2V5XSk7XG4gIH1cbiAgcmV0dXJuIE1hdGgubWF4KHBvc2l0aXZlLCB2aWV3Qm94W2tleV0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zZm9ybVN0eWxlKF9yZWYzKSB7XG4gIHZhciB0cmFuc2xhdGVYID0gX3JlZjMudHJhbnNsYXRlWCxcbiAgICB0cmFuc2xhdGVZID0gX3JlZjMudHJhbnNsYXRlWSxcbiAgICB1c2VUcmFuc2xhdGUzZCA9IF9yZWYzLnVzZVRyYW5zbGF0ZTNkO1xuICByZXR1cm4ge1xuICAgIHRyYW5zZm9ybTogdXNlVHJhbnNsYXRlM2QgPyBcInRyYW5zbGF0ZTNkKFwiLmNvbmNhdCh0cmFuc2xhdGVYLCBcInB4LCBcIikuY29uY2F0KHRyYW5zbGF0ZVksIFwicHgsIDApXCIpIDogXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHRyYW5zbGF0ZVgsIFwicHgsIFwiKS5jb25jYXQodHJhbnNsYXRlWSwgXCJweClcIilcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwVHJhbnNsYXRlKF9yZWY0KSB7XG4gIHZhciBhbGxvd0VzY2FwZVZpZXdCb3ggPSBfcmVmNC5hbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgY29vcmRpbmF0ZSA9IF9yZWY0LmNvb3JkaW5hdGUsXG4gICAgb2Zmc2V0VG9wTGVmdCA9IF9yZWY0Lm9mZnNldFRvcExlZnQsXG4gICAgcG9zaXRpb24gPSBfcmVmNC5wb3NpdGlvbixcbiAgICByZXZlcnNlRGlyZWN0aW9uID0gX3JlZjQucmV2ZXJzZURpcmVjdGlvbixcbiAgICB0b29sdGlwQm94ID0gX3JlZjQudG9vbHRpcEJveCxcbiAgICB1c2VUcmFuc2xhdGUzZCA9IF9yZWY0LnVzZVRyYW5zbGF0ZTNkLFxuICAgIHZpZXdCb3ggPSBfcmVmNC52aWV3Qm94O1xuICB2YXIgY3NzUHJvcGVydGllcywgdHJhbnNsYXRlWCwgdHJhbnNsYXRlWTtcbiAgaWYgKHRvb2x0aXBCb3guaGVpZ2h0ID4gMCAmJiB0b29sdGlwQm94LndpZHRoID4gMCAmJiBjb29yZGluYXRlKSB7XG4gICAgdHJhbnNsYXRlWCA9IGdldFRvb2x0aXBUcmFuc2xhdGVYWSh7XG4gICAgICBhbGxvd0VzY2FwZVZpZXdCb3g6IGFsbG93RXNjYXBlVmlld0JveCxcbiAgICAgIGNvb3JkaW5hdGU6IGNvb3JkaW5hdGUsXG4gICAgICBrZXk6ICd4JyxcbiAgICAgIG9mZnNldFRvcExlZnQ6IG9mZnNldFRvcExlZnQsXG4gICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICByZXZlcnNlRGlyZWN0aW9uOiByZXZlcnNlRGlyZWN0aW9uLFxuICAgICAgdG9vbHRpcERpbWVuc2lvbjogdG9vbHRpcEJveC53aWR0aCxcbiAgICAgIHZpZXdCb3g6IHZpZXdCb3gsXG4gICAgICB2aWV3Qm94RGltZW5zaW9uOiB2aWV3Qm94LndpZHRoXG4gICAgfSk7XG4gICAgdHJhbnNsYXRlWSA9IGdldFRvb2x0aXBUcmFuc2xhdGVYWSh7XG4gICAgICBhbGxvd0VzY2FwZVZpZXdCb3g6IGFsbG93RXNjYXBlVmlld0JveCxcbiAgICAgIGNvb3JkaW5hdGU6IGNvb3JkaW5hdGUsXG4gICAgICBrZXk6ICd5JyxcbiAgICAgIG9mZnNldFRvcExlZnQ6IG9mZnNldFRvcExlZnQsXG4gICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICByZXZlcnNlRGlyZWN0aW9uOiByZXZlcnNlRGlyZWN0aW9uLFxuICAgICAgdG9vbHRpcERpbWVuc2lvbjogdG9vbHRpcEJveC5oZWlnaHQsXG4gICAgICB2aWV3Qm94OiB2aWV3Qm94LFxuICAgICAgdmlld0JveERpbWVuc2lvbjogdmlld0JveC5oZWlnaHRcbiAgICB9KTtcbiAgICBjc3NQcm9wZXJ0aWVzID0gZ2V0VHJhbnNmb3JtU3R5bGUoe1xuICAgICAgdHJhbnNsYXRlWDogdHJhbnNsYXRlWCxcbiAgICAgIHRyYW5zbGF0ZVk6IHRyYW5zbGF0ZVksXG4gICAgICB1c2VUcmFuc2xhdGUzZDogdXNlVHJhbnNsYXRlM2RcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjc3NQcm9wZXJ0aWVzID0gVE9PTFRJUF9ISURERU47XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjc3NQcm9wZXJ0aWVzOiBjc3NQcm9wZXJ0aWVzLFxuICAgIGNzc0NsYXNzZXM6IGdldFRvb2x0aXBDU1NDbGFzc05hbWUoe1xuICAgICAgdHJhbnNsYXRlWDogdHJhbnNsYXRlWCxcbiAgICAgIHRyYW5zbGF0ZVk6IHRyYW5zbGF0ZVksXG4gICAgICBjb29yZGluYXRlOiBjb29yZGluYXRlXG4gICAgfSlcbiAgfTtcbn0iXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2RlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwidCIsImkiLCJfdG9QcmltaXRpdmUiLCJyIiwiZSIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsImNsc3giLCJpc051bWJlciIsIkNTU19DTEFTU19QUkVGSVgiLCJUT09MVElQX0hJRERFTiIsInZpc2liaWxpdHkiLCJnZXRUb29sdGlwQ1NTQ2xhc3NOYW1lIiwiX3JlZiIsImNvb3JkaW5hdGUiLCJ0cmFuc2xhdGVYIiwidHJhbnNsYXRlWSIsImNvbmNhdCIsIngiLCJ5IiwiZ2V0VG9vbHRpcFRyYW5zbGF0ZVhZIiwiX3JlZjIiLCJhbGxvd0VzY2FwZVZpZXdCb3giLCJvZmZzZXRUb3BMZWZ0IiwicG9zaXRpb24iLCJyZXZlcnNlRGlyZWN0aW9uIiwidG9vbHRpcERpbWVuc2lvbiIsInZpZXdCb3giLCJ2aWV3Qm94RGltZW5zaW9uIiwibmVnYXRpdmUiLCJwb3NpdGl2ZSIsIl90b29sdGlwQm91bmRhcnkiLCJfdmlld0JveEJvdW5kYXJ5IiwiTWF0aCIsIm1heCIsInRvb2x0aXBCb3VuZGFyeSIsInZpZXdCb3hCb3VuZGFyeSIsImdldFRyYW5zZm9ybVN0eWxlIiwiX3JlZjMiLCJ1c2VUcmFuc2xhdGUzZCIsInRyYW5zZm9ybSIsImdldFRvb2x0aXBUcmFuc2xhdGUiLCJfcmVmNCIsInRvb2x0aXBCb3giLCJjc3NQcm9wZXJ0aWVzIiwiaGVpZ2h0Iiwid2lkdGgiLCJjc3NDbGFzc2VzIl0sInNvdXJjZVJvb3QiOiIifQ==\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/future/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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U0FBVUMsR0FBRztRQUMzQyxJQUFJVCxVQUFVVSxRQUFRLENBQUNELE1BQU07WUFDM0JKLEdBQUcsQ0FBQ0ksSUFBSSxHQUFHTixjQUFjLFNBQVVRLENBQUM7Z0JBQ2xDLE9BQU9QLFVBQVUsQ0FBQ0ssSUFBSSxDQUFDTCxZQUFZTztZQUNyQztRQUNGO0lBQ0Y7SUFDQSxPQUFPTjtBQUNULEVBQUU7QUFDRixJQUFJTyx5QkFBeUIsU0FBU0EsdUJBQXVCQyxlQUFlLEVBQUVDLElBQUksRUFBRUMsS0FBSztJQUN2RixPQUFPLFNBQVVKLENBQUM7UUFDaEJFLGdCQUFnQkMsTUFBTUMsT0FBT0o7UUFDN0IsT0FBTztJQUNUO0FBQ0Y7QUFDTyxJQUFJSyxxQkFBcUIsU0FBU0EsbUJBQW1CZCxLQUFLLEVBQUVZLElBQUksRUFBRUMsS0FBSztJQUM1RSxJQUFJLENBQUN2QixzREFBUUEsQ0FBQ1UsVUFBVWpCLFFBQVFpQixXQUFXLFVBQVU7UUFDbkQsT0FBTztJQUNUO0lBQ0EsSUFBSUcsTUFBTTtJQUNWQyxPQUFPQyxJQUFJLENBQUNMLE9BQU9NLE9BQU8sQ0FBQyxTQUFVQyxHQUFHO1FBQ3RDLElBQUlRLE9BQU9mLEtBQUssQ0FBQ08sSUFBSTtRQUNyQixJQUFJVCxVQUFVVSxRQUFRLENBQUNELFFBQVEsT0FBT1EsU0FBUyxZQUFZO1lBQ3pELElBQUksQ0FBQ1osS0FBS0EsTUFBTSxDQUFDO1lBQ2pCQSxHQUFHLENBQUNJLElBQUksR0FBR0csdUJBQXVCSyxNQUFNSCxNQUFNQztRQUNoRDtJQUNGO0lBQ0EsT0FBT1Y7QUFDVCxFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL3R5cGVzLmpzPzVmYzYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGhvdyB2YWx1ZXMgYXJlIHN0YWNrZWQ6XG4gKlxuICogLSBgbm9uZWAgaXMgdGhlIGRlZmF1bHQsIGl0IGFkZHMgdmFsdWVzIG9uIHRvcCBvZiBlYWNoIG90aGVyLiBObyBzbWFydHMuIE5lZ2F0aXZlIHZhbHVlcyB3aWxsIG92ZXJsYXAuXG4gKiAtIGBleHBhbmRgIG1ha2UgaXQgc28gdGhhdCB0aGUgdmFsdWVzIGFsd2F5cyBhZGQgdXAgdG8gMSAtIHNvIHRoZSBjaGFydCB3aWxsIGxvb2sgbGlrZSBhIHJlY3RhbmdsZS5cbiAqIC0gYHdpZ2dsZWAgYW5kIGBzaWxob3VldHRlYCB0cmllcyB0byBrZWVwIHRoZSBjaGFydCBjZW50ZXJlZC5cbiAqIC0gYHNpZ25gIHN0YWNrcyBwb3NpdGl2ZSB2YWx1ZXMgYWJvdmUgemVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIGJlbG93IHplcm8uIFNpbWlsYXIgdG8gYG5vbmVgIGJ1dCBoYW5kbGVzIG5lZ2F0aXZlcy5cbiAqIC0gYHBvc2l0aXZlYCBpZ25vcmVzIGFsbCBuZWdhdGl2ZSB2YWx1ZXMsIGFuZCB0aGVuIGJlaGF2ZXMgbGlrZSBcXGBub25lXFxgLlxuICpcbiAqIEFsc28gc2VlIGh0dHBzOi8vZDNqcy5vcmcvZDMtc2hhcGUvc3RhY2sjc3RhY2stb2Zmc2V0c1xuICogKG5vdGUgdGhhdCB0aGUgYGRpdmVyZ2luZ2Agb2Zmc2V0IGluIGQzIGlzIG5hbWVkIGBzaWduYCBpbiByZWNoYXJ0cylcbiAqL1xuXG4vL1xuLy8gRXZlbnQgSGFuZGxlciBUeXBlcyAtLSBDb3BpZWQgZnJvbSBAdHlwZXMvcmVhY3QvaW5kZXguZC50cyBhbmQgYWRhcHRlZCBmb3IgUHJvcHMuXG4vL1xuXG52YXIgU1ZHQ29udGFpbmVyUHJvcEtleXMgPSBbJ3ZpZXdCb3gnLCAnY2hpbGRyZW4nXTtcbmV4cG9ydCB2YXIgU1ZHRWxlbWVudFByb3BLZXlzID0gWydhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCAnYXJpYS1hdG9taWMnLCAnYXJpYS1hdXRvY29tcGxldGUnLCAnYXJpYS1idXN5JywgJ2FyaWEtY2hlY2tlZCcsICdhcmlhLWNvbGNvdW50JywgJ2FyaWEtY29saW5kZXgnLCAnYXJpYS1jb2xzcGFuJywgJ2FyaWEtY29udHJvbHMnLCAnYXJpYS1jdXJyZW50JywgJ2FyaWEtZGVzY3JpYmVkYnknLCAnYXJpYS1kZXRhaWxzJywgJ2FyaWEtZGlzYWJsZWQnLCAnYXJpYS1lcnJvcm1lc3NhZ2UnLCAnYXJpYS1leHBhbmRlZCcsICdhcmlhLWZsb3d0bycsICdhcmlhLWhhc3BvcHVwJywgJ2FyaWEtaGlkZGVuJywgJ2FyaWEtaW52YWxpZCcsICdhcmlhLWtleXNob3J0Y3V0cycsICdhcmlhLWxhYmVsJywgJ2FyaWEtbGFiZWxsZWRieScsICdhcmlhLWxldmVsJywgJ2FyaWEtbGl2ZScsICdhcmlhLW1vZGFsJywgJ2FyaWEtbXVsdGlsaW5lJywgJ2FyaWEtbXVsdGlzZWxlY3RhYmxlJywgJ2FyaWEtb3JpZW50YXRpb24nLCAnYXJpYS1vd25zJywgJ2FyaWEtcGxhY2Vob2xkZXInLCAnYXJpYS1wb3NpbnNldCcsICdhcmlhLXByZXNzZWQnLCAnYXJpYS1yZWFkb25seScsICdhcmlhLXJlbGV2YW50JywgJ2FyaWEtcmVxdWlyZWQnLCAnYXJpYS1yb2xlZGVzY3JpcHRpb24nLCAnYXJpYS1yb3djb3VudCcsICdhcmlhLXJvd2luZGV4JywgJ2FyaWEtcm93c3BhbicsICdhcmlhLXNlbGVjdGVkJywgJ2FyaWEtc2V0c2l6ZScsICdhcmlhLXNvcnQnLCAnYXJpYS12YWx1ZW1heCcsICdhcmlhLXZhbHVlbWluJywgJ2FyaWEtdmFsdWVub3cnLCAnYXJpYS12YWx1ZXRleHQnLCAnY2xhc3NOYW1lJywgJ2NvbG9yJywgJ2hlaWdodCcsICdpZCcsICdsYW5nJywgJ21heCcsICdtZWRpYScsICdtZXRob2QnLCAnbWluJywgJ25hbWUnLCAnc3R5bGUnLFxuLypcbiAqIHJlbW92ZWQgJ3R5cGUnIFNWR0VsZW1lbnRQcm9wS2V5IGJlY2F1c2Ugd2UgZG8gbm90IGN1cnJlbnRseSB1c2UgYW55IFNWRyBlbGVtZW50c1xuICogdGhhdCBjYW4gdXNlIGl0IGFuZCBpdCBjb25mbGljdHMgd2l0aCB0aGUgcmVjaGFydHMgcHJvcCAndHlwZSdcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWNoYXJ0cy9yZWNoYXJ0cy9wdWxsLzMzMjdcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9BdHRyaWJ1dGUvdHlwZVxuICovXG4vLyAndHlwZScsXG4ndGFyZ2V0JywgJ3dpZHRoJywgJ3JvbGUnLCAndGFiSW5kZXgnLCAnYWNjZW50SGVpZ2h0JywgJ2FjY3VtdWxhdGUnLCAnYWRkaXRpdmUnLCAnYWxpZ25tZW50QmFzZWxpbmUnLCAnYWxsb3dSZW9yZGVyJywgJ2FscGhhYmV0aWMnLCAnYW1wbGl0dWRlJywgJ2FyYWJpY0Zvcm0nLCAnYXNjZW50JywgJ2F0dHJpYnV0ZU5hbWUnLCAnYXR0cmlidXRlVHlwZScsICdhdXRvUmV2ZXJzZScsICdhemltdXRoJywgJ2Jhc2VGcmVxdWVuY3knLCAnYmFzZWxpbmVTaGlmdCcsICdiYXNlUHJvZmlsZScsICdiYm94JywgJ2JlZ2luJywgJ2JpYXMnLCAnYnknLCAnY2FsY01vZGUnLCAnY2FwSGVpZ2h0JywgJ2NsaXAnLCAnY2xpcFBhdGgnLCAnY2xpcFBhdGhVbml0cycsICdjbGlwUnVsZScsICdjb2xvckludGVycG9sYXRpb24nLCAnY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycycsICdjb2xvclByb2ZpbGUnLCAnY29sb3JSZW5kZXJpbmcnLCAnY29udGVudFNjcmlwdFR5cGUnLCAnY29udGVudFN0eWxlVHlwZScsICdjdXJzb3InLCAnY3gnLCAnY3knLCAnZCcsICdkZWNlbGVyYXRlJywgJ2Rlc2NlbnQnLCAnZGlmZnVzZUNvbnN0YW50JywgJ2RpcmVjdGlvbicsICdkaXNwbGF5JywgJ2Rpdmlzb3InLCAnZG9taW5hbnRCYXNlbGluZScsICdkdXInLCAnZHgnLCAnZHknLCAnZWRnZU1vZGUnLCAnZWxldmF0aW9uJywgJ2VuYWJsZUJhY2tncm91bmQnLCAnZW5kJywgJ2V4cG9uZW50JywgJ2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQnLCAnZmlsbCcsICdmaWxsT3BhY2l0eScsICdmaWxsUnVsZScsICdmaWx0ZXInLCAnZmlsdGVyUmVzJywgJ2ZpbHRlclVuaXRzJywgJ2Zsb29kQ29sb3InLCAnZmxvb2RPcGFjaXR5JywgJ2ZvY3VzYWJsZScsICdmb250RmFtaWx5JywgJ2ZvbnRTaXplJywgJ2ZvbnRTaXplQWRqdXN0JywgJ2ZvbnRTdHJldGNoJywgJ2ZvbnRTdHlsZScsICdmb250VmFyaWFudCcsICdmb250V2VpZ2h0JywgJ2Zvcm1hdCcsICdmcm9tJywgJ2Z4JywgJ2Z5JywgJ2cxJywgJ2cyJywgJ2dseXBoTmFtZScsICdnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCcsICdnbHlwaE9yaWVudGF0aW9uVmVydGljYWwnLCAnZ2x5cGhSZWYnLCAnZ3JhZGllbnRUcmFuc2Zvcm0nLCAnZ3JhZGllbnRVbml0cycsICdoYW5naW5nJywgJ2hvcml6QWR2WCcsICdob3Jpek9yaWdpblgnLCAnaHJlZicsICdpZGVvZ3JhcGhpYycsICdpbWFnZVJlbmRlcmluZycsICdpbjInLCAnaW4nLCAnaW50ZXJjZXB0JywgJ2sxJywgJ2syJywgJ2szJywgJ2s0JywgJ2snLCAna2VybmVsTWF0cml4JywgJ2tlcm5lbFVuaXRMZW5ndGgnLCAna2VybmluZycsICdrZXlQb2ludHMnLCAna2V5U3BsaW5lcycsICdrZXlUaW1lcycsICdsZW5ndGhBZGp1c3QnLCAnbGV0dGVyU3BhY2luZycsICdsaWdodGluZ0NvbG9yJywgJ2xpbWl0aW5nQ29uZUFuZ2xlJywgJ2xvY2FsJywgJ21hcmtlckVuZCcsICdtYXJrZXJIZWlnaHQnLCAnbWFya2VyTWlkJywgJ21hcmtlclN0YXJ0JywgJ21hcmtlclVuaXRzJywgJ21hcmtlcldpZHRoJywgJ21hc2snLCAnbWFza0NvbnRlbnRVbml0cycsICdtYXNrVW5pdHMnLCAnbWF0aGVtYXRpY2FsJywgJ21vZGUnLCAnbnVtT2N0YXZlcycsICdvZmZzZXQnLCAnb3BhY2l0eScsICdvcGVyYXRvcicsICdvcmRlcicsICdvcmllbnQnLCAnb3JpZW50YXRpb24nLCAnb3JpZ2luJywgJ292ZXJmbG93JywgJ292ZXJsaW5lUG9zaXRpb24nLCAnb3ZlcmxpbmVUaGlja25lc3MnLCAncGFpbnRPcmRlcicsICdwYW5vc2UxJywgJ3BhdGhMZW5ndGgnLCAncGF0dGVybkNvbnRlbnRVbml0cycsICdwYXR0ZXJuVHJhbnNmb3JtJywgJ3BhdHRlcm5Vbml0cycsICdwb2ludGVyRXZlbnRzJywgJ3BvaW50c0F0WCcsICdwb2ludHNBdFknLCAncG9pbnRzQXRaJywgJ3ByZXNlcnZlQWxwaGEnLCAncHJlc2VydmVBc3BlY3RSYXRpbycsICdwcmltaXRpdmVVbml0cycsICdyJywgJ3JhZGl1cycsICdyZWZYJywgJ3JlZlknLCAncmVuZGVyaW5nSW50ZW50JywgJ3JlcGVhdENvdW50JywgJ3JlcGVhdER1cicsICdyZXF1aXJlZEV4dGVuc2lvbnMnLCAncmVxdWlyZWRGZWF0dXJlcycsICdyZXN0YXJ0JywgJ3Jlc3VsdCcsICdyb3RhdGUnLCAncngnLCAncnknLCAnc2VlZCcsICdzaGFwZVJlbmRlcmluZycsICdzbG9wZScsICdzcGFjaW5nJywgJ3NwZWN1bGFyQ29uc3RhbnQnLCAnc3BlY3VsYXJFeHBvbmVudCcsICdzcGVlZCcsICdzcHJlYWRNZXRob2QnLCAnc3RhcnRPZmZzZXQnLCAnc3RkRGV2aWF0aW9uJywgJ3N0ZW1oJywgJ3N0ZW12JywgJ3N0aXRjaFRpbGVzJywgJ3N0b3BDb2xvcicsICdzdG9wT3BhY2l0eScsICdzdHJpa2V0aHJvdWdoUG9zaXRpb24nLCAnc3RyaWtldGhyb3VnaFRoaWNrbmVzcycsICdzdHJpbmcnLCAnc3Ryb2tlJywgJ3N0cm9rZURhc2hhcnJheScsICdzdHJva2VEYXNob2Zmc2V0JywgJ3N0cm9rZUxpbmVjYXAnLCAnc3Ryb2tlTGluZWpvaW4nLCAnc3Ryb2tlTWl0ZXJsaW1pdCcsICdzdHJva2VPcGFjaXR5JywgJ3N0cm9rZVdpZHRoJywgJ3N1cmZhY2VTY2FsZScsICdzeXN0ZW1MYW5ndWFnZScsICd0YWJsZVZhbHVlcycsICd0YXJnZXRYJywgJ3RhcmdldFknLCAndGV4dEFuY2hvcicsICd0ZXh0RGVjb3JhdGlvbicsICd0ZXh0TGVuZ3RoJywgJ3RleHRSZW5kZXJpbmcnLCAndG8nLCAndHJhbnNmb3JtJywgJ3UxJywgJ3UyJywgJ3VuZGVybGluZVBvc2l0aW9uJywgJ3VuZGVybGluZVRoaWNrbmVzcycsICd1bmljb2RlJywgJ3VuaWNvZGVCaWRpJywgJ3VuaWNvZGVSYW5nZScsICd1bml0c1BlckVtJywgJ3ZBbHBoYWJldGljJywgJ3ZhbHVlcycsICd2ZWN0b3JFZmZlY3QnLCAndmVyc2lvbicsICd2ZXJ0QWR2WScsICd2ZXJ0T3JpZ2luWCcsICd2ZXJ0T3JpZ2luWScsICd2SGFuZ2luZycsICd2SWRlb2dyYXBoaWMnLCAndmlld1RhcmdldCcsICd2aXNpYmlsaXR5JywgJ3ZNYXRoZW1hdGljYWwnLCAnd2lkdGhzJywgJ3dvcmRTcGFjaW5nJywgJ3dyaXRpbmdNb2RlJywgJ3gxJywgJ3gyJywgJ3gnLCAneENoYW5uZWxTZWxlY3RvcicsICd4SGVpZ2h0JywgJ3hsaW5rQWN0dWF0ZScsICd4bGlua0FyY3JvbGUnLCAneGxpbmtIcmVmJywgJ3hsaW5rUm9sZScsICd4bGlua1Nob3cnLCAneGxpbmtUaXRsZScsICd4bGlua1R5cGUnLCAneG1sQmFzZScsICd4bWxMYW5nJywgJ3htbG5zJywgJ3htbG5zWGxpbmsnLCAneG1sU3BhY2UnLCAneTEnLCAneTInLCAneScsICd5Q2hhbm5lbFNlbGVjdG9yJywgJ3onLCAnem9vbUFuZFBhbicsICdyZWYnLCAna2V5JywgJ2FuZ2xlJ107XG52YXIgUG9seUVsZW1lbnRLZXlzID0gWydwb2ludHMnLCAncGF0aExlbmd0aCddO1xuXG4vKiogc3ZnIGVsZW1lbnQgdHlwZXMgdGhhdCBoYXZlIHNwZWNpZmljIGF0dHJpYnV0ZSBmaWx0cmF0aW9uIHJlcXVpcmVtZW50cyAqL1xuXG4vKiogbWFwIG9mIHN2ZyBlbGVtZW50IHR5cGVzIHRvIHVuaXF1ZSBzdmcgYXR0cmlidXRlcyB0aGF0IGJlbG9uZyB0byB0aGF0IGVsZW1lbnQgKi9cbmV4cG9ydCB2YXIgRmlsdGVyZWRFbGVtZW50S2V5TWFwID0ge1xuICBzdmc6IFNWR0NvbnRhaW5lclByb3BLZXlzLFxuICBwb2x5Z29uOiBQb2x5RWxlbWVudEtleXMsXG4gIHBvbHlsaW5lOiBQb2x5RWxlbWVudEtleXNcbn07XG5leHBvcnQgdmFyIEV2ZW50S2V5cyA9IFsnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnLCAnb25Db3B5JywgJ29uQ29weUNhcHR1cmUnLCAnb25DdXQnLCAnb25DdXRDYXB0dXJlJywgJ29uUGFzdGUnLCAnb25QYXN0ZUNhcHR1cmUnLCAnb25Db21wb3NpdGlvbkVuZCcsICdvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZScsICdvbkNvbXBvc2l0aW9uU3RhcnQnLCAnb25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZScsICdvbkNvbXBvc2l0aW9uVXBkYXRlJywgJ29uQ29tcG9zaXRpb25VcGRhdGVDYXB0dXJlJywgJ29uRm9jdXMnLCAnb25Gb2N1c0NhcHR1cmUnLCAnb25CbHVyJywgJ29uQmx1ckNhcHR1cmUnLCAnb25DaGFuZ2UnLCAnb25DaGFuZ2VDYXB0dXJlJywgJ29uQmVmb3JlSW5wdXQnLCAnb25CZWZvcmVJbnB1dENhcHR1cmUnLCAnb25JbnB1dCcsICdvbklucHV0Q2FwdHVyZScsICdvblJlc2V0JywgJ29uUmVzZXRDYXB0dXJlJywgJ29uU3VibWl0JywgJ29uU3VibWl0Q2FwdHVyZScsICdvbkludmFsaWQnLCAnb25JbnZhbGlkQ2FwdHVyZScsICdvbkxvYWQnLCAnb25Mb2FkQ2FwdHVyZScsICdvbkVycm9yJywgJ29uRXJyb3JDYXB0dXJlJywgJ29uS2V5RG93bicsICdvbktleURvd25DYXB0dXJlJywgJ29uS2V5UHJlc3MnLCAnb25LZXlQcmVzc0NhcHR1cmUnLCAnb25LZXlVcCcsICdvbktleVVwQ2FwdHVyZScsICdvbkFib3J0JywgJ29uQWJvcnRDYXB0dXJlJywgJ29uQ2FuUGxheScsICdvbkNhblBsYXlDYXB0dXJlJywgJ29uQ2FuUGxheVRocm91Z2gnLCAnb25DYW5QbGF5VGhyb3VnaENhcHR1cmUnLCAnb25EdXJhdGlvbkNoYW5nZScsICdvbkR1cmF0aW9uQ2hhbmdlQ2FwdHVyZScsICdvbkVtcHRpZWQnLCAnb25FbXB0aWVkQ2FwdHVyZScsICdvbkVuY3J5cHRlZCcsICdvbkVuY3J5cHRlZENhcHR1cmUnLCAnb25FbmRlZCcsICdvbkVuZGVkQ2FwdHVyZScsICdvbkxvYWRlZERhdGEnLCAnb25Mb2FkZWREYXRhQ2FwdHVyZScsICdvbkxvYWRlZE1ldGFkYXRhJywgJ29uTG9hZGVkTWV0YWRhdGFDYXB0dXJlJywgJ29uTG9hZFN0YXJ0JywgJ29uTG9hZFN0YXJ0Q2FwdHVyZScsICdvblBhdXNlJywgJ29uUGF1c2VDYXB0dXJlJywgJ29uUGxheScsICdvblBsYXlDYXB0dXJlJywgJ29uUGxheWluZycsICdvblBsYXlpbmdDYXB0dXJlJywgJ29uUHJvZ3Jlc3MnLCAnb25Qcm9ncmVzc0NhcHR1cmUnLCAnb25SYXRlQ2hhbmdlJywgJ29uUmF0ZUNoYW5nZUNhcHR1cmUnLCAnb25TZWVrZWQnLCAnb25TZWVrZWRDYXB0dXJlJywgJ29uU2Vla2luZycsICdvblNlZWtpbmdDYXB0dXJlJywgJ29uU3RhbGxlZCcsICdvblN0YWxsZWRDYXB0dXJlJywgJ29uU3VzcGVuZCcsICdvblN1c3BlbmRDYXB0dXJlJywgJ29uVGltZVVwZGF0ZScsICdvblRpbWVVcGRhdGVDYXB0dXJlJywgJ29uVm9sdW1lQ2hhbmdlJywgJ29uVm9sdW1lQ2hhbmdlQ2FwdHVyZScsICdvbldhaXRpbmcnLCAnb25XYWl0aW5nQ2FwdHVyZScsICdvbkF1eENsaWNrJywgJ29uQXV4Q2xpY2tDYXB0dXJlJywgJ29uQ2xpY2snLCAnb25DbGlja0NhcHR1cmUnLCAnb25Db250ZXh0TWVudScsICdvbkNvbnRleHRNZW51Q2FwdHVyZScsICdvbkRvdWJsZUNsaWNrJywgJ29uRG91YmxlQ2xpY2tDYXB0dXJlJywgJ29uRHJhZycsICdvbkRyYWdDYXB0dXJlJywgJ29uRHJhZ0VuZCcsICdvbkRyYWdFbmRDYXB0dXJlJywgJ29uRHJhZ0VudGVyJywgJ29uRHJhZ0VudGVyQ2FwdHVyZScsICdvbkRyYWdFeGl0JywgJ29uRHJhZ0V4aXRDYXB0dXJlJywgJ29uRHJhZ0xlYXZlJywgJ29uRHJhZ0xlYXZlQ2FwdHVyZScsICdvbkRyYWdPdmVyJywgJ29uRHJhZ092ZXJDYXB0dXJlJywgJ29uRHJhZ1N0YXJ0JywgJ29uRHJhZ1N0YXJ0Q2FwdHVyZScsICdvbkRyb3AnLCAnb25Ecm9wQ2FwdHVyZScsICdvbk1vdXNlRG93bicsICdvbk1vdXNlRG93bkNhcHR1cmUnLCAnb25Nb3VzZUVudGVyJywgJ29uTW91c2VMZWF2ZScsICdvbk1vdXNlTW92ZScsICdvbk1vdXNlTW92ZUNhcHR1cmUnLCAnb25Nb3VzZU91dCcsICdvbk1vdXNlT3V0Q2FwdHVyZScsICdvbk1vdXNlT3ZlcicsICdvbk1vdXNlT3ZlckNhcHR1cmUnLCAnb25Nb3VzZVVwJywgJ29uTW91c2VVcENhcHR1cmUnLCAnb25TZWxlY3QnLCAnb25TZWxlY3RDYXB0dXJlJywgJ29uVG91Y2hDYW5jZWwnLCAnb25Ub3VjaENhbmNlbENhcHR1cmUnLCAnb25Ub3VjaEVuZCcsICdvblRvdWNoRW5kQ2FwdHVyZScsICdvblRvdWNoTW92ZScsICdvblRvdWNoTW92ZUNhcHR1cmUnLCAnb25Ub3VjaFN0YXJ0JywgJ29uVG91Y2hTdGFydENhcHR1cmUnLCAnb25Qb2ludGVyRG93bicsICdvblBvaW50ZXJEb3duQ2FwdHVyZScsICdvblBvaW50ZXJNb3ZlJywgJ29uUG9pbnRlck1vdmVDYXB0dXJlJywgJ29uUG9pbnRlclVwJywgJ29uUG9pbnRlclVwQ2FwdHVyZScsICdvblBvaW50ZXJDYW5jZWwnLCAnb25Qb2ludGVyQ2FuY2VsQ2FwdHVyZScsICdvblBvaW50ZXJFbnRlcicsICdvblBvaW50ZXJFbnRlckNhcHR1cmUnLCAnb25Qb2ludGVyTGVhdmUnLCAnb25Qb2ludGVyTGVhdmVDYXB0dXJlJywgJ29uUG9pbnRlck92ZXInLCAnb25Qb2ludGVyT3ZlckNhcHR1cmUnLCAnb25Qb2ludGVyT3V0JywgJ29uUG9pbnRlck91dENhcHR1cmUnLCAnb25Hb3RQb2ludGVyQ2FwdHVyZScsICdvbkdvdFBvaW50ZXJDYXB0dXJlQ2FwdHVyZScsICdvbkxvc3RQb2ludGVyQ2FwdHVyZScsICdvbkxvc3RQb2ludGVyQ2FwdHVyZUNhcHR1cmUnLCAnb25TY3JvbGwnLCAnb25TY3JvbGxDYXB0dXJlJywgJ29uV2hlZWwnLCAnb25XaGVlbENhcHR1cmUnLCAnb25BbmltYXRpb25TdGFydCcsICdvbkFuaW1hdGlvblN0YXJ0Q2FwdHVyZScsICdvbkFuaW1hdGlvbkVuZCcsICdvbkFuaW1hdGlvbkVuZENhcHR1cmUnLCAnb25BbmltYXRpb25JdGVyYXRpb24nLCAnb25BbmltYXRpb25JdGVyYXRpb25DYXB0dXJlJywgJ29uVHJhbnNpdGlvbkVuZCcsICdvblRyYW5zaXRpb25FbmRDYXB0dXJlJ107XG5cbi8qKiBUaGUgdHlwZSBvZiBlYXNpbmcgZnVuY3Rpb24gdG8gdXNlIGZvciBhbmltYXRpb25zICovXG5cbi8qKiBTcGVjaWZpZXMgdGhlIGR1cmF0aW9uIG9mIGFuaW1hdGlvbiwgdGhlIHVuaXQgb2YgdGhpcyBvcHRpb24gaXMgbXMuICovXG5cbi8qKiB0aGUgb2Zmc2V0IG9mIGEgY2hhcnQsIHdoaWNoIGRlZmluZSB0aGUgYmxhbmsgc3BhY2UgYWxsIGFyb3VuZCAqL1xuXG4vKipcbiAqIFRoZSBkb21haW4gb2YgYXhpcy5cbiAqIFRoaXMgaXMgdGhlIGRlZmluaXRpb25cbiAqXG4gKiBOdW1lcmljIGRvbWFpbiBpcyBhbHdheXMgZGVmaW5lZCBieSBhbiBhcnJheSBvZiBleGFjdGx5IHR3byB2YWx1ZXMsIGZvciB0aGUgbWluIGFuZCB0aGUgbWF4IG9mIHRoZSBheGlzLlxuICogQ2F0ZWdvcmljYWwgZG9tYWluIGlzIGRlZmluZWQgYXMgYXJyYXkgb2YgYWxsIHBvc3NpYmxlIHZhbHVlcy5cbiAqXG4gKiBDYW4gYmUgc3BlY2lmaWVkIGluIG1hbnkgd2F5czpcbiAqIC0gYXJyYXkgb2YgbnVtYmVyc1xuICogLSB3aXRoIHNwZWNpYWwgc3RyaW5ncyBsaWtlICdkYXRhTWluJyBhbmQgJ2RhdGFNYXgnXG4gKiAtIHdpdGggc3BlY2lhbCBzdHJpbmcgbWF0aCBsaWtlICdkYXRhTWluIC0gMTAwJ1xuICogLSB3aXRoIGtleXdvcmQgJ2F1dG8nXG4gKiAtIG9yIGEgZnVuY3Rpb25cbiAqIC0gYXJyYXkgb2YgZnVuY3Rpb25zXG4gKiAtIG9yIGEgY29tYmluYXRpb24gb2YgdGhlIGFib3ZlXG4gKi9cblxuLyoqXG4gKiBOdW1iZXJEb21haW4gaXMgYW4gZXZhbHVhdGVkIHtAbGluayBBeGlzRG9tYWlufS5cbiAqIFVubGlrZSB7QGxpbmsgQXhpc0RvbWFpbn0sIGl0IGhhcyBubyB2YXJpZXR5IC0gaXQncyBhIHR1cGxlIG9mIHR3byBudW1iZXIuXG4gKiBUaGlzIGlzIGFmdGVyIGFsbCB0aGUga2V5d29yZHMgYW5kIGZ1bmN0aW9ucyB3ZXJlIGV2YWx1YXRlZCBhbmQgd2hhdCBpcyBsZWZ0IGlzIFttaW4sIG1heF0uXG4gKlxuICogS25vdyB0aGF0IHRoZSBtaW4sIG1heCB2YWx1ZXMgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIG5pY2UgbnVtYmVycyAtIHZhbHVlcyBsaWtlIC1JbmZpbml0eSBvciBOYU4gYXJlIHBvc3NpYmxlLlxuICpcbiAqIFRoZXJlIGFyZSBhbHNvIGBjYXRlZ29yeWAgYXhlcyB0aGF0IGhhdmUgZGlmZmVyZW50IHRoaW5ncyB0aGFuIG51bWJlcnMgaW4gdGhlaXIgZG9tYWluLlxuICovXG5cbi8qKiBUaGUgcHJvcHMgZGVmaW5pdGlvbiBvZiBiYXNlIGF4aXMgKi9cblxuLyoqIERlZmluZXMgaG93IHRpY2tzIGFyZSBwbGFjZWQgYW5kIHdoZXRoZXIgLyBob3cgdGljayBjb2xsaXNpb25zIGFyZSBoYW5kbGVkLlxuICogJ3ByZXNlcnZlU3RhcnQnIGtlZXBzIHRoZSBsZWZ0IHRpY2sgb24gY29sbGlzaW9uIGFuZCBlbnN1cmVzIHRoYXQgdGhlIGZpcnN0IHRpY2sgaXMgYWx3YXlzIHNob3duLlxuICogJ3ByZXNlcnZlRW5kJyBrZWVwcyB0aGUgcmlnaHQgdGljayBvbiBjb2xsaXNpb24gYW5kIGVuc3VyZXMgdGhhdCB0aGUgbGFzdCB0aWNrIGlzIGFsd2F5cyBzaG93bi5cbiAqICdwcmVzZXJ2ZVN0YXJ0RW5kJyBrZWVwcyB0aGUgbGVmdCB0aWNrIG9uIGNvbGxpc2lvbiBhbmQgZW5zdXJlcyB0aGF0IHRoZSBmaXJzdCBhbmQgbGFzdCB0aWNrcyBhcmUgYWx3YXlzIHNob3duLlxuICogJ2VxdWlkaXN0YW50UHJlc2VydmVTdGFydCcgc2VsZWN0cyBhIG51bWJlciBOIHN1Y2ggdGhhdCBldmVyeSBuVGggdGljayB3aWxsIGJlIHNob3duIHdpdGhvdXQgY29sbGlzaW9uLlxuICovXG5cbmV4cG9ydCB2YXIgYWRhcHRFdmVudEhhbmRsZXJzID0gZnVuY3Rpb24gYWRhcHRFdmVudEhhbmRsZXJzKHByb3BzLCBuZXdIYW5kbGVyKSB7XG4gIGlmICghcHJvcHMgfHwgdHlwZW9mIHByb3BzID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwcm9wcyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGlucHV0UHJvcHMgPSBwcm9wcztcbiAgaWYgKCAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQocHJvcHMpKSB7XG4gICAgaW5wdXRQcm9wcyA9IHByb3BzLnByb3BzO1xuICB9XG4gIGlmICghaXNPYmplY3QoaW5wdXRQcm9wcykpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgb3V0ID0ge307XG4gIE9iamVjdC5rZXlzKGlucHV0UHJvcHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChFdmVudEtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgb3V0W2tleV0gPSBuZXdIYW5kbGVyIHx8IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBpbnB1dFByb3BzW2tleV0oaW5wdXRQcm9wcywgZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXQ7XG59O1xudmFyIGdldEV2ZW50SGFuZGxlck9mQ2hpbGQgPSBmdW5jdGlvbiBnZXRFdmVudEhhbmRsZXJPZkNoaWxkKG9yaWdpbmFsSGFuZGxlciwgZGF0YSwgaW5kZXgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7XG4gICAgb3JpZ2luYWxIYW5kbGVyKGRhdGEsIGluZGV4LCBlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn07XG5leHBvcnQgdmFyIGFkYXB0RXZlbnRzT2ZDaGlsZCA9IGZ1bmN0aW9uIGFkYXB0RXZlbnRzT2ZDaGlsZChwcm9wcywgZGF0YSwgaW5kZXgpIHtcbiAgaWYgKCFpc09iamVjdChwcm9wcykgfHwgX3R5cGVvZihwcm9wcykgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIG91dCA9IG51bGw7XG4gIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgaXRlbSA9IHByb3BzW2tleV07XG4gICAgaWYgKEV2ZW50S2V5cy5pbmNsdWRlcyhrZXkpICYmIHR5cGVvZiBpdGVtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoIW91dCkgb3V0ID0ge307XG4gICAgICBvdXRba2V5XSA9IGdldEV2ZW50SGFuZGxlck9mQ2hpbGQoaXRlbSwgZGF0YSwgaW5kZXgpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXQ7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJpc1ZhbGlkRWxlbWVudCIsImlzT2JqZWN0IiwiU1ZHQ29udGFpbmVyUHJvcEtleXMiLCJTVkdFbGVtZW50UHJvcEtleXMiLCJQb2x5RWxlbWVudEtleXMiLCJGaWx0ZXJlZEVsZW1lbnRLZXlNYXAiLCJzdmciLCJwb2x5Z29uIiwicG9seWxpbmUiLCJFdmVudEtleXMiLCJhZGFwdEV2ZW50SGFuZGxlcnMiLCJwcm9wcyIsIm5ld0hhbmRsZXIiLCJpbnB1dFByb3BzIiwib3V0IiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJpbmNsdWRlcyIsImUiLCJnZXRFdmVudEhhbmRsZXJPZkNoaWxkIiwib3JpZ2luYWxIYW5kbGVyIiwiZGF0YSIsImluZGV4IiwiYWRhcHRFdmVudHNPZkNoaWxkIiwiaXRlbSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/types.js\n"); /***/ }) }; ;