25 lines
98 KiB
JavaScript
25 lines
98 KiB
JavaScript
"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/react-simple-maps";
|
|
exports.ids = ["vendor-chunks/react-simple-maps"];
|
|
exports.modules = {
|
|
|
|
/***/ "(ssr)/./node_modules/react-simple-maps/dist/index.es.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/react-simple-maps/dist/index.es.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 */ Annotation: () => (/* binding */ Annotation),\n/* harmony export */ ComposableMap: () => (/* binding */ ComposableMap),\n/* harmony export */ Geographies: () => (/* binding */ Geographies),\n/* harmony export */ Geography: () => (/* binding */ Geography$1),\n/* harmony export */ Graticule: () => (/* binding */ Graticule$1),\n/* harmony export */ Line: () => (/* binding */ Line),\n/* harmony export */ MapContext: () => (/* binding */ MapContext),\n/* harmony export */ MapProvider: () => (/* binding */ MapProvider),\n/* harmony export */ Marker: () => (/* binding */ Marker),\n/* harmony export */ Sphere: () => (/* binding */ Sphere$1),\n/* harmony export */ ZoomPanContext: () => (/* binding */ ZoomPanContext),\n/* harmony export */ ZoomPanProvider: () => (/* binding */ ZoomPanProvider),\n/* harmony export */ ZoomableGroup: () => (/* binding */ ZoomableGroup),\n/* harmony export */ useGeographies: () => (/* binding */ useGeographies),\n/* harmony export */ useMapContext: () => (/* binding */ useMapContext),\n/* harmony export */ useZoomPan: () => (/* binding */ useZoomPan),\n/* harmony export */ useZoomPanContext: () => (/* binding */ useZoomPanContext)\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 prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! prop-types */ \"(ssr)/./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var d3_geo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-geo */ \"(ssr)/./node_modules/d3-geo/src/path/index.js\");\n/* harmony import */ var d3_geo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-geo */ \"(ssr)/./node_modules/d3-geo/src/index.js\");\n/* harmony import */ var d3_geo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! d3-geo */ \"(ssr)/./node_modules/d3-geo/src/graticule.js\");\n/* harmony import */ var topojson_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! topojson-client */ \"(ssr)/./node_modules/topojson-client/src/index.js\");\n/* harmony import */ var d3_zoom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-zoom */ \"(ssr)/./node_modules/d3-zoom/src/index.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! d3-selection */ \"(ssr)/./node_modules/d3-selection/src/select.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\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\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\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\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\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}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\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}\n\nvar _excluded$a = [\"width\", \"height\", \"projection\", \"projectionConfig\"];\n\nvar geoPath = d3_geo__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n projections = _objectWithoutProperties(d3_geo__WEBPACK_IMPORTED_MODULE_4__, [\"geoPath\"]);\n\nvar MapContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)();\n\nvar makeProjection = function makeProjection(_ref) {\n var _ref$projectionConfig = _ref.projectionConfig,\n projectionConfig = _ref$projectionConfig === void 0 ? {} : _ref$projectionConfig,\n _ref$projection = _ref.projection,\n projection = _ref$projection === void 0 ? \"geoEqualEarth\" : _ref$projection,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? 800 : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? 600 : _ref$height;\n var isFunc = typeof projection === \"function\";\n if (isFunc) return projection;\n var proj = projections[projection]().translate([width / 2, height / 2]);\n var supported = [proj.center ? \"center\" : null, proj.rotate ? \"rotate\" : null, proj.scale ? \"scale\" : null, proj.parallels ? \"parallels\" : null];\n supported.forEach(function (d) {\n if (!d) return;\n proj = proj[d](projectionConfig[d] || proj[d]());\n });\n return proj;\n};\n\nvar MapProvider = function MapProvider(_ref2) {\n var width = _ref2.width,\n height = _ref2.height,\n projection = _ref2.projection,\n projectionConfig = _ref2.projectionConfig,\n restProps = _objectWithoutProperties(_ref2, _excluded$a);\n\n var _ref3 = projectionConfig.center || [],\n _ref4 = _slicedToArray(_ref3, 2),\n cx = _ref4[0],\n cy = _ref4[1];\n\n var _ref5 = projectionConfig.rotate || [],\n _ref6 = _slicedToArray(_ref5, 3),\n rx = _ref6[0],\n ry = _ref6[1],\n rz = _ref6[2];\n\n var _ref7 = projectionConfig.parallels || [],\n _ref8 = _slicedToArray(_ref7, 2),\n p1 = _ref8[0],\n p2 = _ref8[1];\n\n var s = projectionConfig.scale || null;\n var projMemo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n return makeProjection({\n projectionConfig: {\n center: cx || cx === 0 || cy || cy === 0 ? [cx, cy] : null,\n rotate: rx || rx === 0 || ry || ry === 0 ? [rx, ry, rz] : null,\n parallels: p1 || p1 === 0 || p2 || p2 === 0 ? [p1, p2] : null,\n scale: s\n },\n projection: projection,\n width: width,\n height: height\n });\n }, [width, height, projection, cx, cy, rx, ry, rz, p1, p2, s]);\n var proj = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(projMemo, [projMemo]);\n var value = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n return {\n width: width,\n height: height,\n projection: proj,\n path: geoPath().projection(proj)\n };\n }, [width, height, proj]);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(MapContext.Provider, _extends({\n value: value\n }, restProps));\n};\n\nMapProvider.propTypes = {\n width: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n height: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n projection: prop_types__WEBPACK_IMPORTED_MODULE_5___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_5___default().string), (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func)]),\n projectionConfig: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object)\n};\n\nvar useMapContext = function useMapContext() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(MapContext);\n};\n\nvar _excluded$9 = [\"width\", \"height\", \"projection\", \"projectionConfig\", \"className\"];\nvar ComposableMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (_ref, ref) {\n var _ref$width = _ref.width,\n width = _ref$width === void 0 ? 800 : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? 600 : _ref$height,\n _ref$projection = _ref.projection,\n projection = _ref$projection === void 0 ? \"geoEqualEarth\" : _ref$projection,\n _ref$projectionConfig = _ref.projectionConfig,\n projectionConfig = _ref$projectionConfig === void 0 ? {} : _ref$projectionConfig,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \"\" : _ref$className,\n restProps = _objectWithoutProperties(_ref, _excluded$9);\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(MapProvider, {\n width: width,\n height: height,\n projection: projection,\n projectionConfig: projectionConfig\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", _extends({\n ref: ref,\n viewBox: \"0 0 \".concat(width, \" \").concat(height),\n className: \"rsm-svg \".concat(className)\n }, restProps)));\n});\nComposableMap.displayName = \"ComposableMap\";\nComposableMap.propTypes = {\n width: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n height: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n projection: prop_types__WEBPACK_IMPORTED_MODULE_5___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_5___default().string), (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func)]),\n projectionConfig: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object),\n className: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string)\n};\n\nfunction getCoords(w, h, t) {\n var xOffset = (w * t.k - w) / 2;\n var yOffset = (h * t.k - h) / 2;\n return [w / 2 - (xOffset + t.x) / t.k, h / 2 - (yOffset + t.y) / t.k];\n}\nfunction fetchGeographies(url) {\n return fetch(url).then(function (res) {\n if (!res.ok) {\n throw Error(res.statusText);\n }\n\n return res.json();\n })[\"catch\"](function (error) {\n console.log(\"There was a problem when fetching the data: \", error);\n });\n}\nfunction getFeatures(geographies, parseGeographies) {\n var isTopojson = geographies.type === \"Topology\";\n\n if (!isTopojson) {\n return parseGeographies ? parseGeographies(geographies.features || geographies) : geographies.features || geographies;\n }\n\n var feats = (0,topojson_client__WEBPACK_IMPORTED_MODULE_1__.feature)(geographies, geographies.objects[Object.keys(geographies.objects)[0]]).features;\n return parseGeographies ? parseGeographies(feats) : feats;\n}\nfunction getMesh(geographies) {\n var isTopojson = geographies.type === \"Topology\";\n if (!isTopojson) return null;\n var outline = (0,topojson_client__WEBPACK_IMPORTED_MODULE_1__.mesh)(geographies, geographies.objects[Object.keys(geographies.objects)[0]], function (a, b) {\n return a === b;\n });\n var borders = (0,topojson_client__WEBPACK_IMPORTED_MODULE_1__.mesh)(geographies, geographies.objects[Object.keys(geographies.objects)[0]], function (a, b) {\n return a !== b;\n });\n return {\n outline: outline,\n borders: borders\n };\n}\nfunction prepareMesh(outline, borders, path) {\n return outline && borders ? {\n outline: _objectSpread2(_objectSpread2({}, outline), {}, {\n rsmKey: \"outline\",\n svgPath: path(outline)\n }),\n borders: _objectSpread2(_objectSpread2({}, borders), {}, {\n rsmKey: \"borders\",\n svgPath: path(borders)\n })\n } : {};\n}\nfunction prepareFeatures(geographies, path) {\n return geographies ? geographies.map(function (d, i) {\n return _objectSpread2(_objectSpread2({}, d), {}, {\n rsmKey: \"geo-\".concat(i),\n svgPath: path(d)\n });\n }) : [];\n}\nfunction createConnectorPath() {\n var dx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 30;\n var dy = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30;\n var curve = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.5;\n var curvature = Array.isArray(curve) ? curve : [curve, curve];\n var curveX = dx / 2 * curvature[0];\n var curveY = dy / 2 * curvature[1];\n return \"M\".concat(0, \",\", 0, \" Q\", -dx / 2 - curveX, \",\").concat(-dy / 2 + curveY, \" \").concat(-dx, \",\").concat(-dy);\n}\nfunction isString(geo) {\n return typeof geo === \"string\";\n}\n\nfunction useGeographies(_ref) {\n var geography = _ref.geography,\n parseGeographies = _ref.parseGeographies;\n\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(MapContext),\n path = _useContext.path;\n\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({}),\n _useState2 = _slicedToArray(_useState, 2),\n output = _useState2[0],\n setOutput = _useState2[1];\n\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"undefined\") return;\n if (!geography) return;\n\n if (isString(geography)) {\n fetchGeographies(geography).then(function (geos) {\n if (geos) {\n setOutput({\n geographies: getFeatures(geos, parseGeographies),\n mesh: getMesh(geos)\n });\n }\n });\n } else {\n setOutput({\n geographies: getFeatures(geography, parseGeographies),\n mesh: getMesh(geography)\n });\n }\n }, [geography, parseGeographies]);\n\n var _useMemo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n var mesh = output.mesh || {};\n var preparedMesh = prepareMesh(mesh.outline, mesh.borders, path);\n return {\n geographies: prepareFeatures(output.geographies, path),\n outline: preparedMesh.outline,\n borders: preparedMesh.borders\n };\n }, [output, path]),\n geographies = _useMemo.geographies,\n outline = _useMemo.outline,\n borders = _useMemo.borders;\n\n return {\n geographies: geographies,\n outline: outline,\n borders: borders\n };\n}\n\nvar _excluded$8 = [\"geography\", \"children\", \"parseGeographies\", \"className\"];\nvar Geographies = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (_ref, ref) {\n var geography = _ref.geography,\n children = _ref.children,\n parseGeographies = _ref.parseGeographies,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \"\" : _ref$className,\n restProps = _objectWithoutProperties(_ref, _excluded$8);\n\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(MapContext),\n path = _useContext.path,\n projection = _useContext.projection;\n\n var _useGeographies = useGeographies({\n geography: geography,\n parseGeographies: parseGeographies\n }),\n geographies = _useGeographies.geographies,\n outline = _useGeographies.outline,\n borders = _useGeographies.borders;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", _extends({\n ref: ref,\n className: \"rsm-geographies \".concat(className)\n }, restProps), geographies && geographies.length > 0 && children({\n geographies: geographies,\n outline: outline,\n borders: borders,\n path: path,\n projection: projection\n }));\n});\nGeographies.displayName = \"Geographies\";\nGeographies.propTypes = {\n geography: prop_types__WEBPACK_IMPORTED_MODULE_5___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_5___default().string), (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_5___default().array)]),\n children: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n parseGeographies: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n className: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string)\n};\n\nvar _excluded$7 = [\"geography\", \"onMouseEnter\", \"onMouseLeave\", \"onMouseDown\", \"onMouseUp\", \"onFocus\", \"onBlur\", \"style\", \"className\"];\nvar Geography = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (_ref, ref) {\n var geography = _ref.geography,\n onMouseEnter = _ref.onMouseEnter,\n onMouseLeave = _ref.onMouseLeave,\n onMouseDown = _ref.onMouseDown,\n onMouseUp = _ref.onMouseUp,\n onFocus = _ref.onFocus,\n onBlur = _ref.onBlur,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \"\" : _ref$className,\n restProps = _objectWithoutProperties(_ref, _excluded$7);\n\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isPressed = _useState2[0],\n setPressed = _useState2[1];\n\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isFocused = _useState4[0],\n setFocus = _useState4[1];\n\n function handleMouseEnter(evt) {\n setFocus(true);\n if (onMouseEnter) onMouseEnter(evt);\n }\n\n function handleMouseLeave(evt) {\n setFocus(false);\n if (isPressed) setPressed(false);\n if (onMouseLeave) onMouseLeave(evt);\n }\n\n function handleFocus(evt) {\n setFocus(true);\n if (onFocus) onFocus(evt);\n }\n\n function handleBlur(evt) {\n setFocus(false);\n if (isPressed) setPressed(false);\n if (onBlur) onBlur(evt);\n }\n\n function handleMouseDown(evt) {\n setPressed(true);\n if (onMouseDown) onMouseDown(evt);\n }\n\n function handleMouseUp(evt) {\n setPressed(false);\n if (onMouseUp) onMouseUp(evt);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({\n ref: ref,\n tabIndex: \"0\",\n className: \"rsm-geography \".concat(className),\n d: geography.svgPath,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onMouseDown: handleMouseDown,\n onMouseUp: handleMouseUp,\n style: style[isPressed || isFocused ? isPressed ? \"pressed\" : \"hover\" : \"default\"]\n }, restProps));\n});\nGeography.displayName = \"Geography\";\nGeography.propTypes = {\n geography: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object),\n onMouseEnter: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onMouseLeave: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onMouseDown: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onMouseUp: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onFocus: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onBlur: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n style: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object),\n className: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string)\n};\nvar Geography$1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(Geography);\n\nvar _excluded$6 = [\"fill\", \"stroke\", \"step\", \"className\"];\nvar Graticule = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (_ref, ref) {\n var _ref$fill = _ref.fill,\n fill = _ref$fill === void 0 ? \"transparent\" : _ref$fill,\n _ref$stroke = _ref.stroke,\n stroke = _ref$stroke === void 0 ? \"currentcolor\" : _ref$stroke,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? [10, 10] : _ref$step,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \"\" : _ref$className,\n restProps = _objectWithoutProperties(_ref, _excluded$6);\n\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(MapContext),\n path = _useContext.path;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({\n ref: ref,\n d: path((0,d3_geo__WEBPACK_IMPORTED_MODULE_6__[\"default\"])().step(step)()),\n fill: fill,\n stroke: stroke,\n className: \"rsm-graticule \".concat(className)\n }, restProps));\n});\nGraticule.displayName = \"Graticule\";\nGraticule.propTypes = {\n fill: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string),\n stroke: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string),\n step: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().array),\n className: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string)\n};\nvar Graticule$1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(Graticule);\n\nvar _excluded$5 = [\"value\"];\nvar ZoomPanContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)();\nvar defaultValue = {\n x: 0,\n y: 0,\n k: 1,\n transformString: \"translate(0 0) scale(1)\"\n};\n\nvar ZoomPanProvider = function ZoomPanProvider(_ref) {\n var _ref$value = _ref.value,\n value = _ref$value === void 0 ? defaultValue : _ref$value,\n restProps = _objectWithoutProperties(_ref, _excluded$5);\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ZoomPanContext.Provider, _extends({\n value: value\n }, restProps));\n};\n\nZoomPanProvider.propTypes = {\n x: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n y: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n k: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n transformString: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string)\n};\n\nvar useZoomPanContext = function useZoomPanContext() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ZoomPanContext);\n};\n\nfunction useZoomPan(_ref) {\n var center = _ref.center,\n filterZoomEvent = _ref.filterZoomEvent,\n onMoveStart = _ref.onMoveStart,\n onMoveEnd = _ref.onMoveEnd,\n onMove = _ref.onMove,\n _ref$translateExtent = _ref.translateExtent,\n translateExtent = _ref$translateExtent === void 0 ? [[-Infinity, -Infinity], [Infinity, Infinity]] : _ref$translateExtent,\n _ref$scaleExtent = _ref.scaleExtent,\n scaleExtent = _ref$scaleExtent === void 0 ? [1, 8] : _ref$scaleExtent,\n _ref$zoom = _ref.zoom,\n zoom$1 = _ref$zoom === void 0 ? 1 : _ref$zoom;\n\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(MapContext),\n width = _useContext.width,\n height = _useContext.height,\n projection = _useContext.projection;\n\n var _center = _slicedToArray(center, 2),\n lon = _center[0],\n lat = _center[1];\n\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n x: 0,\n y: 0,\n k: 1\n }),\n _useState2 = _slicedToArray(_useState, 2),\n position = _useState2[0],\n setPosition = _useState2[1];\n\n var lastPosition = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({\n x: 0,\n y: 0,\n k: 1\n });\n var mapRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n var zoomRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n var bypassEvents = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);\n\n var _translateExtent = _slicedToArray(translateExtent, 2),\n a = _translateExtent[0],\n b = _translateExtent[1];\n\n var _a = _slicedToArray(a, 2),\n a1 = _a[0],\n a2 = _a[1];\n\n var _b = _slicedToArray(b, 2),\n b1 = _b[0],\n b2 = _b[1];\n\n var _scaleExtent = _slicedToArray(scaleExtent, 2),\n minZoom = _scaleExtent[0],\n maxZoom = _scaleExtent[1];\n\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var svg = (0,d3_selection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(mapRef.current);\n\n function handleZoomStart(d3Event) {\n if (!onMoveStart || bypassEvents.current) return;\n onMoveStart({\n coordinates: projection.invert(getCoords(width, height, d3Event.transform)),\n zoom: d3Event.transform.k\n }, d3Event);\n }\n\n function handleZoom(d3Event) {\n if (bypassEvents.current) return;\n var transform = d3Event.transform,\n sourceEvent = d3Event.sourceEvent;\n setPosition({\n x: transform.x,\n y: transform.y,\n k: transform.k,\n dragging: sourceEvent\n });\n if (!onMove) return;\n onMove({\n x: transform.x,\n y: transform.y,\n zoom: transform.k,\n dragging: sourceEvent\n }, d3Event);\n }\n\n function handleZoomEnd(d3Event) {\n if (bypassEvents.current) {\n bypassEvents.current = false;\n return;\n }\n\n var _projection$invert = projection.invert(getCoords(width, height, d3Event.transform)),\n _projection$invert2 = _slicedToArray(_projection$invert, 2),\n x = _projection$invert2[0],\n y = _projection$invert2[1];\n\n lastPosition.current = {\n x: x,\n y: y,\n k: d3Event.transform.k\n };\n if (!onMoveEnd) return;\n onMoveEnd({\n coordinates: [x, y],\n zoom: d3Event.transform.k\n }, d3Event);\n }\n\n function filterFunc(d3Event) {\n if (filterZoomEvent) {\n return filterZoomEvent(d3Event);\n }\n\n return d3Event ? !d3Event.ctrlKey && !d3Event.button : false;\n }\n\n var zoom$1 = (0,d3_zoom__WEBPACK_IMPORTED_MODULE_2__.zoom)().filter(filterFunc).scaleExtent([minZoom, maxZoom]).translateExtent([[a1, a2], [b1, b2]]).on(\"start\", handleZoomStart).on(\"zoom\", handleZoom).on(\"end\", handleZoomEnd);\n zoomRef.current = zoom$1;\n svg.call(zoom$1);\n }, [width, height, a1, a2, b1, b2, minZoom, maxZoom, projection, onMoveStart, onMove, onMoveEnd, filterZoomEvent]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (lon === lastPosition.current.x && lat === lastPosition.current.y && zoom$1 === lastPosition.current.k) return;\n var coords = projection([lon, lat]);\n var x = coords[0] * zoom$1;\n var y = coords[1] * zoom$1;\n var svg = (0,d3_selection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(mapRef.current);\n bypassEvents.current = true;\n svg.call(zoomRef.current.transform, d3_zoom__WEBPACK_IMPORTED_MODULE_2__.zoomIdentity.translate(width / 2 - x, height / 2 - y).scale(zoom$1));\n setPosition({\n x: width / 2 - x,\n y: height / 2 - y,\n k: zoom$1\n });\n lastPosition.current = {\n x: lon,\n y: lat,\n k: zoom$1\n };\n }, [lon, lat, zoom$1, width, height, projection]);\n return {\n mapRef: mapRef,\n position: position,\n transformString: \"translate(\".concat(position.x, \" \").concat(position.y, \") scale(\").concat(position.k, \")\")\n };\n}\n\nvar _excluded$4 = [\"center\", \"zoom\", \"minZoom\", \"maxZoom\", \"translateExtent\", \"filterZoomEvent\", \"onMoveStart\", \"onMove\", \"onMoveEnd\", \"className\"];\nvar ZoomableGroup = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (_ref, ref) {\n var _ref$center = _ref.center,\n center = _ref$center === void 0 ? [0, 0] : _ref$center,\n _ref$zoom = _ref.zoom,\n zoom = _ref$zoom === void 0 ? 1 : _ref$zoom,\n _ref$minZoom = _ref.minZoom,\n minZoom = _ref$minZoom === void 0 ? 1 : _ref$minZoom,\n _ref$maxZoom = _ref.maxZoom,\n maxZoom = _ref$maxZoom === void 0 ? 8 : _ref$maxZoom,\n translateExtent = _ref.translateExtent,\n filterZoomEvent = _ref.filterZoomEvent,\n onMoveStart = _ref.onMoveStart,\n onMove = _ref.onMove,\n onMoveEnd = _ref.onMoveEnd,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$4);\n\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(MapContext),\n width = _useContext.width,\n height = _useContext.height;\n\n var _useZoomPan = useZoomPan({\n center: center,\n filterZoomEvent: filterZoomEvent,\n onMoveStart: onMoveStart,\n onMove: onMove,\n onMoveEnd: onMoveEnd,\n scaleExtent: [minZoom, maxZoom],\n translateExtent: translateExtent,\n zoom: zoom\n }),\n mapRef = _useZoomPan.mapRef,\n transformString = _useZoomPan.transformString,\n position = _useZoomPan.position;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ZoomPanProvider, {\n value: {\n x: position.x,\n y: position.y,\n k: position.k,\n transformString: transformString\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", {\n ref: mapRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n width: width,\n height: height,\n fill: \"transparent\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", _extends({\n ref: ref,\n transform: transformString,\n className: \"rsm-zoomable-group \".concat(className)\n }, restProps))));\n});\nZoomableGroup.displayName = \"ZoomableGroup\";\nZoomableGroup.propTypes = {\n center: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().array),\n zoom: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n minZoom: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n maxZoom: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n translateExtent: prop_types__WEBPACK_IMPORTED_MODULE_5___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_5___default().array)),\n onMoveStart: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onMove: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onMoveEnd: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n className: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string)\n};\n\nvar _excluded$3 = [\"id\", \"fill\", \"stroke\", \"strokeWidth\", \"className\"];\nvar Sphere = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (_ref, ref) {\n var _ref$id = _ref.id,\n id = _ref$id === void 0 ? \"rsm-sphere\" : _ref$id,\n _ref$fill = _ref.fill,\n fill = _ref$fill === void 0 ? \"transparent\" : _ref$fill,\n _ref$stroke = _ref.stroke,\n stroke = _ref$stroke === void 0 ? \"currentcolor\" : _ref$stroke,\n _ref$strokeWidth = _ref.strokeWidth,\n strokeWidth = _ref$strokeWidth === void 0 ? 0.5 : _ref$strokeWidth,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \"\" : _ref$className,\n restProps = _objectWithoutProperties(_ref, _excluded$3);\n\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(MapContext),\n path = _useContext.path;\n\n var spherePath = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n return path({\n type: \"Sphere\"\n });\n }, [path]);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"defs\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"clipPath\", {\n id: id\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: spherePath\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({\n ref: ref,\n d: spherePath,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n style: {\n pointerEvents: \"none\"\n },\n className: \"rsm-sphere \".concat(className)\n }, restProps)));\n});\nSphere.displayName = \"Sphere\";\nSphere.propTypes = {\n id: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string),\n fill: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string),\n stroke: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string),\n strokeWidth: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n className: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string)\n};\nvar Sphere$1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(Sphere);\n\nvar _excluded$2 = [\"coordinates\", \"children\", \"onMouseEnter\", \"onMouseLeave\", \"onMouseDown\", \"onMouseUp\", \"onFocus\", \"onBlur\", \"style\", \"className\"];\nvar Marker = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (_ref, ref) {\n var coordinates = _ref.coordinates,\n children = _ref.children,\n onMouseEnter = _ref.onMouseEnter,\n onMouseLeave = _ref.onMouseLeave,\n onMouseDown = _ref.onMouseDown,\n onMouseUp = _ref.onMouseUp,\n onFocus = _ref.onFocus,\n onBlur = _ref.onBlur,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \"\" : _ref$className,\n restProps = _objectWithoutProperties(_ref, _excluded$2);\n\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(MapContext),\n projection = _useContext.projection;\n\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isPressed = _useState2[0],\n setPressed = _useState2[1];\n\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isFocused = _useState4[0],\n setFocus = _useState4[1];\n\n var _projection = projection(coordinates),\n _projection2 = _slicedToArray(_projection, 2),\n x = _projection2[0],\n y = _projection2[1];\n\n function handleMouseEnter(evt) {\n setFocus(true);\n if (onMouseEnter) onMouseEnter(evt);\n }\n\n function handleMouseLeave(evt) {\n setFocus(false);\n if (isPressed) setPressed(false);\n if (onMouseLeave) onMouseLeave(evt);\n }\n\n function handleFocus(evt) {\n setFocus(true);\n if (onFocus) onFocus(evt);\n }\n\n function handleBlur(evt) {\n setFocus(false);\n if (isPressed) setPressed(false);\n if (onBlur) onBlur(evt);\n }\n\n function handleMouseDown(evt) {\n setPressed(true);\n if (onMouseDown) onMouseDown(evt);\n }\n\n function handleMouseUp(evt) {\n setPressed(false);\n if (onMouseUp) onMouseUp(evt);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", _extends({\n ref: ref,\n transform: \"translate(\".concat(x, \", \").concat(y, \")\"),\n className: \"rsm-marker \".concat(className),\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onMouseDown: handleMouseDown,\n onMouseUp: handleMouseUp,\n style: style[isPressed || isFocused ? isPressed ? \"pressed\" : \"hover\" : \"default\"]\n }, restProps), children);\n});\nMarker.displayName = \"Marker\";\nMarker.propTypes = {\n coordinates: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().array),\n children: prop_types__WEBPACK_IMPORTED_MODULE_5___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_5___default().node), prop_types__WEBPACK_IMPORTED_MODULE_5___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_5___default().node))]),\n onMouseEnter: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onMouseLeave: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onMouseDown: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onMouseUp: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onFocus: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onBlur: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n style: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object),\n className: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string)\n};\n\nvar _excluded$1 = [\"from\", \"to\", \"coordinates\", \"stroke\", \"strokeWidth\", \"fill\", \"className\"];\nvar Line = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (_ref, ref) {\n var _ref$from = _ref.from,\n from = _ref$from === void 0 ? [0, 0] : _ref$from,\n _ref$to = _ref.to,\n to = _ref$to === void 0 ? [0, 0] : _ref$to,\n coordinates = _ref.coordinates,\n _ref$stroke = _ref.stroke,\n stroke = _ref$stroke === void 0 ? \"currentcolor\" : _ref$stroke,\n _ref$strokeWidth = _ref.strokeWidth,\n strokeWidth = _ref$strokeWidth === void 0 ? 3 : _ref$strokeWidth,\n _ref$fill = _ref.fill,\n fill = _ref$fill === void 0 ? \"transparent\" : _ref$fill,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \"\" : _ref$className,\n restProps = _objectWithoutProperties(_ref, _excluded$1);\n\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(MapContext),\n path = _useContext.path;\n\n var lineData = {\n type: \"LineString\",\n coordinates: coordinates || [from, to]\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({\n ref: ref,\n d: path(lineData),\n className: \"rsm-line \".concat(className),\n stroke: stroke,\n strokeWidth: strokeWidth,\n fill: fill\n }, restProps));\n});\nLine.displayName = \"Line\";\nLine.propTypes = {\n from: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().array),\n to: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().array),\n coordinates: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().array),\n stroke: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string),\n strokeWidth: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n fill: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string),\n className: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string)\n};\n\nvar _excluded = [\"subject\", \"children\", \"connectorProps\", \"dx\", \"dy\", \"curve\", \"className\"];\nvar Annotation = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (_ref, ref) {\n var subject = _ref.subject,\n children = _ref.children,\n connectorProps = _ref.connectorProps,\n _ref$dx = _ref.dx,\n dx = _ref$dx === void 0 ? 30 : _ref$dx,\n _ref$dy = _ref.dy,\n dy = _ref$dy === void 0 ? 30 : _ref$dy,\n _ref$curve = _ref.curve,\n curve = _ref$curve === void 0 ? 0 : _ref$curve,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \"\" : _ref$className,\n restProps = _objectWithoutProperties(_ref, _excluded);\n\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(MapContext),\n projection = _useContext.projection;\n\n var _projection = projection(subject),\n _projection2 = _slicedToArray(_projection, 2),\n x = _projection2[0],\n y = _projection2[1];\n\n var connectorPath = createConnectorPath(dx, dy, curve);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", _extends({\n ref: ref,\n transform: \"translate(\".concat(x + dx, \", \").concat(y + dy, \")\"),\n className: \"rsm-annotation \".concat(className)\n }, restProps), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({\n d: connectorPath,\n fill: \"transparent\",\n stroke: \"#000\"\n }, connectorProps)), children);\n});\nAnnotation.displayName = \"Annotation\";\nAnnotation.propTypes = {\n subject: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().array),\n children: prop_types__WEBPACK_IMPORTED_MODULE_5___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_5___default().node), prop_types__WEBPACK_IMPORTED_MODULE_5___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_5___default().node))]),\n dx: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n dy: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n curve: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number),\n connectorProps: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object),\n className: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string)\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2ltcGxlLW1hcHMvZGlzdC9pbmRleC5lcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBd0k7QUFDckc7QUFDSDtBQUNNO0FBQ1U7QUFDSDtBQUNQOztBQUV0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0Isc0JBQXNCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0Isc0JBQXNCO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWMsdUJBQXVCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLGdCQUFnQiw2QkFBNkI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsNEJBQTRCLCtCQUErQjtBQUMzRDs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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Q3pDO0FBQ0E7QUFDQTtBQUNBLEdBQUcsMkJBQTJCLDBEQUFtQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxXQUFXLHlEQUFlO0FBQzFCLFlBQVksMkRBQW1CLEVBQUUsd0RBQWMsRUFBRSx5REFBaUIsQ0FBQyx3REFBYztBQUNqRixNQUFNLDBEQUFnQjtBQUN0QixNQUFNLDBEQUFnQjtBQUN0QixTQUFTLDBEQUFnQjtBQUN6QixrQkFBa0IsMERBQWdCO0FBQ2xDLGFBQWEsMERBQWdCO0FBQzdCOztBQUUrUSIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2ltcGxlLW1hcHMvZGlzdC9pbmRleC5lcy5qcz9kOGJkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VNZW1vLCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgZm9yd2FyZFJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCwgbWVtbywgdXNlUmVmLCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgKiBhcyBkM0dlbyBmcm9tICdkMy1nZW8nO1xuaW1wb3J0IHsgZ2VvR3JhdGljdWxlIH0gZnJvbSAnZDMtZ2VvJztcbmltcG9ydCB7IGZlYXR1cmUsIG1lc2ggfSBmcm9tICd0b3BvanNvbi1jbGllbnQnO1xuaW1wb3J0IHsgem9vbSwgem9vbUlkZW50aXR5IH0gZnJvbSAnZDMtem9vbSc7XG5pbXBvcnQgeyBzZWxlY3QgfSBmcm9tICdkMy1zZWxlY3Rpb24nO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7XG4gICAgZW51bWVyYWJsZU9ubHkgJiYgKHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTtcbiAgICB9KSksIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkMih0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gbnVsbCAhPSBhcmd1bWVudHNbaV0gPyBhcmd1bWVudHNbaV0gOiB7fTtcbiAgICBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgIH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvYmopIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iajtcbiAgfSA6IGZ1bmN0aW9uIChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICB9LCBfdHlwZW9mKG9iaik7XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcblxuICB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7XG5cbiAgdmFyIGtleSwgaTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07XG4gICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7XG4gIHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7XG59XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICB2YXIgX2kgPSBhcnIgPT0gbnVsbCA/IG51bGwgOiB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFycltcIkBAaXRlcmF0b3JcIl07XG5cbiAgaWYgKF9pID09IG51bGwpIHJldHVybjtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG5cbiAgdmFyIF9zLCBfZTtcblxuICB0cnkge1xuICAgIGZvciAoX2kgPSBfaS5jYWxsKGFycik7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xuICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7XG4gIGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7XG4gIGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pO1xuICBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcblxuICByZXR1cm4gYXJyMjtcbn1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cblxudmFyIF9leGNsdWRlZCRhID0gW1wid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJwcm9qZWN0aW9uXCIsIFwicHJvamVjdGlvbkNvbmZpZ1wiXTtcblxudmFyIGdlb1BhdGggPSBkM0dlby5nZW9QYXRoLFxuICAgIHByb2plY3Rpb25zID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGQzR2VvLCBbXCJnZW9QYXRoXCJdKTtcblxudmFyIE1hcENvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5cbnZhciBtYWtlUHJvamVjdGlvbiA9IGZ1bmN0aW9uIG1ha2VQcm9qZWN0aW9uKF9yZWYpIHtcbiAgdmFyIF9yZWYkcHJvamVjdGlvbkNvbmZpZyA9IF9yZWYucHJvamVjdGlvbkNvbmZpZyxcbiAgICAgIHByb2plY3Rpb25Db25maWcgPSBfcmVmJHByb2plY3Rpb25Db25maWcgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRwcm9qZWN0aW9uQ29uZmlnLFxuICAgICAgX3JlZiRwcm9qZWN0aW9uID0gX3JlZi5wcm9qZWN0aW9uLFxuICAgICAgcHJvamVjdGlvbiA9IF9yZWYkcHJvamVjdGlvbiA9PT0gdm9pZCAwID8gXCJnZW9FcXVhbEVhcnRoXCIgOiBfcmVmJHByb2plY3Rpb24sXG4gICAgICBfcmVmJHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgIHdpZHRoID0gX3JlZiR3aWR0aCA9PT0gdm9pZCAwID8gODAwIDogX3JlZiR3aWR0aCxcbiAgICAgIF9yZWYkaGVpZ2h0ID0gX3JlZi5oZWlnaHQsXG4gICAgICBoZWlnaHQgPSBfcmVmJGhlaWdodCA9PT0gdm9pZCAwID8gNjAwIDogX3JlZiRoZWlnaHQ7XG4gIHZhciBpc0Z1bmMgPSB0eXBlb2YgcHJvamVjdGlvbiA9PT0gXCJmdW5jdGlvblwiO1xuICBpZiAoaXNGdW5jKSByZXR1cm4gcHJvamVjdGlvbjtcbiAgdmFyIHByb2ogPSBwcm9qZWN0aW9uc1twcm9qZWN0aW9uXSgpLnRyYW5zbGF0ZShbd2lkdGggLyAyLCBoZWlnaHQgLyAyXSk7XG4gIHZhciBzdXBwb3J0ZWQgPSBbcHJvai5jZW50ZXIgPyBcImNlbnRlclwiIDogbnVsbCwgcHJvai5yb3RhdGUgPyBcInJvdGF0ZVwiIDogbnVsbCwgcHJvai5zY2FsZSA/IFwic2NhbGVcIiA6IG51bGwsIHByb2oucGFyYWxsZWxzID8gXCJwYXJhbGxlbHNcIiA6IG51bGxdO1xuICBzdXBwb3J0ZWQuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xuICAgIGlmICghZCkgcmV0dXJuO1xuICAgIHByb2ogPSBwcm9qW2RdKHByb2plY3Rpb25Db25maWdbZF0gfHwgcHJvaltkXSgpKTtcbiAgfSk7XG4gIHJldHVybiBwcm9qO1xufTtcblxudmFyIE1hcFByb3ZpZGVyID0gZnVuY3Rpb24gTWFwUHJvdmlkZXIoX3JlZjIpIHtcbiAgdmFyIHdpZHRoID0gX3JlZjIud2lkdGgsXG4gICAgICBoZWlnaHQgPSBfcmVmMi5oZWlnaHQsXG4gICAgICBwcm9qZWN0aW9uID0gX3JlZjIucHJvamVjdGlvbixcbiAgICAgIHByb2plY3Rpb25Db25maWcgPSBfcmVmMi5wcm9qZWN0aW9uQ29uZmlnLFxuICAgICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYyLCBfZXhjbHVkZWQkYSk7XG5cbiAgdmFyIF9yZWYzID0gcHJvamVjdGlvbkNvbmZpZy5jZW50ZXIgfHwgW10sXG4gICAgICBfcmVmNCA9IF9zbGljZWRUb0FycmF5KF9yZWYzLCAyKSxcbiAgICAgIGN4ID0gX3JlZjRbMF0sXG4gICAgICBjeSA9IF9yZWY0WzFdO1xuXG4gIHZhciBfcmVmNSA9IHByb2plY3Rpb25Db25maWcucm90YXRlIHx8IFtdLFxuICAgICAgX3JlZjYgPSBfc2xpY2VkVG9BcnJheShfcmVmNSwgMyksXG4gICAgICByeCA9IF9yZWY2WzBdLFxuICAgICAgcnkgPSBfcmVmNlsxXSxcbiAgICAgIHJ6ID0gX3JlZjZbMl07XG5cbiAgdmFyIF9yZWY3ID0gcHJvamVjdGlvbkNvbmZpZy5wYXJhbGxlbHMgfHwgW10sXG4gICAgICBfcmVmOCA9IF9zbGljZWRUb0FycmF5KF9yZWY3LCAyKSxcbiAgICAgIHAxID0gX3JlZjhbMF0sXG4gICAgICBwMiA9IF9yZWY4WzFdO1xuXG4gIHZhciBzID0gcHJvamVjdGlvbkNvbmZpZy5zY2FsZSB8fCBudWxsO1xuICB2YXIgcHJvak1lbW8gPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbWFrZVByb2plY3Rpb24oe1xuICAgICAgcHJvamVjdGlvbkNvbmZpZzoge1xuICAgICAgICBjZW50ZXI6IGN4IHx8IGN4ID09PSAwIHx8IGN5IHx8IGN5ID09PSAwID8gW2N4LCBjeV0gOiBudWxsLFxuICAgICAgICByb3RhdGU6IHJ4IHx8IHJ4ID09PSAwIHx8IHJ5IHx8IHJ5ID09PSAwID8gW3J4LCByeSwgcnpdIDogbnVsbCxcbiAgICAgICAgcGFyYWxsZWxzOiBwMSB8fCBwMSA9PT0gMCB8fCBwMiB8fCBwMiA9PT0gMCA/IFtwMSwgcDJdIDogbnVsbCxcbiAgICAgICAgc2NhbGU6IHNcbiAgICAgIH0sXG4gICAgICBwcm9qZWN0aW9uOiBwcm9qZWN0aW9uLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9KTtcbiAgfSwgW3dpZHRoLCBoZWlnaHQsIHByb2plY3Rpb24sIGN4LCBjeSwgcngsIHJ5LCByeiwgcDEsIHAyLCBzXSk7XG4gIHZhciBwcm9qID0gdXNlQ2FsbGJhY2socHJvak1lbW8sIFtwcm9qTWVtb10pO1xuICB2YXIgdmFsdWUgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBwcm9qZWN0aW9uOiBwcm9qLFxuICAgICAgcGF0aDogZ2VvUGF0aCgpLnByb2plY3Rpb24ocHJvailcbiAgICB9O1xuICB9LCBbd2lkdGgsIGhlaWdodCwgcHJval0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWFwQ29udGV4dC5Qcm92aWRlciwgX2V4dGVuZHMoe1xuICAgIHZhbHVlOiB2YWx1ZVxuICB9LCByZXN0UHJvcHMpKTtcbn07XG5cbk1hcFByb3ZpZGVyLnByb3BUeXBlcyA9IHtcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXIsXG4gIGhlaWdodDogUHJvcFR5cGVzLm51bWJlcixcbiAgcHJvamVjdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgcHJvamVjdGlvbkNvbmZpZzogUHJvcFR5cGVzLm9iamVjdFxufTtcblxudmFyIHVzZU1hcENvbnRleHQgPSBmdW5jdGlvbiB1c2VNYXBDb250ZXh0KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChNYXBDb250ZXh0KTtcbn07XG5cbnZhciBfZXhjbHVkZWQkOSA9IFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwicHJvamVjdGlvblwiLCBcInByb2plY3Rpb25Db25maWdcIiwgXCJjbGFzc05hbWVcIl07XG52YXIgQ29tcG9zYWJsZU1hcCA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKF9yZWYsIHJlZikge1xuICB2YXIgX3JlZiR3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICB3aWR0aCA9IF9yZWYkd2lkdGggPT09IHZvaWQgMCA/IDgwMCA6IF9yZWYkd2lkdGgsXG4gICAgICBfcmVmJGhlaWdodCA9IF9yZWYuaGVpZ2h0LFxuICAgICAgaGVpZ2h0ID0gX3JlZiRoZWlnaHQgPT09IHZvaWQgMCA/IDYwMCA6IF9yZWYkaGVpZ2h0LFxuICAgICAgX3JlZiRwcm9qZWN0aW9uID0gX3JlZi5wcm9qZWN0aW9uLFxuICAgICAgcHJvamVjdGlvbiA9IF9yZWYkcHJvamVjdGlvbiA9PT0gdm9pZCAwID8gXCJnZW9FcXVhbEVhcnRoXCIgOiBfcmVmJHByb2plY3Rpb24sXG4gICAgICBfcmVmJHByb2plY3Rpb25Db25maWcgPSBfcmVmLnByb2plY3Rpb25Db25maWcsXG4gICAgICBwcm9qZWN0aW9uQ29uZmlnID0gX3JlZiRwcm9qZWN0aW9uQ29uZmlnID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkcHJvamVjdGlvbkNvbmZpZyxcbiAgICAgIF9yZWYkY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICBjbGFzc05hbWUgPSBfcmVmJGNsYXNzTmFtZSA9PT0gdm9pZCAwID8gXCJcIiA6IF9yZWYkY2xhc3NOYW1lLFxuICAgICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCQ5KTtcblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWFwUHJvdmlkZXIsIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgcHJvamVjdGlvbjogcHJvamVjdGlvbixcbiAgICBwcm9qZWN0aW9uQ29uZmlnOiBwcm9qZWN0aW9uQ29uZmlnXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHtcbiAgICByZWY6IHJlZixcbiAgICB2aWV3Qm94OiBcIjAgMCBcIi5jb25jYXQod2lkdGgsIFwiIFwiKS5jb25jYXQoaGVpZ2h0KSxcbiAgICBjbGFzc05hbWU6IFwicnNtLXN2ZyBcIi5jb25jYXQoY2xhc3NOYW1lKVxuICB9LCByZXN0UHJvcHMpKSk7XG59KTtcbkNvbXBvc2FibGVNYXAuZGlzcGxheU5hbWUgPSBcIkNvbXBvc2FibGVNYXBcIjtcbkNvbXBvc2FibGVNYXAucHJvcFR5cGVzID0ge1xuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlcixcbiAgaGVpZ2h0OiBQcm9wVHlwZXMubnVtYmVyLFxuICBwcm9qZWN0aW9uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZnVuY10pLFxuICBwcm9qZWN0aW9uQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmZ1bmN0aW9uIGdldENvb3Jkcyh3LCBoLCB0KSB7XG4gIHZhciB4T2Zmc2V0ID0gKHcgKiB0LmsgLSB3KSAvIDI7XG4gIHZhciB5T2Zmc2V0ID0gKGggKiB0LmsgLSBoKSAvIDI7XG4gIHJldHVybiBbdyAvIDIgLSAoeE9mZnNldCArIHQueCkgLyB0LmssIGggLyAyIC0gKHlPZmZzZXQgKyB0LnkpIC8gdC5rXTtcbn1cbmZ1bmN0aW9uIGZldGNoR2VvZ3JhcGhpZXModXJsKSB7XG4gIHJldHVybiBmZXRjaCh1cmwpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgIGlmICghcmVzLm9rKSB7XG4gICAgICB0aHJvdyBFcnJvcihyZXMuc3RhdHVzVGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5qc29uKCk7XG4gIH0pW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgY29uc29sZS5sb2coXCJUaGVyZSB3YXMgYSBwcm9ibGVtIHdoZW4gZmV0Y2hpbmcgdGhlIGRhdGE6IFwiLCBlcnJvcik7XG4gIH0pO1xufVxuZnVuY3Rpb24gZ2V0RmVhdHVyZXMoZ2VvZ3JhcGhpZXMsIHBhcnNlR2VvZ3JhcGhpZXMpIHtcbiAgdmFyIGlzVG9wb2pzb24gPSBnZW9ncmFwaGllcy50eXBlID09PSBcIlRvcG9sb2d5XCI7XG5cbiAgaWYgKCFpc1RvcG9qc29uKSB7XG4gICAgcmV0dXJuIHBhcnNlR2VvZ3JhcGhpZXMgPyBwYXJzZUdlb2dyYXBoaWVzKGdlb2dyYXBoaWVzLmZlYXR1cmVzIHx8IGdlb2dyYXBoaWVzKSA6IGdlb2dyYXBoaWVzLmZlYXR1cmVzIHx8IGdlb2dyYXBoaWVzO1xuICB9XG5cbiAgdmFyIGZlYXRzID0gZmVhdHVyZShnZW9ncmFwaGllcywgZ2VvZ3JhcGhpZXMub2JqZWN0c1tPYmplY3Qua2V5cyhnZW9ncmFwaGllcy5vYmplY3RzKVswXV0pLmZlYXR1cmVzO1xuICByZXR1cm4gcGFyc2VHZW9ncmFwaGllcyA/IHBhcnNlR2VvZ3JhcGhpZXMoZmVhdHMpIDogZmVhdHM7XG59XG5mdW5jdGlvbiBnZXRNZXNoKGdlb2dyYXBoaWVzKSB7XG4gIHZhciBpc1RvcG9qc29uID0gZ2VvZ3JhcGhpZXMudHlwZSA9PT0gXCJUb3BvbG9neVwiO1xuICBpZiAoIWlzVG9wb2pzb24pIHJldHVybiBudWxsO1xuICB2YXIgb3V0bGluZSA9IG1lc2goZ2VvZ3JhcGhpZXMsIGdlb2dyYXBoaWVzLm9iamVjdHNbT2JqZWN0LmtleXMoZ2VvZ3JhcGhpZXMub2JqZWN0cylbMF1dLCBmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBhID09PSBiO1xuICB9KTtcbiAgdmFyIGJvcmRlcnMgPSBtZXNoKGdlb2dyYXBoaWVzLCBnZW9ncmFwaGllcy5vYmplY3RzW09iamVjdC5rZXlzKGdlb2dyYXBoaWVzLm9iamVjdHMpWzBdXSwgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYSAhPT0gYjtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgb3V0bGluZTogb3V0bGluZSxcbiAgICBib3JkZXJzOiBib3JkZXJzXG4gIH07XG59XG5mdW5jdGlvbiBwcmVwYXJlTWVzaChvdXRsaW5lLCBib3JkZXJzLCBwYXRoKSB7XG4gIHJldHVybiBvdXRsaW5lICYmIGJvcmRlcnMgPyB7XG4gICAgb3V0bGluZTogX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIG91dGxpbmUpLCB7fSwge1xuICAgICAgcnNtS2V5OiBcIm91dGxpbmVcIixcbiAgICAgIHN2Z1BhdGg6IHBhdGgob3V0bGluZSlcbiAgICB9KSxcbiAgICBib3JkZXJzOiBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgYm9yZGVycyksIHt9LCB7XG4gICAgICByc21LZXk6IFwiYm9yZGVyc1wiLFxuICAgICAgc3ZnUGF0aDogcGF0aChib3JkZXJzKVxuICAgIH0pXG4gIH0gOiB7fTtcbn1cbmZ1bmN0aW9uIHByZXBhcmVGZWF0dXJlcyhnZW9ncmFwaGllcywgcGF0aCkge1xuICByZXR1cm4gZ2VvZ3JhcGhpZXMgPyBnZW9ncmFwaGllcy5tYXAoZnVuY3Rpb24gKGQsIGkpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIGQpLCB7fSwge1xuICAgICAgcnNtS2V5OiBcImdlby1cIi5jb25jYXQoaSksXG4gICAgICBzdmdQYXRoOiBwYXRoKGQpXG4gICAgfSk7XG4gIH0pIDogW107XG59XG5mdW5jdGlvbiBjcmVhdGVDb25uZWN0b3JQYXRoKCkge1xuICB2YXIgZHggPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IDMwO1xuICB2YXIgZHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDMwO1xuICB2YXIgY3VydmUgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDAuNTtcbiAgdmFyIGN1cnZhdHVyZSA9IEFycmF5LmlzQXJyYXkoY3VydmUpID8gY3VydmUgOiBbY3VydmUsIGN1cnZlXTtcbiAgdmFyIGN1cnZlWCA9IGR4IC8gMiAqIGN1cnZhdHVyZVswXTtcbiAgdmFyIGN1cnZlWSA9IGR5IC8gMiAqIGN1cnZhdHVyZVsxXTtcbiAgcmV0dXJuIFwiTVwiLmNvbmNhdCgwLCBcIixcIiwgMCwgXCIgUVwiLCAtZHggLyAyIC0gY3VydmVYLCBcIixcIikuY29uY2F0KC1keSAvIDIgKyBjdXJ2ZVksIFwiIFwiKS5jb25jYXQoLWR4LCBcIixcIikuY29uY2F0KC1keSk7XG59XG5mdW5jdGlvbiBpc1N0cmluZyhnZW8pIHtcbiAgcmV0dXJuIHR5cGVvZiBnZW8gPT09IFwic3RyaW5nXCI7XG59XG5cbmZ1bmN0aW9uIHVzZUdlb2dyYXBoaWVzKF9yZWYpIHtcbiAgdmFyIGdlb2dyYXBoeSA9IF9yZWYuZ2VvZ3JhcGh5LFxuICAgICAgcGFyc2VHZW9ncmFwaGllcyA9IF9yZWYucGFyc2VHZW9ncmFwaGllcztcblxuICB2YXIgX3VzZUNvbnRleHQgPSB1c2VDb250ZXh0KE1hcENvbnRleHQpLFxuICAgICAgcGF0aCA9IF91c2VDb250ZXh0LnBhdGg7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHt9KSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgb3V0cHV0ID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldE91dHB1dCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZih3aW5kb3cpKSA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuICAgIGlmICghZ2VvZ3JhcGh5KSByZXR1cm47XG5cbiAgICBpZiAoaXNTdHJpbmcoZ2VvZ3JhcGh5KSkge1xuICAgICAgZmV0Y2hHZW9ncmFwaGllcyhnZW9ncmFwaHkpLnRoZW4oZnVuY3Rpb24gKGdlb3MpIHtcbiAgICAgICAgaWYgKGdlb3MpIHtcbiAgICAgICAgICBzZXRPdXRwdXQoe1xuICAgICAgICAgICAgZ2VvZ3JhcGhpZXM6IGdldEZlYXR1cmVzKGdlb3MsIHBhcnNlR2VvZ3JhcGhpZXMpLFxuICAgICAgICAgICAgbWVzaDogZ2V0TWVzaChnZW9zKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0T3V0cHV0KHtcbiAgICAgICAgZ2VvZ3JhcGhpZXM6IGdldEZlYXR1cmVzKGdlb2dyYXBoeSwgcGFyc2VHZW9ncmFwaGllcyksXG4gICAgICAgIG1lc2g6IGdldE1lc2goZ2VvZ3JhcGh5KVxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbZ2VvZ3JhcGh5LCBwYXJzZUdlb2dyYXBoaWVzXSk7XG5cbiAgdmFyIF91c2VNZW1vID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1lc2ggPSBvdXRwdXQubWVzaCB8fCB7fTtcbiAgICB2YXIgcHJlcGFyZWRNZXNoID0gcHJlcGFyZU1lc2gobWVzaC5vdXRsaW5lLCBtZXNoLmJvcmRlcnMsIHBhdGgpO1xuICAgIHJldHVybiB7XG4gICAgICBnZW9ncmFwaGllczogcHJlcGFyZUZlYXR1cmVzKG91dHB1dC5nZW9ncmFwaGllcywgcGF0aCksXG4gICAgICBvdXRsaW5lOiBwcmVwYXJlZE1lc2gub3V0bGluZSxcbiAgICAgIGJvcmRlcnM6IHByZXBhcmVkTWVzaC5ib3JkZXJzXG4gICAgfTtcbiAgfSwgW291dHB1dCwgcGF0aF0pLFxuICAgICAgZ2VvZ3JhcGhpZXMgPSBfdXNlTWVtby5nZW9ncmFwaGllcyxcbiAgICAgIG91dGxpbmUgPSBfdXNlTWVtby5vdXRsaW5lLFxuICAgICAgYm9yZGVycyA9IF91c2VNZW1vLmJvcmRlcnM7XG5cbiAgcmV0dXJuIHtcbiAgICBnZW9ncmFwaGllczogZ2VvZ3JhcGhpZXMsXG4gICAgb3V0bGluZTogb3V0bGluZSxcbiAgICBib3JkZXJzOiBib3JkZXJzXG4gIH07XG59XG5cbnZhciBfZXhjbHVkZWQkOCA9IFtcImdlb2dyYXBoeVwiLCBcImNoaWxkcmVuXCIsIFwicGFyc2VHZW9ncmFwaGllc1wiLCBcImNsYXNzTmFtZVwiXTtcbnZhciBHZW9ncmFwaGllcyA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKF9yZWYsIHJlZikge1xuICB2YXIgZ2VvZ3JhcGh5ID0gX3JlZi5nZW9ncmFwaHksXG4gICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICBwYXJzZUdlb2dyYXBoaWVzID0gX3JlZi5wYXJzZUdlb2dyYXBoaWVzLFxuICAgICAgX3JlZiRjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICAgIGNsYXNzTmFtZSA9IF9yZWYkY2xhc3NOYW1lID09PSB2b2lkIDAgPyBcIlwiIDogX3JlZiRjbGFzc05hbWUsXG4gICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkJDgpO1xuXG4gIHZhciBfdXNlQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCksXG4gICAgICBwYXRoID0gX3VzZUNvbnRleHQucGF0aCxcbiAgICAgIHByb2plY3Rpb24gPSBfdXNlQ29udGV4dC5wcm9qZWN0aW9uO1xuXG4gIHZhciBfdXNlR2VvZ3JhcGhpZXMgPSB1c2VHZW9ncmFwaGllcyh7XG4gICAgZ2VvZ3JhcGh5OiBnZW9ncmFwaHksXG4gICAgcGFyc2VHZW9ncmFwaGllczogcGFyc2VHZW9ncmFwaGllc1xuICB9KSxcbiAgICAgIGdlb2dyYXBoaWVzID0gX3VzZUdlb2dyYXBoaWVzLmdlb2dyYXBoaWVzLFxuICAgICAgb3V0bGluZSA9IF91c2VHZW9ncmFwaGllcy5vdXRsaW5lLFxuICAgICAgYm9yZGVycyA9IF91c2VHZW9ncmFwaGllcy5ib3JkZXJzO1xuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogcmVmLFxuICAgIGNsYXNzTmFtZTogXCJyc20tZ2VvZ3JhcGhpZXMgXCIuY29uY2F0KGNsYXNzTmFtZSlcbiAgfSwgcmVzdFByb3BzKSwgZ2VvZ3JhcGhpZXMgJiYgZ2VvZ3JhcGhpZXMubGVuZ3RoID4gMCAmJiBjaGlsZHJlbih7XG4gICAgZ2VvZ3JhcGhpZXM6IGdlb2dyYXBoaWVzLFxuICAgIG91dGxpbmU6IG91dGxpbmUsXG4gICAgYm9yZGVyczogYm9yZGVycyxcbiAgICBwYXRoOiBwYXRoLFxuICAgIHByb2plY3Rpb246IHByb2plY3Rpb25cbiAgfSkpO1xufSk7XG5HZW9ncmFwaGllcy5kaXNwbGF5TmFtZSA9IFwiR2VvZ3JhcGhpZXNcIjtcbkdlb2dyYXBoaWVzLnByb3BUeXBlcyA9IHtcbiAgZ2VvZ3JhcGh5OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYXJyYXldKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5mdW5jLFxuICBwYXJzZUdlb2dyYXBoaWVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG52YXIgX2V4Y2x1ZGVkJDcgPSBbXCJnZW9ncmFwaHlcIiwgXCJvbk1vdXNlRW50ZXJcIiwgXCJvbk1vdXNlTGVhdmVcIiwgXCJvbk1vdXNlRG93blwiLCBcIm9uTW91c2VVcFwiLCBcIm9uRm9jdXNcIiwgXCJvbkJsdXJcIiwgXCJzdHlsZVwiLCBcImNsYXNzTmFtZVwiXTtcbnZhciBHZW9ncmFwaHkgPSBmb3J3YXJkUmVmKGZ1bmN0aW9uIChfcmVmLCByZWYpIHtcbiAgdmFyIGdlb2dyYXBoeSA9IF9yZWYuZ2VvZ3JhcGh5LFxuICAgICAgb25Nb3VzZUVudGVyID0gX3JlZi5vbk1vdXNlRW50ZXIsXG4gICAgICBvbk1vdXNlTGVhdmUgPSBfcmVmLm9uTW91c2VMZWF2ZSxcbiAgICAgIG9uTW91c2VEb3duID0gX3JlZi5vbk1vdXNlRG93bixcbiAgICAgIG9uTW91c2VVcCA9IF9yZWYub25Nb3VzZVVwLFxuICAgICAgb25Gb2N1cyA9IF9yZWYub25Gb2N1cyxcbiAgICAgIG9uQmx1ciA9IF9yZWYub25CbHVyLFxuICAgICAgX3JlZiRzdHlsZSA9IF9yZWYuc3R5bGUsXG4gICAgICBzdHlsZSA9IF9yZWYkc3R5bGUgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRzdHlsZSxcbiAgICAgIF9yZWYkY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICBjbGFzc05hbWUgPSBfcmVmJGNsYXNzTmFtZSA9PT0gdm9pZCAwID8gXCJcIiA6IF9yZWYkY2xhc3NOYW1lLFxuICAgICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCQ3KTtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoZmFsc2UpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICBpc1ByZXNzZWQgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0UHJlc3NlZCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIF91c2VTdGF0ZTMgPSB1c2VTdGF0ZShmYWxzZSksXG4gICAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgICBpc0ZvY3VzZWQgPSBfdXNlU3RhdGU0WzBdLFxuICAgICAgc2V0Rm9jdXMgPSBfdXNlU3RhdGU0WzFdO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRW50ZXIoZXZ0KSB7XG4gICAgc2V0Rm9jdXModHJ1ZSk7XG4gICAgaWYgKG9uTW91c2VFbnRlcikgb25Nb3VzZUVudGVyKGV2dCk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVNb3VzZUxlYXZlKGV2dCkge1xuICAgIHNldEZvY3VzKGZhbHNlKTtcbiAgICBpZiAoaXNQcmVzc2VkKSBzZXRQcmVzc2VkKGZhbHNlKTtcbiAgICBpZiAob25Nb3VzZUxlYXZlKSBvbk1vdXNlTGVhdmUoZXZ0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKGV2dCkge1xuICAgIHNldEZvY3VzKHRydWUpO1xuICAgIGlmIChvbkZvY3VzKSBvbkZvY3VzKGV2dCk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVCbHVyKGV2dCkge1xuICAgIHNldEZvY3VzKGZhbHNlKTtcbiAgICBpZiAoaXNQcmVzc2VkKSBzZXRQcmVzc2VkKGZhbHNlKTtcbiAgICBpZiAob25CbHVyKSBvbkJsdXIoZXZ0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldnQpIHtcbiAgICBzZXRQcmVzc2VkKHRydWUpO1xuICAgIGlmIChvbk1vdXNlRG93bikgb25Nb3VzZURvd24oZXZ0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdXNlVXAoZXZ0KSB7XG4gICAgc2V0UHJlc3NlZChmYWxzZSk7XG4gICAgaWYgKG9uTW91c2VVcCkgb25Nb3VzZVVwKGV2dCk7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHtcbiAgICByZWY6IHJlZixcbiAgICB0YWJJbmRleDogXCIwXCIsXG4gICAgY2xhc3NOYW1lOiBcInJzbS1nZW9ncmFwaHkgXCIuY29uY2F0KGNsYXNzTmFtZSksXG4gICAgZDogZ2VvZ3JhcGh5LnN2Z1BhdGgsXG4gICAgb25Nb3VzZUVudGVyOiBoYW5kbGVNb3VzZUVudGVyLFxuICAgIG9uTW91c2VMZWF2ZTogaGFuZGxlTW91c2VMZWF2ZSxcbiAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICBvbkJsdXI6IGhhbmRsZUJsdXIsXG4gICAgb25Nb3VzZURvd246IGhhbmRsZU1vdXNlRG93bixcbiAgICBvbk1vdXNlVXA6IGhhbmRsZU1vdXNlVXAsXG4gICAgc3R5bGU6IHN0eWxlW2lzUHJlc3NlZCB8fCBpc0ZvY3VzZWQgPyBpc1ByZXNzZWQgPyBcInByZXNzZWRcIiA6IFwiaG92ZXJcIiA6IFwiZGVmYXVsdFwiXVxuICB9LCByZXN0UHJvcHMpKTtcbn0pO1xuR2VvZ3JhcGh5LmRpc3BsYXlOYW1lID0gXCJHZW9ncmFwaHlcIjtcbkdlb2dyYXBoeS5wcm9wVHlwZXMgPSB7XG4gIGdlb2dyYXBoeTogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25Nb3VzZUVudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Nb3VzZUxlYXZlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Nb3VzZURvd246IFByb3BUeXBlcy5mdW5jLFxuICBvbk1vdXNlVXA6IFByb3BUeXBlcy5mdW5jLFxuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcbnZhciBHZW9ncmFwaHkkMSA9IG1lbW8oR2VvZ3JhcGh5KTtcblxudmFyIF9leGNsdWRlZCQ2ID0gW1wiZmlsbFwiLCBcInN0cm9rZVwiLCBcInN0ZXBcIiwgXCJjbGFzc05hbWVcIl07XG52YXIgR3JhdGljdWxlID0gZm9yd2FyZFJlZihmdW5jdGlvbiAoX3JlZiwgcmVmKSB7XG4gIHZhciBfcmVmJGZpbGwgPSBfcmVmLmZpbGwsXG4gICAgICBmaWxsID0gX3JlZiRmaWxsID09PSB2b2lkIDAgPyBcInRyYW5zcGFyZW50XCIgOiBfcmVmJGZpbGwsXG4gICAgICBfcmVmJHN0cm9rZSA9IF9yZWYuc3Ryb2tlLFxuICAgICAgc3Ryb2tlID0gX3JlZiRzdHJva2UgPT09IHZvaWQgMCA/IFwiY3VycmVudGNvbG9yXCIgOiBfcmVmJHN0cm9rZSxcbiAgICAgIF9yZWYkc3RlcCA9IF9yZWYuc3RlcCxcbiAgICAgIHN0ZXAgPSBfcmVmJHN0ZXAgPT09IHZvaWQgMCA/IFsxMCwgMTBdIDogX3JlZiRzdGVwLFxuICAgICAgX3JlZiRjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICAgIGNsYXNzTmFtZSA9IF9yZWYkY2xhc3NOYW1lID09PSB2b2lkIDAgPyBcIlwiIDogX3JlZiRjbGFzc05hbWUsXG4gICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkJDYpO1xuXG4gIHZhciBfdXNlQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCksXG4gICAgICBwYXRoID0gX3VzZUNvbnRleHQucGF0aDtcblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHtcbiAgICByZWY6IHJlZixcbiAgICBkOiBwYXRoKGdlb0dyYXRpY3VsZSgpLnN0ZXAoc3RlcCkoKSksXG4gICAgZmlsbDogZmlsbCxcbiAgICBzdHJva2U6IHN0cm9rZSxcbiAgICBjbGFzc05hbWU6IFwicnNtLWdyYXRpY3VsZSBcIi5jb25jYXQoY2xhc3NOYW1lKVxuICB9LCByZXN0UHJvcHMpKTtcbn0pO1xuR3JhdGljdWxlLmRpc3BsYXlOYW1lID0gXCJHcmF0aWN1bGVcIjtcbkdyYXRpY3VsZS5wcm9wVHlwZXMgPSB7XG4gIGZpbGw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN0cm9rZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3RlcDogUHJvcFR5cGVzLmFycmF5LFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG52YXIgR3JhdGljdWxlJDEgPSBtZW1vKEdyYXRpY3VsZSk7XG5cbnZhciBfZXhjbHVkZWQkNSA9IFtcInZhbHVlXCJdO1xudmFyIFpvb21QYW5Db250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xudmFyIGRlZmF1bHRWYWx1ZSA9IHtcbiAgeDogMCxcbiAgeTogMCxcbiAgazogMSxcbiAgdHJhbnNmb3JtU3RyaW5nOiBcInRyYW5zbGF0ZSgwIDApIHNjYWxlKDEpXCJcbn07XG5cbnZhciBab29tUGFuUHJvdmlkZXIgPSBmdW5jdGlvbiBab29tUGFuUHJvdmlkZXIoX3JlZikge1xuICB2YXIgX3JlZiR2YWx1ZSA9IF9yZWYudmFsdWUsXG4gICAgICB2YWx1ZSA9IF9yZWYkdmFsdWUgPT09IHZvaWQgMCA/IGRlZmF1bHRWYWx1ZSA6IF9yZWYkdmFsdWUsXG4gICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkJDUpO1xuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChab29tUGFuQ29udGV4dC5Qcm92aWRlciwgX2V4dGVuZHMoe1xuICAgIHZhbHVlOiB2YWx1ZVxuICB9LCByZXN0UHJvcHMpKTtcbn07XG5cblpvb21QYW5Qcm92aWRlci5wcm9wVHlwZXMgPSB7XG4gIHg6IFByb3BUeXBlcy5udW1iZXIsXG4gIHk6IFByb3BUeXBlcy5udW1iZXIsXG4gIGs6IFByb3BUeXBlcy5udW1iZXIsXG4gIHRyYW5zZm9ybVN0cmluZzogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxudmFyIHVzZVpvb21QYW5Db250ZXh0ID0gZnVuY3Rpb24gdXNlWm9vbVBhbkNvbnRleHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KFpvb21QYW5Db250ZXh0KTtcbn07XG5cbmZ1bmN0aW9uIHVzZVpvb21QYW4oX3JlZikge1xuICB2YXIgY2VudGVyID0gX3JlZi5jZW50ZXIsXG4gICAgICBmaWx0ZXJab29tRXZlbnQgPSBfcmVmLmZpbHRlclpvb21FdmVudCxcbiAgICAgIG9uTW92ZVN0YXJ0ID0gX3JlZi5vbk1vdmVTdGFydCxcbiAgICAgIG9uTW92ZUVuZCA9IF9yZWYub25Nb3ZlRW5kLFxuICAgICAgb25Nb3ZlID0gX3JlZi5vbk1vdmUsXG4gICAgICBfcmVmJHRyYW5zbGF0ZUV4dGVudCA9IF9yZWYudHJhbnNsYXRlRXh0ZW50LFxuICAgICAgdHJhbnNsYXRlRXh0ZW50ID0gX3JlZiR0cmFuc2xhdGVFeHRlbnQgPT09IHZvaWQgMCA/IFtbLUluZmluaXR5LCAtSW5maW5pdHldLCBbSW5maW5pdHksIEluZmluaXR5XV0gOiBfcmVmJHRyYW5zbGF0ZUV4dGVudCxcbiAgICAgIF9yZWYkc2NhbGVFeHRlbnQgPSBfcmVmLnNjYWxlRXh0ZW50LFxuICAgICAgc2NhbGVFeHRlbnQgPSBfcmVmJHNjYWxlRXh0ZW50ID09PSB2b2lkIDAgPyBbMSwgOF0gOiBfcmVmJHNjYWxlRXh0ZW50LFxuICAgICAgX3JlZiR6b29tID0gX3JlZi56b29tLFxuICAgICAgem9vbSQxID0gX3JlZiR6b29tID09PSB2b2lkIDAgPyAxIDogX3JlZiR6b29tO1xuXG4gIHZhciBfdXNlQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCksXG4gICAgICB3aWR0aCA9IF91c2VDb250ZXh0LndpZHRoLFxuICAgICAgaGVpZ2h0ID0gX3VzZUNvbnRleHQuaGVpZ2h0LFxuICAgICAgcHJvamVjdGlvbiA9IF91c2VDb250ZXh0LnByb2plY3Rpb247XG5cbiAgdmFyIF9jZW50ZXIgPSBfc2xpY2VkVG9BcnJheShjZW50ZXIsIDIpLFxuICAgICAgbG9uID0gX2NlbnRlclswXSxcbiAgICAgIGxhdCA9IF9jZW50ZXJbMV07XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgazogMVxuICB9KSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgcG9zaXRpb24gPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0UG9zaXRpb24gPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBsYXN0UG9zaXRpb24gPSB1c2VSZWYoe1xuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICBrOiAxXG4gIH0pO1xuICB2YXIgbWFwUmVmID0gdXNlUmVmKCk7XG4gIHZhciB6b29tUmVmID0gdXNlUmVmKCk7XG4gIHZhciBieXBhc3NFdmVudHMgPSB1c2VSZWYoZmFsc2UpO1xuXG4gIHZhciBfdHJhbnNsYXRlRXh0ZW50ID0gX3NsaWNlZFRvQXJyYXkodHJhbnNsYXRlRXh0ZW50LCAyKSxcbiAgICAgIGEgPSBfdHJhbnNsYXRlRXh0ZW50WzBdLFxuICAgICAgYiA9IF90cmFuc2xhdGVFeHRlbnRbMV07XG5cbiAgdmFyIF9hID0gX3NsaWNlZFRvQXJyYXkoYSwgMiksXG4gICAgICBhMSA9IF9hWzBdLFxuICAgICAgYTIgPSBfYVsxXTtcblxuICB2YXIgX2IgPSBfc2xpY2VkVG9BcnJheShiLCAyKSxcbiAgICAgIGIxID0gX2JbMF0sXG4gICAgICBiMiA9IF9iWzFdO1xuXG4gIHZhciBfc2NhbGVFeHRlbnQgPSBfc2xpY2VkVG9BcnJheShzY2FsZUV4dGVudCwgMiksXG4gICAgICBtaW5ab29tID0gX3NjYWxlRXh0ZW50WzBdLFxuICAgICAgbWF4Wm9vbSA9IF9zY2FsZUV4dGVudFsxXTtcblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdmcgPSBzZWxlY3QobWFwUmVmLmN1cnJlbnQpO1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlWm9vbVN0YXJ0KGQzRXZlbnQpIHtcbiAgICAgIGlmICghb25Nb3ZlU3RhcnQgfHwgYnlwYXNzRXZlbnRzLmN1cnJlbnQpIHJldHVybjtcbiAgICAgIG9uTW92ZVN0YXJ0KHtcbiAgICAgICAgY29vcmRpbmF0ZXM6IHByb2plY3Rpb24uaW52ZXJ0KGdldENvb3Jkcyh3aWR0aCwgaGVpZ2h0LCBkM0V2ZW50LnRyYW5zZm9ybSkpLFxuICAgICAgICB6b29tOiBkM0V2ZW50LnRyYW5zZm9ybS5rXG4gICAgICB9LCBkM0V2ZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVab29tKGQzRXZlbnQpIHtcbiAgICAgIGlmIChieXBhc3NFdmVudHMuY3VycmVudCkgcmV0dXJuO1xuICAgICAgdmFyIHRyYW5zZm9ybSA9IGQzRXZlbnQudHJhbnNmb3JtLFxuICAgICAgICAgIHNvdXJjZUV2ZW50ID0gZDNFdmVudC5zb3VyY2VFdmVudDtcbiAgICAgIHNldFBvc2l0aW9uKHtcbiAgICAgICAgeDogdHJhbnNmb3JtLngsXG4gICAgICAgIHk6IHRyYW5zZm9ybS55LFxuICAgICAgICBrOiB0cmFuc2Zvcm0uayxcbiAgICAgICAgZHJhZ2dpbmc6IHNvdXJjZUV2ZW50XG4gICAgICB9KTtcbiAgICAgIGlmICghb25Nb3ZlKSByZXR1cm47XG4gICAgICBvbk1vdmUoe1xuICAgICAgICB4OiB0cmFuc2Zvcm0ueCxcbiAgICAgICAgeTogdHJhbnNmb3JtLnksXG4gICAgICAgIHpvb206IHRyYW5zZm9ybS5rLFxuICAgICAgICBkcmFnZ2luZzogc291cmNlRXZlbnRcbiAgICAgIH0sIGQzRXZlbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVpvb21FbmQoZDNFdmVudCkge1xuICAgICAgaWYgKGJ5cGFzc0V2ZW50cy5jdXJyZW50KSB7XG4gICAgICAgIGJ5cGFzc0V2ZW50cy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIF9wcm9qZWN0aW9uJGludmVydCA9IHByb2plY3Rpb24uaW52ZXJ0KGdldENvb3Jkcyh3aWR0aCwgaGVpZ2h0LCBkM0V2ZW50LnRyYW5zZm9ybSkpLFxuICAgICAgICAgIF9wcm9qZWN0aW9uJGludmVydDIgPSBfc2xpY2VkVG9BcnJheShfcHJvamVjdGlvbiRpbnZlcnQsIDIpLFxuICAgICAgICAgIHggPSBfcHJvamVjdGlvbiRpbnZlcnQyWzBdLFxuICAgICAgICAgIHkgPSBfcHJvamVjdGlvbiRpbnZlcnQyWzFdO1xuXG4gICAgICBsYXN0UG9zaXRpb24uY3VycmVudCA9IHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgazogZDNFdmVudC50cmFuc2Zvcm0ua1xuICAgICAgfTtcbiAgICAgIGlmICghb25Nb3ZlRW5kKSByZXR1cm47XG4gICAgICBvbk1vdmVFbmQoe1xuICAgICAgICBjb29yZGluYXRlczogW3gsIHldLFxuICAgICAgICB6b29tOiBkM0V2ZW50LnRyYW5zZm9ybS5rXG4gICAgICB9LCBkM0V2ZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXJGdW5jKGQzRXZlbnQpIHtcbiAgICAgIGlmIChmaWx0ZXJab29tRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlclpvb21FdmVudChkM0V2ZW50KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGQzRXZlbnQgPyAhZDNFdmVudC5jdHJsS2V5ICYmICFkM0V2ZW50LmJ1dHRvbiA6IGZhbHNlO1xuICAgIH1cblxuICAgIHZhciB6b29tJDEgPSB6b29tKCkuZmlsdGVyKGZpbHRlckZ1bmMpLnNjYWxlRXh0ZW50KFttaW5ab29tLCBtYXhab29tXSkudHJhbnNsYXRlRXh0ZW50KFtbYTEsIGEyXSwgW2IxLCBiMl1dKS5vbihcInN0YXJ0XCIsIGhhbmRsZVpvb21TdGFydCkub24oXCJ6b29tXCIsIGhhbmRsZVpvb20pLm9uKFwiZW5kXCIsIGhhbmRsZVpvb21FbmQpO1xuICAgIHpvb21SZWYuY3VycmVudCA9IHpvb20kMTtcbiAgICBzdmcuY2FsbCh6b29tJDEpO1xuICB9LCBbd2lkdGgsIGhlaWdodCwgYTEsIGEyLCBiMSwgYjIsIG1pblpvb20sIG1heFpvb20sIHByb2plY3Rpb24sIG9uTW92ZVN0YXJ0LCBvbk1vdmUsIG9uTW92ZUVuZCwgZmlsdGVyWm9vbUV2ZW50XSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGxvbiA9PT0gbGFzdFBvc2l0aW9uLmN1cnJlbnQueCAmJiBsYXQgPT09IGxhc3RQb3NpdGlvbi5jdXJyZW50LnkgJiYgem9vbSQxID09PSBsYXN0UG9zaXRpb24uY3VycmVudC5rKSByZXR1cm47XG4gICAgdmFyIGNvb3JkcyA9IHByb2plY3Rpb24oW2xvbiwgbGF0XSk7XG4gICAgdmFyIHggPSBjb29yZHNbMF0gKiB6b29tJDE7XG4gICAgdmFyIHkgPSBjb29yZHNbMV0gKiB6b29tJDE7XG4gICAgdmFyIHN2ZyA9IHNlbGVjdChtYXBSZWYuY3VycmVudCk7XG4gICAgYnlwYXNzRXZlbnRzLmN1cnJlbnQgPSB0cnVlO1xuICAgIHN2Zy5jYWxsKHpvb21SZWYuY3VycmVudC50cmFuc2Zvcm0sIHpvb21JZGVudGl0eS50cmFuc2xhdGUod2lkdGggLyAyIC0geCwgaGVpZ2h0IC8gMiAtIHkpLnNjYWxlKHpvb20kMSkpO1xuICAgIHNldFBvc2l0aW9uKHtcbiAgICAgIHg6IHdpZHRoIC8gMiAtIHgsXG4gICAgICB5OiBoZWlnaHQgLyAyIC0geSxcbiAgICAgIGs6IHpvb20kMVxuICAgIH0pO1xuICAgIGxhc3RQb3NpdGlvbi5jdXJyZW50ID0ge1xuICAgICAgeDogbG9uLFxuICAgICAgeTogbGF0LFxuICAgICAgazogem9vbSQxXG4gICAgfTtcbiAgfSwgW2xvbiwgbGF0LCB6b29tJDEsIHdpZHRoLCBoZWlnaHQsIHByb2plY3Rpb25dKTtcbiAgcmV0dXJuIHtcbiAgICBtYXBSZWY6IG1hcFJlZixcbiAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgdHJhbnNmb3JtU3RyaW5nOiBcInRyYW5zbGF0ZShcIi5jb25jYXQocG9zaXRpb24ueCwgXCIgXCIpLmNvbmNhdChwb3NpdGlvbi55LCBcIikgc2NhbGUoXCIpLmNvbmNhdChwb3NpdGlvbi5rLCBcIilcIilcbiAgfTtcbn1cblxudmFyIF9leGNsdWRlZCQ0ID0gW1wiY2VudGVyXCIsIFwiem9vbVwiLCBcIm1pblpvb21cIiwgXCJtYXhab29tXCIsIFwidHJhbnNsYXRlRXh0ZW50XCIsIFwiZmlsdGVyWm9vbUV2ZW50XCIsIFwib25Nb3ZlU3RhcnRcIiwgXCJvbk1vdmVcIiwgXCJvbk1vdmVFbmRcIiwgXCJjbGFzc05hbWVcIl07XG52YXIgWm9vbWFibGVHcm91cCA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKF9yZWYsIHJlZikge1xuICB2YXIgX3JlZiRjZW50ZXIgPSBfcmVmLmNlbnRlcixcbiAgICAgIGNlbnRlciA9IF9yZWYkY2VudGVyID09PSB2b2lkIDAgPyBbMCwgMF0gOiBfcmVmJGNlbnRlcixcbiAgICAgIF9yZWYkem9vbSA9IF9yZWYuem9vbSxcbiAgICAgIHpvb20gPSBfcmVmJHpvb20gPT09IHZvaWQgMCA/IDEgOiBfcmVmJHpvb20sXG4gICAgICBfcmVmJG1pblpvb20gPSBfcmVmLm1pblpvb20sXG4gICAgICBtaW5ab29tID0gX3JlZiRtaW5ab29tID09PSB2b2lkIDAgPyAxIDogX3JlZiRtaW5ab29tLFxuICAgICAgX3JlZiRtYXhab29tID0gX3JlZi5tYXhab29tLFxuICAgICAgbWF4Wm9vbSA9IF9yZWYkbWF4Wm9vbSA9PT0gdm9pZCAwID8gOCA6IF9yZWYkbWF4Wm9vbSxcbiAgICAgIHRyYW5zbGF0ZUV4dGVudCA9IF9yZWYudHJhbnNsYXRlRXh0ZW50LFxuICAgICAgZmlsdGVyWm9vbUV2ZW50ID0gX3JlZi5maWx0ZXJab29tRXZlbnQsXG4gICAgICBvbk1vdmVTdGFydCA9IF9yZWYub25Nb3ZlU3RhcnQsXG4gICAgICBvbk1vdmUgPSBfcmVmLm9uTW92ZSxcbiAgICAgIG9uTW92ZUVuZCA9IF9yZWYub25Nb3ZlRW5kLFxuICAgICAgY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkJDQpO1xuXG4gIHZhciBfdXNlQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCksXG4gICAgICB3aWR0aCA9IF91c2VDb250ZXh0LndpZHRoLFxuICAgICAgaGVpZ2h0ID0gX3VzZUNvbnRleHQuaGVpZ2h0O1xuXG4gIHZhciBfdXNlWm9vbVBhbiA9IHVzZVpvb21QYW4oe1xuICAgIGNlbnRlcjogY2VudGVyLFxuICAgIGZpbHRlclpvb21FdmVudDogZmlsdGVyWm9vbUV2ZW50LFxuICAgIG9uTW92ZVN0YXJ0OiBvbk1vdmVTdGFydCxcbiAgICBvbk1vdmU6IG9uTW92ZSxcbiAgICBvbk1vdmVFbmQ6IG9uTW92ZUVuZCxcbiAgICBzY2FsZUV4dGVudDogW21pblpvb20sIG1heFpvb21dLFxuICAgIHRyYW5zbGF0ZUV4dGVudDogdHJhbnNsYXRlRXh0ZW50LFxuICAgIHpvb206IHpvb21cbiAgfSksXG4gICAgICBtYXBSZWYgPSBfdXNlWm9vbVBhbi5tYXBSZWYsXG4gICAgICB0cmFuc2Zvcm1TdHJpbmcgPSBfdXNlWm9vbVBhbi50cmFuc2Zvcm1TdHJpbmcsXG4gICAgICBwb3NpdGlvbiA9IF91c2Vab29tUGFuLnBvc2l0aW9uO1xuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChab29tUGFuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZToge1xuICAgICAgeDogcG9zaXRpb24ueCxcbiAgICAgIHk6IHBvc2l0aW9uLnksXG4gICAgICBrOiBwb3NpdGlvbi5rLFxuICAgICAgdHJhbnNmb3JtU3RyaW5nOiB0cmFuc2Zvcm1TdHJpbmdcbiAgICB9XG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgcmVmOiBtYXBSZWZcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgZmlsbDogXCJ0cmFuc3BhcmVudFwiXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogcmVmLFxuICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtU3RyaW5nLFxuICAgIGNsYXNzTmFtZTogXCJyc20tem9vbWFibGUtZ3JvdXAgXCIuY29uY2F0KGNsYXNzTmFtZSlcbiAgfSwgcmVzdFByb3BzKSkpKTtcbn0pO1xuWm9vbWFibGVHcm91cC5kaXNwbGF5TmFtZSA9IFwiWm9vbWFibGVHcm91cFwiO1xuWm9vbWFibGVHcm91cC5wcm9wVHlwZXMgPSB7XG4gIGNlbnRlcjogUHJvcFR5cGVzLmFycmF5LFxuICB6b29tOiBQcm9wVHlwZXMubnVtYmVyLFxuICBtaW5ab29tOiBQcm9wVHlwZXMubnVtYmVyLFxuICBtYXhab29tOiBQcm9wVHlwZXMubnVtYmVyLFxuICB0cmFuc2xhdGVFeHRlbnQ6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hcnJheSksXG4gIG9uTW92ZVN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Nb3ZlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Nb3ZlRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG52YXIgX2V4Y2x1ZGVkJDMgPSBbXCJpZFwiLCBcImZpbGxcIiwgXCJzdHJva2VcIiwgXCJzdHJva2VXaWR0aFwiLCBcImNsYXNzTmFtZVwiXTtcbnZhciBTcGhlcmUgPSBmb3J3YXJkUmVmKGZ1bmN0aW9uIChfcmVmLCByZWYpIHtcbiAgdmFyIF9yZWYkaWQgPSBfcmVmLmlkLFxuICAgICAgaWQgPSBfcmVmJGlkID09PSB2b2lkIDAgPyBcInJzbS1zcGhlcmVcIiA6IF9yZWYkaWQsXG4gICAgICBfcmVmJGZpbGwgPSBfcmVmLmZpbGwsXG4gICAgICBmaWxsID0gX3JlZiRmaWxsID09PSB2b2lkIDAgPyBcInRyYW5zcGFyZW50XCIgOiBfcmVmJGZpbGwsXG4gICAgICBfcmVmJHN0cm9rZSA9IF9yZWYuc3Ryb2tlLFxuICAgICAgc3Ryb2tlID0gX3JlZiRzdHJva2UgPT09IHZvaWQgMCA/IFwiY3VycmVudGNvbG9yXCIgOiBfcmVmJHN0cm9rZSxcbiAgICAgIF9yZWYkc3Ryb2tlV2lkdGggPSBfcmVmLnN0cm9rZVdpZHRoLFxuICAgICAgc3Ryb2tlV2lkdGggPSBfcmVmJHN0cm9rZVdpZHRoID09PSB2b2lkIDAgPyAwLjUgOiBfcmVmJHN0cm9rZVdpZHRoLFxuICAgICAgX3JlZiRjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICAgIGNsYXNzTmFtZSA9IF9yZWYkY2xhc3NOYW1lID09PSB2b2lkIDAgPyBcIlwiIDogX3JlZiRjbGFzc05hbWUsXG4gICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkJDMpO1xuXG4gIHZhciBfdXNlQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCksXG4gICAgICBwYXRoID0gX3VzZUNvbnRleHQucGF0aDtcblxuICB2YXIgc3BoZXJlUGF0aCA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBwYXRoKHtcbiAgICAgIHR5cGU6IFwiU3BoZXJlXCJcbiAgICB9KTtcbiAgfSwgW3BhdGhdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRlZnNcIiwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjbGlwUGF0aFwiLCB7XG4gICAgaWQ6IGlkXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgZDogc3BoZXJlUGF0aFxuICB9KSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogcmVmLFxuICAgIGQ6IHNwaGVyZVBhdGgsXG4gICAgZmlsbDogZmlsbCxcbiAgICBzdHJva2U6IHN0cm9rZSxcbiAgICBzdHJva2VXaWR0aDogc3Ryb2tlV2lkdGgsXG4gICAgc3R5bGU6IHtcbiAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiXG4gICAgfSxcbiAgICBjbGFzc05hbWU6IFwicnNtLXNwaGVyZSBcIi5jb25jYXQoY2xhc3NOYW1lKVxuICB9LCByZXN0UHJvcHMpKSk7XG59KTtcblNwaGVyZS5kaXNwbGF5TmFtZSA9IFwiU3BoZXJlXCI7XG5TcGhlcmUucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgZmlsbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3Ryb2tlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdHJva2VXaWR0aDogUHJvcFR5cGVzLm51bWJlcixcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xudmFyIFNwaGVyZSQxID0gbWVtbyhTcGhlcmUpO1xuXG52YXIgX2V4Y2x1ZGVkJDIgPSBbXCJjb29yZGluYXRlc1wiLCBcImNoaWxkcmVuXCIsIFwib25Nb3VzZUVudGVyXCIsIFwib25Nb3VzZUxlYXZlXCIsIFwib25Nb3VzZURvd25cIiwgXCJvbk1vdXNlVXBcIiwgXCJvbkZvY3VzXCIsIFwib25CbHVyXCIsIFwic3R5bGVcIiwgXCJjbGFzc05hbWVcIl07XG52YXIgTWFya2VyID0gZm9yd2FyZFJlZihmdW5jdGlvbiAoX3JlZiwgcmVmKSB7XG4gIHZhciBjb29yZGluYXRlcyA9IF9yZWYuY29vcmRpbmF0ZXMsXG4gICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICBvbk1vdXNlRW50ZXIgPSBfcmVmLm9uTW91c2VFbnRlcixcbiAgICAgIG9uTW91c2VMZWF2ZSA9IF9yZWYub25Nb3VzZUxlYXZlLFxuICAgICAgb25Nb3VzZURvd24gPSBfcmVmLm9uTW91c2VEb3duLFxuICAgICAgb25Nb3VzZVVwID0gX3JlZi5vbk1vdXNlVXAsXG4gICAgICBvbkZvY3VzID0gX3JlZi5vbkZvY3VzLFxuICAgICAgb25CbHVyID0gX3JlZi5vbkJsdXIsXG4gICAgICBfcmVmJHN0eWxlID0gX3JlZi5zdHlsZSxcbiAgICAgIHN0eWxlID0gX3JlZiRzdHlsZSA9PT0gdm9pZCAwID8ge30gOiBfcmVmJHN0eWxlLFxuICAgICAgX3JlZiRjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICAgIGNsYXNzTmFtZSA9IF9yZWYkY2xhc3NOYW1lID09PSB2b2lkIDAgPyBcIlwiIDogX3JlZiRjbGFzc05hbWUsXG4gICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkJDIpO1xuXG4gIHZhciBfdXNlQ29udGV4dCA9IHVzZUNvbnRleHQoTWFwQ29udGV4dCksXG4gICAgICBwcm9qZWN0aW9uID0gX3VzZUNvbnRleHQucHJvamVjdGlvbjtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoZmFsc2UpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICBpc1ByZXNzZWQgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0UHJlc3NlZCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIF91c2VTdGF0ZTMgPSB1c2VTdGF0ZShmYWxzZSksXG4gICAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgICBpc0ZvY3VzZWQgPSBfdXNlU3RhdGU0WzBdLFxuICAgICAgc2V0Rm9jdXMgPSBfdXNlU3RhdGU0WzFdO1xuXG4gIHZhciBfcHJvamVjdGlvbiA9IHByb2plY3Rpb24oY29vcmRpbmF0ZXMpLFxuICAgICAgX3Byb2plY3Rpb24yID0gX3NsaWNlZFRvQXJyYXkoX3Byb2plY3Rpb24sIDIpLFxuICAgICAgeCA9IF9wcm9qZWN0aW9uMlswXSxcbiAgICAgIHkgPSBfcHJvamVjdGlvbjJbMV07XG5cbiAgZnVuY3Rpb24gaGFuZGxlTW91c2VFbnRlcihldnQpIHtcbiAgICBzZXRGb2N1cyh0cnVlKTtcbiAgICBpZiAob25Nb3VzZUVudGVyKSBvbk1vdXNlRW50ZXIoZXZ0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTGVhdmUoZXZ0KSB7XG4gICAgc2V0Rm9jdXMoZmFsc2UpO1xuICAgIGlmIChpc1ByZXNzZWQpIHNldFByZXNzZWQoZmFsc2UpO1xuICAgIGlmIChvbk1vdXNlTGVhdmUpIG9uTW91c2VMZWF2ZShldnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoZXZ0KSB7XG4gICAgc2V0Rm9jdXModHJ1ZSk7XG4gICAgaWYgKG9uRm9jdXMpIG9uRm9jdXMoZXZ0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUJsdXIoZXZ0KSB7XG4gICAgc2V0Rm9jdXMoZmFsc2UpO1xuICAgIGlmIChpc1ByZXNzZWQpIHNldFByZXNzZWQoZmFsc2UpO1xuICAgIGlmIChvbkJsdXIpIG9uQmx1cihldnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTW91c2VEb3duKGV2dCkge1xuICAgIHNldFByZXNzZWQodHJ1ZSk7XG4gICAgaWYgKG9uTW91c2VEb3duKSBvbk1vdXNlRG93bihldnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTW91c2VVcChldnQpIHtcbiAgICBzZXRQcmVzc2VkKGZhbHNlKTtcbiAgICBpZiAob25Nb3VzZVVwKSBvbk1vdXNlVXAoZXZ0KTtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogcmVmLFxuICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHgsIFwiLCBcIikuY29uY2F0KHksIFwiKVwiKSxcbiAgICBjbGFzc05hbWU6IFwicnNtLW1hcmtlciBcIi5jb25jYXQoY2xhc3NOYW1lKSxcbiAgICBvbk1vdXNlRW50ZXI6IGhhbmRsZU1vdXNlRW50ZXIsXG4gICAgb25Nb3VzZUxlYXZlOiBoYW5kbGVNb3VzZUxlYXZlLFxuICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgIG9uQmx1cjogaGFuZGxlQmx1cixcbiAgICBvbk1vdXNlRG93bjogaGFuZGxlTW91c2VEb3duLFxuICAgIG9uTW91c2VVcDogaGFuZGxlTW91c2VVcCxcbiAgICBzdHlsZTogc3R5bGVbaXNQcmVzc2VkIHx8IGlzRm9jdXNlZCA/IGlzUHJlc3NlZCA/IFwicHJlc3NlZFwiIDogXCJob3ZlclwiIDogXCJkZWZhdWx0XCJdXG4gIH0sIHJlc3RQcm9wcyksIGNoaWxkcmVuKTtcbn0pO1xuTWFya2VyLmRpc3BsYXlOYW1lID0gXCJNYXJrZXJcIjtcbk1hcmtlci5wcm9wVHlwZXMgPSB7XG4gIGNvb3JkaW5hdGVzOiBQcm9wVHlwZXMuYXJyYXksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubm9kZSwgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpXSksXG4gIG9uTW91c2VFbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uTW91c2VMZWF2ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uTW91c2VEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Nb3VzZVVwOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbnZhciBfZXhjbHVkZWQkMSA9IFtcImZyb21cIiwgXCJ0b1wiLCBcImNvb3JkaW5hdGVzXCIsIFwic3Ryb2tlXCIsIFwic3Ryb2tlV2lkdGhcIiwgXCJmaWxsXCIsIFwiY2xhc3NOYW1lXCJdO1xudmFyIExpbmUgPSBmb3J3YXJkUmVmKGZ1bmN0aW9uIChfcmVmLCByZWYpIHtcbiAgdmFyIF9yZWYkZnJvbSA9IF9yZWYuZnJvbSxcbiAgICAgIGZyb20gPSBfcmVmJGZyb20gPT09IHZvaWQgMCA/IFswLCAwXSA6IF9yZWYkZnJvbSxcbiAgICAgIF9yZWYkdG8gPSBfcmVmLnRvLFxuICAgICAgdG8gPSBfcmVmJHRvID09PSB2b2lkIDAgPyBbMCwgMF0gOiBfcmVmJHRvLFxuICAgICAgY29vcmRpbmF0ZXMgPSBfcmVmLmNvb3JkaW5hdGVzLFxuICAgICAgX3JlZiRzdHJva2UgPSBfcmVmLnN0cm9rZSxcbiAgICAgIHN0cm9rZSA9IF9yZWYkc3Ryb2tlID09PSB2b2lkIDAgPyBcImN1cnJlbnRjb2xvclwiIDogX3JlZiRzdHJva2UsXG4gICAgICBfcmVmJHN0cm9rZVdpZHRoID0gX3JlZi5zdHJva2VXaWR0aCxcbiAgICAgIHN0cm9rZVdpZHRoID0gX3JlZiRzdHJva2VXaWR0aCA9PT0gdm9pZCAwID8gMyA6IF9yZWYkc3Ryb2tlV2lkdGgsXG4gICAgICBfcmVmJGZpbGwgPSBfcmVmLmZpbGwsXG4gICAgICBmaWxsID0gX3JlZiRmaWxsID09PSB2b2lkIDAgPyBcInRyYW5zcGFyZW50XCIgOiBfcmVmJGZpbGwsXG4gICAgICBfcmVmJGNsYXNzTmFtZSA9IF9yZWYuY2xhc3NOYW1lLFxuICAgICAgY2xhc3NOYW1lID0gX3JlZiRjbGFzc05hbWUgPT09IHZvaWQgMCA/IFwiXCIgOiBfcmVmJGNsYXNzTmFtZSxcbiAgICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQkMSk7XG5cbiAgdmFyIF91c2VDb250ZXh0ID0gdXNlQ29udGV4dChNYXBDb250ZXh0KSxcbiAgICAgIHBhdGggPSBfdXNlQ29udGV4dC5wYXRoO1xuXG4gIHZhciBsaW5lRGF0YSA9IHtcbiAgICB0eXBlOiBcIkxpbmVTdHJpbmdcIixcbiAgICBjb29yZGluYXRlczogY29vcmRpbmF0ZXMgfHwgW2Zyb20sIHRvXVxuICB9O1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHtcbiAgICByZWY6IHJlZixcbiAgICBkOiBwYXRoKGxpbmVEYXRhKSxcbiAgICBjbGFzc05hbWU6IFwicnNtLWxpbmUgXCIuY29uY2F0KGNsYXNzTmFtZSksXG4gICAgc3Ryb2tlOiBzdHJva2UsXG4gICAgc3Ryb2tlV2lkdGg6IHN0cm9rZVdpZHRoLFxuICAgIGZpbGw6IGZpbGxcbiAgfSwgcmVzdFByb3BzKSk7XG59KTtcbkxpbmUuZGlzcGxheU5hbWUgPSBcIkxpbmVcIjtcbkxpbmUucHJvcFR5cGVzID0ge1xuICBmcm9tOiBQcm9wVHlwZXMuYXJyYXksXG4gIHRvOiBQcm9wVHlwZXMuYXJyYXksXG4gIGNvb3JkaW5hdGVzOiBQcm9wVHlwZXMuYXJyYXksXG4gIHN0cm9rZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3Ryb2tlV2lkdGg6IFByb3BUeXBlcy5udW1iZXIsXG4gIGZpbGw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxudmFyIF9leGNsdWRlZCA9IFtcInN1YmplY3RcIiwgXCJjaGlsZHJlblwiLCBcImNvbm5lY3RvclByb3BzXCIsIFwiZHhcIiwgXCJkeVwiLCBcImN1cnZlXCIsIFwiY2xhc3NOYW1lXCJdO1xudmFyIEFubm90YXRpb24gPSBmb3J3YXJkUmVmKGZ1bmN0aW9uIChfcmVmLCByZWYpIHtcbiAgdmFyIHN1YmplY3QgPSBfcmVmLnN1YmplY3QsXG4gICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICBjb25uZWN0b3JQcm9wcyA9IF9yZWYuY29ubmVjdG9yUHJvcHMsXG4gICAgICBfcmVmJGR4ID0gX3JlZi5keCxcbiAgICAgIGR4ID0gX3JlZiRkeCA9PT0gdm9pZCAwID8gMzAgOiBfcmVmJGR4LFxuICAgICAgX3JlZiRkeSA9IF9yZWYuZHksXG4gICAgICBkeSA9IF9yZWYkZHkgPT09IHZvaWQgMCA/IDMwIDogX3JlZiRkeSxcbiAgICAgIF9yZWYkY3VydmUgPSBfcmVmLmN1cnZlLFxuICAgICAgY3VydmUgPSBfcmVmJGN1cnZlID09PSB2b2lkIDAgPyAwIDogX3JlZiRjdXJ2ZSxcbiAgICAgIF9yZWYkY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICBjbGFzc05hbWUgPSBfcmVmJGNsYXNzTmFtZSA9PT0gdm9pZCAwID8gXCJcIiA6IF9yZWYkY2xhc3NOYW1lLFxuICAgICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG5cbiAgdmFyIF91c2VDb250ZXh0ID0gdXNlQ29udGV4dChNYXBDb250ZXh0KSxcbiAgICAgIHByb2plY3Rpb24gPSBfdXNlQ29udGV4dC5wcm9qZWN0aW9uO1xuXG4gIHZhciBfcHJvamVjdGlvbiA9IHByb2plY3Rpb24oc3ViamVjdCksXG4gICAgICBfcHJvamVjdGlvbjIgPSBfc2xpY2VkVG9BcnJheShfcHJvamVjdGlvbiwgMiksXG4gICAgICB4ID0gX3Byb2plY3Rpb24yWzBdLFxuICAgICAgeSA9IF9wcm9qZWN0aW9uMlsxXTtcblxuICB2YXIgY29ubmVjdG9yUGF0aCA9IGNyZWF0ZUNvbm5lY3RvclBhdGgoZHgsIGR5LCBjdXJ2ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwgX2V4dGVuZHMoe1xuICAgIHJlZjogcmVmLFxuICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHggKyBkeCwgXCIsIFwiKS5jb25jYXQoeSArIGR5LCBcIilcIiksXG4gICAgY2xhc3NOYW1lOiBcInJzbS1hbm5vdGF0aW9uIFwiLmNvbmNhdChjbGFzc05hbWUpXG4gIH0sIHJlc3RQcm9wcyksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCBfZXh0ZW5kcyh7XG4gICAgZDogY29ubmVjdG9yUGF0aCxcbiAgICBmaWxsOiBcInRyYW5zcGFyZW50XCIsXG4gICAgc3Ryb2tlOiBcIiMwMDBcIlxuICB9LCBjb25uZWN0b3JQcm9wcykpLCBjaGlsZHJlbik7XG59KTtcbkFubm90YXRpb24uZGlzcGxheU5hbWUgPSBcIkFubm90YXRpb25cIjtcbkFubm90YXRpb24ucHJvcFR5cGVzID0ge1xuICBzdWJqZWN0OiBQcm9wVHlwZXMuYXJyYXksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubm9kZSwgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpXSksXG4gIGR4OiBQcm9wVHlwZXMubnVtYmVyLFxuICBkeTogUHJvcFR5cGVzLm51bWJlcixcbiAgY3VydmU6IFByb3BUeXBlcy5udW1iZXIsXG4gIGNvbm5lY3RvclByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCB7IEFubm90YXRpb24sIENvbXBvc2FibGVNYXAsIEdlb2dyYXBoaWVzLCBHZW9ncmFwaHkkMSBhcyBHZW9ncmFwaHksIEdyYXRpY3VsZSQxIGFzIEdyYXRpY3VsZSwgTGluZSwgTWFwQ29udGV4dCwgTWFwUHJvdmlkZXIsIE1hcmtlciwgU3BoZXJlJDEgYXMgU3BoZXJlLCBab29tUGFuQ29udGV4dCwgWm9vbVBhblByb3ZpZGVyLCBab29tYWJsZUdyb3VwLCB1c2VHZW9ncmFwaGllcywgdXNlTWFwQ29udGV4dCwgdXNlWm9vbVBhbiwgdXNlWm9vbVBhbkNvbnRleHQgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/react-simple-maps/dist/index.es.js\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |